{"id":35973,"date":"2019-10-31T22:08:54","date_gmt":"2019-10-31T19:08:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti\/"},"modified":"2019-10-31T22:08:54","modified_gmt":"2019-10-31T19:08:54","slug":"avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti","title":{"rendered":"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>W <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/453516\/\">poprzedniej wersji<\/a><\/noindex> Opisa\u0142em ramy automatyzacji sieci. Z komentarzy wynika, \u017ce dla niekt\u00f3rych os\u00f3b nawet to pierwsze podej\u015bcie do problemu ju\u017c rozwi\u0105za\u0142o niekt\u00f3re kwestie. I bardzo mnie to cieszy, poniewa\u017c naszym celem w cyklu nie jest owijanie Ansible skryptami w Pythonie, lecz zbudowanie systemu.<\/p>\n<p>Ten sam framework ustala porz\u0105dek, w jakim b\u0119dziemy si\u0119 zajmowa\u0107 tym zagadnieniem.<br \/>\nA wirtualizacja sieci, kt\u00f3rej po\u015bwi\u0119cony jest ten odcinek, nie wpisuje si\u0119 szczeg\u00f3lnie w tematyk\u0119 ADSM, gdzie omawiamy automatyzacj\u0119. <\/p>\n<p>Ale sp\u00f3jrzmy na to z innej perspektywy.<\/p>\n<p>Ju\u017c od dawna wiele us\u0142ug korzysta z jednej sieci. W przypadku operatora telekomunikacyjnego s\u0105 to 2G, 3G, LTE, szerokopasmowy internet i B2B, na przyk\u0142ad. W przypadku DC: \u0142\u0105czno\u015b\u0107 dla r\u00f3\u017cnych klient\u00f3w, internet, pami\u0119\u0107 blokowa, pami\u0119\u0107 obiektowa.<\/p>\n<p>A wszystkie us\u0142ugi wymagaj\u0105 izolacji od siebie. Tak powsta\u0142y sieci overlay.<\/p>\n<p>I wszystkie us\u0142ugi nie chc\u0105 czeka\u0107, a\u017c cz\u0142owiek skonfiguruje je r\u0119cznie. Tak powsta\u0142y orkiestratory i SDN.<\/p>\n<p>Pierwsze podej\u015bcie do systematycznej automatyzacji sieci, a raczej jej cz\u0119\u015bci, zosta\u0142o dawno temu podj\u0119te i wdro\u017cone w wielu miejscach: VMWare, OpenStack, Google Compute Cloud, AWS, Facebook.<\/p>\n<p>Dzi\u015b si\u0119 nad tym zastanowimy. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/e0bf73b7b71c383c5526da48a6f6b776.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Spis tre\u015bci<\/h1>\n<p><\/p>\n<ul>\n<li><b>Przyczyny<\/b><\/li>\n<li><b>Terminologia<\/b><\/li>\n<li><b>Underlay - fizyczna sie\u0107<\/b><\/li>\n<li><b>Overlay - wirtualna sie\u0107<\/b>\n<ul>\n<li>Overlay z ToR\u2019a<\/li>\n<li>Overlay z hosta<\/li>\n<li>Na przyk\u0142adzie Tungsten Fabric\n<ul>\n<li>Komunikacja wewn\u0105trz jednej fizycznej maszyny<\/li>\n<li>Komunikacja mi\u0119dzy VM, znajduj\u0105cymi si\u0119 na r\u00f3\u017cnych fizycznych maszynach<\/li>\n<li>Wyj\u015bcie na zewn\u0105trz<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n <\/li>\n<li><b>FAQ<\/b><\/li>\n<li><b>Podsumowanie<\/b><\/li>\n<li><b>Przydatne linki<\/b><\/li>\n<\/ul>\n<p><\/p>\n<h1>Przyczyny<\/h1>\n<p>\nI skoro ju\u017c o tym mowa, warto wspomnie\u0107 o przes\u0142ankach do wirtualizacji sieci. W rzeczywisto\u015bci ten proces nie rozpocz\u0105\u0142 si\u0119 wczoraj. <\/p>\n<p>Pewnie wielokrotnie s\u0142ysza\u0142e\u015b, \u017ce sie\u0107 zawsze by\u0142a najbardziej inertn\u0105 cz\u0119\u015bci\u0105 ka\u017cdej systemu. I to prawda w ka\u017cdym tego s\u0142owa znaczeniu. Sie\u0107 to podstawa, na kt\u00f3rej opiera si\u0119 wszystko, a wprowadzanie zmian na niej jest do\u015b\u0107 trudne \u2014 us\u0142ugi nie znosz\u0105, kiedy sie\u0107 przestaje dzia\u0142a\u0107. Cz\u0119sto wy\u0142\u0105czenie jednego w\u0119z\u0142a mo\u017ce spowodowa\u0107 awari\u0119 wielu aplikacji i wp\u0142ywa\u0107 na wielu klient\u00f3w. Cz\u0119\u015bciowo dlatego zesp\u00f3\u0142 sieciowy mo\u017ce opiera\u0107 si\u0119 wszelkim zmianom \u2014 bo teraz to jako\u015b dzia\u0142a (<i>mo\u017cliwe, \u017ce nawet nie wiemy jak<\/i>), a tutaj trzeba skonfigurowa\u0107 co\u015b nowego, i nie wiadomo, jak to wp\u0142ynie na sie\u0107.<\/p>\n<p>Aby nie czeka\u0107, a\u017c dostawcy skonfiguruj\u0105 VLAN i nie rejestrowa\u0107 us\u0142ug na ka\u017cdym w\u0119\u017ale sieci, ludzie wymy\u015blili u\u017cycie overlay\u00f3w \u2014 nak\u0142adanych sieci, kt\u00f3rych jest wiele, takich jak GRE, IPinIP, MPLS, MPLS L2\/L3VPN, VXLAN, GENEVE, MPLSoverUDP, MPLSoverGRE itd.<\/p>\n<p>Ich atrakcyjno\u015b\u0107 polega na dw\u00f3ch prostych aspektach:<\/p>\n<ul>\n<li>Konfigurujemy tylko w\u0119z\u0142y ko\u0144cowe \u2014 nie musimy ingerowa\u0107 w w\u0119z\u0142y tranzytowe. To znacznie przyspiesza proces, a czasem wr\u0119cz pozwala wyeliminowa\u0107 dzia\u0142 sieci z procesu wprowadzania nowych us\u0142ug.<\/li>\n<li>Obci\u0105\u017cenie jest ukryte g\u0142\u0119boko w nag\u0142\u00f3wkach \u2014 w\u0119z\u0142y tranzytowe nie musz\u0105 nic wiedzie\u0107 o nim, o adresacji na hostach, trasach nak\u0142adanej sieci. To oznacza, \u017ce musisz przechowywa\u0107 mniej informacji w tabelach, co pozwala na prostsze\/ta\u0144sze urz\u0105dzenia.<\/li>\n<\/ul>\n<p>\nW tej nie do ko\u0144ca pe\u0142nej publikacji nie planuj\u0119 omawia\u0107 wszystkich mo\u017cliwych technologii, a raczej opisa\u0107 ramy dzia\u0142ania sieci overlay w Data Center.<\/p>\n<p>Ca\u0142a seria b\u0119dzie opisywa\u0107 centrum danych, sk\u0142adaj\u0105ce si\u0119 z rz\u0119d\u00f3w jednorodnych szaf, w kt\u00f3rych zainstalowane jest to samo serwerowe wyposa\u017cenie. <\/p>\n<p>Na tym sprz\u0119cie uruchamiane s\u0105 maszyny wirtualne\/kontenery\/serverless, realizuj\u0105ce us\u0142ugi.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/a6863eb2804a298304d1e93daecf90d9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1>Terminologia<\/h1>\n<p>\nW cyklu <b>serwerem<\/b> b\u0119d\u0119 nazywa\u0142 program, kt\u00f3ry realizuje serwerow\u0105 stron\u0119 komunikacji klient-serwer.<\/p>\n<p>Fizyczne maszyny w szafach b\u0119dziemy nazywa\u0107 serwerami. <b>nie<\/b> Fizyczna maszyna<\/p>\n<p><b>to komputer x86 zainstalowany w szafie. Najcz\u0119\u015bciej u\u017cywanego terminu<\/b> . B\u0119dziemy nazywa\u0107 j\u0105 \u201e <b>host<\/b>. Tak i b\u0119dziemy nazywa\u0107 j\u0105 \u201e<b>lub<\/b>\u201d lub <b>host<\/b>.<\/p>\n<p><b>to aplikacja uruchomiona na fizycznej maszynie, emuluj\u0105ca fizyczne zasoby, na kt\u00f3rych uruchamiane s\u0105 Maszyny Wirtualne. Czasami w literaturze i w sieci s\u0142owo \u201ehypervisor\u201d jest u\u017cywane jako synonim \u201ehosta\u201d.<\/b> to system operacyjny uruchomiony na fizycznej maszynie nad hypervisorem. Dla nas w ramach tego cyklu nie jest a\u017c tak wa\u017cne, czy jest to rzeczywi\u015bcie maszyna wirtualna, czy po prostu kontener. B\u0119dziemy nazywa\u0107 to \u201e<\/p>\n<p><b>Wirtualna maszyna<\/b> \u2014 system operacyjny uruchomiony na fizycznej maszynie nad hipernadzorc\u0105. Dla nas w ramach tego cyklu nie jest a\u017c tak istotne, czy to faktycznie jest maszyna wirtualna, czy po prostu kontener. B\u0119dziemy nazywa\u0107 to \u201e<b>Tenant<\/b>&#171;<\/p>\n<p><b>to szerokie poj\u0119cie, kt\u00f3re w tym artykule zdefiniuj\u0119 jako oddzieln\u0105 us\u0142ug\u0119 lub oddzielnego klienta.<\/b> Multitenancy<\/p>\n<p><b>lub multi-tenant \u2014 korzystanie z tej samej aplikacji przez r\u00f3\u017cnych klient\u00f3w\/us\u0142ug. Przy tym izolacja klient\u00f3w osi\u0105gana jest dzi\u0119ki architekturze aplikacji, a nie osobno uruchamianym instancjom.<\/b> ToR \u2014 prze\u0142\u0105cznik na g\u00f3rze szafy.<\/p>\n<p><b>ToR \u2014 prze\u0142\u0105cznik na szczycie stosu<\/b> \u2014 prze\u0142\u0105cznik zainstalowany w racku, do kt\u00f3rego s\u0105 pod\u0142\u0105czone wszystkie fizyczne maszyny.<\/p>\n<blockquote><p> Opr\u00f3cz topologii ToR, r\u00f3\u017cni dostawcy praktykuj\u0105 End of Row (EoR) lub Middle of Row (chocia\u017c to ostatnie to rzadko\u015b\u0107, a skr\u00f3tu MoR nigdy nie spotka\u0142em).\n<\/p><\/blockquote>\n<p> <b>Sie\u0107 podstawowa<\/b> lub pod\u0142o\u017cna sie\u0107 \u2014 fizyczna infrastruktura sieciowa: prze\u0142\u0105czniki, routery, kable.<\/p>\n<p><b>Sie\u0107 na\u0142o\u017cona<\/b> lub owerlej \u2014 wirtualna sie\u0107 tuneli dzia\u0142aj\u0105ca na\u0142o\u017cona na fizyczn\u0105.<\/p>\n<p><b>L3-fabryka lub fabryka IP<\/b> \u2014 niesamowite wynalazek ludzko\u015bci, kt\u00f3ry pozwala na niepowtarzanie STP i nieuczenie si\u0119 TRILL podczas rozm\u00f3w. Koncepcja, w kt\u00f3rej ca\u0142a sie\u0107 a\u017c do poziomu dost\u0119pu jest wy\u0142\u0105cznie L3, bez VLAN i ogromnych rozleg\u0142ych domen broadcastowych. O tym, sk\u0105d wzi\u0119\u0142o si\u0119 s\u0142owo \u201efabryka\u201d, porozmawiamy w nast\u0119pnej cz\u0119\u015bci.<\/p>\n<p><b>SDN<\/b> \u2014 Software Defined Network. Rzadko wymaga przedstawienia. Podej\u015bcie do zarz\u0105dzania sieci\u0105, w kt\u00f3rym zmiany w sieci s\u0105 wprowadzane nie przez cz\u0142owieka, lecz przez oprogramowanie. Zazwyczaj oznacza to przeniesienie Control Plane poza ko\u0144cowe urz\u0105dzenia sieciowe do kontrolera.<\/p>\n<p><b>NFV<\/b> \u2014 Network Function Virtualization \u2014 wirtualizacja urz\u0105dze\u0144 sieciowych, kt\u00f3ra zak\u0142ada, \u017ce cz\u0119\u015b\u0107 funkcji sieci mo\u017cna uruchamia\u0107 jako wirtualne maszyny lub kontenery, aby przyspieszy\u0107 wdra\u017canie nowych us\u0142ug, organizacj\u0119 Service Chaining oraz prostsz\u0105 poziom\u0105 skalowalno\u015b\u0107.<\/p>\n<p><b>VNF<\/b> \u2014 Virtual Network Function. Konkretne wirtualne urz\u0105dzenie: router, prze\u0142\u0105cznik, firewall, NAT, IPS\/IDS itd.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/971b6a28a9caab5f3a7067ce4d25749c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p> Obecnie celowo upraszczam opis do konkretnej realizacji, aby nie wprowadza\u0107 czytelnika w zak\u0142opotanie. Dla bardziej wnikliwego czytania odsy\u0142am do sekcji <noindex><a rel=\"nofollow\" href=\"#LINKS\">Linki<\/a><\/noindex>. Ponadto, Roma Gorgi, krytykuj\u0105cy ten artyku\u0142 za niedok\u0142adno\u015bci, obieca\u0142 napisa\u0107 osobny numer o technologiach wirtualizacji serwer\u00f3w i sieci, bardziej szczeg\u00f3\u0142owy i zwracaj\u0105cy uwag\u0119 na detale.<\/p><\/blockquote>\n<p>Wi\u0119kszo\u015b\u0107 sieci dzisiaj mo\u017cna wyra\u017anie podzieli\u0107 na dwie cz\u0119\u015bci: <\/p>\n<p><b>Sie\u0107 podstawowa<\/b> \u2014 fizyczna sie\u0107 o stabilnej konfiguracji.<br \/>\n<b>Sie\u0107 na\u0142o\u017cona<\/b> \u2014 abstrakcja nad sieci\u0105 podstawow\u0105 dla izolacji najemc\u00f3w. <\/p>\n<p>To prawda, zar\u00f3wno w przypadku DC (kt\u00f3ry om\u00f3wimy w tym artykule), jak i dla ISP (kt\u00f3rego nie b\u0119dziemy omawia\u0107, poniewa\u017c ju\u017c by\u0142o w <noindex><a rel=\"nofollow\" href=\"https:\/\/linkmeup.ru\/sdsm\">SDSM<\/a><\/noindex>). W przypadku sieci korporacyjnych sytuacja jest oczywi\u015bcie nieco inna. <\/p>\n<p>Obrazek z fokusem na sie\u0107:<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/7b7dabc6d9f3b87c598346bf9195d568.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1>Sie\u0107 podstawowa<\/h1>\n<p>\nUnderlay to fizyczna sie\u0107: prze\u0142\u0105czniki sprz\u0119towe i kable. Urz\u0105dzenia w underlayu wiedz\u0105, jak dotrze\u0107 do fizycznych maszyn.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/776a77a3821fe79a7323947e0bdf67e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOpiera si\u0119 na standardowych protoko\u0142ach i technologiach. Nie bez powodu, poniewa\u017c urz\u0105dzenia sprz\u0119towe wci\u0105\u017c dzia\u0142aj\u0105 na zastrze\u017conym oprogramowaniu, kt\u00f3re nie umo\u017cliwia programowania chip\u00f3w ani wdra\u017cania w\u0142asnych protoko\u0142\u00f3w, wi\u0119c potrzebna jest kompatybilno\u015b\u0107 z innymi dostawcami i standaryzacja.<\/p>\n<blockquote><p>Zarazem kto\u015b taki jak Google mo\u017ce sobie pozwoli\u0107 na opracowanie w\u0142asnych prze\u0142\u0105cznik\u00f3w oraz rezygnacj\u0119 z powszechnie przyj\u0119tych protoko\u0142\u00f3w. Ale LAN_DC to nie Google.\n<\/p><\/blockquote>\n<p> Underlay zmienia si\u0119 stosunkowo rzadko, poniewa\u017c jego zadaniem jest podstawowa \u0142\u0105czno\u015b\u0107 IP mi\u0119dzy fizycznymi maszynami. Underlay nic nie wie o uruchomionych us\u0142ugach, klientach, tenantach \u2014 jego zadaniem jest tylko dostarczanie pakietu z jednej maszyny na drug\u0105.<br \/>\nUnderlay mo\u017ce by\u0107 na przyk\u0142ad taki: <\/p>\n<ul>\n<li>IPv4+OSPF<\/li>\n<li>IPv6+ISIS+BGP+L3VPN<\/li>\n<li>L2+TRILL<\/li>\n<li>L2+STP<\/li>\n<\/ul>\n<p>\nPodstawowa sie\u0107 konfigurowana jest w tradycyjny spos\u00f3b: CLI\/GUINETCONF.<\/p>\n<p>R\u0119cznie, skryptami, zastrze\u017conymi narz\u0119dziami.<\/p>\n<p>Bardziej szczeg\u00f3\u0142owo underlay b\u0119dzie omawiane w nast\u0119pnym artykule cyklu.<\/p>\n<p><\/p>\n<h1>Sie\u0107 na\u0142o\u017cona<\/h1>\n<p>\nOverlay to wirtualna sie\u0107 tuneli rozci\u0105gni\u0119ta na warstwie Underlay, umo\u017cliwiaj\u0105ca maszynom wirtualnym jednego klienta komunikowanie si\u0119 ze sob\u0105, zapewniaj\u0105c izolacj\u0119 od innych klient\u00f3w.<\/p>\n<p>Dane klienta s\u0105 enkapsulowane w nag\u0142\u00f3wkach tuneluj\u0105cych do przesy\u0142ania przez wsp\u00f3ln\u0105 sie\u0107.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/3060bc4913c55c21b785083fbe0b603b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW ten spos\u00f3b maszyny wirtualne jednego klienta (jednej us\u0142ugi) mog\u0105 komunikowa\u0107 si\u0119 ze sob\u0105 przez Overlay, nawet nie zdaj\u0105c sobie sprawy, jak\u0105 drog\u0119 pokonuje pakiet. <\/p>\n<p>Overlay mo\u017ce by\u0107 na przyk\u0142ad taki, jak ju\u017c wspomnia\u0142em wcze\u015bniej:<\/p>\n<ul>\n<li>Tunel GRE<\/li>\n<li>VXLAN<\/li>\n<li>EVPN<\/li>\n<li>L3VPN<\/li>\n<li>GENEVE<\/li>\n<\/ul>\n<p>\nSie\u0107 Overlay zazwyczaj konfiguruje si\u0119 i utrzymuje za po\u015brednictwem centralnego kontrolera. Z niego konfiguracja, Control Plane i Data Plane s\u0105 dostarczane na urz\u0105dzenia, kt\u00f3re zajmuj\u0105 si\u0119 trasowaniem i enkapsulacj\u0105 ruchu klient\u00f3w. Troch\u0119 <noindex><a rel=\"nofollow\" href=\"#TF\">poni\u017cej<\/a><\/noindex> rozwa\u017cmy to na przyk\u0142adach.<\/p>\n<p><b>Tak, to czyste SDN. <\/b><\/p>\n<p>Istniej\u0105 dwa zasadniczo r\u00f3\u017cni\u0105ce si\u0119 podej\u015bcia do organizacji sieci Overlay:<\/p>\n<ol>\n<li>Overlay z ToR\u2019a<\/li>\n<li>Overlay z hosta<\/li>\n<\/ol>\n<h2>Overlay z ToR\u2019a<\/h2>\n<p>\nOverlay mo\u017ce zaczyna\u0107 si\u0119 na prze\u0142\u0105czniku dost\u0119pu (ToR) stoj\u0105cym w szafie, jak to ma miejsce na przyk\u0142ad w przypadku fabryki VXLAN. <\/p>\n<p>To sprawdzony na sieciach ISP mechanizm, kt\u00f3ry wspieraj\u0105 wszyscy dostawcy sprz\u0119tu sieciowego.<\/p>\n<p>Jednak w tym przypadku prze\u0142\u0105cznik ToR musi by\u0107 w stanie oddziela\u0107 r\u00f3\u017cne us\u0142ugi, a administrator sieci powinien w pewnym stopniu wsp\u00f3\u0142pracowa\u0107 z administratorami maszyn wirtualnych i wprowadza\u0107 zmiany (nawet automatycznie) w konfiguracji urz\u0105dze\u0144.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/9a5fe4d4a0cbb7e5c3bbac82527c6a6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutaj odsy\u0142am czytelnika do artyku\u0142u o <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/344326\/\">VxLAN na Habra<\/a><\/noindex> naszym starym przyjacielu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/bormoglotx\/\">@bormoglotx<\/a><\/noindex>.<br \/>\nW tej <noindex><a rel=\"nofollow\" href=\"https:\/\/www.enog.org\/wp-content\/uploads\/presentations\/enog-16\/18-Scaleway-P14-fabric-ENOG16.pdf\">prezentacji ENOG<\/a><\/noindex> szczeg\u00f3\u0142owo opisano podej\u015bcia do budowy sieci DC z EVPN VXLAN-fabryk\u0105. <\/p>\n<p>A dla pe\u0142niejszego wnikni\u0119cia w rzeczywisto\u015b\u0107, mo\u017cna przeczyta\u0107 ksi\u0105\u017ck\u0119 Cisco <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cisco.com\/c\/dam\/en\/us\/td\/docs\/switches\/datacenter\/nexus9000\/sw\/vxlan_evpn\/VXLAN_EVPN.pdf\">A Modern, Open, and Scalable Fabric: VXLAN EVPN<\/a><\/noindex>.<\/p>\n<blockquote><p> Zauwa\u017c\u0119, \u017ce VXLAN to jedynie metoda enkapsulacji, a zako\u0144czenie tuneli mo\u017ce nast\u0119powa\u0107 nie na ToR\u2019e, lecz na ho\u015bcie, jak to ma miejsce w przypadku OpenStack\u2019a, na przyk\u0142ad.<\/p>\n<p>Jednak fabryka VXLAN, gdzie overlay zaczyna si\u0119 na ToR\u2019e, jest jednym z utartych projekt\u00f3w sieci overlay.\n<\/p><\/blockquote>\n<p><\/p>\n<h2>Overlay z hosta<\/h2>\n<p>\nInnym podej\u015bciem jest rozpocz\u0119cie i zako\u0144czenie tuneli na ko\u0144cowych hostach.<br \/>\nW takim przypadku sie\u0107 (Underlay) pozostaje maksymalnie prosta i statyczna.<br \/>\nA host sam wykonuje wszystkie niezb\u0119dne enkapsulacje.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/c9c2971369d1b3e5f026d6844afeb67f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW tym celu konieczne b\u0119dzie uruchomienie specjalnej aplikacji na hostach, ale warto. <\/p>\n<p>Po pierwsze, uruchomienie klienta na maszynie z systemem Linux jest prostsze lub, powiedzmy, - w og\u00f3le mo\u017cliwe - podczas gdy na prze\u0142\u0105czniku prawdopodobnie nadal trzeba b\u0119dzie korzysta\u0107 z w\u0142asno\u015bciowych rozwi\u0105za\u0144 SDN, co zabija ide\u0119 wielowalutowo\u015bci.<\/p>\n<p>Po drugie, prze\u0142\u0105cznik ToR w tym przypadku mo\u017cna pozostawi\u0107 maksymalnie prostym, zar\u00f3wno z perspektywy Control Plane, jak i Data Plane. Rzeczywi\u015bcie \u2014 z kontrolerem SDN nie musi si\u0119 wtedy komunikowa\u0107, a przechowywanie sieci\/ARP wszystkich pod\u0142\u0105czonych klient\u00f3w te\u017c nie jest potrzebne \u2014 wystarczy zna\u0107 adres IP fizycznej maszyny, co znacznie u\u0142atwia tabele prze\u0142\u0105czania\/trasowania.<\/p>\n<p>\nW serii ADSM wybieram podej\u015bcie overlay z hosta - dalej b\u0119dziemy m\u00f3wi\u0107 tylko o nim i nie wr\u00f3cimy ju\u017c do fabryki VXLAN.<\/p>\n<p>\nNajpro\u015bciej to zobrazowa\u0107 na przyk\u0142adach. Jako obiekt badawczy we\u017amiemy platform\u0119 SDN OpenSource OpenContrail, obecnie znan\u0105 jako <noindex><a rel=\"nofollow\" href=\"https:\/\/tungsten.io\">Tungsten Fabric<\/a><\/noindex>.<\/p>\n<blockquote><p> Na ko\u0144cu artyku\u0142u przedstawi\u0119 kilka refleksji na temat analogii z OpenFlow i OpenvSwitch.\n<\/p><\/blockquote>\n<p><\/p>\n<h2>Na przyk\u0142adzie Tungsten Fabric<\/h2>\n<p>\nNa ka\u017cdej fizycznej maszynie jest <b>vRouter<\/b> \u2014 wirtualny router, kt\u00f3ry zna pod\u0142\u0105czone do niego sieci i do jakich klient\u00f3w one nale\u017c\u0105 \u2014 w zasadzie \u2014 router PE. Dla ka\u017cdego klienta utrzymuje odizolowan\u0105 tabel\u0119 trasowania (czytaj VRF). A sam vRouter realizuje tunelowanie Overlay.<\/p>\n<p>Nieco wi\u0119cej o vRouterze \u2014 na ko\u0144cu artyku\u0142u.<\/p>\n<p>Ka\u017cda VM, zlokalizowana na hipernadzorze, \u0142\u0105czy si\u0119 z vRouterem tej maszyny przez <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/TUN\/TAP\">interfejs TAP<\/a><\/noindex>.<\/p>\n<p><b>TAP<\/b> \u2014 Terminal Access Point \u2014 wirtualny interfejs w j\u0105drze Linux, kt\u00f3ry umo\u017cliwia nawi\u0105zywanie interakcji sieciowych.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/a6fa1b4370ba4e787303ae647a28f5ed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe\u015bli za vRouterem znajduj\u0105 si\u0119 kilka sieci, to dla ka\u017cdej z nich tworzy si\u0119 wirtualny interfejs, na kt\u00f3ry przypisywany jest adres IP \u2014 b\u0119dzie to adres bramy domy\u015blnej.<br \/>\nWszystkie sieci jednego klienta umieszczane s\u0105 w jednym <b>VRF<\/b> (jednej tabeli), r\u00f3\u017cne \u2014 w r\u00f3\u017cnych.<br \/>\n<i>Zaznaczam tu, \u017ce nie wszystko jest takie proste, i odsy\u0142am ciekawskich czytelnik\u00f3w na koniec artyku\u0142u.<\/i>.<\/p>\n<p>Aby vRoutery mog\u0142y komunikowa\u0107 si\u0119 ze sob\u0105, a co za tym idzie, i VM-y znajduj\u0105ce si\u0119 za nimi, wymieniaj\u0105 si\u0119 informacjami o trasach przez <b>kontroler SDN<\/b>.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/sdn-controller.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/8b133e10582dbde9c0670ad98c1840de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Aby wydosta\u0107 si\u0119 na zewn\u0105trz, istnieje punkt wyj\u015bcia z matrycy \u2014 brama wirtualnej sieci <b>VNGW<\/b> \u2014 Virtual Network GateWay (<i>termin m\u00f3j<\/i>).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/vngw.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/9ac4d084d9b58b7ed1bc2c0ed6d06059.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>\nTeraz przyjrzymy si\u0119 przyk\u0142adom komunikacji \u2014 i wszystko stanie si\u0119 jasne.<\/p>\n<p><\/p>\n<h3>Komunikacja wewn\u0105trz jednej fizycznej maszyny<\/h3>\n<p>\nVM0 chce wys\u0142a\u0107 pakiet do VM2. Przyjmijmy na razie, \u017ce to VM jednego klienta.<\/p>\n<h4>Data Plane<\/h4>\n<p><\/p>\n<ol>\n<li>VM-0 ma domy\u015bln\u0105 tras\u0119 do swojego interfejsu eth0. Pakiet jest tam wysy\u0142any.<br \/>\n Ten interfejs eth0 jest tak naprawd\u0119 wirtualnie po\u0142\u0105czony z wirtualnym routerem vRouter za pomoc\u0105 interfejsu TAP tap0.<\/li>\n<li>vRouter analizuje, na jaki interfejs dotar\u0142 pakiet, to znaczy do kt\u00f3rego klienta (VRF) on nale\u017cy, por\u00f3wnuje adres odbiorcy z tabel\u0105 routingu tego klienta.<\/li>\n<li>Stwierdzaj\u0105c, \u017ce odbiorca jest na tej samej maszynie na innym porcie, vRouter po prostu przesy\u0142a pakiet do niego bez jakichkolwiek dodatkowych nag\u0142\u00f3wk\u00f3w \u2014 w tym celu na vRouterze ju\u017c istnieje zapis ARP. <\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/a42da3f48a3f538eb92c1908d9d66921.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPakiet w tym przypadku nie trafia do fizycznej sieci \u2014 jest routowany wewn\u0105trz vRoutera.<\/p>\n<p><\/p>\n<h4>Control Plane<\/h4>\n<p>\nHypervisor przy uruchamianiu wirtualnej maszyny informuje j\u0105 o:<\/p>\n<ul>\n<li>Jej w\u0142asnym adresie IP.<\/li>\n<li>Domy\u015blna trasa to przez adres IP vRoutera w tej sieci.<\/li>\n<\/ul>\n<p>\nvRouterowi przez specjalne API hypervisor informuje:<\/p>\n<ul>\n<li>\u017be musi stworzy\u0107 wirtualny interfejs.<\/li>\n<li>Jaki (VM) nale\u017cy stworzy\u0107 Virtual Network.<\/li>\n<li>Do kt\u00f3rego VRF ma by\u0107 przypisany (VN).<\/li>\n<li>Statyczny zapis ARP dla tej VM \u2014 kt\u00f3ry interfejs odpowiada jej adresowi IP i do kt\u00f3rego adresu MAC jest on przypisany.<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p> Raz jeszcze, rzeczywista procedura interakcji zosta\u0142a uproszczona dla \u0142atwiejszego zrozumienia koncepcji.\n<\/p><\/blockquote>\n<p> <img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/593d7ad41782e882a88732b475bf91cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW ten spos\u00f3b wszystkie VM jednego klienta na tej maszynie vRouter widzi jako bezpo\u015brednio pod\u0142\u0105czone sieci i mo\u017ce mi\u0119dzy nimi samodzielnie routowa\u0107.<\/p>\n<p>\nMaszyny VM0 i VM1 nale\u017c\u0105 do r\u00f3\u017cnych klient\u00f3w i odpowiednio znajduj\u0105 si\u0119 w r\u00f3\u017cnych tabelach vRoutera.<\/p>\n<p>To, czy b\u0119d\u0105 mog\u0142y si\u0119 komunikowa\u0107 bezpo\u015brednio, zale\u017cy od ustawie\u0144 vRoutera oraz projektu sieci.<br \/>\nNa przyk\u0142ad, je\u015bli obie maszyny tych klient\u00f3w u\u017cywaj\u0105 publicznych adres\u00f3w, lub NAT odbywa si\u0119 na samym vRouterze, to mo\u017cna ustawi\u0107 bezpo\u015brednie routowanie na vRouter.<\/p>\n<p>W przeciwnym razie mo\u017ce wyst\u0105pi\u0107 zbie\u017cno\u015b\u0107 przestrzeni adresowej \u2014 konieczne b\u0119dzie przechodzenie przez serwer NAT, aby uzyska\u0107 publiczny adres \u2014 przypomina to wyj\u015bcie do zewn\u0119trznych sieci, o kt\u00f3rych mowa poni\u017cej.<\/p>\n<h3>Komunikacja mi\u0119dzy VM, znajduj\u0105cymi si\u0119 na r\u00f3\u017cnych fizycznych maszynach<\/h3>\n<p><\/p>\n<h4>Data Plane<\/h4>\n<p><\/p>\n<ol>\n<li>Pocz\u0105tek jest dok\u0142adnie taki sam: VM-0 wysy\u0142a pakiet do adresata VM-7 (172.17.3.2) wed\u0142ug swojego domy\u015blnego ustawienia.<\/li>\n<li>vRouter go odbiera i tym razem widzi, \u017ce adresat znajduje si\u0119 na innej maszynie i jest dost\u0119pny przez tunel Tunnel0.<\/li>\n<li>Najpierw nak\u0142ada etykiet\u0119 MPLS, identyfikuj\u0105c\u0105 zdalny interfejs, aby na odwrotnej stronie vRouter m\u00f3g\u0142 ustali\u0107, gdzie ten pakiet umie\u015bci\u0107, i to bez dodatkowych luk\u00f3w.\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/inter-hv-dp.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/1e159049376e2bf458b8c6cb5878cc17.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex>\n <\/li>\n<li>Z Tunnel0 \u017ar\u00f3d\u0142o to 10.0.0.2, odbiorca: 10.0.1.2.<br \/>\n vRouter dodaje nag\u0142\u00f3wki GRE (lub UDP) i nowy adres IP do oryginalnego pakietu.<\/li>\n<li>W tabeli routingu vRoutera znajduje si\u0119 trasa domy\u015blna przez adres ToR1 10.0.0.1. Tam w\u0142a\u015bnie wysy\u0142a.\n<p> <img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/8cb98a8ec43d202259acf6a1fcaeb3ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n \n <\/li>\n<li>ToR1 jako uczestnik sieci Underlay wie (na przyk\u0142ad, przez OSPF), jak dotrze\u0107 do 10.0.1.2, i wysy\u0142a pakiet odpowiedni\u0105 tras\u0105. Zwr\u00f3\u0107 uwag\u0119, \u017ce tutaj wchodzi w gr\u0119 ECMP. Na ilustracji s\u0105 dwa next hopy, i r\u00f3\u017cne strumienie b\u0119d\u0105 w nich umieszczane na podstawie hasha. W przypadku rzeczywistej fabryki by\u0142oby tu raczej 4 next hop\u00f3w.\n<p>Przy tym nie musi wiedzie\u0107, co znajduje si\u0119 pod zewn\u0119trznym nag\u0142\u00f3wkiem IP. To znaczy, \u017ce faktycznie pod IP mo\u017ce by\u0107 kanapka z IPv6 nad MPLS nad Ethernet nad MPLS nad GRE nad GRE nad GRE.<\/li>\n<li>Odpowiednio, po stronie odbieraj\u0105cej vRouter usuwa GRE i na podstawie etykiety MPLS rozumie, na kt\u00f3ry interfejs nale\u017cy przekaza\u0107 ten pakiet, rozdziela go i wysy\u0142a w pierwotnej formie do odbiorcy.<\/li>\n<\/ol>\n<h4>Control Plane<\/h4>\n<p>\nPodczas uruchamiania maszyny dzieje si\u0119 to samo, co opisano powy\u017cej.<\/p>\n<p>A dodatkowo jeszcze to:<\/p>\n<ul>\n<li>Dla ka\u017cdego klienta vRouter przydziela etykiet\u0119 MPLS. Jest to etykieta serwisowa L3VPN, wed\u0142ug kt\u00f3rej klienci b\u0119d\u0105 rozdzielani w obr\u0119bie jednej fizycznej maszyny.<br \/>\n<blockquote><p> W rzeczywisto\u015bci etykieta MPLS jest przypisywana przez vRoutera bezwarunkowo \u2014 nie wiadomo wcze\u015bniej, czy maszyna b\u0119dzie wsp\u00f3\u0142dzia\u0142a\u0107 tylko z innymi maszynami za tym samym vRouterem, co prawdopodobnie nie jest prawd\u0105. \n <\/p><\/blockquote>\n<\/li>\n<li>vRouter ustanawia po\u0142\u0105czenie z kontrolerem SDN za pomoc\u0105 protoko\u0142u BGP (lub podobnego \u2013 w przypadku TF jest to XMPP 0_o).<\/li>\n<li>Poprzez t\u0119 sesj\u0119 vRouter informuje kontrolera SDN o trasach do pod\u0142\u0105czonych sieci:\n<ul>\n<li>Adres sieci<\/li>\n<li>Metoda enkapsulacji (MPLSoGRE, MPLSoUDP, VXLAN)<\/li>\n<li>Etykieta MPLS klienta<\/li>\n<li>Sw\u00f3j adres IP jako nexthop<\/li>\n<\/ul>\n<p>\n <\/li>\n<li>Kontroler SDN otrzymuje takie trasy od wszystkich pod\u0142\u0105czonych vRouter\u00f3w i przekazuje je innym. Oznacza to, \u017ce dzia\u0142a jako Route Reflector.<\/li>\n<\/ul>\n<p>\nTo samo dzieje si\u0119 w drug\u0105 stron\u0119.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/inter-hv-cp.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/feef9181133f3a50a5cb21aa7ba16dc0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Overlay mo\u017ce zmienia\u0107 si\u0119 nawet co minut\u0119. Tak to mniej wi\u0119cej wygl\u0105da w publicznych chmurach, gdy klienci regularnie uruchamiaj\u0105 i wy\u0142\u0105czaj\u0105 swoje maszyny wirtualne.<\/p>\n<p>Centralny kontroler przejmuje wszystkie trudno\u015bci zwi\u0105zane z utrzymywaniem konfiguracji oraz kontrol\u0105 tabeli prze\u0142\u0105czania\/routingu na vRouterze.<\/p>\n<p>M\u00f3wi\u0105c w du\u017cym uproszczeniu, kontroler \u0142\u0105czy si\u0119 z wszystkimi vRouterami za pomoc\u0105 BGP (lub podobnego protoko\u0142u) i przesy\u0142a po prostu informacje o trasach. BGP na przyk\u0142ad ju\u017c ma Address-Family do przesy\u0142ania metody enkapsulacji. <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc4023\">MPLS-in-GRE<\/a><\/noindex> lub <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7510\">MPLS-in-UDP<\/a><\/noindex>.<\/p>\n<p>Przy tym nie zmienia si\u0119 w \u017caden spos\u00f3b konfiguracja sieci Underlay, kt\u00f3r\u0105, nawiasem m\u00f3wi\u0105c, automatyzowa\u0107 jest znacznie trudniej, a z\u0142ama\u0107 przypadkowym ruchem \u0142atwiej.<\/p>\n<h3>Wyj\u015bcie na zewn\u0105trz<\/h3>\n<p>\nGdzie\u015b symulacja powinna si\u0119 sko\u0144czy\u0107, i z wirtualnego \u015bwiata trzeba przej\u015b\u0107 do rzeczywistego. Potrzebny jest brama taksowa.<\/p>\n<p>Stosuje si\u0119 dwa podej\u015bcia:<\/p>\n<ol>\n<li>Instalowany jest sprz\u0119towy router.<\/li>\n<li>Uruchamiany jest jaki\u015b appliance, realizuj\u0105cy funkcje routera (tak, tak, po SDN zderzyli\u015bmy si\u0119 i z VNF). Nazwijmy go wirtualn\u0105 bram\u0105.<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p> Zalet\u0105 drugiego podej\u015bcia jest tania pozioma skalowalno\u015b\u0107 \u2013 brak mocy \u2013 uruchomili\u015bmy jeszcze jedn\u0105 wirtualk\u0119 z bram\u0105. Na dowolnej fizycznej maszynie, bez konieczno\u015bci szukania wolnych szafek, jednostek, zasilania, kupowania samego sprz\u0119tu, transportu, instalacji, okablowania, konfigurowania, a potem jeszcze wymiany uszkodzonych komponent\u00f3w.<\/p>\n<p>Wad\u0105 wirtualnego bramy jest to, \u017ce jednostka fizycznego routera jest znacznie pot\u0119\u017cniejsza ni\u017c wielordzeniowa maszyna wirtualna, a jego oprogramowanie dostosowane do jego w\u0142asnej podstawy sprz\u0119towej dzia\u0142a znacznie stabilniej (<i>nie<\/i>). Trudno ignorowa\u0107 r\u00f3wnie\u017c fakt, \u017ce kompleks sprz\u0119towo-programowy po prostu dzia\u0142a, wymagaj\u0105c jedynie konfiguracji, podczas gdy uruchamianie i utrzymanie wirtualnej bramy to zadanie dla silnych in\u017cynier\u00f3w.\n<\/p><\/blockquote>\n<p> Jedn\u0105 nog\u0105 brama spogl\u0105da na wirtualn\u0105 sie\u0107 Overlay, jak zwyk\u0142a maszyna wirtualna, i mo\u017ce wsp\u00f3\u0142dzia\u0142a\u0107 z innymi VM. Przy tym mo\u017ce ko\u0144czy\u0107 sieci wszystkich klient\u00f3w i, odpowiednio, prowadzi\u0107 routowanie mi\u0119dzy nimi.<\/p>\n<p>Drug\u0105 nog\u0105 brama patrzy w sie\u0107 g\u0142\u00f3wn\u0105 i wie, jak przedosta\u0107 si\u0119 do Internetu.<\/p>\n<p><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/552fa0428ff8dd3aed76091a86a72109.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Data Plane<\/h4>\n<p>\nProces wygl\u0105da nast\u0119puj\u0105co: <\/p>\n<ol>\n<li>VM-0, maj\u0105c domy\u015blnie vRouter, wysy\u0142a pakiet z adresatem w \u015bwiecie zewn\u0119trznym (185.147.83.177) na interfejs eth0.<\/li>\n<li>vRouter odbiera ten pakiet i robi lookup adresu docelowego w tabeli routingu \u2014 znajduje tras\u0119 domy\u015bln\u0105 przez bram\u0119 VNGW1 przez Tunnel 1. <br \/>\n Widzi r\u00f3wnie\u017c, \u017ce to jest tunel GRE z SIP 10.0.0.2 i DIP 10.0.255.2, a tak\u017ce trzeba najpierw przypi\u0105\u0107 etykiet\u0119 MPLS tego klienta, kt\u00f3r\u0105 oczekuje VNGW1.\n <\/li>\n<li>vRouter pakuje pierwotny pakiet w nag\u0142\u00f3wki MPLS, GRE i nowy IP i wysy\u0142a do adresu ToR1 10.0.0.1 zgodnie z domy\u015bln\u0105 tras\u0105.<\/li>\n<li>Sie\u0107 podk\u0142adowa dostarcza pakiet do bramy VNGW1.<\/li>\n<li>Bramka VNGW1 usuwa nag\u0142\u00f3wki tuneluj\u0105ce GRE i MPLS, widzi adres docelowy, konsultuje swoj\u0105 tabel\u0119 routingu i rozumie, \u017ce ma on trafi\u0107 do Internetu \u2014 zatem przez Full View lub Default. W razie potrzeby przeprowadza translacj\u0119 NAT.<\/li>\n<li>Od VNGW do bordera mo\u017ce by\u0107 zwyk\u0142a sie\u0107 IP, co jest ma\u0142o prawdopodobne.<br \/>\n Mo\u017ce to by\u0107 klasyczna sie\u0107 MPLS (IGP+LDP\/Rsvp TE), mo\u017ce by\u0107 odwrotna fabryka z BGP LU lub tunel GRE od VNGW do bordera przez sie\u0107 IP.<br \/>\n Bez wzgl\u0119du na wszystko, VNGW1 dokonuje niezb\u0119dnych enkapsulacji i wysy\u0142a pierwotny pakiet w kierunku bordera.<\/li>\n<\/ol>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/outside-dp.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/a66e490c75f8220349398af814d4ebf2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Ruch w przeciwn\u0105 stron\u0119 przechodzi te same kroki w odwrotnej kolejno\u015bci. <\/p>\n<ol>\n<li>Border dostarcza pakiet do VNGW1<\/li>\n<li>Ten go rozbiera, patrzy na adres odbiorcy i widzi, \u017ce jest on dost\u0119pny przez tunel Tunnel1 (MPLSoGRE lub MPLSoUDP).<\/li>\n<li>W zwi\u0105zku z tym przyczepia etykiet\u0119 MPLS, nag\u0142\u00f3wek GRE\/UDP i nowy IP i wysy\u0142a do swojego ToR3 10.0.255.1.<br \/>\n Adres docelowy tunelu to adres IP vRoutera, za kt\u00f3rym kryje si\u0119 docelowa maszyna wirtualna \u2014 10.0.0.2.<\/li>\n<li>Sie\u0107 underpinningowa dostarcza pakiet do odpowiedniego vRoutera. <\/li>\n<li>Docelowy vRouter od\u0142\u0105cza GRE\/UDP, okre\u015bla interfejs na podstawie oznaczenia MPLS i wysy\u0142a surowy pakiet IP do swojego interfejsu TAP, zwi\u0105zanego z eth0 VM.<\/li>\n<\/ol>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/outside-dp-reverse.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/ba6748694a822fc04f4e872658d1fbbb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<h4>Control Plane<\/h4>\n<p>\nVNGW1 nawi\u0105zuje s\u0105siedztwo BGP z kontrolerem SDN, od kt\u00f3rego otrzymuje wszystkie informacje o trasach klient\u00f3w: za kt\u00f3rym adresem IP (vRouterem) znajduje si\u0119 dany klient i jak\u0105 etykiet\u0105 MPLS jest identyfikowany.<\/p>\n<p>Podobnie, sam kontroler SDN informuje o trasie domy\u015blnej z etykiet\u0105 tego klienta, wskazuj\u0105c siebie jako nexthop. A dalej ta domy\u015blna trasa dociera do vRouter\u00f3w.<\/p>\n<p>Na VNGW zazwyczaj odbywa si\u0119 agregacja tras lub translacja NAT.<\/p>\n<p>W druga stron\u0119 w sesji z borderami lub Route Reflectorami przekazuje dok\u0142adnie t\u0119 skondensowan\u0105 tras\u0119. A od nich otrzymuje tras\u0119 domy\u015bln\u0105 albo Full-View, albo co\u015b innego.<\/p>\n<p>Je\u015bli chodzi o enkapsulacj\u0119 i wymian\u0119 ruchu, VNGW nie r\u00f3\u017cni si\u0119 od vRoutera. <br \/>\nJe\u015bli nieco rozszerzy\u0107 obszar, to do VNGW i vRouter\u00f3w mo\u017cna doda\u0107 inne urz\u0105dzenia sieciowe, takie jak zapory, farmy oczyszczania lub wzbogacania ruchu, IPS i tak dalej.<\/p>\n<p>I dzi\u0119ki sekwencyjnemu tworzeniu VRF i odpowiedniemu og\u0142aszaniu tras, mo\u017cna sprawi\u0107, \u017ce ruch b\u0119dzie kr\u0105\u017cy\u0142 tak, jak si\u0119 chce, co nazywa si\u0119 Service Chaining.<\/p>\n<p>Oznacza to, \u017ce tutaj kontroler SDN dzia\u0142a r\u00f3wnie\u017c jako Route Reflector mi\u0119dzy VNGW, vRouterami a innymi urz\u0105dzeniami sieciowymi.<\/p>\n<p>Jednak kontroler faktycznie przekazuje r\u00f3wnie\u017c informacje o ACL i PBR (Routing na podstawie polityki), zmuszaj\u0105c poszczeg\u00f3lne strumienie ruchu do przemieszczania si\u0119 nie tak, jak nakazuje trasa.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/1\/outside-cp.png\"><img decoding=\"async\" alt=\"Automatyzacja dla najmniejszych. Cz\u0119\u015b\u0107 pierwsza (ta po zerowej). Wirtualizacja sieci\" src=\"\/wp-content\/uploads\/2019\/07\/dbba5a93d64edf56dc9c2b82311c5a11.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h1>FAQ<\/h1>\n<p><b>Dlaczego ci\u0105gle robisz uwag\u0119 o GRE\/UDP?<\/b><\/p>\n<p>C\u00f3\u017c, w zasadzie to jest specyficzne dla Tungsten Fabric \u2014 mo\u017cna w og\u00f3le tego nie bra\u0107 pod uwag\u0119.<\/p>\n<p>Jednak\u017ce, je\u015bli m\u00f3wimy o TF, to jeszcze jako OpenContrail wspiera\u0142 obie enkapsulacje: MPLS w GRE i MPLS w UDP. <\/p>\n<p>UDP jest dobre, poniewa\u017c w porcie \u017ar\u00f3d\u0142owym w jego nag\u0142\u00f3wku bardzo \u0142atwo zakodowa\u0107 funkcj\u0119 haszuj\u0105c\u0105 z pocz\u0105tkowych IP+Proto+Port, co umo\u017cliwia r\u00f3wnowa\u017cenie. <\/p>\n<p>W przypadku GRE, niestety, s\u0105 tylko zewn\u0119trzne nag\u0142\u00f3wki IP i GRE, kt\u00f3re s\u0105 identyczne dla ca\u0142ego enkapsulowanego ruchu, wi\u0119c mowa o r\u00f3wnowa\u017ceniu nie ma miejsca \u2014 niewielu mo\u017ce zajrze\u0107 tak g\u0142\u0119boko w pakiet.<\/p>\n<p>Do pewnego czasu routery, je\u015bli w og\u00f3le potrafi\u0142y obs\u0142ugiwa\u0107 dynamiczne tunele, to tylko w MPLSoGRE, a dopiero niedawno nauczy\u0142y si\u0119 obs\u0142ugiwa\u0107 MPLSoUDP. Dlatego te\u017c zawsze trzeba doda\u0107 wzmiank\u0119 o mo\u017cliwo\u015bci dw\u00f3ch r\u00f3\u017cnych enkapsulacji.<\/p>\n<p>Dla uczciwo\u015bci warto zauwa\u017cy\u0107, \u017ce TF z powodzeniem obs\u0142uguje tak\u017ce L2 po\u0142\u0105czenia za pomoc\u0105 VXLAN.<\/p>\n<p>\n<b>Obieca\u0142e\u015b przeprowadzi\u0107 paralele z OpenFlow.<\/b><br \/>\nRzeczywi\u015bcie si\u0119 nasuwaj\u0105. vSwitch w tym samym OpenStack robi bardzo podobne rzeczy, korzystaj\u0105c z VXLAN, kt\u00f3ry zreszt\u0105 r\u00f3wnie\u017c ma nag\u0142\u00f3wek UDP.<\/p>\n<p>W Data Plane dzia\u0142aj\u0105 w zasadzie tak samo, znacznie r\u00f3\u017cni si\u0119 Control Plane. Tungsten Fabric u\u017cywa XMPP do dostarczania informacji o trasach do vRouter, podczas gdy w OpenStack dzia\u0142a Openflow.<\/p>\n<p>\n<b>Mo\u017cna powiedzie\u0107 troch\u0119 wi\u0119cej o vRouter?<\/b><br \/>\nDzieli si\u0119 on na dwie cz\u0119\u015bci: vRouter Agent i vRouter Forwarder.<\/p>\n<p>Pierwszy dzia\u0142a w User Space systemu operacyjnego gospodarza i komunikuje si\u0119 z kontrolerem SDN, wymieniaj\u0105c informacje o trasach, VRF i ACL.<\/p>\n<p>Drugi realizuje Data Plane \u2014 zazwyczaj w Kernel Space, ale mo\u017ce by\u0107 uruchamiany r\u00f3wnie\u017c na SmartNICach \u2014 kartach sieciowych z CPU i oddzielnym programowalnym chipem do prze\u0142\u0105czania, co pozwala odci\u0105\u017cy\u0107 CPU maszyny gospodarza i uczyni\u0107 sie\u0107 szybsz\u0105 oraz bardziej przewidywaln\u0105. <\/p>\n<p>Istnieje tak\u017ce scenariusz, w kt\u00f3rym vRouter to aplikacja DPDK w User Space. <\/p>\n<p>vRouter Agent przesy\u0142a ustawienia do vRouter Forwarder.<\/p>\n<p>\n<b>Czym jest Virtual Network?<\/b><br \/>\nWspomnia\u0142em na pocz\u0105tku artyku\u0142u o VRF, \u017ce ka\u017cdy najemca jest przypisany do swojego VRF. I je\u015bli dla powierzchownego zrozumienia dzia\u0142ania sieci opartej na overlayach to wystarczy, to ju\u017c przy nast\u0119pnej iteracji nale\u017cy zrobi\u0107 pewne doprecyzowania.<\/p>\n<p>Zazwyczaj w mechanizmach wirtualizacji podmiot Virtual Network (mo\u017cna to traktowa\u0107 jako nazw\u0119 w\u0142asn\u0105) wprowadzany jest osobno od klient\u00f3w\/tenanat\u00f3w\/wirtualnych maszyn \u2014 jest to ca\u0142kowicie samodzielny byt. A ta Virtual Network poprzez interfejsy mo\u017ce by\u0107 pod\u0142\u0105czona do jednego tenanta, drugiego, dw\u00f3ch, w\u0142a\u015bciwie wsz\u0119dzie. Tak w\u0142a\u015bnie realizuje si\u0119 Service Chaining, gdy ruch musi przej\u015b\u0107 przez okre\u015blone w\u0119z\u0142y w odpowiedniej kolejno\u015bci, po prostu tworz\u0105c i przypinaj\u0105c Virtual Network w prawid\u0142owej kolejno\u015bci.<\/p>\n<p>Dlatego nie ma bezpo\u015bredniego odpowiednika mi\u0119dzy Virtual Network a najemc\u0105.<\/p>\n<h1>Podsumowanie<\/h1>\n<p>\nTo do\u015b\u0107 powierzchowne opisanie dzia\u0142ania wirtualnej sieci z nak\u0142adk\u0105 z hosta i kontrolerem SDN. Bez wzgl\u0119du na platform\u0119 wirtualizacji, kt\u00f3r\u0105 dzisiaj wybierzesz, b\u0119dzie ona dzia\u0142a\u0107 w podobny spos\u00f3b, niezale\u017cnie czy to VMWare, ACI, OpenStack, CloudStack, Tungsten Fabric czy Juniper Contrail. R\u00f3\u017cnice b\u0119d\u0105 dotyczy\u0107 rodzaj\u00f3w enkapsulacji i nag\u0142\u00f3wk\u00f3w, protoko\u0142\u00f3w dostarczania informacji do ko\u0144cowych urz\u0105dze\u0144 sieciowych, ale zasada programowalnej sieci nak\u0142adkowej dzia\u0142aj\u0105cej na stosunkowo prostej i statycznej sieci podstawowej pozostanie ta sama.<br \/>\nMo\u017cna powiedzie\u0107, \u017ce w dziedzinie tworzenia prywatnych chmur, SDN oparty na sieci nak\u0142adkowej wygra\u0142. Nie oznacza to jednak, \u017ce OpenFlow nie ma miejsca we wsp\u00f3\u0142czesnym \u015bwiecie \u2014 jest u\u017cywany w OpenStack i tym samym VMWare NSX, jak mi wiadomo, stosuje go Google do konfiguracji sieci podstawowej.<\/p>\n<p>Nieco ni\u017cej zamie\u015bci\u0142em linki do bardziej szczeg\u00f3\u0142owych materia\u0142\u00f3w, je\u015bli chcesz zg\u0142\u0119bi\u0107 temat. <\/p>\n<p>A co z nasz\u0105 sieci\u0105 podstawow\u0105? <\/p>\n<p>Og\u00f3lnie rzecz bior\u0105c, nic. Ca\u0142y czas pozostaje bez zmian. Wszystko, co musi robi\u0107 w przypadku nak\u0142adki z hosta, to aktualizowa\u0107 trasy i ARP, w miar\u0119 pojawiania si\u0119 i znika vRouter\/VNGW oraz przesy\u0142a\u0107 pakiety mi\u0119dzy nimi.<\/p>\n<p>Sformu\u0142ujmy list\u0119 wymaga\u0144 dla sieci podstawowej.<\/p>\n<ol>\n<li>Musie\u0107 obs\u0142ugiwa\u0107 jaki\u015b protok\u00f3\u0142 routingu, w naszej sytuacji \u2014 BGP.<\/li>\n<li>Mie\u0107 du\u017c\u0105 przepustowo\u015b\u0107, najlepiej bez auto-przekierowywania, aby pakiety nie gin\u0119\u0142y z powodu przeci\u0105\u017cenia.<\/li>\n<li>Obs\u0142ugiwa\u0107 ECMP \u2014 nieod\u0142\u0105czny element fabryki.<\/li>\n<li>Musie\u0107 zapewni\u0107 QoS, w tym skomplikowane rzeczy, takie jak ECN.<\/li>\n<li>Obs\u0142ugiwa\u0107 NETCONF \u2014 przygotowanie na przysz\u0142o\u015b\u0107.<\/li>\n<\/ol>\n<p>\nSwojej pracy samej sieci podstawowej po\u015bwi\u0119ci\u0142em tutaj bardzo ma\u0142o czasu. To dlatego, \u017ce w dalszej cz\u0119\u015bci serii skupimy si\u0119 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0439, \u0430 \u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u043a\u043e\u043b\u044c\u0437\u044c.<\/p>\n<p>Oczywiste jest, \u017ce mocno ograniczam nas wszystkich, u\u017cywaj\u0105c jako przyk\u0142adu sie\u0107 centrum danych zbudowan\u0105 na fabryce Cloza z czyst\u0105 IP-routern\u0105 i nak\u0142adk\u0105 z hosta.<\/p>\n<p>Jednak jestem pewien, \u017ce ka\u017cd\u0105 sie\u0107 o okre\u015blonym designie mo\u017cna opisa\u0107 w formalnych terminach i zautomatyzowa\u0107. Po prostu d\u0105\u017c\u0119 tutaj do zrozumienia podej\u015b\u0107 do automatyzacji, a nie do zdezorientowania wszystkich, rozwi\u0105zuj\u0105c zadanie w og\u00f3lnym uj\u0119ciu.<\/p>\n<p>W ramach ADS-M planujemy z Romanem Gorge'em opublikowa\u0107 oddzielny numer po\u015bwi\u0119cony wirtualizacji moc obliczeniowych i jej interakcji z wirtualizacj\u0105 sieci. Prosz\u0119 pozosta\u0144cie w kontakcie.<\/p>\n<p><\/p>\n<h1>Przydatne linki<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/\">Architektura Tungsten Fabric<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Kr6WIYPts8I?t=3157\">about:cloud<\/a><\/noindex>. 6 godzin o Yandex.Cloud, gdzie m.in. omawiana jest wirtualna sie\u0107 na TF.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openvswitch.org\/en\/latest\/intro\/what-is-ovs\/\">Czym jest Open vSwitch?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/344326\/\">Wprowadzenie do VxLAN<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7348\">RFC 7348. Wirtualna Ekstensywna Sie\u0107 Lokalna (VXLAN): Ramy dla nak\u0142adania wirtualizowanych sieci warstwy 2 na sieci warstwy 3.<br \/>\n <\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.enog.org\/wp-content\/uploads\/presentations\/enog-16\/18-Scaleway-P14-fabric-ENOG16.pdf\">Podej\u015bcie Scaleway do VXLAN EVPN Fabric<\/a><\/noindex>. Tutaj omawiana jest ca\u0142a sie\u0107 DC, w tym Underlay, Overlay, podej\u015bcia do multi-homing i zarz\u0105dzania.<\/li>\n<\/ul>\n<p><\/p>\n<h5>Dzi\u0119kuj\u0119<\/h5>\n<p><\/p>\n<ul>\n<li><noindex>Roman Gorga<\/noindex> \u2014 by\u0142y prowadz\u0105cy podcastu linkmeup, obecnie ekspert w dziedzinie platform chmurowych. Dzi\u0119kuj\u0119 za komentarze i poprawki. Czekamy r\u00f3wnie\u017c na jego wkr\u00f3tce zapowiedziany g\u0142\u0119bszy artyku\u0142 o wirtualizacji.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.alexander-shalimov.com\">Aleksandr Shalimov<\/a><\/noindex> \u2014 m\u00f3j kolega i ekspert w dziedzinie rozwoju wirtualnych sieci. Dzi\u0119kuj\u0119 za komentarze i poprawki.<\/li>\n<li><noindex>Walentyn Sinytsyn<\/noindex> \u2014 m\u00f3j kolega i ekspert w dziedzinie Tungsten Fabric. Dzi\u0119kuj\u0119 za komentarze i poprawki.<\/li>\n<li><noindex>Artem Czer\u0144obaj<\/noindex> \u2014 ilustrator linkmeup. Dzi\u0119kuj\u0119 za KDPV.<\/li>\n<li>Aleksandrowi Limonowowi. Za mem \u00abautomato\u00bb.<\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458622\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e \u043e\u0442\u0437\u044b\u0432\u0430\u043c \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0434\u0430\u0436\u0435 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0443\u0436\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043f\u043e\u043b\u043e\u0447\u043a\u0430\u043c. \u0418 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u043d\u044f \u0440\u0430\u0434\u0443\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u0432 \u0446\u0438\u043a\u043b\u0435 \u2014 \u043d\u0435 \u043e\u0431\u043c\u0430\u0437\u0430\u0442\u044c \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 \u0430\u043d\u0437\u0438\u0431\u043b\u044c, \u0430 \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u042d\u0442\u043e\u0442 \u0436\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26892,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35973","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0414\u043b\u044f \u0421\u0430\u043c\u044b\u0445 \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0439). \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatyzacja Dla Najmniejszych. Cz\u0119\u015b\u0107 pierwsza (po cz\u0119\u015bci zerowej). Wirtualizacja sieci | ProHoster","description":"W poprzednim odcinku opisa\u0142em framework automatyzacji sieci.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0414\u043b\u044f \u0421\u0430\u043c\u044b\u0445 \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0439). \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 | ProHoster","og:description":"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-pervaya-kotoraya-posle-nulevoj-virtualizatsiya-seti","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:08:54+00:00","article:modified_time":"2019-10-31T19:08:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35973","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:28:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:53:30","updated":"2026-01-22 01:28:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=35973"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35973\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/26892"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=35973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=35973"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=35973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}