A Linux kernel hálózati alrendszerében egy olyan változtatási javaslat jelent meg, amely az IPv6 kezelésének egyik régi lehetőségét vezetné ki. A SUSE fejlesztője, Fernando Fernandez Mancera által beküldött, tíz elemből álló net-next patchsorozat azt célozza, hogy a jövőben az IPv6 vagy közvetlenül a kernelbe építve legyen jelen, vagy egyáltalán ne legyen engedélyezve, vagyis megszűnne a CONFIG_IPV6=m formában elérhető moduláris működés. A javaslat jelenleg még felülvizsgálat alatt áll, tehát nem végleges döntésről, hanem egy komolyabb irányváltást előkészítő fejlesztői vitáról van szó.
Tartalomjegyzék

Egyszerűbb IPv6, kisebb karbantartási teher
A patchsorozat indoklása szerint a moduláris IPv6-támogatás történelmileg érthető volt, ma viszont a legtöbb rendszer vagy a kernelbe fordítva használja az IPv6-ot, vagy teljesen kikapcsolja. A mostani megoldás miatt a kernel több alrendszere, köztük a hálózati mag, a BPF, a Netfilter és különféle eszközmeghajtók olyan köztes mechanizmusokra támaszkodnak, mint az ipv6_stub, az ipv6_bpf_stub vagy az nf_ipv6_ops, továbbá bizonyos esetekben dinamikus RCU-regisztrációkra is szükség van. Mancera szerint ez a felépítés aránytalanul nagy terhet ró a megvalósításra és a karbantartásra ahhoz képest, amennyire ma a moduláris IPv6 valóban használatban van. A javaslat ezért a CONFIG_IPV6 beállítást háromállapotú opció helyett egyszerű logikai kapcsolóvá alakítaná át.
Ennek közvetlen következménye az lenne, hogy több kerülőutas hívási réteg kikerülhetne a kernelből, és a jelenlegi indirekt hívások helyére közvetlen függvényhívások kerülnének bevezetésre. A patch leírása szerint ez nemcsak a kód egyszerűsítését szolgálná, hanem több helyen teljes infrastruktúrák eltávolítását is lehetővé tenné, beleértve az ICMPv6 küldőregisztrációs megoldást, az ipv6_stub teljes kivezetését, valamint a Netfilter IPv6-os műveleti rétegének megszüntetését is. A benyújtott csomag összesen 103 fájlt érint, 328 új sor mellett 1301 sor törlésével, és teljesen eltávolítja az include/net/ipv6_stubs.h fejlécfájlt is.
Maradjon-e a modulként fordítható IPv6 a kernelben?
A patchsorozat mellé bloat-o-meter eredmények is érkeztek, amelyek azt mutatják, hogy a változtatás hatása architektúránként eltérő. A mellékelt adatok alapján a változtatás eltérően hat a különböző architektúrákra. Az m68k és az x86_64 esetében a módosítás összességében kódméret-csökkenést eredményezett, arm64-nél viszont növekedés látszott. Ez a levelezőlistán gyorsan átfordult egy szélesebb vitába arról, mennyire indokolt az IPv6 modulos formájának megszüntetése, különösen olyan konfigurációknál, ahol a memóriahasználat érzékeny szempont. Több hozzászóló azt is jelezte, hogy a javaslat indoklásában részletesebben ki kellene fejteni, pontosan milyen gyakorlati előnyt hozna a váltás, ezért könnyen elképzelhető, hogy a patchsorozat még további pontosításokon és átdolgozáson esik át.
A hozzászólásokból ugyanakkor az is látszik, hogy többen támogatják a moduláris IPv6 kivezetését, mert szerintük ennek a megoldásnak ma már kevés valódi előnye maradt. Érvelésük szerint a közvetlen függvényhívásokra épülő megközelítés egyszerűbb kódot és kisebb karbantartási terhet jelenthet hosszabb távon. A patchsorozat beküldője külön kiemelte, hogy az IPv6 továbbra sem válna kötelező részévé a kernelnek. A lehetőség megmaradna a teljes kikapcsolhatóságra, a változás csak annyit jelentene, hogy modulként többé nem lehetne fordítani. A mostani vita így valójában nem arról szól, maradjon-e IPv6 a kernelben, hanem arról, indokolt-e fenntartani egy ritkán használt fordítási mód teljes technikai hátterét.
További részletek a kernel levelezőlistáján olvashatóak.
