Ett viktigt designbeslut vid konstruktion av en simulator är hur användarna kan få tillgång till de data som genereras i varje körning av ett simuleringsförsök. Som simulatorn utför, de prover av prestandamått som genereras börjar exponeras antingen i rått tillstånd eller efter att ha genomgått matematisk bearbetning. Även av oro är den särskilda format dessa data antar när externaliserade till masslagring, eftersom det bestämmer lättheten av behandling av andra applikationer eller tolkning av användaren. I detta dokument presenterar vi en ram för ns-3 nätverkssimulator för att fånga data inifrån ett experiment, utsätta det för matematiska omvandlingar, och slutligen ställa in det i olika utdataformat. Tillämpningen av denna funktionalitet illustreras och analyseras via en studie av vanliga användningsfall. Även om genomförandet av vår strategi är specifikt för ns-3, presenterar denna design lärdomar som kan överföras till andra plattformar. Vid datorsimulering är data både orsak och konsekvens. De abstraktioner av ett system eller av en process som används i simulering, så kallade modeller, härleds från analysen av betydande mängd data. Detta "råmaterial" förvärvas oftast genom tungt, utmanande arbete och fungerar som input som driver modellering aktiviteter. När modeller definieras och utsätts för en iterativ process för validering och verifiering, deras beräkningsimplementationer används i experiment som utförs av en simulator, som producerar utdata. Denna andra uppsättning data behandlas och analyseras för att ge svar på frågor som ställs i början av simuleringsstudien. Insamlingen och bearbetningen av indata och utdata innebär stora utmaningar, var och en på sitt eget sätt. I detta dokument fokuserar vi uteslutande på problem i samband med generering och, i viss utsträckning, på behandling av utgående data. Många simulatorer är konstruerade speciellt för en särskild simuleringsstudie och deras konstruktion tenderar att ta liten hänsyn till programvarutekniska metoder som främjar flexibilitet och extensibilitet. Mekanismerna för generering av utgående data i dessa simulatorer kan vara lika enkla som direkt användning av ett programmeringsspråks I/O-funktionalitet för att generera strömmar av prover av några mått av intresse för modellen. Instrumenteringen av koden för att externalisera dessa prover kan göras från fall till fall, utan tillämpning av konstruktionsmönster av något slag. Dessutom kan mycket av bearbetningen av dessa prover Perrone, Henderson, Watruus och Felizardo göras internt till simulatorn och ofta med kod skrivet "från grunden". Det kommer inte som någon överraskning att många studier härrör från simulatorer som dessa saknar trovärdighet, eftersom de är främsta exempel på de situationer som identifierats som fallgropar av Uhrmacher (2012). Situationen är helt annorlunda när det gäller simulatorer vars livslängd är längre än en enda studie, där man kan hitta sofistikerade, tillförlitliga funktioner för insamling och behandling av data. Ändå, som indikeras av Ribault et al. (2010), många simulatorer ger API:er för datainsamling som kräver blandning av instrumenteringskod i modellkod. Det finns två faror med detta tillvägagångssätt. Å ena sidan kan modellen programmeraren "överinstrumentera" koden för att ge proaktivt för alla möjliga och tänkbara observationsbehov. Denna praxis kan leda till längre simuleringskörningar som genererar mycket mer data än vad som krävs för den genomsnittliga studien. Å andra sidan, "underinstrumentering" modeller kan kräva att deras framtida användare att dyka i och ändra kod, vad som skulle kunna införa fel i modellen och kompromiss experiment. I vilket fall som helst är det så att kvaliteten på en simuleringsstudie bestäms inte bara av hur tillräcklig granulariteten och mängden insamlade data är, utan också av hur lätt det är att reproducera den. Kurkowski, Camp och Colagrosso (2005) uppmärksammar vikten av att kombinera datainsamling och utdataanalys i simuleringskörningen, vilket kan gynna reproducerbarheten. Färsk litteratur, till exempel (Helms et al. 2012), indikerar en ökande uppmärksamhet på sökandet efter simulatorkonstruktioner som inkluderar datainsamlingsmekanismer som är lätta att använda, flexibla och effektiva, både när det gäller minne och körtid, och som kan kombineras med någon typ av utdataanalys. I detta dokument presenterar vi en ram för nätverkssimulatorn ns-3 som arbetar mot dessa krav. Även om vårt ramverk bygger på specifik ns-3 funktionalitet, förväntar vi oss att dess underliggande design ger lektioner som kan generaliseras för tillämpning i andra simuleringsplattformar. Resten av pappret är uppbyggt på följande sätt. I avsnitt 2 fastställs ett sammanhang för vårt bidrag genom att presentera några anmärkningsvärda exempel på relaterat arbete. Avsnitt 3 utvidgar denna bakgrund genom att utsätta läsaren för grunderna i konstruktionen av ns-3 och för motivationen bakom vårt arbete. I avsnitt 4 presenteras designmål som drev utformningen av detta ramverk för datainsamling och även de grundklasser som definierar det. Avsnitt 5 behandlar genomförandefrågor och visar exempel på tillämpningen av rambestämmelserna. I avsnitt 6 beskrivs slutligen det pågående arbetet och de framtida riktlinjerna för att avsluta dokumentet.
SAFE tillhandahåller också automatiserad databehandling, datalagring, och datavisualisering funktioner som kompletteras med ns-3 datainsamling ram (DCF) REF.
The design of an output data collection framework for NS-3
{'venue': '2013 Winter Simulations Conference (WSC)', 'journal': '2013 Winter Simulations Conference (WSC)', 'mag_field_of_study': ['Computer Science']}