zurück zum Artikel

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

| Thorsten Leemhuis

Ein neuer Paket-Scheduler soll Bufferbloat vermeiden helfen. Early Retransmit verringert TCP-Latenzen. Der Treiber E1000e unterstützt schon jetzt den Netzwerkchip von Intels nächster Desktop- und Notebook-Plattform.

Zum Wochenstart hat Linus Torvalds die vierte Vorabversion von Linux 3.5 veröffentlicht [1]. Sie bringt gegenüber der dritten Vorabversion lediglich rund zweihundert kleine und unbedeutende Änderung, wie Torvalds zufrieden anmerkt.

Alle größeren Neuerungen für Linux 3.5 haben die Kernel-Entwickler wie üblich zu Beginn der Entwicklung [2] aufgenommen. Das Kernel-Log [3] kann daher bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen von Linux 3.5 geben – es ist sehr selten, dass die Kernel-Entwickler in der jetzt laufenden Stabilisierungsphase noch größere Änderungen integrieren oder Neuerungen wieder entfernen.

Die Übersicht erfolgt im Rahmen einer Artikelserie, die nacheinander die verschiedenen Bereiche des Kernels behandelt. Den Anfang macht die folgende Beschreibung der wichtigsten Neuerungen rund um Infrastruktur und Treiber für Netzwerke; die später folgenden Artikel werden sich mit Grafiktreibern, Dateisystemen, Storage-Unterstützung, Architektur-Code und Treibern für andere Hardware beschäftigen.

Zum Netzwerksubsystem stieß "Codel [4]", eine Implementierung des von Kathleen Nichols und Van Jacobson [5] erdachten [6] Paket-Schedulers "Controlled Delay Active Queue Management (AQM)". Auf Codel-Mechanismen setzt auch der ebenfalls in 3.5 eingeflossene alternative Scheduler "Fair Queue Codel AQM [7]".

Beide Scheduler gehen beim Priorisieren versendeter oder weitergegebener Netzwerkpakete etwas anders vor als bisherige Scheduler und sollen mit ihrer Arbeitsweise zur Vermeidung des "Bufferbloat"-Problems [8] beitragen; das führt unter anderem zu großen Netzwerklatenzen und Verbindungsproblemen, die durch eine zu intensive Nutzung der Caches in modernen Netzwerkchips entstehen. LWN.net erläutert einige Hintergründe zum Problem und dem Ansatz von Codel in einem Artikel [9].

Laut einigen Google-Entwicklern konnte Early Retransmit die TCP-Latenzen in Tests um bis zu 8,5 Prozent senken

Laut einigen Google-Entwicklern konnte Early Retransmit die TCP-Latenzen in Tests um bis zu 8,5 Prozent senken

Ein Google-Entwickler hat den TCP-Stack um eine "Early Retransmit [10]" (ER) genannte Funktion erweitert, die die Verbindungsregeneration nach Paketverlusten beschleunigen kann, wie es RFC 5827 [11] beschreibt; die aufgenommene Implementierung ist allerdings etwas anders, um Probleme des im RFC beschriebene Algorithmus zu vermeiden. Early Retransmit lässt sich über den Sysctl-Wert "tcp_early_retrans" aktivieren und konnte die TCP-Latenzen in einem Test um bis zu 8,5 Prozent senken, wie Google-Mitarbeiter im Abschnitt 6 des für die IMC 2011 geschriebenen Artikels "Proportional Rate Reduction for TCP [12]" schreiben; das dort beschriebene Proportional Rate Reduction (PRR) beherrscht der Kernel bereits seit Version 3.2 [13].

Den Treiber E1000e erhielt [14] Code zur Unterstützung des i217-PHY, der mit Intels Lynx Point Platform Controller Hub (PCH) zusammenarbeiten soll – diese Linie von Mainboard-Chipsätzen ist vornehmlich für die Haswell-Prozessoren [15] gedacht und dürfte ungefähr gleichzeitig mit diesen im ersten Halbjahr 2013 erscheinen. Der R8169- Treiber für Gigabit-Ethernet-Chips von Realtek steuert nun auch die Bausteine RTL8402 [16] und RTL8411 [17] an. Der WLAN-Treiber Mwifiex kennt jetzt auch [18] den Marvell-USB-Chip USB8797. Ein Reihe weiterer Änderungen, die Unterstützung für LAN- und WLAN-Bausteine nachrüsten oder den Funktionsumfang erweitern, finden Sie im Abschnitt "Die kleinen Perlen" auf der zweiten Artikelseite.

Die folgenden Links führen zu kleineren Änderungen, die Unterstützung für bestimmte Hardware nachrüsten, spezifische Probleme beseitigen oder kleinere Verbesserungen einführen:

Ethernet

Wi-Fi

Various

Ein "C" im Bereich zwischen den eckigen Klammern kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichneten 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 [144] auf heise open [145]. Neue Ausgaben des Kernel-Logs [146] werden auf den Identi.ca [147]- und Twitter [148]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H [149]" erscheinenden Übersetzungen auf den Identi.ca [150]- und Twitter [151]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca [152] und Twitter [153] als "@kernellogauthor".

(thl [154])

(thl [155])


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

Links in diesem Artikel:
[1] http://thread.gmane.org/gmane.linux.kernel/1317955
[2] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[3] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[4] http://git.kernel.org/linus/76e3cc126bb223013a6b9a0e2a51238d1ef2e409
[5] http://en.wikipedia.org/wiki/Van_Jacobson
[6] http://queue.acm.org/detail.cfm?id=2209336
[7] http://git.kernel.org/linus/4b549a2ef4bef9965d97cbd992ba67930cd3e0fe
[8] https://www.heise.de/hintergrund/Kernel-Log-Intel-Grafiktreiber-und-Util-Linux-aktualisiert-1443732.html?artikelseite=3
[9] http://lwn.net/Articles/496509/
[10] http://git.kernel.org/linus/eed530b6c67624db3f2cf477bac7c4d005d8f7ba
[11] http://www.heise.de/netze/rfc/rfcs/rfc5827.shtml
[12] http://conferences.sigcomm.org/imc/2011/docs/p155.pdf
[13] https://www.heise.de/hintergrund/Kernel-Log-Was-3-2-bringt-1-Netzwerk-1378635.html
[14] http://git.kernel.org/linus/2fbe4526e5aafc9ffa5d85fa4749a7c5b22af6b2
[15] https://www.heise.de/news/Intel-schickt-Core-i7-3700-und-Core-i5-3000-ins-Rennen-1544599.html
[16] http://git.kernel.org/linus/7e18dca16246b2891239cfc3c6e2dfcea715d353
[17] http://git.kernel.org/linus/b3d7b2f2f07ff0ab87442f2d499f2860ef59bfaa
[18] http://git.kernel.org/linus/4daffe3543667419294b6f22901b7255cbdebdf4
[19] https://www.heise.de/hintergrund/Kernel-Log-Was-3-3-bringt-1-Netzwerk-1421300.html
[20] http://git.kernel.org/linus/01d7f30a9f962573b6c91ed520c73fb30658d826
[21] http://git.kernel.org/linus/ee9952831cfd0bbe834f4a26489d7dce74582e37
[22] http://lwn.net/Articles/495304/
[23] http://git.kernel.org/linus/8b8d2e08bf0d50193931afd27482a59376b66b2b
[24] http://git.kernel.org/linus/0efbf7fb308d0c6f8419922850a2d0b45d4d4401
[25] http://git.kernel.org/linus/ee446fd5e6dafee4a16fd1bd345d2571dcfd6f5d
[26] http://git.kernel.org/linus/211ed865108e24697b44bee5daac502ee6bdd4a4
[27] http://git.kernel.org/linus/349f29d841dbae854bd7367be7c250401f974f47
[28] http://article.gmane.org/gmane.linux.kernel/1300605
[29] http://www.heise.de/glossar/entry/Git-Pull-Request-397971.html
[30] http://git.kernel.org/linus/045508a8a36f9a82b63d1f6362bd323085638588
[31] http://git.kernel.org/linus/a334872224a67b614dc888460377862621f3dac7
[32] http://git.kernel.org/linus/7e8e02df17106007f4b043a39d22682f74df6f6f
[33] http://git.kernel.org/linus/68df25d6c556c4df4dad32a0585317eab356e325
[34] http://git.kernel.org/linus/963052348fd33221d9ae4212d6cdaa2346e2678e
[35] http://git.kernel.org/linus/e29ecd51de1683e6aeb88d76251f194b0311f749
[36] http://git.kernel.org/linus/2cb7a9cc008c25dc03314de563c00c107b3e5432
[37] http://git.kernel.org/linus/fad59b0d3f43bfdc6a726ef83f5bc54920ae098f
[38] http://git.kernel.org/linus/e825b73182fefe063e887378a75dedbab2656981
[39] http://git.kernel.org/linus/8b1467a31343ade557489aff2bf4c2be44ca2725
[40] http://git.kernel.org/linus/9899b81e7ca5c285b825ff10ca9357dd18813d83
[41] http://git.kernel.org/linus/f96a8a0b78548c0ec06b0b4b438db6ee895d67e9
[42] http://git.kernel.org/linus/7ebae8177e615d3137d5365757d9d5d7d6ca8a98
[43] http://git.kernel.org/linus/be0c0068140dea329d151be58b8fdd9fa22301ca
[44] http://git.kernel.org/linus/3ca8bc6de2b336d483bb9d83e0dfe16cde535fa6
[45] http://git.kernel.org/linus/3a6a4edaa59273fabbc96832ca6f50116b3160fb
[46] http://git.kernel.org/linus/eef4560f841a6c9538ced96cbb5f0b4fe4bb1976
[47] http://git.kernel.org/linus/a19a848a456aee35508b548819003907d033003b
[48] http://git.kernel.org/linus/5b263f5374ea70daa61ed9f5cc5d8f4ac236efbd
[49] http://git.kernel.org/linus/4de02e4a280678224bd12ec3b182e369c87c8fc5
[50] http://git.kernel.org/linus/564c274c3df07d727fbe23684dc3077a9dd30607
[51] http://git.kernel.org/linus/695e00789a2703e79da9adf3cd868fe54142885e
[52] http://git.kernel.org/linus/73a0d907301ece200d32b4e8ba2da2ca296b507f
[53] http://git.kernel.org/linus/54a8997c6a0266a91a287b5dcb05da394ac0e42a
[54] http://git.kernel.org/linus/55f9a4d6facb35198ddb88a8fe21ca2ee753af7a
[55] http://git.kernel.org/linus/cd7201f477b965f6c0220b798813c7000bc603c5
[56] http://git.kernel.org/linus/8327eb65e795ba4f922bf7e531cd312875f0dc29
[57] http://git.kernel.org/linus/3d2377144ca66c98fa220bda5f945590cf5cfdc0
[58] http://git.kernel.org/linus/e3d62d7e8e05a6a4b08f4672385ae58fc0f132c4
[59] http://git.kernel.org/linus/88642088b6b82dd5da21501351df1b881943b755
[60] http://git.kernel.org/linus/6146ca69031e3ad697d801e7e242b554d7969de1
[61] http://git.kernel.org/linus/9cbee358687edf0359e29ac683ec25835134f059
[62] http://git.kernel.org/linus/6ee159e26f1bb0177b37ebc858693932465839a3
[63] http://git.kernel.org/linus/23721387c409087fd3b97e274f34d3ddc0970b74
[64] http://git.kernel.org/linus/7a5cc24277b57ce38eb0afa6634b71d4d5cc671e
[65] http://git.kernel.org/linus/9bf8e4d4254397684250eae29a0dc12d54a00251
[66] http://git.kernel.org/linus/c867305509e9bb748d9349c84cc26beaa95ccd73
[67] http://git.kernel.org/linus/a77e8c61dbe9c6abb7072c02f41271a489370f0c
[68] http://git.kernel.org/linus/ba89bf1961bb991a5c6415bd8408a8cb61ee46dc
[69] http://git.kernel.org/linus/d43c1c5261108167894d63583531250ea7d04416
[70] http://git.kernel.org/linus/dd456d45d7edd01f4054818dd404ec61ca55cbc1
[71] http://git.kernel.org/linus/f6b1154678ec73f7dd9a9fab16b402966305d452
[72] http://git.kernel.org/linus/ef213d6d7ee431b4356634b4cf413972573927d4
[73] http://git.kernel.org/linus/65de7e84fdc71a409f1d97aba8e44ece26628f51
[74] http://git.kernel.org/linus/aa27a703ce258176a309be55c186c3f36e377a82
[75] http://git.kernel.org/linus/a7b2ad55caecfa089f0e89202ba368fc2de41794
[76] http://git.kernel.org/linus/3a25a8c8b75b430c4f4022918e26fa51d557ecde
[77] http://git.kernel.org/linus/e352114fd62f6d568ca0cb18f589cb8df710cf02
[78] http://git.kernel.org/linus/dbf498fbafa2c23139d5a990e94ed78bafbbea19
[79] http://git.kernel.org/linus/8f727ef3c4859f2c397a7609beb845dcd66729f5
[80] http://git.kernel.org/linus/24398e39c8ee4a9d9123eed322b859ece4d16cac
[81] http://git.kernel.org/linus/8a690674e0601efbe9a7b16a5826fc522645cca3
[82] http://git.kernel.org/linus/1010f540181b00c7013eeb04d1bf8aedd5a56835
[83] http://git.kernel.org/linus/0afd7ad9de6b85c0f7ad9edf787de854c8e2fbb5
[84] http://git.kernel.org/linus/6e2128d42af43906d8bcbed7cf2207244fa4301e
[85] http://git.kernel.org/linus/ef2486f5538b886ad4f0d1ac0857b518291b48f7
[86] http://git.kernel.org/linus/0606069d9ef538687957d41ed6387d665af7a643
[87] http://git.kernel.org/linus/1cd829c83eab8b899b85d597c767fcf8b4cf8fd6
[88] http://git.kernel.org/linus/5b641ebeec348761c9ebac9454c672d4d2d3ef91
[89] http://git.kernel.org/linus/4db16a18c25394348f821f0a1b4a7caa8567e071
[90] http://git.kernel.org/linus/e568634ae7ac379661c90731d480e067929420a1
[91] http://git.kernel.org/linus/98e6b9df53e3e561ee75b7ed76dccb09964ba952
[92] http://git.kernel.org/linus/13d7ba78b514d8b720a82b9bddaaee0c004f2a1f
[93] http://git.kernel.org/linus/f752dcd52923b8de82881cf1269f0dc03dbd1088
[94] http://git.kernel.org/linus/d299a1f21ea7ffd5114d099b2f92c867c495e8b3
[95] http://git.kernel.org/linus/0586a11b5cc51413240e6688936e2edac9c2918e
[96] http://git.kernel.org/linus/2aed691540661e9cf6dac5dd2bd8742b9d68399d
[97] http://git.kernel.org/linus/711d8dea6edbbb8b1dcb016d9d0d604b11615364
[98] http://git.kernel.org/linus/ce466579b1c92fce78bf5f74a3707f46e228d949
[99] http://git.kernel.org/linus/8f35f787b75e9b6435ea37dabcae2d40dc72d31c
[100] http://git.kernel.org/linus/f57d7b6c9db1f9e26da09694b5fcb5650547f7d2
[101] http://git.kernel.org/linus/63b376411173c343bbcb450f95539da91f079e0c
[102] http://git.kernel.org/linus/e828b9fb4f6c3513950759d5fb902db5bd054048
[103] http://git.kernel.org/linus/34785be5e0472ec7270a96c2a05ad5b5a1e25236
[104] http://git.kernel.org/linus/ece367d53a5bf46cc357163c7074a6546a0ec01c
[105] http://git.kernel.org/linus/e1e49b641387b85098b05dc92b792c9ef01c2075
[106] http://git.kernel.org/linus/4333459fb71461b93d911cf5fbc5de4eb0ae3714
[107] http://git.kernel.org/linus/f73181c8288fc38747ec4f0f3e8a9052ab785cd5
[108] http://git.kernel.org/linus/1c003b1580e20ff9f500846677303a695b1837cc
[109] http://git.kernel.org/linus/a32e0eec7042b21ccb52896cf715e3e2641fed93
[110] http://git.kernel.org/linus/2cfb311f9943551915c13a71ec480b33028d33c1
[111] http://git.kernel.org/linus/77162022ab26a1f99d3af30c03760a76f86e193d
[112] http://git.kernel.org/linus/e66e9a31474dcce5be6f1186dc933d8a991c707b
[113] http://git.kernel.org/linus/416912a129349788372e6ac27ab86bd9b18c8cc0
[114] http://git.kernel.org/linus/0ca2997d145268e6b4ef000692061849cdab8348
[115] http://git.kernel.org/linus/c60f6aa8acfd93f4550c7d5eb03351d4cbd1460d
[116] http://git.kernel.org/linus/cf308a1fae432f315989e2da6878bfaa3daa22b1
[117] http://git.kernel.org/linus/4981682cc19733f3ca43d3abd81dd4adbc9005d5
[118] http://git.kernel.org/linus/2809a2087cc44b55e4377d7b9be3f7f5d2569091
[119] http://git.kernel.org/linus/a9006892643a8f4e885b692de0708bcb35a7d530
[120] http://git.kernel.org/linus/d16cf20e2f2f13411eece7f7fb72c17d141c4a84
[121] http://git.kernel.org/linus/33be96e47cc27f2f1a753a0707b02a73df8c8d46
[122] http://git.kernel.org/linus/1d0c0b328a63826b7c80c27d1c4f2b04e8225273
[123] http://git.kernel.org/linus/5e071b5d1aa6928f8d695c15f52a949d70b8d7fb
[124] http://git.kernel.org/linus/88c16dc3bb61a1c1e9d4c78f45cc2107bc8d5249
[125] http://git.kernel.org/linus/dd03cff23d694cfb0fdae80cb618e7ced05ea696
[126] http://git.kernel.org/linus/97076d275cf358aa85157543d0d6d9e64f8b16df
[127] http://git.kernel.org/linus/41c73a0d44c902e92397552acce181295eaa448b
[128] http://git.kernel.org/linus/a108d5f35adc5c5d5cdc882dc0bb920565551bff
[129] http://git.kernel.org/linus/f0d1b3c2bcc5de8a17af5f2274f7fcde8292b5fc
[130] http://git.kernel.org/linus/bbed0deefbb4bb1ab09e0dbc29e00fda86bb7838
[131] http://git.kernel.org/linus/eb738fe535ae8e44402c372ecc1321eee0552a09
[132] http://git.kernel.org/linus/a202abb1ee98ee28faaca460bbbf684d05e94310
[133] http://git.kernel.org/linus/1abd2296b4a1ee7b6a883541c3ede52042a09521
[134] http://git.kernel.org/linus/b139ba4e90dccbf4cd4efb112af96a5c9e0b098c
[135] http://git.kernel.org/linus/de248a75c35e0208294cf304b112916254b69184
[136] http://git.kernel.org/linus/c0e88ff0f256958401778ff692da4b8891acb5a9
[137] http://git.kernel.org/linus/5e6a3ce6573f0c519d1ff57df60e3877bb2d3151
[138] http://git.kernel.org/linus/3c961afed4d4e766b66092e7af8c8e8005053505
[139] http://git.kernel.org/linus/80f7c6683fe0e891ef1db7c967d538b5fdddd22c
[140] http://git.kernel.org/linus/19a0b58e506b06fd41659d8734bba6a3e87980f4
[141] http://git.kernel.org/linus/f7142e6c226076fd40c2ebaad9fb0c9a631b790e
[142] http://git.kernel.org/linus/8965c98fdebedce077257241957b205515dd1a5f
[143] http://git.kernel.org/linus/7e1525249814acfd293d579abcb6462767643a8a
[144] http://www.heise.de/open/kernel-log-3007.html
[145] http://www.heise.de/open/
[146] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[147] http://identi.ca/kernellog
[148] http://twitter.com/kernellog
[149] http://www.h-online.com
[150] http://identi.ca/kernellog2
[151] http://twitter.com/kernellog2
[152] http://identi.ca/kernellogauthor
[153] http://twitter.com/kernellogauthor
[154] mailto:thl@ct.de
[155] mailto:thl@ct.de