Kernel a síťové karty. Michal Schmidt

Podobné dokumenty
Řízení toku v přístupových bodech

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

Systémy pro sběr a přenos dat

Routování směrovač. směrovač

10GE síťový prvek. switch & router. Radim Roška & Moris Bangoura Installfest 2012 Silicon Hill

Y36PSI Protokolová rodina TCP/IP

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

ISPforum 2016 Jezerka NAT++

Ethernet převodníky sériových linek. v Přepěťová ochrana 30A AI RE AO DO. minilan-485 AI RE AO DO EZS PIDS EKV. MIOS & Modbus IO moduly nebo senzory

Aktivní prvky: brány a směrovače. směrovače

Počítačové sítě. Lekce 4: Síťová architektura TCP/IP

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Obsah PODĚKOVÁNÍ...11

6. Transportní vrstva

Počítačové sítě pro V3.x Teoretická průprava II. Ing. František Kovařík

POPIS TUN TAP. Vysvetlivky: Modre - překlad Cervene - nejasnosti Zelene -poznamky. (Chci si ujasnit o kterem bloku z toho schematu se mluvi.

Distribuované systémy a počítačové sítě

Popis programu EnicomD

7. Aplikační vrstva. Aplikační vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl. Představíme si funkci aplikační vrstvy a jednotlivé protokoly.

X36PKO Jiří Smítka

Y36PSI IPv6. Jan Kubr - 7_IPv6 Jan Kubr 1/29

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

SB8485. Převodník USB na 8x RS485/RS září 2010 w w w. p a p o u c h. c o m

Zabezpečení v síti IP

Síťová vrstva. RNDr. Ing. Vladimir Smotlacha, Ph.D.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Tiskové služby v sítích Microsoft. PDF created with pdffactory trial version

Ověření možností generování provozu na platformě MikroTik + srovnání s Cisco a Open Source řešeními

Směrovací protokol Mesh (802.11s) na platformě Mikrotik

Management procesu II Mgr. Josef Horálek

Uživatelský manuál. KNXgw232

WrapSix aneb nebojme se NAT64. Michal Zima.

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

Počítačové sítě Transportní vrstva. Transportní vrstva

Směrovací protokoly, propojování sítí

TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.

SAS (Single-Attachment Station) - s jednou dvojicí konektorů, tj. pro použití pouze na jednoduchém kruhu.

Komunikace s automaty MICROPEL. správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace

Počítačové sítě II. 14. Transportní vrstva: TCP a UDP. Miroslav Spousta, 2005

Stavba operačního systému

Přepínaný Ethernet. Virtuální sítě.

Uživatelská příručka TG-3269/ TG Adaptér pro Gigabit Ethernet s rozhraním PCI. Rev:

Podpora QoS (L2, L3) na DSLAM Zyxel IP Express IES 1000

e1 e1 ROUTER2 Skupina1

Počítačové sítě II. 12. IP: pomocné protokoly (ICMP, ARP, DHCP) Miroslav Spousta,

Quido - Telnet. Popis konfigurace modulů Quido protokolem Telnet. 3. srpna 2007 w w w. p a p o u c h. c o m

Zajištění kvality služby (QoS) v operačním systému Windows

Firewally a iptables. Přednáška číslo 12

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

SOFTWARE A POČÍTAČOVÉ SÍTĚ. Alice Nguyenová

Síťové protokoly. Filozofii síťových modelů si ukážeme na přirovnání:

KLASICKÝ MAN-IN-THE-MIDDLE

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

TFTP Trivial File Transfer Protocol

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Přidělování CPU Mgr. Josef Horálek

Část 1. Technická specifikace. Posílení ochrany demokratické společnosti proti terorismu a extremismu

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Datasheet SanDisk Řada PCIe-SSD Fusion iomemory PX600 Server

Telekomunikační sítě Protokolové modely

Modulární monitorovací systém Gradient Digitální systém pro záznam, archivaci a vyhodnocení telefonie.

3.17 Využívané síťové protokoly

ZÁKLADNÍ ANALÝZA SÍTÍ TCP/IP

Budování sítě v datových centrech

Operační systémy. Přednáška 7: Správa paměti I

Inovace a zkvalitnění výuky prostřednictvím ICT Počítačové sítě Vrstvový model TCP/IP Ing. Zelinka Pavel

Inovace bakalářského studijního oboru Aplikovaná chemie

Zabezpečení dat při přenosu

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vizualizace a demonstrace IP fragmentace.

Y36PSI QoS Jiří Smítka. Jan Kubr - 8_rizeni_toku Jan Kubr 1/23

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

CCNA 2/10 Další funkce TCP/IP Aleš Mareček Jaroslav Matějíček 1

PB169 Operační systémy a sítě

Informatika inteligentních domů. Jaroslav Žáček Michal Janošek

Protokol UNI pro MORSE

Průzkum a ověření možností směrování multicast provozu na platformě MikroTik.

Datasheet FUJITSU PLAN EP Intel X710-DA2 2x10GbE SFP+ Server

Technická specifikace předmětu zakázky

SB485. Převodník rozhraní USB na linku RS485 nebo RS422. s galvanickým oddělením. Převodník SB485. RS485 nebo RS422 USB. přepínače PWR TXD RXD

Identifikátor materiálu: ICT-3-03

Seznámení s Quidy. vstupní a výstupní moduly řízené z PC. 2. srpna 2007 w w w. p a p o u c h. c o m

Maturitní okruhy pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

Komunikační adaptér USB - RS485 - virtuální sériový port ELO E218. Uživatelský manuál

TCP2RTU. Transparentní převodník protokolu MODBUS TCP na MODBUS RTU/ASCII. Tři varianty: pro RS422, RS485 a RS232

Počítačové sítě Systém pro přenos souborů protokol FTP

Flow Monitoring & NBA. Pavel Minařík

Novinky u zařízení pro sériovou komunikaci. Michal Kahánek

Řešení jádra sítě ISP na otevřených technologiích

MODELY POČÍTAČOVÝCH SÍTÍ

Vlastnosti Xen na univerzitě. Michal Švamberg

IPv4/IPv6. Ing. Michal Gust, ICZ a. s.

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Uživatelský manuál WEB SERVICE V3.0 IP kamer Dahua

Další nástroje pro testování

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

Transkript:

Kernel a síťové karty Michal Schmidt mschmidt@redhat.com

Počátky Ethernet vznikal v 70. letech v Xerox PARC. DEC/Intel/Xerox první společná specifikace v r. 1980 Linux v1.0 (1994) "NET2Debugged" síťový stack okolo 20 síťových ovladačů pro tehdy obvyklé 10 Mb/s karty

První síťové ovladače v Linuxu /* */ Written 1993 by Donald Becker. Copyright 1993 United States Government as represented by the Director, National Security Agency. [...]

Dnes 1 Gb/s má v PC kdekdo. 10 Gb/s běžně v serverech. 40 Gb/s, 100 Gb/s již existují. Dnešní Ethernet vypadá jinak než ten původní (fyzické médium, topologie), ale mnohé mu zůstalo (formát rámce linkové vrstvy).

Náznak problému Maximum Transmission Unit (MTU) stále 1500 B. Jumbo rámce - MTU až do 9 KB - ale ne v Internetu 10 Mb/s ~ 1.2 MB/s, 1500 B/pkt => 1.2M / 1500 = 800 pkt/s 10 Gb/s ~ 1.2 GB/s, 1500 B/pkt => 800 000 pkt/s Ostatní hardware také zrychlil, ale ne o dost. Nutno minimalizovat čas CPU potřebný ke zpracování každého paketu. Případně rozložit zátěž na více CPU.

Události roku 1999 Bill Clinton ustál impeachment. Majetek Billa Gatese vzrostl na 100 mld. USD. Microsoft si objednal studii u spol. Mindcraft. "Microsoft Windows NT Server is 2.5 times faster than Linux as a File Server and 3.7 times faster as a Web Server"

Příčina problému V testu server se 4 CPU a 4 síťovými kartami (100Mb/s). Linux v2.2 umí více CPU, ale síťový stack stále neumožňuje paralelní zpracování. CPU1 CPU2 CPU3 CPU4 zpracovává čeká čeká čeká čeká čeká zpracovává čeká čeká čeká čeká zpracovává čeká zpracovává čeká čeká čeká čeká zpracovává čeká čas

Linux v2.4 "softnet" přijímací fronta paketů pro každé CPU zvlášť Zpracování může běžet současně na více CPU. (bottom-halves nahrazeny softirq)

Zahlcení pod zátěží Při směrování nad 60 Kpkt/s pakety přicházely, ale žádné neodcházely ven. Bez ztrát se dařilo přenášet jen 27 Kpkt/s. Jediné vysoce zatížené rozhraní dokázalo vyhladovět všechna ostatní. "Interrupt livelock" systém pouze zpracovává přerušení, na nic jiného nemá čas.

Řešení: NAPI 1. Přijde přerušení od síťové karty. 2. Ovladač zakáže přerušení od karty. 3. Ovladač oznámí kernelu, že karta má připravena data k příjmu. 4. Kernel se dotazuje všech takto oznámených karet (střídavě, po dávkách). Dostává data. 5. Pokud některá karta už další data nemá, je vyjmuta ze seznamu a opětovně povolí přerušení.

Některé výhody NAPI Automaticky podle zátěže přechází mezi režimy přerušování a dotazování: Malá zátěž: každý paket vyvolá přerušení a je zpracován s minimálním zpožděním. Velká zátěž: příjem v režimu dotazování, po velkých dávkách, dobré pro CPU cache. Odpadá režie přerušení. Férová obsluha více karet. Při přehlcení jsou pakety zahazovány už kartou na vstupu, bez obtěžování systému.

Ať se karta taky snaží "offload"- síťová karta dělá práci za CPU. TCP Offload Engine (TOE) Inteligentní karta, sama rozumí TCP. Existovaly už v době 10 Mb/s karet. Nevýhody: Neprůhledné, obchází vrstvy OS, riziko bezpečnostních chyb firmwaru, časem byly pomalejší než OS na rychlejším CPU. Proto v Linuxu nepodporované. Bezstavový offload: karta pomáhá nekontroverzně

Rx/Tx checksum Kontrolní součty v hlavičkách IP, TCP, UDP Rx (receive, příjem) karta spočítá checksum a buď: jen ohlásí systému, zda byl výsledek v pořádku, nebo ohlásí hodnotu spočtenou pro celý rámec a OS si už dopočítá, zda to bylo správně. Tx (transmit, vysílání) karta před odesláním spočítá checksum a uloží ho na správné místo v rámci. Některé karty to umí pouze pro TCP/IPv4, jiné umí spočítat checksum libovolného úseku v rámci.

Rx/Tx checksum ethtool -k $DEV ethtool -K $DEV {tx,rx} {on off} Wireshark může vidět chybné checksumy.

TSO TCP Segmentation Offload Nasekání velkých dat do TCP segmentů hlavička data data data data MSS

TSO Vyžaduje zapnutou schopnost scattergather a Tx checksum ethtool -K $DEV sg on tx on tso on Wireshark může vidět obří vysílané rámce.

UFO UDP Fragmentation Offload Nasekání velkých UDP datagramů do IP fragmentů Méně obvyklé než TSO Implementuje ho aktuálně jen s2io a některá virtuální zařízení. Aspoň se to srandovně jmenuje.

GSO Generic Segmentation Offload Zobecnění TSO, řešeno v software Síťovým stackem (protokoly, směrování, netfilter,...) prochází obří paket. Až těsně před předáním ovladači k vysílání je nasekán na patřičné kousky. Ušetří se tak zpracování, které by se jinak opakovalo pro každý kousek zvlášť (podobně jako u TSO). Lze použít i na protokoly jiné než TCP.

LRO Large Receive Offload Opak TSO, na přijímací straně Karta+driver z přijatých paketů skládají větší kusy, které pak předají do stacku najednou. Snižuje zátěž CPU při příjmu dat. Není možné zrekonstruovat původní pakety. Nelze použít při forwardování ani v bridge. Automaticky se vypíná. Skládání může zanést zpoždění.

GRO Generic Receive Offload Zobecnění LRO. Má přísnější kritéria pro skládání paketů. Tak, aby šlo velký paket zpětně nasekat na původní kousky (pomocí GSO/TSO). Funguje forwarding i bridge. Není omezeno jen na TCP/IPv4. Řešeno v software při příjmu dávek v NAPI.

Škálovatelnost Umožnit paralelní zpracování Zvýšit výkon při větším počtu CPU Klíčem je: minimalizovat čekání jednoho CPU na jiné, využívat cache CPU

RSS Receive-Side Scaling Síťové karty mívají více Tx/Rx front (multiqueue). Karta třídí přijaté pakety do Rx front. Snaží se přitom řadit pakety patřící do jednoho toku stále do stejné fronty. např. na základě hashe z IP adres a čísel TCP portů Každá fronta má vlastní MSI-X přerušení. Lze jej směrovat na vybrané CPU.

RSS ilustrace Q1 Q2 Q3 Q4

RSS Tabulku, do které fronty která hodnota Rx hashe paket pošle, lze předepsat ethtool --show-rxfh-indir... ethtool --set-rxfh-indir... Některé karty umí nastavit konkrétní filtry pro rozdělování paketů do Rx front. např. TCP port 80 do specifické fronty. ethtool --show-nfc... ethtool --config-nfc...

RPS Receive Packet Steering softwarová implementace RSS 1. CPU1 přijme paket a spočítá pro něj hash (nebo ho dostane spočítaný už od karty) 2. Na základě hashe vybere jiné CPU 3. CPU1 vloží paket do přijímací fronty pro CPU2 a pošle CPU2 Inter-Processor Interrupt. 4. CPU2 zpracuje paket. Defaultně vypnuto. Nutno nastavit bitmapu povolených přijímacích CPU: /sys/class/net/<dev>/queues/rx-<n>/rps_cpus

Výhody RPS Díky implementaci v software lze snadno přidat filtry pro nové protokoly. Lze použít i pro karty s jedinou Rx frontou. I pro multi-queue karty lze rozložit zátěž na více CPU než má karta front. Nepřehánět. Nepřeposílat pakety na CPU s jinou pamětí (NUMA).

RFS Receive Flow Steering rozšíření RPS Bere navíc v úvahu, na kterém CPU běží aplikace, která data přijímá. pro ještě lepší využití CPU cache Když aplikace volá recvmsg(), sendmsg(), kernel si uloží číslo aktuálního CPU do tabulky pro vyhledávání datových toků. Tabulkou se pak řídí při příjmu paketů. Defaultně vypnuto. /proc/sys/net/core/rps_sock_flow_entries /sys/class/net/<dev>/queues/rx-<n>/rps_flow_cnt

Accelerated RFS A-RFS se má k RFS stejně jako RSS k RPS. rychlejší než prosté RFS Odpadá mezikrok s prvotním příjmem paketu na CPU, které není finálním konzumentem. Pakety chodí rovnou na CPU, na kterém běží přijímací aplikace. Kernel kartu podle potřeby informuje o nové tabulce mapující toky na čísla Rx front. Rx fronty už jsou asociovány na konkrétní CPU. Zatím to umí pouze mlx4, sfc.

XPS Transmit Packet Steering Snaží se rozumně vybírat Tx frontu vhodnou pro CPU odesílající data. vyhradit frontu výlučně pro takovou podmnožinu všech CPU, aby zpracování dokončení Tx operací probíhalo pouze na CPU z této podmnožiny. Méně CPU soupeří o zamykání fronty. Ideálně má každé CPU svou Tx frontu, o kterou se nemusí dělit. Když už se musí dělit, tak aspoň jenom s CPU, se kterými má společnou cache. Defaultně vypnuto. Bitmapa CPU, které smí používat frontu: /sys/class/net/<dev>/queues/tx-<n>/xps_cpus

Odkazy 1/2 Mindcraft studie: http://www.mindcraft.com/whitepapers/first-nts4rhlinux.html NAPI: https://www.usenix.org/legacy/publications/library/proceedings/ als01/jamal.html http://lwn.net/2002/0321/a/napi-howto.php3 https://lwn.net/articles/30107/ https://lwn.net/articles/244640/ TSO: https://lwn.net/articles/9123/ http://en.wikipedia.org/wiki/large_segment_offload GSO: https://lwn.net/articles/188489/ LRO: https://lwn.net/articles/243949/ http://www.linuxinsight.com/files/ols2005/grossman-reprint.pdf

Odkazy 2/2 GRO: https://lwn.net/articles/358910/ Linux a TOE: https://lwn.net/articles/148697/ Linux Device Drivers: https://lwn.net/kernel/ldd3/ Škálovatelnost: Documentation/networking/scaling.txt ve zdrojácích Linux kernelu RPS: https://lwn.net/articles/362339/ RFS: https://lwn.net/articles/382428/ Accelerated RFS: https://lwn.net/articles/416332/ XPS: https://lwn.net/articles/412062/