D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Modern Datenzenteren hunn Honnerte vun aktive GerÀter installéiert, déi duerch verschidden Aarte vu Iwwerwaachung ofgedeckt sinn. Awer och en idealen Ingenieur mat enger perfekter Iwwerwaachung an der Hand wÀert fÀeg sinn an nëmmen e puer Minutten op en Netzfehler korrekt ze reagéieren. An engem Bericht op der Next Hop 2020 Konferenz hunn ech eng DC Network Design Methodik presentéiert, déi eng eenzegaarteg Feature huet - den Datacenter heelt sech a Millisekonnen. Méi prÀzis fixéiert den Ingenieur de Problem roueg, wÀhrend d'Servicer et einfach net bemierken.

- Fir unzefÀnken, ginn ech eng zimlech detailléiert Aféierung fir déi, déi d'Struktur vun engem modernen DC net bewosst sinn.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Fir vill Reseau Ingenieuren fÀnkt engem Daten Zentrum Reseau, natierlech, mat ToR, mat engem Schalter am Rack. ToR huet normalerweis zwou Zorte vu Linken. Déi Kleng ginn op d'Serveren, anerer - et gi N Mol méi vun hinnen - ginn op d'Spines vum éischte Niveau, dat heescht op seng Uplinks. Uplinks ginn normalerweis als glÀich ugesinn, an de Verkéier tëscht Uplinks ass equilibréiert baséiert op engem Hash vu 5-tuple, deen Proto, src_ip, dst_ip, src_port, dst_port enthÀlt. Keng Iwwerraschungen hei.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Als nÀchst, wéi gesÀit d'Planarchitektur aus? Spines vum éischte Niveau sinn net matenee verbonnen, awer sinn duerch Superspines verbonnen. De Bréif X wÀert verantwortlech sinn fir Superspines; et ass bal wéi e KrÀizverbindung.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

An et ass kloer datt, op der anerer SÀit, Tori mat all WirbelsÀule vum éischte Niveau verbonne sinn. Wat ass wichteg an dësem Bild? Wa mir Interaktioun am Rack hunn, da geet d'Interaktioun natierlech duerch ToR. Wann d'Interaktioun am Modul geschitt ass, da geschitt d'Interaktioun duerch den éischte Niveau Spines. Wann d'Interaktioun intermodular ass - wéi hei, ToR 1 an ToR 2 - da wÀert d'Interaktioun duerch Spinne vum éischten an zweeten Niveau goen.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

An der Theorie ass sou eng Architektur einfach skalierbar. Wa mir Port Kapazitéit hunn, Ersatzraum am Rechenzentrum a pre-laid Faser, da kann d'Zuel vun de Bunnen ëmmer erhéicht ginn, an doduerch d'Gesamtkapazitéit vum System erhéijen. Dëst ass ganz einfach op Pabeier ze maachen. Et wier esou am Liewen. MÀ d'Geschicht vun haut ass net doriwwer.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Ech wëll datt déi richteg Conclusiounen gezunn ginn. Mir hu vill Weeër am Rechenzentrum. Si sinn bedingt onofhÀngeg. Ee Wee am Rechenzentrum ass nëmme méiglech bannent ToR. Bannen am Modul hu mir d'Zuel vun de Weeër glÀich wéi d'Zuel vun de Bunnen. D'Zuel vun de Weeër tëscht Moduler entsprécht dem Produkt vun der Unzuel vun de Fligeren an der Unzuel vun de Superspinen an all Fliger. Fir et méi kloer ze maachen, fir e Sënn vun der Skala ze kréien, ginn ech Zuelen déi valabel sinn fir ee vun de Yandex Datenzenteren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Et ginn aacht Fligeren, all Fliger huet 32 ​​Superspines. Als Resultat stellt sech eraus datt et aacht WeeĂ«r am Modul sinn, a mat Intermodule Interaktioun sinn et schonn 256 vun hinnen.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Dat ass, wa mir Cookbook entwéckelen, probéieren ze léieren wéi Feeler-tolerant Datenzentere bauen déi sech selwer heelen, dann ass d'planar Architektur déi richteg Wiel. Et léist de Skaléierungsproblem, an an der Theorie ass et einfach. Et gi vill onofhÀngeg Weeër. D'Fro bleift: Wéi iwwerlieft esou eng Architektur Feeler? Et gi verschidde Feeler. A mir wÀerten dat elo diskutéieren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Loosst ee vun eise Superspines "krank ginn". Hei sinn ech zréck an d'Zweeplaner Architektur. Mir wÀerte mat dësen als e Beispill halen well et einfach méi einfach ass ze gesinn wat mat manner bewegt Deeler lass ass. Loosst X11 krank ginn. Wéi wÀert dëst d'Servicer beaflossen déi an den Datenzenter liewen? Vill hÀnkt dovun of wéi den Echec eigentlech ausgesÀit.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wann de Versoen gutt ass, gëtt et um Automatiséierungsniveau vum selwechte BFD gefaangen, d'Automatisatioun setzt glécklech déi problematesch Gelenker an isoléiert de Problem, dann ass alles gutt. Mir hu vill Weeër, de Verkéier gëtt direkt op alternativ Strecken ëmgeleet, a Servicer wÀerten nÀischt bemierken. Dëst ass e gutt Skript.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

E schlechte Szenario ass wa mir konstante Verloschter hunn, an d'Automatisatioun bemierkt de Problem net. Fir ze verstoen wéi dëst eng Applikatioun beaflosst, musse mir e bëssen ZÀit verbréngen fir ze diskutéieren wéi TCP funktionnéiert.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Ech hoffen ech schockéieren keen mat dëser Informatioun: TCP ass eng Transmissioun Confirmatiouns Protokoll. Dat ass, am einfachsten Fall, schéckt de Sender zwee PÀck a kritt e kumulativen Accord op hinnen: "Ech hunn zwee PÀck kritt."
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Duerno wÀert hien zwee méi PÀck schécken, an d'Situatioun wÀert widderhuelen. Ech entschëllegt am Viraus fir e puer Vereinfachung. Dëst Szenario ass richteg wann d'Fënster (d'Zuel vun de Paketen am Fluch) zwee ass. Natierlech ass dat am allgemenge Fall net onbedéngt de Fall. Awer d'Fënstergréisst beaflosst net de Paket Forward Kontext.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat geschitt wa mir Paket 3 verléieren? An dësem Fall kritt den EmpfÀnger Pakete 1, 2 a 4. An hie wÀert dem Sender explizit soen mat der SACK Optioun: "Dir wësst, drÀi sinn ukomm, awer d'Mëtt war verluer." Hie seet: "Ack 2, SACK 4."
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Zu dësem Moment widderhëlt de Sender ouni Probleemer genau dee Paket dee verluer ass.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Awer wann de leschte Paket an der Fënster verluer ass, gesÀit d'Situatioun ganz anescht aus.

Den EmpfÀnger kritt déi éischt drÀi Paketen a fÀnkt un ze waarden. Dank e puer Optimiséierungen am Kernel TCP Stack, Linux Et waart op e passenden Pakett, ausser et gëtt e explizite FÀndel, deen ugeet, datt et de leschte Pakett ass oder eppes Àhnleches. Et waart bis den Delayed ACK Timeout ofgelaf ass an dann eng BestÀtegung fir déi éischt drÀi Pakett schéckt. Mee elo muss den Absender waarden. Et weess net, ob de véierte Pakett verluer gaangen ass oder kuerz drop ukënnt. Fir d'Netzwierk net ze iwwerbelaascht, probéiert et ze waarden, bis et eng explizit Indikatioun gëtt, datt de Pakett verluer gaangen ass oder bis den RTO Timeout ofgelaf ass.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat ass RTO Timeout? Dëst ass de Maximum vum RTT berechent vum TCP Stack an e puer konstante. Wat fir eng Konstant dëst ass, wÀerte mir elo diskutéieren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Awer déi wichteg Saach ass datt wa mir erëm Pech hunn an de véierte Paket erëm verluer ass, da verduebelt den RTO. Dat ass, all Mëssgléckt Versuch heescht Verdueblung der Timeout.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Loosst eis elo kucken wat dës Basis glÀich ass. Par défaut ass de Minimum RTO 200 ms. Dëst ass de Minimum RTO fir Datepakete. Fir SYN Pakete ass et anescht, 1 Sekonn. Wéi Dir gesitt, wÀert och den éischte Versuch, Pakete nei ze schécken, 100 Mol méi laang daueren wéi de RTT am Rechenzentrum.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Komme mer elo zréck op eise Szenario. Wat ass lass mam Service? De Service fÀnkt PÀck ze verléieren. Loosst de Service fir d'éischt bedingt Gléck sinn a verléiert eppes an der Mëtt vun der Fënster, da kritt en e SACK a schéckt d'PÀckchen erëm, déi verluer waren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Awer wann de Pech sech widderhëlt, dann hu mir en RTO. Wat ass hei wichteg? Jo, mir hu vill Weeër an eisem Netz. Awer den TCP Traffic vun enger bestëmmter TCP Verbindung wÀert weider duerch dee selwechte gebrochene Stack goen. Paketverloschter, virausgesat datt dës magesch X11 vun eis net eleng erausgeet, féiert net zum Verkéier, deen a BerÀicher fléisst, déi net problematesch sinn. Mir probéieren de Paket duerch dee selwechte gebrochene Stack ze liwweren. Dëst féiert zu engem Kaskadesfehler: en Datenzenter ass eng Rei vun interagéierend Uwendungen, an e puer vun den TCP Verbindunge vun all dësen Uwendungen fÀnken un ze degradéieren - well Superspine all Uwendungen beaflosst déi am Rechenzentrum existéieren. Wéi de Spréchwuert seet: Wann Dir kee PÀerd schung, ass d'PÀerd hÀnke gelooss; d'PÀerd goung labber - de Rapport war net geliwwert; de Bericht gouf net geliwwert - mir hunn de Krich verluer. Nëmmen hei ass de Grof a Sekonnen aus dem Moment wou de Problem entsteet bis zur Etapp vun der Degradatioun, déi d'Servicer ufÀnken ze fillen. Dëst bedeit datt d'Benotzer iergendwou eppes verpassen.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Et ginn zwou klassesch Léisungen déi sech ergÀnzen. Déi éischt ass Servicer déi probéieren Stréi ze setzen an de Problem esou ze léisen: "Loosst eis eppes am TCP Stack upassen. Loosst eis Timeouts um Applikatiounsniveau maachen oder laang lieweg TCP Sessiounen mat internen Gesondheetschecken. De Problem ass datt esou Léisungen: a) guer net skaléieren; b) si ganz schlecht gepréift. Dat ass, och wann de Service zoufÀlleg den TCP Stack konfiguréiert op eng Manéier déi et besser mécht, éischtens ass et onwahrscheinlech fir all Uwendungen an all Datenzenter applicabel ze sinn, an zweetens, héchstwahrscheinlech, wÀert et net verstoen datt et gemaach gouf. richteg, a wat net. Dat ass, et funktionnéiert, awer et funktionnéiert schlecht a skaléiert net. A wann et en Netzproblem ass, wien ass Schold? Natierlech, NOC. Wat mécht NOC?

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Vill Servicer gleewen datt an der NOC Aarbecht esou eppes geschitt. Awer fir éierlech ze sinn, net nëmmen dat.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

NOC am klassesche Schema beschÀftegt sech mat der Entwécklung vu ville Iwwerwaachungssystemer. Dëst si béid Black Box a White Box Iwwerwaachung. Iwwer e Beispill vu Black Box WirbelsÀule Iwwerwaachung erzielt Alexander Klimenko um leschte Next Hop. Iwwregens funktionnéiert dës Iwwerwaachung. Awer och ideal Iwwerwaachung wÀert eng ZÀitlag hunn. Normalerweis ass dëst e puer Minutten. Nodeems et ofgeet, brauche d'Ingenieuren op der Pflicht ZÀit fir seng Operatioun z'iwwerpréiwen, de Problem lokaliséieren an dann de ProblemberÀich auszeschléissen. Dat heescht, am beschte Fall dauert d'Behandlung vum Problem 5 Minutten, am schlëmmste Fall 20 Minutten, wann et net direkt kloer ass, wou d'Verloschter optrieden. Et ass kloer datt all dës ZÀit - 5 oder 20 Minutten - eis Servicer weider leiden, wat wahrscheinlech net gutt ass.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat géift Dir wierklech gÀr kréien? Mir hunn esou vill Weeër. A Problemer entstinn genee well TCP-Flows déi onglécklech sinn, weider déiselwecht Streck benotzen. Mir brauchen eppes wat eis erlaabt verschidde Strecken an enger eenzeger TCP Verbindung ze benotzen. Et géif schéngen datt mir eng Léisung hunn. Et gëtt TCP, wat Multipath TCP genannt gëtt, dat heescht TCP fir verschidde Weeër. True, et gouf fir eng ganz aner Aufgab entwéckelt - fir Smartphones déi verschidde Netzwierkapparater hunn. Fir den Transfert ze maximéieren oder de PrimÀr-/Backup-Modus ze maachen, gouf e Mechanismus entwéckelt, dee verschidde Threads (Sessiounen) transparent fir d'Applikatioun erstellt an Iech erlaabt Iech tëscht hinnen am Fall vun engem Feeler ze wiesselen. Oder, wéi gesot, d'Streck maximéieren.

Awer et gëtt eng Nuance hei. Fir ze verstoen wat et ass, musse mir kucken wéi Threads etabléiert sinn.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Threads ginn sequenziell installéiert. Den éischte Fuedem gëtt als éischt installéiert. Déi nÀchst Threads ginn dann mat dem Cookie gesat, dee schonn an deem Thread ausgemaach gouf. An hei ass de Problem.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

De Problem ass datt wann den Ă©ischte Fuedem sech net feststellt, da wĂ€erten dĂ©i zweet an drĂ«tt Fuedem ni entstoen. Dat ass, Multipath TCP lĂ©ist net de Verloscht vun engem SYN Paket am Ă©ischte Flux. A wann de SYN verluer ass, gĂ«tt Multipath TCP a regelmĂ©isseg TCP. DĂ«st bedeit datt an engem Datenzenter Ëmfeld et eis net hĂ«lleft de Problem vu Verloschter an der Fabrik ze lĂ©isen a lĂ©iere verschidde WeeĂ«r am Fall vun engem Echec ze benotzen.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat kann eis hëllefen? E puer vun iech hunn aus dem Titel scho geroden, datt e wichtegt Feld an eiser weiderer Diskussioun den IPv6 Flow Label Header Feld wÀert sinn. TatsÀchlech besetzt dëst Feld, dat a v6 erschéngt an a v4 feelt, 20 Bits, a seng Notzung war Objet vu vill Debatt. Dëst ass ganz interessant - et gouf Debatt, e puer Saache goufen an RFCs gefléckt, an an Linux- glÀichzÀiteg ass eng Implementatioun am Kernel opgetrueden, déi ni nirgendwou dokumentéiert gouf.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Ech invitĂ©ieren Iech, mat mir bei enger klenger EnquĂȘte matzemaachen. Loosst eis kucken, wat am KĂ€r lass war. Linux an de leschte Joren.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

2014. En Ingenieur vun enger grousser a renommĂ©ierter Firma fĂŒĂŒgt FunktionalitĂ©iten zum Kernel bĂ€i Linux D'OfhĂ€ngegkeet vum Flow-Label-WĂ€ert vum Socket-Hash. Wat wollten se hei lĂ©isen? DĂ«st hĂ€nkt mam RFC 6438 zesummen, deen de folgende Problem diskutĂ©iert huet. An engem Datenzentrum ass IPv4 dacks an IPv6-PĂ€cketen agekapselt, well de Fabric selwer IPv6 ass, awer IPv4 muss extern geliwwert ginn. Laang ZĂ€it gouf et Problemer mat Switchen, dĂ©i net Ă«nner zwee IP-Header kucke konnten, fir op TCP oder UDP ze kommen a src_ports an dst_ports ze fannen. DĂ«st huet bedeit, datt den Hash, wann een dĂ©i Ă©ischt zwee IP-Header gekuckt huet, praktesch fixĂ©iert war. Fir dĂ«st ze vermeiden an e richtegt AusbalancĂ©iere vun dĂ«sem agekapselten Traffic ze garantĂ©ieren, gouf virgeschloen, den Hash vum 5-Tuple-agekapselten Pakett an de Flow-Label-Feld bĂ€izefĂŒgen. OngefĂ©ier datselwecht gouf fir aner Kapselungsschemae gemaach, fir UDP a fir GRE, dĂ©i lescht benotzt de GRE Key-Feld. Op alle Fall sinn d'Ziler hei kloer. An op d'mannst zu deem ZĂ€itpunkt waren se nĂ«tzlech.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Am Joer 2015 kënnt en neie Patch vum selwechte respektéierten Ingenieur. Hien ass ganz interessant. Et seet déi folgend - mir wÀerten den Hash zoufÀlleg am Fall vun engem negativen Routing Event. Wat ass en negativen Routing Event? Dëst ass den RTO, dee mir virdru diskutéiert hunn, dat heescht, de Verloscht vum Schwanz vun der Fënster ass en Event dat wierklech negativ ass. True, et ass relativ schwéier ze roden datt dëst et ass.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

2016, aner unerkannten Firma, och grouss. Et disassembléiert déi lescht Krutchen a mécht et sou datt den Hash, dee mir virdru zoufÀlleg gemaach hunn, elo Ànnert fir all SYN Retransmission an no all RTO Timeout. An an dësem Bréif gëtt fir d'éischt a lescht Kéier den ultimativen Zil uginn - fir sécherzestellen datt de Verkéier am Fall vu Verloschter oder Kanalstau d'Méiglechkeet huet, sanft ëmgeleet ze ginn a verschidde Weeër ze benotzen. Natierlech, duerno goufen et vill Publikatiounen, Dir kënnt se einfach fannen.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Obwuel nee, Dir kënnt net, well et net eng eenzeg Publikatioun zu dësem Thema gouf. Mee mir wëssen!

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

A wann Dir net ganz versteet wat gemaach gouf, wÀert ech Iech elo soen.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat gouf gemaach, wĂ©i eng FunktionalitĂ©it gouf dem Kernel bĂ€igefĂŒĂŒgt? Linux? Den txhash Ă€nnert sech no all RTO-Event op e zoufĂ€llege WĂ€ert. DĂ«st ass datselwecht negativt Routing-Resultat. Den Hash hĂ€nkt vun dĂ«sem txhash of, an de Flow-Label hĂ€nkt vum skb-Hash of. Et gĂ«tt e puer funktionell ErklĂ€rungen, awer eng Folie wĂ€ert net all Detailer ofdecken. Wann iergendeen interessĂ©iert ass, kĂ«nnt Dir de Kernelcode duerchschrĂ«tten a kontrollĂ©ieren.

Wat ass hei wichteg? De WĂ€ert vun der Flux Label Terrain Ännerungen op eng zoufĂ€lleg Zuel no all RTO. WĂ©i beaflosst dĂ«st eisen onglĂ©cklechen TCP Stream?
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wann e SACK geschitt, Ànnert nÀischt well mir probéieren e bekannte verluerene Paket nei ze schécken. Sou wÀit sou gutt.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Awer am Fall vun RTO, virausgesat datt mir e Flow Label un d'Hash Funktioun op ToR bĂ€igefĂŒĂŒgt hunn, kann de VerkĂ©ier eng aner Streck huelen. A wat mĂ©i Bunnen, wat mĂ©i grouss ass d'Chance datt et e Wee fĂ«nnt, deen net vun engem Ausfall op engem spezifeschen Apparat betraff ass.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Ee Problem bleift - RTO. Natierlech gëtt et eng aner Streck, awer vill ZÀit gëtt op dësem verschwend. 200 ms ass vill. Eng zweet ass absolut wëll. Virdrun hunn ech iwwer Timeouts geschwat datt Servicer konfiguréiert sinn. Also, eng zweet ass en Timeout, deen normalerweis vum Service um Applikatiounsniveau konfiguréiert ass, an an dësem wÀert de Service souguer relativ richteg sinn. Ausserdeem, ech widderhuelen, de richtege RTT an engem modernen Datenzenter ass ongeféier 1 Millisekonnen.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat kënnt Dir mat RTO Timeouts maachen? Den Timeout, dee verantwortlech ass fir RTO am Fall vu Verloscht vun DatepÀck, kann relativ einfach aus dem Benotzerraum konfiguréiert ginn: et gëtt en IP-Utility, an ee vu senge Parameteren enthÀlt dee selwechte rto_min. Bedenkt datt RTO, natierlech, muss net global ugepasst ginn, mÀ fir gegebene PrÀfixe, gesÀit esou e Mechanismus ganz funktionell.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Richteg, mat SYN_RTO ass alles e bësse méi schlëmm. Et ass natiirlech vernoléissegt. De Kernel huet e fixe WÀert vun 1 Sekonn, an dat ass et. Dir kënnt net do aus Benotzer Raum erreechen. Et gëtt nëmmen ee Wee.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

eBPF kënnt zur Rettung. Fir et einfach ze soen, dat sinn kleng Programmer C. Si kënnen op verschiddene Plazen an der Ausféierung vum Kernel-Stack an dem TCP-Stack an Haken agesat ginn, mat deenen Dir eng ganz grouss Unzuel vun Astellunge Ànnere kënnt. Am Allgemengen ass eBPF e laangfristeg Trend. Amplaz Dosende vun neie sysctl Parameteren ze schneiden an d'IP Utility auszebauen, geet d'Bewegung Richtung eBPF an erweidert seng Funktionalitéit. Mat eBPF kënnt Dir dynamesch Stau Kontrollen a verschidde aner TCP Astellungen Ànneren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Awer et ass wichteg fir eis datt et benotzt ka ginn fir d'SYN_RTO WÀerter z'Ànneren. Ausserdeem gëtt et en ëffentlech gepost Beispill: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Wat ass hei gemaach ginn? D'Beispill funktionnéiert, awer u sech ass ganz rau. Hei gëtt ugeholl datt mir am Datenzenter déi éischt 44 Bits verglÀichen; wa se passen, da si mir am Rechenzentrum. An an dësem Fall Ànneren mir den SYN_RTO Timeout WÀert op 4ms. Déi selwecht Aufgab kann vill méi elegant gemaach ginn. Awer dëst einfacht Beispill weist datt dëst a) méiglech ass; b) relativ einfach.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat wësse mer schonn? D'Tatsaach datt d'Fligerarchitektur d'Skaléierung erlaabt, et stellt sech eraus fir eis extrem nëtzlech wann mir de Flow Label op ToR aktivéieren an d'FÀegkeet kréien ronderëm ProblemberÀicher ze fléien. De beschte Wee fir RTO a SYN-RTO WÀerter ze reduzéieren ass eBPF Programmer ze benotzen. D'Fro bleift: Ass et sécher e Flow Label fir d'Balance ze benotzen? An et gëtt eng Nuance hei.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Ugeholl Dir hutt e Service op Ärem Netz deen an Anycast lieft. Leider hunn ech keng ZĂ€it fir am Detail ze goen iwwer wat Anycast ass, awer et ass e verdeelt Service mat verschiddene kierperleche Serveren zougĂ€nglech iwwer dĂ©iselwecht IP Adress. An hei ass e mĂ©igleche Problem: den RTO Event kann net nĂ«mme geschĂ©ien wann de VerkĂ©ier duerch de Stoff passĂ©iert. Et kann och um ToR Puffer Niveau optrieden: wann en Incast Event geschitt, kann et souguer um Host geschĂ©ien wann de Host eppes spillt. Wann en RTO Event geschitt an et Ă€nnert de Flow Label. An dĂ«sem Fall kann de VerkĂ©ier op eng aner Anycast Instanz goen. Loosst eis unhuelen datt dĂ«st e stateful Anycast ass, et enthĂ€lt e Verbindungszoustand - et kĂ©int e L3 Balancer oder en aneren Service sinn. Da entsteet e Problem, well no RTO kĂ«nnt d'TCP Verbindung op de Server, deen nĂ€ischt iwwer dĂ«s TCP Verbindung weess. A wa mir keng Staatsdeelung tĂ«scht Anycast Serveren hunn, da gĂ«tt esou Traffic erofgelooss an d'TCP-Verbindung gebrach.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Wat kĂ«nnt Dir hei maachen? Bannent Ärem kontrollĂ©ierten Ëmfeld, wou Dir Flow Label Balance aktivĂ©iert, musst Dir de WĂ€ert vum Flow Label notĂ©ieren wann Dir Zougang zu allcast Serveren hutt. Deen einfachste Wee ass dĂ«st duerch dee selwechte eBPF Programm ze maachen. Awer hei ass e ganz wichtege Punkt - wat maache wann Dir net en Datenzenternetz bedreift, awer en Telekomoperateur ass? DĂ«st ass och Äre Problem: Start mat bestĂ«mmte Versioune vu Juniper an Arista, si enthalen als Standard e Flow Label an hiren Hashfunktiounen - Ă©ierlech gesot, aus engem Grond dee mir net kloer ass. DĂ«st kann verursaachen datt Dir TCP Verbindunge vu Benotzer falen, dĂ©i duerch Äert Netzwierk passĂ©ieren. Also ech recommandĂ©ieren Är Router Astellungen hei ze kontrollĂ©ieren.

Eng Manéier oder aner, et schéngt mir, datt mir prett sinn op Experimenter ze plënneren.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

WĂ©i mir de Flow Label op ToR aktivĂ©iert hunn, den eBPF Agent virbereet, deen elo op de Hosten lieft, hu mir beschloss net op den nĂ€chste grousse Feeler ze waarden, awer kontrollĂ©iert Explosiounen ze maachen. Mir hunn ToR geholl, dee vĂ©ier Uplinks huet, an drop drop op ee vun hinnen opgeriicht. Si hunn eng Regel gezunn a gesot - elo verlĂ©iert Dir all PĂ€ck. WĂ©i Dir op der lĂ©nker SĂ€it gesitt, hu mir Per-Packet-Iwwerwaachung, dĂ©i op 75% erofgaang ass, dat heescht, 25% vu Pakete ginn verluer. Riets sinn Grafike vu Servicer dĂ©i hannert dĂ«sem ToR liewen. Wesentlech sinn dĂ«s Traffic Grafike vun den Interfaces mat Serveren am Rack. WĂ©i Dir gesitt, sinn se nach mĂ©i niddereg gefall. Firwat si se mĂ©i niddereg erofgaang - net Ă«m 25%, awer an e puer FĂ€ll Ă«m 3-4 Mol? Wann d'TCP Verbindung onglĂ©cklech ass, probĂ©iert se weider duerch de gebrochenen KrĂ€izung z'erreechen. DĂ«st gĂ«tt verschĂ€erft duerch dat typesch Verhalen vum Service am DC - fir eng Benotzerufro ginn N Ufroe fir intern Servicer generĂ©iert, an d'Äntwert geet un de Benotzer entweder wann all Datenquellen Ă€ntweren, oder wann en Timeout bei der Applikatioun geschitt. Niveau, deen nach muss konfigurĂ©iert ginn. Dat ass, alles ass ganz, ganz schlecht.
D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

Elo datselwecht Experiment, awer mat dem Flow Label WÀert aktivéiert. Wéi Dir gesitt, ass op der lénker SÀit eis Batch-Iwwerwaachung ëm déiselwecht 25% erofgaang. Dëst ass absolut korrekt, well et nÀischt iwwer d'Wiedertransmits weess, et schéckt PÀckchen an zielt einfach d'VerhÀltnis vun der Unzuel vun geliwwert a verluerene PÀckchen.

A riets ass de Service ZÀitplang. Dir fannt den Effekt vun engem problematesche Gelenk hei net. An deene selwechte Millisekonnen ass de Verkéier aus dem ProblemberÀich op déi drÀi verbleiwen Uplinks gefloss, déi net vum Problem betraff waren. Mir hunn en Netzwierk dat sech selwer heelt.

D'Netzwierk, dat sech selwer heelt: D'Magie vum Flow-Label an den Core Detective LinuxYandex-Rapport

DĂ«st ass meng lescht Folie; ZĂ€it fir ofzeschlĂ©issen. Elo hoffen ech, Dir wĂ«sst, wĂ©i een e selbstheilend Datenzenternetz opbaut. Dir braucht net mĂ©i am Kernelarchiv ze gruewen. Linux A sicht do no spezielle Patches. Dir wĂ«sst, datt Flow Label de Problem an dĂ«sem Fall lĂ©ist, awer Dir musst dĂ«se Mechanismus mat Vorsicht ugoen. An ech betounen nach eng KĂ©ier, datt Dir, wann Dir en Telekombetreiber sidd, Flow Label net als Hashfunktioun benotze sollt, soss stĂ©iert Dir d'Sessiounen vun Äre Benotzer.

Netzwierkingenieuren mussen e konzeptuellen Verréckelung erliewen: d'Netzwierk fÀnkt net mam ToR un, net mam Netzwierkapparat, mee mam Host. E zimlech markant Beispill ass wéi mir eBPF benotzen souwuel fir den RTO z'Ànneren an de Flow Label Richtung Anycast Servicer ze fixéieren.

D'Flow Label Mechanik si sĂ©cher gĂ«eegent fir aner Uwendungen am kontrollĂ©iert administrativ Segment. DĂ«st kann Traffic tĂ«scht Rechenzentren sinn, oder Dir kĂ«nnt esou Mechanik op eng speziell ManĂ©ier benotzen fir den ausginnen Traffic ze managen. Awer ech wĂ€ert Iech iwwer dĂ«st soen, hoffen ech, d'nĂ€chst KĂ©ier. Villmools Merci fir Är Opmierksamkeet.

Source: will.com

Kaaft zouverlĂ€sseg Hosting fir Site mat DDoS Schutz, VPS VDS Server đŸ”„ Kaaft zouverlĂ©issegt WebsĂ€ithosting mat DDoS-Schutz, VPS VDS Server | ProHoster