Portál AbcLinuxu, 29. března 2024 07:07

NetworkManager a IPv6

20.3.2012 05:59 | Přečteno: 1629× | linux/unix

Narazil jsem na problémy s IPv6 za použití NetworkManageru. A zatím jsem nedospěl k jednoduchému a univerzálnímu řešení.

Zklamu vás, pokud jste se těšili že tu začnu nadávat na NetworkManager. Právě naopak, trochu jsem se vrtal v jeho kódu a přes veškeré vaše námitky a vyjádření odporu k tomuto kusu software...
NetworkManager a Avahi jsou první věci, co odstraním z nově nainstalovaného systému. ~root.cz, diskuze
NetworkManager považuju za dobrý kus software, jeho kód se mi zdá přehledný a (po pár hodinách nevěřícného civění) celkem srozumitelný. IPv6 je z mého pohledu dobře navržený a použitelný pokračovatel IPv4. Tak v čem je tedy problém?

Automatická konfigurace adres a timeouty

Zatím jsem se zabýval jednou jedinou věcí a to pravidelně vypadávající wifi. Z původních domněnek, že je problém v driverech či firmware jsme se dostali až k tomu, že NetworkManager si tak úplně nedává IPv6. Nebo je to jinak?

Dost brzo jsem zjistil, stejně jako jiní, že problém je na úrovni IP a ne tak úplně na úrovni wifi. I když se projevuje prakticky jen na wifi. To proto, že NetworkManager zabíjí spojení s odůvodněním „ip-config-unavailable“. Testování se zablokovaným IPv6 navíc prozrazuje, že je problém vázaný na něj.

Ale největší legrace nastává při pečlivé kontrole konfigurace radvd a testu z druhé strany pomocí radvdumpu. Člověk zjišťuje, že ta konfigurace je tak nějak „na hraně“. Démon radvd, alespoň ve verzi, kterou mám na routeru, automaticky nastavuje AdvRDNSSLifetime na stejnou hodnotu jako MaxRtrAdvInterval.

To si žádá vysvětlení. MinRtrAdvInterval a MaxRtrAdvInterval vymezují, jak často router posílá oznámení do sítě. RDNSS je zkratka pro rekurzivní DNS server. AdvRDNSSLifetime je doba platnosti oznámeného DNS serveru. Tedy oznámení chodí v průměru jen o něco málo časteji než je doba platnosti jednoho z oznamovaných záznamů.

To znamená, že čas od času musí zákonitě dojít k tomu, že se nějaký paket třeba ztratí nebo to nestihne a dojde k vypršení záznamu RDNSS. Pokud je to poslední (jediný) RDNSS záznam, NetworkManager reaguje vysláním interního signálu, že s konfigurací sítě je něco v nepořádku. Na to sám reaguje tak, že spojení rozbije a pokusí se navázat nové.

Na rozbití spojení jsou ve stále ještě nevydané Fedoře 17 navíc náchylné komponenty telepathy. Občas telepathy vezme s sebou empathy, a čas od času gnome shell. Evolution to taky čas od času nepřekousne. Každá spadlá věc má za následek nějaké to logování, generování crash reportů a takové věci, takže člověk musí chvilku počkat, než se celý systém vzpamatuje.

Kde udělali soudruzi chybu?

Následky už známe, teď by to chtělo příčinu. Přeskočím různé slepé uličky, stejně už jsem pointu de facto prozradil. Test pomocí tcpdumpu na routeru ukázal, že router odesílá RA dostatečně často. Kdyby všechny došly do cíle, žádný výpadek nenastává.

Test pomocí tcpdumpu naopak prozrazuje, že ačkoli normální paket loss ukazuje vcelku únosně množství ztracených paketů (čas od času něco vypadne, běžně zaokrouhleno na 0%), z RA paketů se jich ztrácí podezřele mnoho (jestli ono to nebude tím, že se RA posílá multicastem). Při posledním pokusu skoro půlka.

Jakou hodnotu má tedy mít AdvRDNSSLifetime? NetworkManager ještě interně přidává 10 vteřin, ale to moc nepomůže. RFC 6106 říká, že AdvRDNSSLifetime má být mezi MaxRtrAdvInterval a jeho dvojnásobkem. Spodní hranice dělá problémy už teď, ale ani horní hranice není žádný zázrak. Možná by to šlo řešit tak, že by NM včas odesílal router Solicitation, což je v RFC popsáno jako „může“.

Závěr

Je vidět, že doporučení v těchto novějších RFC v tomto případě nejsou ještě moc oprášena praxí. NetworkManager je jednou z šancí, jak udělat některým RFCčkům zkoušku ohněm :).

https://bugzilla.redhat.com/show_bug.cgi?id=753482

https://bugzilla.redhat.com/show_bug.cgi?id=675226

https://bugzilla.redhat.com/show_bug.cgi?id=801052

https://bugzilla.redhat.com/show_bug.cgi?id=804195

(příklady bugreportů o IPv6 a NetworkManageru ve Fedoře)

Potěšilo mě, že se ve Fedoře hnuly ledy, a chyby týkající se IPv6 už se posuzují rovnocenně s chybami v IPv4. Vznikají různé blocker bugs a takové věci, které urychlují řešení některých problémů.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

20.3.2012 07:04 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Odpovědět | Sbalit | Link | Blokovat | Admin

Platnost záznamu RDNSS by logicky měla být delší než perioda oznamování směrovače. Právě kvůli ztraceným packetům. Takže nastavovat platnost na spodní mez je hloupost. Obzvlášť pokud správce ví, že síť má nespolehlivou linku.

Samozřejmě, že stanice by si mohla aktivně pomoci požadavkem na směrovač, když vidí, že platnost se tenčí a router hraje mrtvého brouka.

Že se více ztrácí multicastové rámce znamená, že jsou špatně napsány ovladače. Především lze obvinit AP, protože to má pod palcem, kdo kdy bude mluvit.

A neodpustím si rýpnutí do network manageru. Pokud se mi ztratí nastavení resolveru, tak je to nemilé, ale rozhodně to není konec světa. IP funguje i bez DNS. Takže network manager a ostatní aplikace by se měly podle toho chovat.

pavlix avatar 20.3.2012 20:27 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Platnost záznamu RDNSS by logicky měla být delší než perioda oznamování směrovače. Právě kvůli ztraceným packetům. Takže nastavovat platnost na spodní mez je hloupost. Obzvlášť pokud správce ví, že síť má nespolehlivou linku.
A co jsem asi psal? Ale radvd to dělá „by default“ alespoň ve starších verzích, a RFC to právě posvěcuje.
Samozřejmě, že stanice by si mohla aktivně pomoci požadavkem na směrovač, když vidí, že platnost se tenčí a router hraje mrtvého brouka.
A může to udělat případně i vícekrát, což je řešením problému na klientské straně. Stejně jako znásobení platnosti je řešením na straně serverové.

Protože už je to v reálných nasazeních, mám za to, že je problém třeba řešit překvapivě na obou stranách zároveň a tím snížit pravděpodobnost výpadku.
Že se více ztrácí multicastové rámce znamená, že jsou špatně napsány ovladače. Především lze obvinit AP, protože to má pod palcem, kdo kdy bude mluvit.
V mém případě nějaký TP-Link s originálním firmware.
A neodpustím si rýpnutí do network manageru. Pokud se mi ztratí nastavení resolveru, tak je to nemilé, ale rozhodně to není konec světa. IP funguje i bez DNS.
Z pohledu uživatele je internet bez DNS nefunkční. Podle toho by se měl NetworkManager chovat především. A to dělá.

Nemám nic proti tomu, aby existovala volba, která nastaví, aby byl NM tolerantní vůči chybějícímu DNS, ale výchozí nastavení musí být tak jak je.

Pokud jsem v kódu něco nepřehlédl, tak ale NM zachází o kousek dál. Jemu k zahození spojení stačí zrušení posledního DNS serveru z RA. Tedy nepomůže, když ještě zůstal DNS server z DHCPv6 či DHCPv4. Ale i s tím už jsem se smířil. Beru to tak, že ztráta nastavení v kontextu RA znamená radikální změnu stavu spojení, a spouští rekonfiguraci.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
20.3.2012 22:47 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Z pohledu uživatele je internet bez DNS nefunkční. Podle toho by se měl NetworkManager chovat především. A to dělá.

S tím nemůžu souhlasit. Je to stejně chybná automagie, jako že ULA adresa neznamená zkonfigurovanou síť. Akorát vede k podivnostem, kdy aplikace odmítne fungovat, třebaže DNS v ten okamžik vůbec nepotřebuje (například SIP klient, který směruje přes outbound proxy), nebo kdy jedna aplikace bude tvrdit, že „není připojení“, zatímco druhá bude vesele pokračovat v datovém přenosu.

Podle mě by systém měl být schopen co nejvíce využít dostupných služeb, a ne se upnout na jednu vlastnost a z ní kategoricky něco vyvozovat. Chce se mi opakovat Linusovo hodnocení Gnome jako systému pro idioty.

pavlix avatar 21.3.2012 02:05 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
S tím nemůžu souhlasit. Je to stejně chybná automagie
Zadej DNS jméno zdroje, který má být dostupný, a uvidíš, že to nebude fungovat.
jako že ULA adresa neznamená zkonfigurovanou síť.
ULA je úplně něco jiného, viz výše. Zadej název toho, co má fungovat. Pokud to selže, síť z pohledu uživatele nefunguje.
Akorát vede k podivnostem, kdy aplikace odmítne fungovat, třebaže DNS v ten okamžik vůbec nepotřebuje (například SIP klient, který směruje přes outbound proxy), nebo kdy jedna aplikace bude tvrdit, že „není připojení“, zatímco druhá bude vesele pokračovat v datovém přenosu.
Jo s tím souhlasím, k podivnostem to vede. Ale pokud chceš vést diskuzi o tom, co je a není správné řešení, tak nejdřív musíš zadefinovat cíle. Bez toho nelze posoudit, jestli je systém splňuje.
Podle mě by systém měl být schopen co nejvíce využít dostupných služeb, a ne se upnout na jednu vlastnost a z ní kategoricky něco vyvozovat.
A právě tohoto cíle za některých okolností NM dosahuje tím, že zahodní nefunkční spojení, aby ho nahradil funkčním. A za jiných okolností ho zase nedosahuje. Bohužel se zatím do počítačů nedodávají křišťálové koule.
Chce se mi opakovat Linusovo hodnocení Gnome jako systému pro idioty.
Tak to budeš mít docela problém, protože NetworkManager jaksi není specifický pro Gnome ;). Nehledě na to, že hodnotit desktopová rozhraní podle toho, co o nich řekl Linus, je dost irelevantní. Nehledě na to, že Linus jednou mimoděk prohlásí „to jsem ale debil“ a zástup opakovačů od té doby o něm bude říkat, že je debil :D.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
michich avatar 21.3.2012 08:10 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Nehledě na to, že Linus jednou mimoděk prohlásí „to jsem ale debil“ a zástup opakovačů od té doby o něm bude říkat, že je debil :D.
Můžou rovnou začít říkat, že Linus je idiot.
pavlix avatar 21.3.2012 08:35 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
+1, díky za odkaz.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
21.3.2012 23:16 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Zadej DNS jméno zdroje, který má být dostupný, a uvidíš, že to nebude fungovat.

To je právě tvůj cíl. nevidím nic divného na fungování bez DNS, nebo s DNS serverem na jiné lince.

ULA je úplně něco jiného

To je příklad, kdy se mě snažili na fedora-devel přesvědčit, že závěr network manageru o nedostupnosti sítě, kdy je jen ULA adresa, je správný. Je to úplně stejné zjednodušení, jako tady předvádíš s DNS.

Tak to budeš mít docela problém, protože NetworkManager jaksi není specifický pro Gnome

Nejde o desktopové prostřdí. To byla narážka na citát if you think your users are idiots, only idiots will use it. Network manager má našlápnuto tímto směrem.

pavlix avatar 22.3.2012 13:14 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
To je právě tvůj cíl. Já nevidím nic divného na fungování bez DNS
Tady se nebavíme o tom, co je mým nebo tvým cílem. Zkus si udělat průzkum mezi lidmi. Normálními, vývojáři, administrátory. Posaď je k počítači, kde je IP kontektivita a není DNS. A polož jim pouze otázku, jestli funguje net.
To je příklad, kdy se mě snažili na fedora-devel přesvědčit, že závěr network manageru o nedostupnosti sítě, kdy je jen ULA adresa, je správný.
ULA je přesně opačný příklad. Připojení k ULA s DNS je fungující připojení k intranetu. Tzn, ačkoli to není funkční připojení ke globální síti, je to zcela validní use case pro NetworkManager. Ve spojení s HTTP proxy to dokonce může být plně funkční řešení pro přístup k webu, navíc v praxi často používané.
Je to úplně stejné zjednodušení, jako tady předvádíš s DNS.
Chápu. Ty nevidíš rozdíl mezi plně funkčním připojení k intranetu a částečně funkčním připojení internetu. Na tom ale nelze postavit plodnou diskuzi.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 22.3.2012 13:25 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Nejde o desktopové prostřdí. To byla narážka na citát "if you think your users are idiots, only idiots will use it".
Jako klidně házej vtipnými citáty. Já se budu dál zabývat fakty a tím, co z nich vyplývá.
Network manager má našlápnuto tímto směrem.
Pokud za pejorativní slovo idiot dosadíš běžného uživatele, aby vůbec mělo smysl se o tom rozumně bavit...

Tak NetworkManager nemá našlápnuto na to stát se programem pro běžné uživatele a případně běžné užití expertem, který zrovna nemá čas si hrát. On jím je.

Naopak teďka se hlavní směry vývoje ubírají k tomu, aby byl NM plně použitelný jako serverové řešení, což už je skoro taky, ale pár drobností ještě chybí. A navíc se počítá i s různými bonusovými funkcemi, které jsou jinak dostupné v konfiguraci routerů a to ještě „těch lepších“.

NetworkManager je postavený na konceptu jednotlivých připojení. Ta se aktivují, deaktivují, určuje se u nich, zda jsou částečně funkční, plně funkční, atd...

A podle mě ti na NM vadí samotný koncept těch připojení a zvláště pak způsob jejich označování za plně funkční, apod. Pokud nejsi schopný tento koncept přijmout, tak existuje jen jediné doporučení: Nepoužívej to a snaž se, abys to používat nemusel.

Mně ten koncept vyhovuje včetně toho, že spojení bez DNS nelze považovat za plně zkonfigurované. Co víc, vyhovuje mnohým jiným (i když samozřejmě mnohým ne).

A nevidím jediný důvodn NetworkManager přizpůsobovat těm, kterým nebude vyhovovat už z principu. Jediné, co jde pro tyto lidi udělat je hlídat vývojáře aplikací, aby aplikace bez NM fungovaly (například aby nevynucovaly offline mód, když není NM přítomný či aktivovaný). A to jde zajistit prostým hlášením chyb.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
20.3.2012 23:35 Kvakor
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
A neodpustím si rýpnutí do network manageru. Pokud se mi ztratí nastavení resolveru, tak je to nemilé, ale rozhodně to není konec světa. IP funguje i bez DNS. Takže network manager a ostatní aplikace by se měly podle toho chovat.
Nešlo by toto obejít použítím DNS proxy/lokálního cachovácího serveru? Sice nevím, jestli by Network Manager takovouto konfiguraci vzal, ale snad by mu jí bylo možné vnutit nástroji typu resolvconf. Mimo toho, lokalní cachovací DNS má i výhodny ve snížení latence, protože na rychlé lince je čekání na DNS dotaz občas delší, než potom čas potřebný k natažení celé stránky.

PS: Windows tohle dělají také, pokud padne připojení ("Sítový kabel byl odpojen"), pozabíjí všechna otevřená spojení.
pavlix avatar 21.3.2012 02:09 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Nešlo by toto obejít použítím DNS proxy/lokálního cachovácího serveru?
Problém s konfigurací lokálního cachujícího nameserveru je ekvivalentní problém s konfigurací resolv.conf.

Lokální nameserver má hlavně výhodu v tom, že umožňuje provozovat DNSSEC aby ta technologie nebyla úplně k hovnu (tedy tak jak se dosud obvykle prezentuje). Plus dejme tomu caching.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
21.3.2012 22:54 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
glibc drahnou dobu dodává nscd (který k plné spokojenosti na stanicích používám). Leč jsem zaslechl zvěsti, že už není dost moderní, a tak půjde pryč.
Jaromír Svoboda avatar 20.3.2012 08:25 Jaromír Svoboda | skóre: 9 | blog: netblog
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Odpovědět | Sbalit | Link | Blokovat | Admin
Pavlixi jsi dobrej, že to tak rozpitváš. Díky tomu se s tím něco dělá.

Já mám teď Kubuntu 11.10, KDE 4.8.1 a Pidgina 2.10.0. Teď si nejsem jistý od kdy mi to dělá ale Pidgin jednou za čas ztratí spojení, kontaktlist je prázdný a dole jak je ten seznam stavů (Připojen, Zaneprázdněn, …, Odpojen) tak je napsáno Připojen - Čekám na spojení. Tak jsem potom odpojen a ani to nezjistím dokud se na Pidgina nepodívám a nerestartuju ho.

Dělá mi to na kolejní síti s IPv6. Jestli to dělá i doma teď nevím, doma IPv6 není a NetworkManager mi někdy cpe doma profil pro kolejní síť. V kolejním profilu mám automatické získání IPv6 adresy, v domácím profilu je IPv6 vypnuto.

Je možné, že toto chování Pidgina souvisí s popsaným chováním NetworkManageru.

Podle některých rad na Internetu jsem zkoušel do spouštěče Pidgina přidat přepínač -f ale nepomohlo to.

man pidgin:
       -f, --force-online
              Try  to  be online even if the network is reported (by Windows,
              or NetworkManager on Linux) to be unavailable.
Tom & Jerry: # cat /dev/input/mouse0
pavlix avatar 20.3.2012 20:30 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: NetworkManager a IPv6
Pavlixi jsi dobrej, že to tak rozpitváš. Díky tomu se s tím něco dělá.
Já se případně snažím i dodat nějaký patch, jen ze mě ještě nic konkrétního nevypadlo :).
Je možné, že toto chování Pidgina souvisí s popsaným chováním NetworkManageru.
Výpadky sítě jsou vždycky protivné. Tím spíš, když link funguje a problém je v samotném konfiguračním protokolu.

Jinak jestli tě můžu poprosit, když píšeš do komentářů o chybách, i když takhle nespecifických, odkazuj aspoň dodatečně na bugreport. I kdybys ho měl kvůli tomu založit. Je jedno jestli je to distribuční bugreport nebo upstreamový.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.