Díky softwaru s otevřeným zdrojovým kódem nyní můžeme převzít kontrolu a upravit chování téměř každé součásti v IT systému. Můžeme upravit vše od síťového zásobníku v jádře až po kód webového serveru v uživatelském prostoru, abychom mohli vylepšit nebo implementovat nové funkce.
Poslední překážkou k úplné kontrole nad naším hardwarem a softwarem je fyzický síťový hardware. Tato zařízení jsou obvykle sestavena z nástrojů s otevřeným zdrojovým kódem, které máme rádi, ale jsou prezentovány jako černé skříňky, které nelze snadno upravit síťovými operátory.
Otevřené standardy, jako jsou OpenFlow a P4, slibovaly zlepšení prostředí otevřením přístupu k těmto zařízením prostřednictvím programovatelného rozhraní API, ale stále vyžadují někoho, kdo by napsal řadič, aby bylo možné znovu implementovat normální funkce přepínače, jako je předávání a směrování, v multi- dodavatele, způsobem v souladu se standardy. To vedlo naši skupinu k napsání Faucet softwarově definovaného síťového ovladače (SDN), který umožňuje každému plně realizovat sen o programovatelných sítích.
Jak faucet funguje
Faucet je kompaktní open source řadič OpenFlow, který uživatelům umožňuje provozovat své sítě stejným způsobem, jakým provozují serverové clustery. Faucet zpřístupňuje sítě všem tím, že přenáší pracovní postup DevOps do sítě. Dělá to tak, že se síťové funkce (jako jsou směrovací protokoly, zjišťování sousedů a přepínací algoritmy) snadno spravují, testují a rozšiřují jejich přesunem do běžného softwaru, který běží na serveru, oproti tradičnímu přístupu zabudování těchto funkcí do firmwaru. přepínače nebo routeru. Faucet funguje tak, že přijímá konfigurační soubor YAML, který představuje topologii sítě a požadovanou síťovou funkcionalitu, a provádí práci při programování každého zařízení v síti pomocí OpenFlow.
Příběh faucetu začal v září 2015, kdy REANNZ napsal první verzi faucetu založenou na prototypovém kódu WAND Network Research Group na University of Waikato. Od té doby se tyto skupiny a mnoho dalších na Novém Zélandu i jinde spojily, aby vytvořily a udržovaly funkční ovladač OpenFlow, který mohou používat masy. Od prvního dne jsme odhodláni být projektem s otevřeným zdrojovým kódem, protože cítíme, že je to nejlepší způsob, jak můžeme zpřístupnit naše příspěvky, abychom pomohli komunitě, a jsme rádi, že jsme doposud obdrželi změny kódu od více než 40 různých vývojářů.
Testování a kompatibilita mezi různými dodavateli
Při psaní síťových řadičů je zásadní dodat funkční kód s každým vydáním, který nenaruší produkční nasazení při jejich upgradu. V důsledku toho je testovatelnost jedním z důležitých hlavních principů Faucetu. Máme komplexní testovací sadu, která nejen testuje kvalitu kódu pomocí lintingu a statické analýzy, ale také testujeme velké množství topologií sítě s různými povolenými funkcemi faucetu. Toto testování se automaticky provádí při každé změně kódu.
Naše testovací sada nám také umožňuje kvalifikovat hardwarová zařízení, která podporují všechny funkce Faucetu. Díky tomu se kompatibilita SDN mezi různými dodavateli stala skutečnou možností, protože řada prodejců spouští testovací sadu Faucet jako součást procesu kontroly kvality, aby ověřili, že jejich firmware podporuje Faucet. To nám také umožňuje vyhnout se psaní dalších ovladačů nebo rozšíření dodavatelů pro programování nových zařízení, což má další výhodu v tom, že naše kódová základna zůstává malá a konzistentní.
Faucet v reálném světě
Faucet byl nasazen v mnoha různých sítích po celém světě. Nedávno jsme se spojili s konferencí ACM/IEEE Supercomputing Conference 2018 (SC18), abychom nasadili velkou síť faucetů jako součást sítě SCinet, která do stánků na výstavní ploše dodává terabity za sekundu internetu. Síť, kterou jsme vybudovali, obsahovala hardware od Allied Telesis, Cisco a NoviFlow a podařilo se nám překročit kapacitu 9 terabitů za sekundu.
Základním směrovačem sítě bylo zařízení NoviFlow s integrovaným obvodem specifickým pro aplikaci Barefoot Tofino P4 (ASIC). NoviFlow napsal OpenFlow jako aplikaci P4, což umožnilo Faucetu používat OpenFlow jako runtime API nad P4. Napsali jsme nějaký automatizační kód Ansible pro integraci s databází připojení zákazníků SC18 a generování konfigurace faucetu za běhu. Databáze přidělila každému stánku VLAN a informace o podsíti.
Úkolem Faucetu bylo provádět směrování mezi VLAN na základním směrovači a rovnocenném rozhraní protokolu Border Gateway (BGP) se dvěma hlavními směrovači SCinet, aby kabiny mohly směrovat na internet. Implementace protokolu Link Aggregation Control Protocol (LACP) uvnitř Faucet nám umožnila spojit 2x100G spojení do každého upstream routeru, aby byla zajištěna odolnost (v případě, že by došlo k problému s vláknem). Každému stánku bylo poskytnuto připojení k internetu – 1Gb, 10Gb nebo 100Gb – přístupovým přepínačem (dodaným jedním z prodejců), který byl také řízen Faucetem. Přístupové přepínače prováděly předávání a implementovaly bezpečnostní zásady na každém přístupovém portu, aby chránily síť. Další zabezpečení sítě poskytl CyberReboot's Poseidon, nástroj strojového učení, který se integruje s Faucet a dokáže identifikovat podezřelé koncové hostitele v síti. Všechny služby v síti, jako je protokol DHCP (Dynamic Host Configuration Protocol) a BGP, byly poskytovány démony s otevřeným zdrojovým kódem (např. dhcpd a BIRD), které běžely jako služby virtualizace síťových funkcí (NFV) na serveru Linux.
Věříme, že nasazení SC18 demonstruje vyspělost Faucet a OpenFlow pro provozování skutečných, rozsáhlých produkčních sítí. Doufáme také, že ostatní se chopí výzvy převzetí kontroly nad svými sítěmi nasazením SDN. Chcete-li se dozvědět více o faucetu a jak jej nasadit, navštivte naši webovou stránku, která obsahuje odkazy na výukové programy, dokumentaci a seznamy adres pro uživatelské diskuze. Pro zájemce o zapojení do našeho projektu s otevřeným zdrojovým kódem máme průvodce pro vývojáře, který pomůže začínajícím přispěvatelům. A konečně, abyste mohli sledovat náš pokrok a oznámení o budoucích konferencích, tutoriálech nebo nasazeních podobných SC18, sledujte nás na Twitteru.
Brad Cowie představí použití open source řadiče SDN k nasazení vysokorychlostní produkční sítě na linux.conf.au, 21.–25. ledna v Christchurch na Novém Zélandu.