Hva Er En Nettverkstrafikkflyt?

traffic_wide

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.

flow2

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.

flow3

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:

flow4

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:

flow5

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:

flow6

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.

flow7

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:

flow8

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:

flow9

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:

flow10

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:

flow11a

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:

flow12

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:

flow13

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.

flow14

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