zurück zum Artikel

Kernel-Log – Was 3.10 bringt (1): Netzwerk

| Thorsten Leemhuis

Linux 3.10 handhabt Paketverluste am Ende von TCP-Verbindungen effizienter und beschleunigt so HTTP-Übertragungen. Neu sind auch Unterstützung für VLAN Stacking und den WLAN-Chip Realtek RTL8188EE.

Am Wochenende hat Linus Torvalds die vierte Vorabversion von Linux 3.10 [1] freigegeben. Aufgrund technischer Probleme gab es sie anfangs nur über das Quellcodeverwaltungssystem git; Torvalds betont in der Freigabe-Mail, dies sei ohnehin die effizienteste Art der Beschaffung. Mittlerweile ist Linux 3.10-rc4 aber als Quellcode-Archiv über kernel.org [2] abrufbar.

Alle größeren Neuerungen von Linux 3.10 haben Torvalds und seine Mitstreiter wie gewohnt in den zwei Wochen [3] nach Freigabe der Version 3.9 [4] in den Kernel integriert. Linux 3.10 befindet sich daher jetzt in der Stabilisierungsphase; umfangreichere Umbauten gibt es in diesem Entwicklungsabschnitt nur in Ausnahmefällen, daher können wir bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen geben, die der Ende Juni oder Anfang Juli erwartete Kernel 3.10 bringen wird. Eine Artikelserie wird nacheinander die verschiedenen Bereiche des Kernels behandeln.

Den Anfang macht die folgende Beschreibung zu den Neuerungen rund um Netzwerk-Unterstützung. In den nächsten Wochen folgen Artikel zu Storage-Techniken, Dateisystemen, Grafiktreibern, Kernel-Infrastruktur, Prozessor/Plattform-Unterstützung und Treibern für andere Hardware.

Durch Unterstützung für das experimentelle Tail Loss Probe (TLP) handhabt der TCP-Stack nun Paketverluste am Ende einer TCP-Verbindung effizienter. Das Konzept von TLP und die Implementation für Linux stammen von Google-Entwicklern; laut einigen im Commmit-Kommentar angegebenen Messungen soll die Technik bei kurzen Transaktionen die Retransmission Timeouts um 15 Prozent reduzieren und die HTTP-Antwortzeit um durchschnittlich 6 Prozent verkürzen. Details zur Funktionsweise liefert der Commit-Kommentar [5] und der bei der TCP Maintenance Working Group vorliegende Internet-Draft zu TLP [6].

Das für die Kommunikation und Datenaustausch zwischen Kernel und manchen Userspace-Programmen [7] verwendete Netlink-Interface beherrscht nun Memory Mapped I/O (MMIO) [8]; dadurch kann das bislang bei der Interaktion nötige Kopieren der ausgetauschten Daten entfallen, was den Overhead reduziert und die Performance steigert.

Der Kernel unterstützt jetzt die Spezifikation IEEE 802.1ad [9]. Über das auch "VLAN Stacking" oder "Q-in-Q" bekannte Verfahren lassen sich mehrere VLAN-Tags in ein Ethernet-Frame [10] einfügen; die Konfiguration der relevanten Netzwerk-Parameter erfolgt über das Tool ip.

Durch "network coding" kann ein Mesh-Relay mit einer Übermittlung Informationen an unterschiedliche Systeme senden.

Durch "network coding" kann ein Mesh-Relay mit einer Übermittlung Informationen an unterschiedliche Systeme senden.

Die Mesh [11]-Implementierung batman-adv beherrscht nun "network coding" [12] – durch diese Technik [13] kann ein Mesh-Relay mit Hilfe eines XOR-Tricks in einer Übermittlung zwei Netzwerkpakete an unterschiedliche Systeme senden, mit denen das Relay zuvor kommuniziert hat.

Die Entwickler haben den unfertigen und bremsenden Code für TCP Cookie Transactions (TCPCT) rausgeschmissen [14] – eine Technik, die bei der Abwehr einiger Denial-Of-Service-Attacken hätte helfen können [15].

Mit Linux 3.10 stoßen Treiber zum Kernel, die den USB-2.0-Netzwerkchip RTL8152 [16] und den 11n-WLAN-Chip RTL8188EE (u. a. 1 [17], 2 [18]) ansteuern; beide Netzwerkbausteine stammen von Realtek. Für den RT5592 von Ralink [19] gibt es jetzt experimentelle Unterstützung. Der für neuere Broadcom-Chips zuständige Treiber brcmsmac kann jetzt im Access-Point-Modus [20] arbeiten.

Der Treiber für Netzwerkverbindungen über FireWire unterstützt IPv6 [21] erheblich besser. Der Team-Treiber entscheidet im neuen "Random Mode" [22] jeweils zufällig, über welchen der vom Treiber virtuell verbundenen Netzwerkschnittstellen ein Paket das System verlässt.

Einige weitere Neuerungen rund um Netzwerk-Treiber und -Infrastruktur listet der Betreuer des Netzwerksubsystems in seinem Haupt-Git-Pull-Request für Linux 3.10 [23].

Einige weitere für Sie vielleicht interessante Neuerungen liefert die folgenden Liste mit den englischen Commit [24]-Überschriften ausgewählter Änderungen, die es in den beschriebenen Kernel-Subsystemen gab. Wie viele Verweise im vorangegangenen Text verlinken die Einträge auf das Webfrontend [25] des von Linus Torvalds gepflegten Git-Zweigs auf Kernel.org [26]. Der über diese Links angezeigte Commit-Kommentar und der darunter ausgegebene Patch [27] liefern oft zahlreiche Hintergrundinformationen zur jeweiligen Änderung.

Ethernet

Wifi

Various

Ein "C" im Bereich "[  ]" kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichnete Patches rüsten neue PCI- oder USB-IDs nach; jene mit "D" verändern die dem Kernel beiliegende Dokumentation; Commits mit "N" legen neue Dateien an. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: Eine "1" kennzeichnet Patches, die inklusive Kommentar zwischen 10 und 20 KByte groß sind; Patches mit einer "9" sind 90 KByte oder größer.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs [171] auf heise open [172]. Neue Ausgaben des Kernel-Logs [173] werden auf den Identi.ca [174]- und Twitter [175]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H [176]" erscheinenden Übersetzungen auf den Identi.ca [177]- und Twitter [178]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca [179] und Twitter [180] als "@kernellogauthor". (thl [181]) (thl [182])


URL dieses Artikels:
https://www.heise.de/-1884420

Links in diesem Artikel:
[1] http://thread.gmane.org/gmane.linux.kernel/1500596
[2] https://www.kernel.org/
[3] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[4] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-9-1844759.html
[5] http://git.kernel.org/linus/6ba8a3b19e764b6a65e4030ab0999be50c291e6c
[6] http://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01
[7] http://en.wikipedia.org/wiki/Netlink
[8] http://git.kernel.org/linus/5683264c3981047aa93eebabcdbb81676018a7c9
[9] http://git.kernel.org/linus/8ad227ff89a7e6f05d07cd0acfd95ed3a24450ca
[10] http://en.wikipedia.org/wiki/IEEE_802.1ad
[11] https://en.wikipedia.org/wiki/Mesh_networking
[12] http://git.kernel.org/linus/d353d8d4d9f0184ac43a90c6e04b593c33bd28ea
[13] http://www.open-mesh.org/projects/batman-adv/wiki/NetworkCoding-technical
[14] http://git.kernel.org/linus/1a2c6181c4a1922021b4d7df373bba612c3e5f04
[15] http://en.wikipedia.org/wiki/TCP_Cookie_Transactions
[16] http://git.kernel.org/linus/ac718b69301c7c07cd0d858570f76a0e1c4c8726
[17] http://git.kernel.org/linus/f0eb856e0b6cbd21244afc0f252cec718ecf88fb
[18] http://git.kernel.org/linus/8b138d4898a006d94de9fd8eab8cb8c49c08ba7e
[19] http://git.kernel.org/linus/939ec51dc7d055bb2cb8977a4c026d9dc85438dd
[20] http://git.kernel.org/linus/492b71e8d468102372969705b65845f5e57038c5
[21] http://git.kernel.org/linus/cb6bf35502d53364d15737295bc64f804c4587ce
[22] http://git.kernel.org/linus/753f993911b32e479b4fab5d228dc07c11d1e7e7
[23] http://article.gmane.org/gmane.linux.network/268053
[24] http://www.heise.de/glossar/entry/Commit-397925.html
[25] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree
[26] http://www.kernel.org/
[27] http://www.heise.de/glossar/entry/Patch-395546.html
[28] http://git.kernel.org/linus/31b958d755d1d124ce3a0fbc998434fe9c0ab88b
[29] http://git.kernel.org/linus/3ec9f9ca79757c54b12f87e51a6664ba1e597b17
[30] http://git.kernel.org/linus/7fa6f34081f168975af72be51715bdc6601931f7
[31] http://git.kernel.org/linus/704ba4b7778f60e0a22108ebda3f7f6dba32ab9a
[32] http://git.kernel.org/linus/669d69967e8600b13513316e8e2c347d9e04c499
[33] http://git.kernel.org/linus/4a22edb593012041ee656a88ea7f9889837cb0d1
[34] http://git.kernel.org/linus/9616407cbc09663d3de925d9ed41830acb66a5b1
[35] http://git.kernel.org/linus/22adfe0a85ca3808e09e7b4787cb08299d89aeaa
[36] http://git.kernel.org/linus/7d6727cfe5815816466b94db5180b8d3ef08fbb0
[37] http://git.kernel.org/linus/0a57a5366a9878ba2a038f8eba08c6ffa180ab2f
[38] http://git.kernel.org/linus/e86ac13b031cf71d8f40ff513e627aac80e6b765
[39] http://git.kernel.org/linus/cf8fb73c23aa806c990c8b926f61e60cf6a7bda9
[40] http://git.kernel.org/linus/ca7c4a45d132c7e135cc182aa8479ffaf7122704
[41] http://git.kernel.org/linus/6752c8db8e0cfedb44ba62806dd15b383ed64000
[42] http://git.kernel.org/linus/345be204dcbb2cc7580a63bc377a185125a6f822
[43] http://git.kernel.org/linus/c3a07134e6aa5b93a37f72ffa3d11fadf72bf757
[44] http://git.kernel.org/linus/0d7f53e34d3f5f82c0f4941356a02285a78807a4
[45] http://git.kernel.org/linus/ec693d47010e8302e61e0bdf3f47496c5610641a
[46] http://git.kernel.org/linus/8a7fbfab4be39b8690543f3d29b26860d2f6c576
[47] http://git.kernel.org/linus/522907403b202dea8528c308ffc21e79d0636ee6
[48] http://git.kernel.org/linus/e8b508ef71fb70ec761086532716b19d3c4773e5
[49] http://git.kernel.org/linus/02feda1758755f2b5dbed060bdffda5e5b0244ba
[50] http://git.kernel.org/linus/7cb03b2347d5edace4fb8e7dd9d6c3889368a179
[51] http://git.kernel.org/linus/91b7282b613d4da65e8b4c87d521156cdc64c169
[52] http://git.kernel.org/linus/97d8105cf3fb1eb84351ff4b69287ef7d25a4422
[53] http://git.kernel.org/linus/f197a7aa62888f27c9a7976b18eb4f040f6606ce
[54] http://git.kernel.org/linus/f036e4f44ef04ffd78ffc2f515ebf60ffa543d21
[55] http://git.kernel.org/linus/58152cd46f88ea3fb2e518511b8367454b12296a
[56] http://git.kernel.org/linus/57538c4a89506c333b480ff5bdfcd4f16f78ccdf
[57] http://git.kernel.org/linus/fe7524c09793c87dfde55ac3f98f4b95d9d48638
[58] http://git.kernel.org/linus/85740cdf0b84224a9fce62dc9150008ef8d6ab4e
[59] http://git.kernel.org/linus/674853b222168f2066db028cad89ab52cbcdeee5
[60] http://git.kernel.org/linus/891434b18ec0a21cfa4788695165b74e8d4c0474
[61] http://git.kernel.org/linus/92ba6888510c6700ee78273cfcd2b4092a2a71b2
[62] http://git.kernel.org/linus/4a7d666a7202744af32d4da31fb52857b7d86850
[63] http://git.kernel.org/linus/c24602ef86649376e9d71ea808cd877e414d340b
[64] http://git.kernel.org/linus/94fbbbf89492e460979cd10c6384a78a9dbf17ed
[65] http://git.kernel.org/linus/85730a631f0c9fadcf0cc9587cacc755f50766fa
[66] http://git.kernel.org/linus/416cf0b49e67254676b4762d1bab88df5130f909
[67] http://git.kernel.org/linus/4ba910db199779470685dd962d626e1ffc657f7e
[68] http://git.kernel.org/linus/f0fb6af2918ea6b6f781f7d598d7cd72cea28915
[69] http://git.kernel.org/linus/d353d8d4d9f0184ac43a90c6e04b593c33bd28ea
[70] http://git.kernel.org/linus/c3203374bea328af54843bd72f9306e6c7832db4
[71] http://git.kernel.org/linus/c7f34a69a2e32b139a6b66c8599252c46f37abba
[72] http://git.kernel.org/linus/1640f28f6b839637d9b82a3c4a19120601e59c66
[73] http://git.kernel.org/linus/349e7104ff662eeacca1fffbb480c287562c45a1
[74] http://git.kernel.org/linus/668761ac01d6f5a36b8e5a24d4e154550e2c4c3b
[75] http://git.kernel.org/linus/84bcc0c3c4b8ca4c0abed2d2dd63b7ce04f8be0e
[76] http://git.kernel.org/linus/e5483576f04476de8f277feb313248b348d56ad8
[77] http://git.kernel.org/linus/1b255c92536a3f0e5dd00d291759350c834cd669
[78] http://git.kernel.org/linus/61730d4dfffc2cc9d3a49fad87633008105c18ba
[79] http://git.kernel.org/linus/4a3da9906bbf37f6b0d44ddb753d3198e73c3c6d
[80] http://git.kernel.org/linus/cd864522b349cfe88903cf6f3415293c39856b6c
[81] http://git.kernel.org/linus/e3b919d8b3db014af848af64ead8da4475d4ab60
[82] http://git.kernel.org/linus/355199e02b831fd4f652c34d6c7673d973da1369
[83] http://git.kernel.org/linus/5de17984898c5758fc6ebe08eccea9f4b6548914
[84] http://git.kernel.org/linus/947add36ca2dcd61c5b07347f029a5bafb9efb4e
[85] http://git.kernel.org/linus/499892f2a9ad89910ff21c687273ac80b4367dc0
[86] http://git.kernel.org/linus/1218206e9d642f63801417156be46d8d0175164a
[87] http://git.kernel.org/linus/48e29340d54104ab0d8f995f32485e28ff00e59e
[88] http://git.kernel.org/linus/fb3ceb817503f3d89e3beb4f48a2f4d608a6697f
[89] http://git.kernel.org/linus/931d416049cdb6e8382792231317f76be0d922ce
[90] http://git.kernel.org/linus/83bdad52a3430d0f6c35b64012062ffc4e7ceb13
[91] http://git.kernel.org/linus/2b76ef13086ff0170abfc7f7ebfd104abfdee463
[92] http://git.kernel.org/linus/f0c2646af4f7432f7414e1162377cada06c3c747
[93] http://git.kernel.org/linus/f7546c76f756f7fbd8d7ec6f26f32cefe7778f9e
[94] http://git.kernel.org/linus/1eb32179f0593051e7536378a879f5bdd108416a
[95] http://git.kernel.org/linus/0d528d85c519b755b6f4e1bafa3a39984370e1c1
[96] http://git.kernel.org/linus/59c1ec2b7884a044967883d9e6169a2cbb4715f3
[97] http://git.kernel.org/linus/e943789edbb1f9de71b129d9992489eb79ed341f
[98] http://git.kernel.org/linus/30c97120c6c7893e5c6857a16229699b2b79dfbe
[99] http://git.kernel.org/linus/85220d71bf3ca1ba9129e0744247ae5f61bec559
[100] http://git.kernel.org/linus/a6dad6a26e15f2f9269eea41b756c8cf0971b2bc
[101] http://git.kernel.org/linus/7da060c1c01b103d181dba39bce9bd141a945f99
[102] http://git.kernel.org/linus/d926dc7de89ca3caa550a393b2a00715acb744ea
[103] http://git.kernel.org/linus/7fdb7846c9ca6fc06e380de0976a1228703b498a
[104] http://git.kernel.org/linus/856a850afdd778fad7ded4240d333a8c3b05b136
[105] http://git.kernel.org/linus/ec9c498991880b387e4783a6eb071ed8d01e45a3
[106] http://git.kernel.org/linus/26634c4b1868323f49f8cd24c3493b57819867fd
[107] http://git.kernel.org/linus/5c69177df48b0847fd08b6dc6a6eb9e81934b57a
[108] http://git.kernel.org/linus/e6deaf810cc4b6437d55179660776e131ac059df
[109] http://git.kernel.org/linus/3a16b41240aa893b2c397ea3bd07d86e95e7694b
[110] http://git.kernel.org/linus/707a61528bc9709653a56d4cefa383f793732598
[111] http://git.kernel.org/linus/2455c92c318182deda2f9789fd60792402ebc089
[112] http://git.kernel.org/linus/4b04edc1a7ff1b7c337c3dac920b64865dbd7548
[113] http://git.kernel.org/linus/953c96e0d85615d1ab1f100e525d376053294dc2
[114] http://git.kernel.org/linus/b80231773ad0b89f6abee8cf26fde8fe4638fceb
[115] http://git.kernel.org/linus/dffd30ee9619ccd7153f1861ba0436bbc4400f36
[116] http://git.kernel.org/linus/b4f34d8d9d26b2428fa7cf7c8f97690a297978e6
[117] http://git.kernel.org/linus/890ea8988f7d17453515122041adb0e1acdb6025
[118] http://git.kernel.org/linus/7a875903389f3492d4cb06faa1d55a1630e77c11
[119] http://git.kernel.org/linus/0d2e1a2926b1839a4b74519e660739b2566c9386
[120] http://git.kernel.org/linus/3078cde792340280b761a0f46f99799a78f4395d
[121] http://git.kernel.org/linus/4eb06148250f92e1e58bf069c309dac173e8b5f7
[122] http://git.kernel.org/linus/077f02f1baee7c1eed800e95c7bb76a6be5226d4
[123] http://git.kernel.org/linus/ff5b8ef2ef3af0fd7e1cf6c8c1ed9ec5afbda422
[124] http://git.kernel.org/linus/e306e2c13b8c214618af0c61acf62a6e42d486de
[125] http://git.kernel.org/linus/e1733de2243609073534cf56afb146a62af3c3d8
[126] http://git.kernel.org/linus/56aa091d60a63fee83d2c894edb69b7c159966c7
[127] http://git.kernel.org/linus/fd58156e456d9f68fe04486be378d0bc93641532
[128] http://git.kernel.org/linus/5f5624cf156283687e11ea329c7a0523c677ea0e
[129] http://git.kernel.org/linus/ceec4c3816818459d90c92152e61371ff5b1d5a1
[130] http://git.kernel.org/linus/e5c5d22e8dcf7c2d430336cbf8e180bd38e8daf1
[131] http://git.kernel.org/linus/6a5dc9e598fe90160fee7de098fa319665f5253e
[132] http://git.kernel.org/linus/6e6ceaedb5901c7ebd23e5222726dab5362938bd
[133] http://git.kernel.org/linus/4c09eed9dc422e980fabdb25434ef68e599b704c
[134] http://git.kernel.org/linus/075e64c041b5d3c29651965608e1e76505e01d54
[135] http://git.kernel.org/linus/f48d19db12e1cde296ce7a13c38303618e38e304
[136] http://git.kernel.org/linus/00d71b270eedacd7d3d7b20fb93269853470d18e
[137] http://git.kernel.org/linus/f3c1a44a2208d14b061ad665d9549c9b321f38e5
[138] http://git.kernel.org/linus/dece40e848f6e022f960dc9de54be518928460c3
[139] http://git.kernel.org/linus/30e0c6a6bee24db0166b7ca709277cd693e179f2
[140] http://git.kernel.org/linus/9368a53c471b42a1bd99117d590ce2ccdc8dc3c2
[141] http://git.kernel.org/linus/e817961048ecd12cf9cdfcec0062deb5f7970592
[142] http://git.kernel.org/linus/8746ddcf12bb263ad240e095ef16531006caeb50
[143] http://git.kernel.org/linus/82dc3c63c692b1e1d59378ecee948ac88e034aad
[144] http://git.kernel.org/linus/f53adae4eae5ad9f7343ff4a0fc68b468c981138
[145] http://git.kernel.org/linus/eaaa31392690c7609f7afeec5ba38a79d009842d
[146] http://git.kernel.org/linus/f9c2288837ba072b21dba955f04a4c97eaa77b1e
[147] http://git.kernel.org/linus/ccdfcc398594ddf3f77348c5a10938dbe9efefbe
[148] http://git.kernel.org/linus/a6f68034de8a5784dfeabb337506254c80b4c8c6
[149] http://git.kernel.org/linus/209224862cabf7a871d680c448148ef6376bf98b
[150] http://git.kernel.org/linus/b8075daf552b37b668618f47d15ce2e2e7a1b258
[151] http://git.kernel.org/linus/0decc64b181ddf2eedb0d6f4423c2dedd7d49897
[152] http://git.kernel.org/linus/86a9bad3ab6b6f858fd4443b48738cabbb6d094c
[153] http://git.kernel.org/linus/1fd9b1fc310314911f66d2f14a8e4f0ef37bf47b
[154] http://git.kernel.org/linus/80d5c3689b886308247da295a228a54df49a44f6
[155] http://git.kernel.org/linus/4912e2fe74811693703e9b4e21bf36c067643a03
[156] http://git.kernel.org/linus/30cc4587659e1c9b1bfade8b2a757d91e04758ab
[157] http://git.kernel.org/linus/bb03dceb83852614ae3ad6b3731a31422890b0b9
[158] http://git.kernel.org/linus/2940b26bec9fe5bf183c994678e62b55d35717e6
[159] http://git.kernel.org/linus/77f65ebdca506870d99bfabe52bde222511022ec
[160] http://git.kernel.org/linus/b818d1a7f72575eef17e00dc4085512c9cc8897d
[161] http://git.kernel.org/linus/23a9544206dd91dfe048fcf67abec3f3104c42b9
[162] http://git.kernel.org/linus/49cfbf675cd18330cef3c4613e890b0044510e95
[163] http://git.kernel.org/linus/e33099f96d99c391b3325caa9c44258de04aae86
[164] http://git.kernel.org/linus/9b44190dc114c1720b34975b5bfc65aece112ced
[165] http://git.kernel.org/linus/9b717a8d245075ffb8e95a2dfb4ee97ce4747457
[166] http://git.kernel.org/linus/a29a194a15df9840b24c6c383a9a9a1236979db5
[167] http://git.kernel.org/linus/731362674580cb0c696cd1b1a03d8461a10cf90a
[168] http://git.kernel.org/linus/f61dd388a9b76f273bb0de9786600fd64e34ba09
[169] http://git.kernel.org/linus/c7995c43facc6e5dea4de63fa9d283a337aabeb1
[170] http://git.kernel.org/linus/e817104525577413301b3cb709a6472e0cf44a6a
[171] http://www.heise.de/open/kernel-log-3007.html
[172] http://www.heise.de/open/
[173] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[174] http://identi.ca/kernellog
[175] http://twitter.com/kernellog
[176] http://www.h-online.com
[177] http://identi.ca/kernellog2
[178] http://twitter.com/kernellog2
[179] http://identi.ca/kernellogauthor
[180] http://twitter.com/kernellogauthor
[181] mailto:thl@ct.de
[182] mailto:thl@ct.de