NetFlow mot sFlow: vilken flödesövervakning ska du välja?

NetFlow mot sFlow: vad är skillnaden?
NetFlow är en stateful flödesteknik som spårar varje konversation genom en routerport och exporterar sammanfattande flödesposter till en samlare. sFlow är en sampling-baserad teknik som plockar ut var n:te paket, läser dess header och skickar provet vidare. Skillnaden mellan dem är inte storlek eller fart, utan grundläggande metod: NetFlow räknar allt, sFlow räknar urval.
NetFlow togs fram av Cisco 1995 och blev de facto-standard för flödesövervakning. sFlow utvecklades av InMon Corporation och standardiserades 2001 som en öppen specifikation. Båda är fortfarande aktuella, men används i olika sammanhang och passar olika typer av miljöer.
Hur NetFlow fungerar
NetFlow bygger upp flödesposter direkt i nätverksenhetens minne. En flödespost identifieras med fem fält: källadress, destinationsadress, källport, destinationsport och protokoll. Trafik med samma femfältsnyckel hamnar i samma post. Posten samlar metadata som antal paket, antal byte, starttid, sluttid och flaggor under flödets livstid och exporteras därefter till samlaren.
Detta betyder att NetFlow har stateful kunskap om varje konversation i nätverket. Du kan se exakt vilken klient som pratade med vilken server, när det hände och hur mycket data som överfördes. Versionerna v5 och v9 är de mest spridda. Version 9 stödjer mallar (templates) som låter dig välja fält flexibelt. Den efterföljande standarden IPFIX (RFC 7011), ofta kallad NetFlow v10, är en öppen vidareutveckling.
Hur sFlow fungerar
sFlow plockar ut paket slumpmässigt enligt en bestämd sampling-rate. En typisk rate är 1:1000, vilket betyder att var tusende paket samplas. Det samplade paketet skickas vidare till samlaren tillsammans med en kopia av paket-headern och delar av nyttolasten. Samlaren får alltså inte sammanfattningar, utan rådata från en delmängd av all trafik.
Konsekvensen är att sFlow har låg påverkan på enhetens processor och fungerar bra på mycket snabba switchar och routrar. Eftersom datavolymen är liten skalar tekniken upp till multigigabit-länkar utan att enheten blir tungrodd. Priset är att sFlow är mindre exakt för kortvariga eller burst-baserade flöden, som kan missas helt om de inte träffas av sampling-rate.
Detaljerad jämförelse
Beslutet mellan NetFlow och sFlow handlar om en avvägning mellan noggrannhet och skalbarhet. Tabellen nedan visar de viktigaste skillnaderna sida vid sida:
| Egenskap | NetFlow mot sFlow |
|---|---|
| Insamlingsmetod | NetFlow: stateful flödesspårning • sFlow: paketsampling med fast rate |
| Belastning på enheten | NetFlow: medel till hög, beroende på antal flöden • sFlow: låg och konstant |
| Noggrannhet | NetFlow: hög, fångar alla flöden • sFlow: statistisk, missar små flöden |
| Lager | NetFlow: lager 3 och uppåt • sFlow: lager 2 till 7, full headerinformation |
| Primära tillverkare | NetFlow: Cisco, Juniper (J-Flow), Huawei (NetStream) • sFlow: HP, Arista, Brocade, Extreme |
| Standardisering | NetFlow: proprietär, IPFIX är öppen efterträdare • sFlow: öppen standard från start |
| Datavolym till samlaren | NetFlow: hög, en post per flöde • sFlow: låg, en post per sampling |
När väljer du NetFlow?
NetFlow är rätt val när noggrannhet är viktigare än skalbarhet. Det gäller framför allt i miljöer där du behöver kunna gå tillbaka och svara på exakta frågor om vad som hände i nätverket vid en specifik tidpunkt. Här är situationer där NetFlow är ett bättre val:
- Säkerhetsanalys och spårning av incidenter, där varje flöde måste kunna verifieras
- Mindre och mellanstora nätverk där datavolymen är hanterbar
- Debitering och kapacitetsplanering som kräver exakt mängd överförd data per anslutning
- Compliance-krav där sampling inte accepteras som mätmetod
När väljer du sFlow?
sFlow passar när du har mycket trafik och låg tolerans för belastning på själva nätverksutrustningen. Tekniken är skapad för mycket snabba kärnswitchar där full flödesspårning skulle dra för mycket processorkraft. Välj sFlow om något av detta stämmer:
- Du har 40 eller 100 Gbit-länkar i datacenterkärnan
- Du behöver översikt över trafikmönster och toppanvändare, inte exakta siffror per flöde
- Nätverksenheterna har begränsad processorkapacitet och måste prioritera vidarebefordran
- Du vill ha headerinformation på lager 2 till 7 för djupare analys av specifika prover
Vad är IPFIX?
IPFIX (Internet Protocol Flow Information Export) är en öppen IETF-standard som bygger på NetFlow v9. IPFIX är inte ett konkurrerande protokoll utan snarare en standardiserad version av NetFlow med stöd för leverantörsspecifika utökningar. Specifikationen finns i RFC 7011 och senare uppdateringar.
De flesta nya enheter exporterar antingen IPFIX direkt eller stödjer både NetFlow v9 och IPFIX parallellt. För nya installationer är IPFIX att föredra, eftersom det är en öppen standard som inte är knuten till en enskild tillverkare.
J-Flow och NetStream
Juniper kallar sin variant J-Flow och Huawei kallar sin NetStream. Båda bygger på samma flödeskoncept som Cisco NetFlow och exporterar i kompatibla format. De flesta moderna samlare hanterar samtliga varianter utan särskild konfiguration. Skillnaden ligger i vilken produkttillverkare som tagit fram implementationen, inte hur protokollet fungerar. sFlow.org är den auktoritativa källan för sFlow-specifikationen.
För konkret felsökning av flödesdata och fel i nätverksövervakning finns separata guider om felsökning av nätverk och serverövervakning som behandlar tolkning av flödesdata.
Vanliga misstag vid implementation
Båda protokollen kan ge fel resultat om de konfigureras felaktigt. Här är de tre vanligaste fallgroparna:
- Fel sampling-rate i sFlow: Sätter du 1:1 på en hög hastighetslänk drunknar samlaren. Sätter du 1:10000 missar du allt utom de allra största flödena
- Aktiv timeout för långa NetFlow-flöden: Glömmer du att sätta active flow timeout till några minuter blir långa nedladdningar och streaming felaktigt grupperade i en enda post som inte exporteras förrän sessionen är slut
- Otillräckliga resurser på samlaren: Båda protokollen kräver lagring och processorkraft för att lagra och analysera flödesdata över tid