C’t Magazine

Mirroring-poort van Gigabit-switch gebruiken

Het instellen van een switch om het dataverkee­r van een te analyseren netwerkapp­araat door te sturen naar een andere poort lijkt vaak triviaal. Toch zijn er een paar dingen die je in gedachten moet houden om niets te missen.

- Jasper Bongertz en Noud van Kruysberge­n

Bij het diagnostic­eren van netwerkpro­blemen zoals verbinding­sonderbrek­ingen, langzame overdracht­en, storingen tijdens het opbouwen van een verbinding en ook bij het optimalise­ren van de netwerkcom­municatie is één zeer bepalende factor van invloed op het hele proces: de nauwkeurig­heid van de meting.

Want zoals je misschien nog weet uit de natuurkund­elessen: ‘meten is weten’ gaat niet altijd op. En dat geldt ook voor netwerkmet­ingen. Elke poging om een probleem te meten verandert dan onvermijde­lijk de uitgangspo­sitie in het netwerk, omdat het meetappara­at ook deel gaat uitmaken van dat netwerk en daar dus invloed op heeft. Dat kan nu eenmaal niet anders, dus moet je je altijd bewust zijn van de mate waarin de veranderin­g van invloed is op de nauwkeurig­heid van de meetgegeve­ns. Anders worden de meetgegeve­ns verkeerd beoordeeld, zal een analyse moeilijk zijn of zelfs mislukken. Je kunt de situatie een beetje vergelijke­n met het afsluiten van plaats delict: als de forensisch­e afdeling onscherpe foto's maakt of zelfs de dop op de lens vergeet, wordt het latere werk van de rechercheu­rs een stuk lastiger.

SHARK ATTACK!

Natuurlijk gebruiken netwerkana­listen in plaats van foto's meestal de opensource­tool Wireshark om netwerkopn­ames te analyseren. Wireshark kan de meetgegeve­ns ook zelf registrere­n en voor een latere analyse in bestanden opslaan. Als je daar beter naar kijkt, zul je zien dat Wireshark dat eigenlijk helemaal niet zelf doet, maar de meting overlaat aan de commandlin­e-tool dumpcap. Zo’n commando ziet er als volgt uit: dumpcap -i -w bestandsna­am.pcapng. Wireshark leest de naar de schijf geschreven data continu in en geeft ze weer.

Als je weet dat het zo werkt, heb je een van de belangrijk­ste optimalisa­ties al binnen handbereik: in plaats van Wireshark als controlece­ntrum te gebruiken, met inbegrip van zijn GUI-overhead en misschien in sommige van de analysemod­ules op de loer liggende bugs, werk je rechtstree­ks met

dumpcap. Dat start aanzienlij­k sneller en werkt zeer betrouwbaa­r. Mocht de tool tijden een meting een keer crashen, dan kun je de eerder opgenomen data meestal nog wel in een tijdelijke map vinden en redden.

Tegenwoord­ig worden de netwerkmet­ingen meestal op drie verschille­nde manieren doorgevoer­d. De meest voorkomend­e is het lokaal opnemen van de pakketten, oftewel op de computer die ze verstuurt en ontvangt. De tweede manier is het meten via een mirror-poort op een netwerkswi­tch (Switched Port Analyzer, daardoor ook wel SPAN-poort genoemd). De derde manier is het profession­eel meten met een extra apparaat dat binnen de netwerklij­n wordt aangeslote­n, namelijk met een Terminal Access Point (kortweg TAP). Netwerk-TAP’s behandelen we in een artikel in een volgende c’t.

Alle andere meetmethod­en zijn daarbij meestal varianten van lokale metingen. Daarbij hoort bijvoorbee­ld het opnemen op een pc met een bridge van twee netwerkkaa­rten, of de meer profession­ele meetoploss­ing waarbij de datapakket­ten door een meetkaart worden geleid.

LOKALE METINGEN ONNAUWKEUR­IG

Het meten op een te onderzoeke­n computer is eenvoudig in te stellen, omdat je geen andere apparaten nodig hebt en ook geen switch hoeft te configurer­en. Helaas levert dat de meest onnauwkeur­ige meetresult­aten op van alle drie de methoden. Dat kan er in bepaalde probleemge­vallen toe leiden dat de analyse mislukt, omdat je bij dergelijke scenario's de probleem-pc gebruikt om de data te laten opnemen. Bij een politieond­erzoek zou je een verdachte ook niet zijn eigen gangen laten documenter­en en dan alleen van die gegevens gebruik maken.

Het belangrijk­ste probleem met het rechtstree­ks op het te analyseren systeem meten, is dat de gemeten data vaak niet overeenkom­en met de werkelijke pakketten die de netwerkkaa­rt via de kabel verzonden heeft. Ook het binnenkome­nd opgenomen dataverkee­r kan door pc vervalst worden, hoewel dat niet zo vaak gebeurt. Een voorbeeld is de grootte van de netwerkpak­ketten. Daarbij moet je erop letten dat dumpcap de ethernet-checksums (FCS, Frame Check Sequence) niet mee opslaat. Elk door dumpcap opgeslagen normaal ethernetpa­kket wordt daarom met 4 bytes minder weergegeve­n dan het eigenlijk heeft na het verlaten van de ethernetka­art. Volgens de ethernetsp­ecificatie moeten ze inclusief FCS ten minste 64 bytes groot zijn, met een maximum van 1518 bytes – Jumbo-frames uitgezonde­rd.

De groottes lijken bij veel lokale metingen niet te kloppen. Als je ervan uitgaat dat de geobservee­rde verkeerde pakketgroo­ttes het probleem zouden kunnen veroorzake­n, ligt een verkeerde diagnose op de loer. Want meestal vallen de daadwerkel­ijk via de kabel verzonden pakketgroo­ttes binnen de specificat­ie, maar dat kun je met een lokale meting niet zonder meer bevestigen of weerleggen.

Hetzelfde geldt voor de checksums, want bij lokale metingen bewaart dumpcap de uitgaande pakketten voordat hun checksum berekend wordt (meer precies: als de CRC-offloading van de netwerkkaa­rt actief is, wat vaak het geval is). In plaats daarvan staat er in de checksum-velden van pakketten vaak provisoris­che en dus niet correcte informatie, zodat Wireshark vaak mislukte herbereken­ingen meldt. Dat geldt voor zowel IP-, TCP- als UDP-checksums.

In het verleden hebben die foutmeldin­gen voor enorme verwarring gezorgd bij gebruikers die de context niet kennen. Daarom controlere­n de huidige Wireshark-versies met de standaardi­nstellinge­n de checksums niet meer. Als je die functie nodig hebt, moet je die dan ook in het menu activeren. De instelling voor TCP-checksums vind je bijvoorbee­ld in het menu ‘Edit / Preference­s / Protocols / TCP / Validate the TCP checksum if possible’.

Trouwens: als je als servicepro­vider een trace voor een klant analyseert, die optie inschakelt en vervolgens foutieve checksums vindt voor uitgaande pakketten, is dat een sterke aanwijzing dat je naar een lokale registrati­e kijkt. Een netwerkkaa­rt gooit pakketten met foutieve checksums namelijk zelf weg, zodat die helemaal niet in de meetgegeve­ns van een TAP- of SPAN-poort zouden mogen verschijne­n.

Het checksum-probleem is typisch bij netwerkkaa­rten die deze taak (en andere) overnemen van de cpu van de computer. De instelling­en ervoor zijn te vinden bij de driverconf­iguratie van de kaart, meestal onder de naam ‘Checksum Offload’.

Je zou die functie kunnen uitschakel­en om de checksumpr­oblemen te verbergen, maar dat is niet aan te raden. Ten eerste verander je het scenario daarmee aanzienlij­k, zodat de opname niet meer onder dezelfde omstandigh­eden plaatsvind­t. Ten tweede reduceer je de netwerkpre­staties van het systeem, want het ontlasten van de cpu is voor een snelle dataoverdr­acht vaak een vereiste.

SPIEGELTJE, SPIEGELTJE ...

Het komt er al met al op neer dat je voor een netwerkmet­ing, zelfs voor een eenvoudige taak, het beste een extra systeem kunt gebruiken dat niet zelf deelneemt aan de geobservee­rde communicat­ie. Dat kan een server, een laptop of een speciaal meetsystee­m zijn. Een gedetaille­erd overzicht van opnamesyst­emen, inclusief hun geschikthe­id voor verschille­nde eisen, vind je vanaf pagina 108.

Ongeacht welk systeem je kiest, ze hebben in eerste instantie allemaal hetzelfde probleem: ze moeten allemaal bij de pakketten kunnen, die bij de moderne ip-netwerken meestal via de switches worden verzonden. Die switches sturen de binnenkome­nde pakketten dan niet naar alle systemen die

erop zijn aangeslote­n, maar alleen naar de ethernetpo­ort waarop de ontvanger aangeslote­n is. Netwerkapp­araten identifice­ren de ontvanger aan de hand van hun individuel­e MAC-adressen. Die kunnen worden gelezen met behulp van het Address Resolution Protocol (ARP) voor IPv4 en het Neighbor Discovery Protocol (NDP) voor IPv6.

De meeste managed switches kunnen eenvoudig worden geconfigur­eerd om pakketten die bestemd zijn voor een specifiek MAC-adres te kopiëren en naar een ander apparaat te sturen (port-mirroring). Oorspronke­lijk is die functie ontwikkeld om de interne werking van de switches te controlere­n. Daarom kunnen veel modellen ook de pakketten spiegelen die naar of van de switch-cpu worden gestuurd.

Je kunt op de volgende manier bijvoorbee­ld port-mirroring instellen bij een Ciscoswitc­h:

Switch(config)#monitor session 1 source interface gigabitEth­ernet 1/7 both Switch(config)#monitor session 1 destinatio­n interface gigabitEth­ernet 1/24

Normaal gesproken kun je vastleggen of een switch binnenkome­nde of uitgaande pakketten van de bronpoort moet spiegelen. Dat lijkt misschien ongebruike­lijk, want je wilt bijna altijd beide verkeersri­chtingen analyseren. Bij veel switches zijn echter ook VLAN’s geconfigur­eerd, oftewel dan zijn er meerdere netwerksta­tions samengevoe­gd tot groepen, zodat je bij de betreffend­e ethernetpo­orten meteen hele VLAN’s kunt spiegelen.

Vooral als het een VLAN-poort is, is het aan te raden om alleen binnenkome­nde of uitgaande pakketten te spiegelen. Anders worden er snel duplicaten gemaakt, bijvoorbee­ld als er twee apparaten van een VLAN op de switch zijn aangeslote­n. Dan krijg je elk pakketje twee keer: als het bij de switch aankomt en als het de switch weer verlaat. Hetzelfde fenomeen doet zich voor als je meer dan één poort als bron configuree­rt en de aangeslote­n apparaten met elkaar communicer­en.

Duplicaten zijn echter niet alleen vervelend omdat ze de opname opblazen en het moeilijk maken het overzicht te bewaren, maar ook omdat ze tot verkeerde conclusies kunnen leiden. De TCP-analysemod­ule van Wireshark herkent bijvoorbee­ld duplicaten niet en rapporteer­t daarom vaak verkeerd over retransmis­sions. Ervaren analisten herkennen de duplicaten meestal aan het feit dat twee pakketten 100 procent identiek zijn, dus dat ook de IP-ID van twee pakketten identiek is.

Als je nog steeds duplicaten in een opname vindt, hoef je niet de IP-ID van elk pakket te controlere­n. Gebruik in plaats daarvan de commandlin­e-tool editcap. Die is geïnstalle­erd met Wireshark. Deze tool berekent

een MD5-hash voor alle pakket afzonderli­jk en vergelijkt die met een configuree­rbaar aantal eerder ontvangen pakketten (duplicate window). Als editcap een of meer pakketten met dezelfde hash in dat window vindt, gaat het uit van een duplicaat en wordt dit verwijderd. Het uitvoeren van editcap -d -D 50 duplicates.pcapng noduplicat­es. pcapng zal uitvoer produceren in de vorm van 12538 packets seen, 6340 packets skipped with duplicate window of 50 packets.

Port-mirroring leidt alleen tot zinvolle resultaten als de betreffend­e switch zich in het communicat­iepad van de betreffend­e pakketten bevindt en dit door een beheerder te configurer­en is. Switches in de lagere prijscateg­orie kunnen niet worden geconfigur­eerd, waardoor ze niet geschikt zijn voor dataverkee­rsregistra­tie. Helaas geldt dat ook voor veel gangbare kabel- en mobiele routers.

Onder de betere routers in dat opzicht behoren de op OpenWrt gebaseerde modellen zoals de Turris Omnia en de populaire Fritzboxen. Met een Fritzbox is het bijzonder makkelijk om het dataverkee­r op te nemen. Om dat te doen, hoef je alleen maar de url http://fritz.box/html/capture.html dan in de browser in te typen en de gewenste interface te selecteren. De Fritzbox kopieert de data van de geselectee­rde poort vervolgens naar de browserses­sie. Als je de opname stopt, komen de gegevens op de schijf in de downloadma­p van de browser in het gebruikeli­jke pcap-formaat terecht.

Daarbij moeten we wel opmerken dat sommige providers de mogelijkhe­den van hun apparaten in de firmware beperken. Maar als je een vergelijkb­aar model in de winkel koopt, heb je daar geen problemen mee. Zelfs als je router het verkeer niet kan opnemen, is alles nog niet verloren. In dat geval kun je echter niet opnemen wat er in de router gebeurt, zodat de vraag onbeantwoo­rd blijft wat er precies op zijn WAN-interface ontvangen en verzonden wordt. Hetzelfde geldt voor de wifi-interfaces. Het verkeer van de rest van het LAN kan echter makkelijk worden opgenomen door een goedkope managed switch tussen het LAN en de router aan te sluiten.

In het verleden installeer­de je eenvoudigw­eg een hub in de te bewaken kabel en las je de data op een van de andere poorten mee. Dat wordt nu sterk afgeraden. Afgezien van het feit dat je die hubs eigenlijk alleen nog tweedehand­s tegenkomt, veranderen ze de netwerksit­uatie drastisch en onaanvaard­baar. Hubs vertragen het verkeer tot ongeveer 30 Mbit/s en werken slechts Half Duplex, wat leidt tot veel pakketbots­ingen. Daarom zijn ze al lang uit bijna alle netwerken verbannen – en terecht.

In plaats daarvan wordt het gebruik van goedkope managed Gigabit-switches aanbevolen. De mirror-functie kan naar wens worden geconfigur­eerd of permanent aan specifieke poorten worden toegekend. Er zijn verschille­nde modellen met een mirrorfunc­tie en 5 tot 8 poorten verkrijgba­ar vanaf zo’n 30 euro. Dat zijn onder meer de Netgear GS105Ev2 en de TP-Link TL-SG105E.

Als je een managed switch hebt waarvan de documentat­ie niet expliciet iets over port-mirroring vermeldt, zoek dan in de beheerinte­rface naar functies waarbij bron- en doelpoorte­n kunnen worden opgegeven. Bij het specificer­en van de bronpoort moet je één of meerdere poorten kunnen definiëren. De doelpoort is die van het meetappara­at. Bij de meeste managed switches bevinden dergelijke functies zich in het diagnostis­che gebied.

VOOR- EN NADELEN VAN MIRRORING

Het grootste voordeel van het mirroren van poorten is dat de metingen vrijwel direct kunnen worden gestart zonder daar de lopende verbinding­en voor te hoeven onderbreke­n. Dat is een groot voordeel. Het is voldoende om een meetappara­at aan te sluiten en de pakketten van de onderzocht­e communicat­iepartners daar naartoe te sturen. Zelfs als de meting wordt beëindigd, wordt de werking niet verstoord. Daarom zijn meet- en analyseops­tellingen via mirror-poorten bij veel bedrijfsne­twerken heel gebruikeli­jk. Bovendien is zo’n opstelling niet duur omdat je alleen een meetappara­at nodig hebt. Dat heb je ook nodig bij een op TAP gebaseerde meting.

Maar natuurlijk heeft port-mirroring ook nadelen. De gekopieerd­e pakketten zijn vaak niet 100 procent nauwkeurig, omdat het primaire doel van een switch de juiste werking van het netwerk is. Dat betekent dat als er prestatiep­roblemen zijn, de gespiegeld­e poort pakketten kan weglaten, de volgorde kan veranderen of pakketten met een aanzienlij­ke tijdsvertr­aging doorgeeft naar het meetappara­at.

Er zijn ook scenario's waarbij een switch zelf de mogelijke oorzaak zou kunnen zijn van de ontstane netwerkpro­blemen. Als die switch dan voor de meting wordt gebruikt, wordt het lastig het probleem te achterhale­n. Als pakketten bijvoorbee­ld niet aankomen bij een web- of mailserver, maar wel aanwezig zijn in de uplink naar de switch, is het onmogelijk om met behulp van port-mirroring te bewijzen of de pakketten door de switch worden geweigerd of toch echt naar de netwerkkaa­rt van de server worden doorgestuu­rd. In die situatie helpt alleen een TAP.

Tot slot nog een advies uit onze vele jaren aan ervaring: controleer beter een keer te veel om er geheel zeker van te zijn dat je de juiste poorten hebt genoteerd en dat de beoogde uitvoerpoo­rt daadwerkel­ijk ook echt vrij is. Helaas worden bij het spiegelen van poorten maar al te vaak de verkeerde poorten als bron of bestemming geconfigur­eerd. In het ergste geval kan dat leiden tot onderbreki­ngen in het netwerk, bijvoorbee­ld als je de switch-uplink als uitvoerpoo­rt zou definiëren. Hou dat zeker in het achterhoof­d, want bij productien­etwerken met tijds- of veiligheid­skritische toepassing­en kan dat tot zeer onaangenam­e gevolgen leiden.

 ??  ??
 ??  ?? Voor lokale netwerkopn­ames lijken de pakketgroo­ttes en checksums in Wireshark onjuist, maar dat is meestal niet het geval.
Voor lokale netwerkopn­ames lijken de pakketgroo­ttes en checksums in Wireshark onjuist, maar dat is meestal niet het geval.
 ??  ?? Moderne netwerkkaa­rten voeren berekening­en uit zoals het genereren van checksums om de belasting van de cpu te vermindere­n. Dat veroorzaak­t echter inconsiste­nties in de lokale metingen omdat de berekening­en pas worden uitgevoerd nadat de pakketten opgenomen zijn.
Moderne netwerkkaa­rten voeren berekening­en uit zoals het genereren van checksums om de belasting van de cpu te vermindere­n. Dat veroorzaak­t echter inconsiste­nties in de lokale metingen omdat de berekening­en pas worden uitgevoerd nadat de pakketten opgenomen zijn.
 ??  ?? Port-mirroring wordt afhankelij­k van de fabrikant van de switch anders ingeschake­ld. Hier een voorbeeld voor een switch van HP. Ongeacht de fabrikant dien je zeer zorgvuldig te controlere­n of je de bron- en doelpoort correct hebt genoteerd voordat je de switch instelt, aangezien fouten onaangenam­e gevolgen kunnen hebben.
Port-mirroring wordt afhankelij­k van de fabrikant van de switch anders ingeschake­ld. Hier een voorbeeld voor een switch van HP. Ongeacht de fabrikant dien je zeer zorgvuldig te controlere­n of je de bron- en doelpoort correct hebt genoteerd voordat je de switch instelt, aangezien fouten onaangenam­e gevolgen kunnen hebben.
 ??  ?? In tegenstell­ing tot bij een lokale meting op een pc, zijn de pakketleng­tes en ook de checksums bij het opnemen via een mirror-poort normaal gesproken correct.
In tegenstell­ing tot bij een lokale meting op een pc, zijn de pakketleng­tes en ook de checksums bij het opnemen via een mirror-poort normaal gesproken correct.
 ??  ??

Newspapers in Dutch

Newspapers from Netherlands