Hva Er En Nettverkstrafikkflyt?
Nettverkstrafikkstrømmer (strømmer) er nyttige for å bygge en grovkornet forståelse av trafikk på et datanettverk, og gir en praktisk enhet for måling og / eller behandling av trafikk.
Strømmer kan måles for å forstå hva verter snakker på nettverket, med detaljer om adresser, volumer og typer trafikk. Denne visningen av nettverket kan være nyttig for feilsøking, oppdage sikkerhetshendelser, planlegging og fakturering
Men hva er en flyt, og hvordan defineres den?
dette spørsmålet høres trivielt å svare på, men når vi graver dypere finner vi nyanser og hjørnesaker som gjør strømmer interessante, og til slutt vanskelig å definere.
Bakgrunn
for å virkelig forstå strømmer, må vi starte med litt bakgrunn.
Nettverk startet som krets-byttet. Når en vert ønsket å kommunisere med en annen vert det spurte nettverket sette opp en krets. Etter at informasjonsflyten var ferdig, ble kretsen revet ned.
Figur 1-Eksempel Circuit-Switched Network
Circuit-switched networks har sin arv i telefonnettverk. De har en rekke ulemper, blant annet dårlig skalerbarhet og lav kapasitetsutnyttelse.
et alternativ var nødvendig for å bygge Det Som til slutt ble Internett-pakkesvitsjede nettverk. Meldinger er hakket opp i variabel størrelse stykker som er individuelt adressert og sendt som pakker over nettverket.
Figur 2-Eksempel Pakkesvitsjet Nettverk
mottakerverten setter nyttelasten fra pakkene tilbake i meldingen. Obs!: pakker kan også inneholde kontrollinformasjon, for eksempel flytkontroll og baner trenger ikke å være symmetriske.
Å Definere strømmer i et kretsbyttet nettverk er enkelt da kretsen er en strøm og følger en protokoll for å etablere og avvikle (krets = strømning); men i et pakkebyttet nettverk er ting mindre åpenbare.
Tenk deg for et sekund at du er på observasjonspunkt A i det kretskoblede nettverket Av Figur 1, vil du se:
Figur 3-Zoom inn På Kretsbyttet Nettverk
To strømmer vil bli observert-kretser mellom verter 3 & 4 og verter 5 & 6. Observere flyter i en krets-slått nettverk er relativt enkelt fordi nettverket er involvert i å sette opp kretser, så vet deres tilstand, og endepunktene.
Tenk deg nå at du er på observasjonspunkt A i det pakkesvitsjede nettverket Av Figur 2 i stedet, vil du se:
Figur 4-Zoom inn På Pakkesvitsjet Nettverk
Plutselig er Ting mindre klare. Det er en pakke som kommer inn Fra Host 5 bestemt For Host 6. Forutsatt at vi observerer for en periode, ser vi flere pakker ankomme og avreise. Å observere strømmer på et pakkesvitsjet nettverk tar tid, og krever registrering og analyse av pakkeinformasjon.
Første (Naive) Forsøk På Å Definere En Flyt
ved å Bruke vår kunnskap om pakkesvitsjede nettverk, kan et første forsøk på å svare på ‘hva er en flyt’ være:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter
denne definisjonen ser ut som:
Figur 5-Første Forsøk På Å Definere En Flyt
Det er imidlertid et problem. Hva skjer hvis det skjer mer enn en type kommunikasjon mellom vertene, for eksempel a har EN SSH og HTTPS-tilkobling Til B? ER SSH-og HTTPS-pakkene en del av samme flyt? Intuitivt sier vi nei, de er forskjellige økter, og til og med helt forskjellige protokoller. Vi kan gjøre det bedre…
Andre Forsøk På Å Definere
hva med å bruke protokollinformasjon fra pakkehoder som vanlige egenskaper for å identifisere pakker i strømmer? Dette vil skille forskjellige typer tilkobling i forskjellige strømmer.
En stor andel pakker på et nettverk er sannsynligvis IP layer – 3-protokollen, MED TCP eller UDP som layer – 4-transportprotokollen. Det er derfor rimelig å vurdere å bruke tcp-og UDP-parametere som flytnøkler fra pakkehodene.
Vi bruker 5 parametere fra pakkehodene; kilde-IP, mål-IP, protokoll, tcp-eller UDP-kildeport og TCP – eller UDP-målport som en ordnet liste, kjent som 5-tuppel, som de vanlige egenskapene for å kartlegge pakkene til strømmer.
Figur 6-Eksempel 5-tuppel
her går forsøk 2:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter, der pakker har felles egenskaper:
- Alle pakker i flyten deler samme 5-tuppel
vårt scenario ser nå slik ut:
Figur 7-Andre Forsøk På Å Definere En Flyt
Perfekt du sier. Livet er bra. Vi har en definisjon for en flyt, ikke noe mer å se her … men vent på, hva med pakkenes retning?
Tredje Forsøk-Toveis
en 5-tuppel er enveis (enveis). Som standard vil det bare matche pakker som reiser i en retning, siden pakker i motsatt retning har transponert IP-adresser OG portnumre, og dermed en annen 5-tuppel hash.
det er gode grunner til å vurdere flyter som toveis i motsetning til enveis, inkludert evne til å bestemme klient / server atferd og beregne rundtur ganger samt bedre påvisning av sikkerhetshendelser som skanning.
Vurder en enkel TCP-tilkobling i Figur 8 hvor pakker spretter frem Og tilbake Mellom Vert A & B:
Figur 8-Stigediagram Over En Enkel Tcp-Flyt
vi ser et klassisk TCP 3-veis håndtrykk (SYN, SYN+ACK, ACK) etterfulgt av utveksling av data. Enveis flytanalyse ved et observasjonspunkt i nettverket vil se to separate strømmer, en per retning, som Per Figur 9:
Figur 9-Enveis Stiger For Enkel Tcp Flow
problemet med enveis flow måling er vi savner muligheten til å fange noen viktige metadata om flyten. Sikker, hver enveis flyt kan lagre retningsmetadata for byte og pakker i den retningen. Dette kan inkludere inter-pakke timing (se merkede prikker I Figur 9). Men vi savner muligheten til å samle metadata som krever måling av trafikkparametere i begge retninger.
Vurder toveisobservasjon I Figur 10:
Figur 10-Stige Av Toveis Observasjoner For Enkel TCP Flow
Vi kan nå observere OG måle TCP 3-veis håndtrykk (poeng F1, B1, F2), og se på andre beregninger som responstider.
for toveisstrømmer trenger vi to 5-tuples, hvorav den andre reverserer tuppelrekkefølgen til BÅDE IP-adressene og portnumrene. Nedenfor er et eksempel PÅ SSH flow forover og bakover 5-tuples:
Figur 11-Reversere en 5-tuppel
Høyre, det var ikke så vanskelig. Men vent, en liten detalj lurer som krever ytterligere oppmerksomhet. Hvordan vet vi hva som er fremoverretningen til strømmen? Vi bestemmer retningen basert på den første pakken observert, som antas å reise i klient til serverretning, men dette kommer ikke til å være 100% pålitelig da pakker kan være ute av drift og / eller observasjonen kan starte delvis gjennom en strømning. Vi bruker med denne metoden, men må huske når vi ser på resultater at det ikke er perfekt.
en alternativ metode er å inspisere transportprotokollfelt. I TCP for eksempel er tilstedeværelsen av BARE SYN-flagget en rimelig indikator på at pakken er den første i strømmen.
vår definisjon for en flyt er nå:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter der pakker har felles egenskaper:
- alle pakker i flyten har samme 5-tuppel eller transponert 5-tuppel
Fjerde Forsøk-Inkludert Ikke-TCP IP-Trafikk
Frem til dette punktet har vi antatt at transportprotokollen er TCP. Hva med ANDRE ip-transportprotokoller?
UDP er det opplagte valget for nest vanligste transportprotokoll, spesielt med økningen av sanntidstrafikk over UDP, samt nye protokoller som QUIC. UDP passer lett inn i samme modell som den har kilde-og destinasjonsportnumre, som PER QUIC eksempel nedenfor:
Figur 12-Reversere EN UDP 5-tuple (samme SOM TCP)
Stream Control Transmission Protocol (SCTP)er en annen transportprotokoll som bruker portnumre og dermed fungerer med en 5-tuple.
men hva med andre protokoller, For Eksempel IPsec?
IPsec ESP (Encapsulating Security Payload) er en protokoll som ikke inkluderer kilde / målportnumre, så vi må falle tilbake til en 3-tuple, da det ikke er praktisk å forstå nyttelasten til protokollen.
Figur 13-Toveis 3-Tuppel
vår definisjon for en flyt er nå:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter der pakker har felles egenskaper:
- for transportprotokoller med portnumre (dvs. TCP / UDP / SCTP):
Alle pakker i flyten deler samme 5-tuple eller transponert 5-tuple
else:
Alle pakker i flyten deler samme 3-tuple eller transponert 3-tuple
det er imidlertid enda en faktor å vurdere – tid.
Femte Forsøk-Flytutløp
en flyt eksisterer bare i en viss tid. Det er mulig at den samme 5-tuple (eller 3-tuple) kan gjenbrukes på et annet tidspunkt, for en annen flyt, mellom de samme vertene.
Vurder to verter hvor man starter mange nye TCP-tilkoblinger til den andre. Hver NY TCP-tilkobling får en ny kildeport, vanligvis økt med 1 fra forrige tildeling. IANA tildele området 49152 til 65535 for disse flyktige porter, noe som gir 16384 porter. OVER TID vil tcp-kildeporten rulle gjennom området og den opprinnelige kildeporten gjenbrukes, og denne flyten vil ha samme 5-tuppel som den opprinnelige flyten. Dette gir et problem, da det ikke er den samme strømmen!
for å løse dette trenger vi strømmer for å være utløpt der ingen pakker er sett i mer enn en bestemt tidsperiode. Her går vi igjen:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter der pakker har felles egenskaper:
- for transportprotokoller med portnumre (dvs. TCP / UDP / SCTP):
alle pakker i flyten har samme 5-tuple eller transponert 5-tuple
else:
alle pakker i flyten har samme 3-tuple eller transponert 3-tuple
- alle inter-pakketider er mindre enn vilkårlig tidsavbruddsverdi for utløp av flyt
Sjette Forsøk-Vilkårlige Parametere
Noen ganger vil du kanskje ha forskjellige parametere for å identifisere strømmer, eller disse kan bli tvunget på deg av typen maskinvare / programvare i nettverket.
i En Cisco-ruter for eksempel, flyter er identifisert av en 7-Tuple som legger Type Tjeneste (ToS) og input sub-grensesnitt til standard 5-Tuple. Det kan også være situasjoner der lag-2-felt, for eksempel kilde-ELLER mål-MAC-adresse, kan gi mening som flytnøkler (selv om de bare er lokalt signifikante).
Det finnes andre parametere som kan brukes som vanlige egenskaper for flytidentifikasjon; det er til slutt opp til operatøren å bestemme og utstyrets evner. Basert på dette, forfiner vi definisjonen ytterligere:
en flyt er en sekvens av pakker som bærer informasjon mellom to verter der pakker har felles egenskaper:
- for transportprotokoller med portnumre (dvs.TCP / UDP / SCTP):
Alle pakker i flyten har samme 5-tuple eller transponert 5-tuple
else:
Alle pakker i flyten har samme 3-tuple eller transponert 3-tuple
- alle inter-packet ganger er mindre enn vilkårlig flyt utløp tidsavbruddsverdi
- kan bruke alle vilkårlige parametere som flytnøkler, inkludert ToS, grensesnitt etc.
Innpakning det hele opp
Vi har vist at å produsere en enkelt altomfattende flytdefinisjon er et vanskelig problem. Flytdefinisjonen er implementeringsspesifikk, avhengig av brukerkrav, samt evnen til nettverksutstyr som måler strømmen.
i del 2 av dette blogginnlegget vil vi gå inn i ytterligere betraktninger for flyter Som IPv6 flyt etiketter, fragmentering (IPv4 Og IPv6 problem..), kryptering, ikke-IP-pakker og hvordan flyter måles og brukes i ANDRE systemer som SDN.
Se: https://www.eecs.yorku.ca/course_archive/2015-16/W/3214/CSE3214_01_PacketCircuitSwitching_2016_posted_part2.pdf
for noen relaterte artikler, se: https://www.researchgate.net/profile/Brian_Trammell/publication/245587221_Bidirectional_Flow_Measurement_IPFIX_and_Security_Analysis/links/0f3175331dd3b49103000000/Bidirectional-Flow-Measurement-IPFIX-and-Security-Analysis.pdf og https://is.muni.cz/th/hilnn/cse2009.pdf
for relevant RFC, se: https://tools.ietf.org/html/rfc5103
for mer om standardisering AV QUIC, se: https://datatracker.ietf.org/wg/quic/about/
Se: https://www.cisco.com/en/US/tech/tk812/technologies_white_paper09186a008022bde8.shtml
Leave a Reply