Portál AbcLinuxu, 7. května 2025 20:22
systemd-networkd
úplně první věc, je to i v tom mailu. Ale už si vyžádali od vývojářů connmanu vyčlenění jejich interní DHCP knihovny, což mimochodem považuju za dobrý nápad, protože dhclient
i dhcpcd
jsou zlo.
Jako z pohledu vývojáře networking věcí mě každý nový projekt zajímá, a teď když za NetworkManager nenesu žádnou zodpovědnost v práci, tak je to i docela zábavné.
Ale musím se trochu pobavit i na účet Lennarta, protože kdyby s tím přišel o půl roku dříve a měl naimplementovány všechny základní věci, měl by reálnou šanci se prosadit třeba i na úkor NetworkManageru a cílit na RHEL7. Jenže Lennart bohužel pro něj musel počkat na někoho, kdo rozumí sítím a nebo by se o tom musel nejdřív něco naučit a spatlat něco úplně bez zkušeností.
Nicméně jestli budu ještě někdy přednášet o síťových démonech, můj seznam těch zajímavých tímto narostl na sedm kousků. Bude zajímavé sledovat, kam to povede dál.
To naznačuješ, že zahodit NetworkManager a přespsat to celé odznova jako součást systemd není úplně špatný nápad?To úplně ne. Musíš pochopit, že ta otázka je natolik složitá a souvislosti jsou natolik komplikované, že i kdybych na ní měl jednoznačnou odpověď, jakože nemám, nedala by se shrnout do pár vět. Já si myslím, že se potřebujeme vrátit k otevřenému vývoji, kdy jednotlivé komponenty jsou znovupoužitelné a nad nimi se dá postavit cokoliv. To by při teoreticky mohlo accelerovat vývoj všech network démonů, eliminovalo by to vznik chyb specifických pro některé z nich, a zvýšilo by to počet vývojářů motivovaných řešit chyby v těch společných knihovnách. Jednotlivá řešení by se pak posuzovala ne z hlediska toho, jak moc dobře ohackovávají netlink, DHCP a takovéhle věci, ale prakticky jen z hlediska konfigurace, která má byt hlavní úlohou těch projektů. Mohlo by to pomoci ozdravit i kernelové API a implementaci a přitáhnout pozornost lidí, kteří rozumějí low-level síťování, ale k smrti nesnášejí high-level tooly typu NetworkManager nebo connman. Teoreticky by to mohlo vést i k tomu, že by se vytvořila podvrstva společná pro několik konfiguračních služeb, která by zajišťovala integraci všech low-level nástrojů a zpřístupňovala jednoduché a přehledné API pro konfiguraci síťovách rozhraní. Ale to už bych byl moc velký vizionář :D. Člověk musí rozlišovat vize a reálné cíle, pokud dosáhnout alespoň dílčího úspěchu. Btw můžeš aspoň nahodit seznam těch daemonů?
Myslím, že by mohlo stačit standardizovat DBus API, nebo alespoň jeho podstatnou část a přidat jednotný mechanismus detekce toho nestandardního.Pro konfiguraci sítí existuje pokud vím standardů několik (ptej se lidí od OpenLMI) a všechny jsou více či méně špatné a nepokrývají ani současné potřeby, natož aby se přizpůsobovaly budoucím. Proč asi?
Takže by bylo možné používat jedno GUI pro různé démony. Tím by se odbouraly problémy, kdy kvalitní démon má mizerné GUI a naopak.Teorie krásná, ale podle mě je jediný způsob, jak toho docílit vytvořit společnou mezivrstvu. Ale i tak bude API relativně komplikované, protože musí zpřístupňovat nejen síťovou konfiguraci, ale i informace o tom, které její části jsou podporované. S něčím takovým typicky vývojáři GUI vůbec neumí pracovat a nelze to smysluplně otestovat. Tudíž to nelze reálně udělat, aniž by si vývojáři jednotlivých démonů takřka sedli k jednomu stolu a vyrobili a následně udržovali nový standard. Když se podíváš, jaký je někdy problém udržet pohromadě API jednotlivé implementace, zjistíš, že ani tohle není za současné situace tak úplně možné.
Tou mezivrstvou by měl být právě síťový démon.S tím bych i souhlasil, jenže NetworkManager neřeší jen konfiguraci síťových rozhraní, ale i správu profilů, autorizaci uživatelů a pár dalších relativně high-level věcí. Nástroje, které chtějí měnit konfiguraci sítě takové věci často vůbec nepotřebují a tím pádem vůbec nejsou potřeba na některých instalacích. V takovém případě by se NetworkManager mohl zbavit většiny low-level věcí a sedět nad takovým network démonem a být instalován třeba jen na mobilních zařízeních nebo na strojích, které se potřebují dynamicky připojovat k VPN. Tuhle myšlenku mám v hlavě už delší dobu, ale takhle NM nadesignovaný není a v tuhle chvíli k něčemu takovému vývoj ani nesměřuje.
Takže nezbývá, než se podívat, co je špatně na stávajících standardech, jak vypadají současná API a udělat to pořádně. Jiná cesta prostě není. A než někdo začne v tomhle hnoji pořádně kopat, tak se ho nezbavíme.Přeju ti hodně štěstí.
Connman je totálne totálne nestabilný. Používam ho na jednom embedded dotykovom zariadení. Ešte pripojiť za bežných okolností zvládne, ale s trochu divokejšou wifinou ktorá nie vždy dobre spolupracuje s wpa-supplicant to občas padne (segmentation fault). O niečo horšie sú záseky pri odpojení v nesprávnom momente (zrušenie connect requestu).
Trochu mi není jasné, proč connman není základním síťovým démonem, když úspěšně zvládá dost divoká dynamická nastaveníAni vývojáři connmanu pokud vím netvrdí, že chtějí být náhradou NetworkManageru v plné šíři jeho funkcionality. A vzhledem k tomu, že ani věci, které já považuju za základní nejdou rozumně se současnou verzí Linuxového kernelu udělat a vývojáři NetworkManageru úzce spolupracují s kernelovými vývojáři na nápravě, není těžké uhodnout, který projekt v této oblasti proráží cestu divočinou.
a statiku drží také.Statickou konfiguraci do určité míry umí všechny linuxové síťové konfigurační nástroje, které znám. Co do možností konfigurace mezi nimi v tuto chvíli kraluje balík
iproute
, který pokrývá velkou část toho, co se od kernelu v této oblasti může chtít. Co do
příjemnosti použití a robustnosti si to v tuto chvíli netroufám hodnotit (snad kromě toho, že v tomto ohledu je nutností deklarativní zápis), žádný z nástrojů osobně nepovažuju za vyhovující.
A hodnotit něco podle toho zda to je či není v RHEL mi přijde dost provinční...Doufám, že dokážeš toto obvinění podložit něčím víc než mým zaměstnaneckým poměrem, a nejedná se o laciný trolling.
A vzhledem k tomu, že ani věci, které já považuju za základní nejdou rozumně se současnou verzí Linuxového kernelu udělatMohl bys to trochu blíže specifikovat?
Jenže Lennart bohužel pro něj musel počkat na někoho, kdo rozumí sítím a nebo by se o tom musel nejdřív něco naučit a spatlat něco úplně bez zkušeností.Bohudik pro nas. Me pobavilo, ze jedine co k tomu mel jsou pripominky ke coding style.
a kdy se dočkáme systemd-httpdJá myslel, že to už je v kernelu ;).
Pre Kristove rany, naco daemona na spravu siete?Na to, aby nemusela být veškerá logika dynamické konfigurace v kernelu, kde se hrozně špatně udržuje či nahrazuje jinou implementací. Nedávno se kernelovým vývojářům podařilo připravit specializovaného démona pro teaming, aby narozdíl od původního bondingu nemuselo být všechno nasrané do kernelu. Mimochodem skvělý počin v době, kdy je trend spíše opačný (propadání kódu z vyšších vrstev do nižších).
A preco siet musi riesit init daemon??Nemusí a ani to žádný mně známý přímo nedělá.
systemd-networkd
je z technického hlediska samostatný síťový démon, stejně jako NetworkManager, connman, WICD, netifd, netcfg, wicked a další. I v případě sysvinit a jiných systémů se init jen volá síťové skripty.
Som zvedavy kedy nejakeho debila napadne natlacit wpa_supplicant do systemdwpa_supplicant je samostatný démon volaný snad ze všech implementací, které podporují běžně používané vlastnosti wifi. Solidní straw man.
Nedávno se kernelovým vývojářům podařilo připravit specializovaného démona pro teaming, aby narozdíl od původního bondingu nemuselo být všechno nasrané do kernelu.Zrovna tohle jako velkou výhodu nepovažuju. Proč mít v systému další běžící (ok, většinou spící, snad) hovadinu, když - jak je vidět na již existujícím bondingu - to jde i bez démonů.
ps
.
2) Konkrétní kód by trpěl problémy s výkonem.
Proto jsou všecky rozumně psané síťové věci rozdělené mezi kernel a userspace. V případě teamingu, ipsec a podobných věcí je typicky v kernelu vše, co zajišťuje provoz (nakládání z pakety apod) a v userspace konfigurační protokoly, dynamické změny konfigurace a podobné.
Kernelový vývoj (až po začlenění patche) je násobně zdlouhavější.
No, když srovnám své zkušenosti s jádrem a glibc… A i když nebudu brát podobné extrémy, přijde mi, že reakce upstreamu na patche je u jádra rychlejší než u většiny userspace projektů. Ale možná jsem jen zhýčkaný tím, jak to funguje u síťového subsystému, třeba tenhle fix je maintainerem ignorován už skoro pět měsíců.
No, když srovnám své zkušenosti s jádrem a glibc…Zapomněl jsem na glibc jako na nejukázkovější výjimku ;). A to bych neměl, vzhledem k tomu, že jsem si napsal vlastní knihovnu na resolving.
A i když nebudu brát podobné extrémy, přijde mi, že reakce upstreamu na patche je u jádra rychlejší než u většiny userspace projektů.Tož reakce jsou rychlé, problém je v tom, jak moc se drží zpětná kompatibilita, ale to tobě nemusím povídat. Zatímco jiné projekty se vehementně snaží udržet funkcionalitu, kernel se snaží udržet i zjevné chyby.
A to bych neměl, vzhledem k tomu, že jsem si napsal vlastní knihovnu na resolving.Hezke. Jen poznamka - pouzivas dve ruzne email adresy a pouzivani ruznych a stejne pojmenovanych struct priv dela problemy pri staticke analyze kodu, skutecne bych psal spise struct priv_nss ci struct priv_dns.
Jen poznamka - pouzivas dve ruzne email adresyOpraveno.
stejne pojmenovanych struct priv dela problemy pri staticke analyze kodu, skutecne bych psal spise struct priv_nss ci struct priv_dns.Popravdě řečeno jsem to na základě feedbacku měnil z typedefů, kde ten problém není. Opraveno.
Myslel som tym, ...Křišťálové koule jsou vzácné zboží a většina diskutujících zde žádnou nevlastní.
A pre dynamicku konfiguraciu: opat nepotrebujem centralneho daemona. Staci spravne pospustat dhcp klienta, wpa supplicanta (ci vpn daemona)...Uživatelů, které baví hrát si na network démona a spouštět si jednotlivě komponenty a řešit jejich závislosti a konflikty je naprosté minimum. Dokonce i mě to baví jenom občas, většinou je mým hlavním přáním, aby se to připojilo, fungovalo to, a já už řešil jenom to, co na té síti chci dělat.
Udelat tohle pres NetworkManager je porod (nebo jsem proste jen neschopny), pres nativni rozhrani Linuxu o neco lepsiCo vím, tak vývoj 0.9.10 směřuje k tomu, aby to (1) porod nebyl, a (2) jsi mohl co nejvíc věcí řešit i přes nativní rozhraní a NetworkManager tvé změny přijal. Docela rád bych si někdy poslechl o konkrétních požadavcích, které na to máš, tedy co to vlastně přesně obnáší.
Jestli nekdo napise daemona, ktery mi rekne jaka mam rozhrani a necha me je nastavit nejak lidsky, budu opravdu rad.Zdá se, že budeme mít možná i více konkurenčních řešení.
a nemaka na tom primo Lennart.Asi proto to bude jednoduché.
Po tomhle a tancovani kolem network-online.target jsem nejakou zmenu cekal.Nojo, jenže tam taky píše sračky. Spousta věcí tam je sice pravdivých, ale naprosto irelevantních. A udělat krok typu network.target nefunguje, udělejme network-online.target, který bude znamenat to stejné, co dřív znamenal network.target, to je řešení jak u debilů. Nula práce, nula výsledků, ale odškrtnuto, že zase opravil kus světa.
A udělat krok typu network.target nefunguje, udělejme network-online.target, který bude znamenat to stejné, co dřív znamenal network.target, to je řešení jak u debilů.O to mi v podstate slo, nebot tohle reseni bylo IMHO nebylo udrzitelne. Chvili jsem si drive myslel, ze si Lennart spise ochoci NM, a na paralelni a lepe integrovane reseni se systemd si netroufne, ale postupne jsem zacal mit dojem, ze tomu tak nebude.
Chvili jsem si drive myslel, ze si Lennart spise ochoci NMVzhledem k tomu, jakým způsobem se stavěl k řešení problémů v systemd, které se týkaly NetworkManageru, bylo víc než zřejmé, že mu ten projekt nějakým způsobem překáží.
Timhle krokem zacal countdown pro NM, rekl bych.http://www.youtube.com/watch?v=oZxnbBWtGR4
Prvni CNB a ted toto... :-O
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.