Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Awọn ile-iṣẹ data ode oni ni awọn ọgọọgọrun ti awọn ẹrọ ti nṣiṣe lọwọ ti fi sori ẹrọ, ti o bo nipasẹ awọn oriṣi ibojuwo. Ṣugbọn paapaa ẹlẹrọ pipe pẹlu ibojuwo pipe ni ọwọ yoo ni anfani lati dahun ni deede si ikuna nẹtiwọọki ni iṣẹju diẹ nikan. Ninu ijabọ kan ni apejọ Hop Next 2020, Mo ṣafihan ilana apẹrẹ nẹtiwọọki DC kan, eyiti o ni ẹya alailẹgbẹ - ile-iṣẹ data wo ararẹ larada ni awọn iṣẹju-aaya. Ni deede diẹ sii, ẹlẹrọ tun ṣe atunṣe iṣoro naa, lakoko ti awọn iṣẹ naa ko ṣe akiyesi rẹ.

— Lati bẹrẹ pẹlu, Emi yoo fun iṣẹtọ alaye ifihan fun awon ti o le ko ni le mọ ti awọn be ti a igbalode DC.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Fun ọpọlọpọ awọn ẹlẹrọ nẹtiwọọki, nẹtiwọọki ile-iṣẹ data bẹrẹ, nitorinaa, pẹlu ToR, pẹlu iyipada ninu agbeko. ToR nigbagbogbo ni awọn ọna asopọ meji. Awọn kekere lọ si awọn olupin, awọn miiran - awọn igba N wa diẹ sii ninu wọn - lọ si awọn ọpa ẹhin ti ipele akọkọ, eyini ni, si awọn ọna asopọ rẹ. Uplinks ti wa ni maa ka dogba, ati ijabọ laarin uplinks ti wa ni iwontunwonsi da lori a hash lati 5-tuple, ti o ba pẹlu proto, src_ip, dst_ip, src_port, dst_port. Ko si iyanilẹnu nibi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Lẹ́yìn náà, kí ni ìtúmọ̀ ètò náà dà bí? Awọn ọpa ẹhin ti ipele akọkọ ko ni asopọ si ara wọn, ṣugbọn a ti sopọ nipasẹ awọn superspines. Lẹta X yoo jẹ iduro fun superspines; o fẹrẹ dabi asopọ-agbelebu.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ati pe o han gbangba pe, ni apa keji, tori ti sopọ si gbogbo awọn ọpa ẹhin ti ipele akọkọ. Kini pataki ninu aworan yii? Ti a ba ni ibaraenisepo inu agbeko, lẹhinna ibaraenisepo, dajudaju, lọ nipasẹ ToR. Ti ibaraenisepo ba waye ninu module, lẹhinna ibaraenisepo waye nipasẹ awọn ọpa ẹhin ipele akọkọ. Ti ibaraenisepo ba jẹ intermodular - bi nibi, ToR 1 ati ToR 2 - lẹhinna ibaraenisepo yoo lọ nipasẹ awọn ọpa ẹhin ti awọn ipele akọkọ ati keji.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ni imọran, iru faaji jẹ irọrun iwọn. Ti a ba ni agbara ibudo, aaye apoju ni ile-iṣẹ data ati okun ti a ti sọ tẹlẹ, lẹhinna nọmba awọn ọna le jẹ alekun nigbagbogbo, nitorinaa jijẹ agbara gbogbogbo ti eto naa. Eyi rọrun pupọ lati ṣe lori iwe. Yoo jẹ bi eleyi ni igbesi aye. Ṣugbọn itan oni kii ṣe nipa iyẹn.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Mo fẹ awọn ipinnu ti o tọ lati fa. A ni ọpọlọpọ awọn ọna inu ile-iṣẹ data. Wọn jẹ ominira ni majemu. Ọna kan ninu ile-iṣẹ data ṣee ṣe nikan inu ToR. Inu awọn module, a ni awọn nọmba ti ona dogba si awọn nọmba ti ona. Nọmba awọn ọna laarin awọn modulu jẹ dogba si ọja ti nọmba awọn ọkọ ofurufu ati nọmba awọn superspines ni ọkọ ofurufu kọọkan. Lati jẹ ki o ṣe alaye diẹ sii, lati ni oye ti iwọn, Emi yoo fun awọn nọmba ti o wulo fun ọkan ninu awọn ile-iṣẹ data Yandex.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Awọn ọkọ ofurufu mẹjọ wa, ọkọ ofurufu kọọkan ni 32 superspines. Bi abajade, o wa ni pe awọn ọna mẹjọ wa ninu module, ati pẹlu ibaraenisepo intermodule tẹlẹ 256 ti wọn wa.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Iyẹn ni, ti a ba n ṣe agbekalẹ Iwe Onjewiwa, ni igbiyanju lati kọ ẹkọ bi a ṣe le kọ awọn ile-iṣẹ data ifarada ẹbi ti o mu ara wọn larada, lẹhinna faaji ero jẹ yiyan ti o tọ. O yanju iṣoro wiwọn, ati ni imọran o rọrun. Ọpọlọpọ awọn ọna ominira wa. Ibeere naa wa: bawo ni iru faaji ṣe ye awọn ikuna? Oriṣiriṣi awọn ikuna lo wa. Ati pe a yoo jiroro ni bayi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Jẹ ki ọkan ninu awọn superspines wa "ṣaisan". Nibi ti mo ti pada si awọn meji-ofurufu faaji. A yoo duro pẹlu iwọnyi gẹgẹbi apẹẹrẹ nitori pe yoo rọrun lati rii ohun ti n ṣẹlẹ pẹlu awọn ẹya gbigbe diẹ. Jẹ ki X11 ṣaisan. Bawo ni eyi yoo ṣe kan awọn iṣẹ ti o ngbe inu awọn ile-iṣẹ data? Pupọ da lori kini ikuna naa dabi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ti ikuna naa ba dara, o mu ni ipele adaṣe ti BFD kanna, adaṣe fi ayọ fi awọn isẹpo iṣoro naa ati ki o ya iṣoro naa kuro, lẹhinna ohun gbogbo dara. A ni ọpọlọpọ awọn ipa ọna, ijabọ ti wa ni lesekese tun-ropo si yiyan ipa-, ati awọn iṣẹ yoo ko se akiyesi ohunkohun. Eleyi jẹ kan ti o dara akosile.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Oju iṣẹlẹ buburu kan jẹ ti a ba ni awọn adanu igbagbogbo, ati adaṣe ko ṣe akiyesi iṣoro naa. Lati loye bii eyi ṣe kan ohun elo kan, a yoo ni lati lo akoko diẹ lati jiroro bi TCP ṣe n ṣiṣẹ.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Mo nireti pe Emi ko ṣe iyalẹnu ẹnikẹni pẹlu alaye yii: TCP jẹ ilana ijẹrisi gbigbe. Iyẹn ni, ninu ọran ti o rọrun julọ, olufiranṣẹ naa fi awọn apo-iwe meji ranṣẹ o si gba ack akopọ lori wọn: “Mo gba awọn apo-iwe meji.”
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Lẹhin iyẹn, yoo firanṣẹ awọn apo-iwe meji diẹ sii, ati pe ipo naa yoo tun ṣe. Mo gafara ilosiwaju fun diẹ ninu awọn simplification. Oju iṣẹlẹ yii tọ ti window (nọmba awọn apo-iwe ni ọkọ ofurufu) jẹ meji. Dajudaju, ninu ọran gbogbogbo eyi kii ṣe ọran dandan. Ṣugbọn iwọn window ko ni ipa lori ọrọ ti o firanšẹ siwaju.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini yoo ṣẹlẹ ti a ba padanu soso 3? Ni ọran yii, olugba yoo gba awọn apo-iwe 1, 2 ati 4. Ati pe yoo sọ fun olufiranṣẹ ni gbangba nipa lilo aṣayan SACK: “O mọ, mẹta de, ṣugbọn aarin ti sọnu.” O ni, "Ack 2, SACK 4."
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ni akoko yii, olufiranṣẹ laisi awọn iṣoro eyikeyi tun ṣe deede apo-iwe ti o sọnu.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ṣugbọn ti apo-iwe ti o kẹhin ninu window ba sọnu, ipo naa yoo yatọ patapata.

Olugba gba awọn apo-iwe mẹta akọkọ ati akọkọ ti gbogbo bẹrẹ lati duro. Ṣeun si diẹ ninu awọn iṣapeye ninu akopọ TCP Linux kernel, yoo duro fun apo-iwe ti o so pọ ayafi ti awọn asia ba fihan ni gbangba pe o jẹ apo-iwe ti o kẹhin tabi nkan ti o jọra. Yoo duro titi ti akoko idaduro ACK yoo pari ati lẹhinna firanṣẹ ifọwọsi lori awọn apo-iwe mẹta akọkọ. Ṣugbọn nisisiyi olufiranṣẹ yoo duro. Ko mọ boya package kẹrin ti sọnu tabi ti fẹrẹ de. Ati pe ni ibere ki o ma ṣe apọju nẹtiwọọki naa, yoo gbiyanju lati duro fun itọkasi ti o han gbangba pe apo-iwe ti sọnu, tabi fun akoko RTO lati pari.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini akoko ipari RTO? Eyi ni o pọju ti RTT iṣiro nipasẹ akopọ TCP ati diẹ ninu awọn ibakan. Iru ibakan wo ni eyi jẹ, a yoo jiroro ni bayi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ṣugbọn ohun pataki ni pe ti a ko ba ni orire lẹẹkansi ati pe apo kẹrin ti sọnu lẹẹkansi, lẹhinna RTO ni ilọpo meji. Iyẹn ni, igbiyanju kọọkan ti ko ni aṣeyọri tumọ si ilọpo meji akoko ipari.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Bayi jẹ ki a wo kini ipilẹ yii jẹ dọgba si. Nipa aiyipada, RTO to kere julọ jẹ 200 ms. Eyi ni RTO ti o kere julọ fun awọn idii data. Fun awọn apo-iwe SYN o yatọ, 1 iṣẹju-aaya. Bii o ti le rii, paapaa igbiyanju akọkọ lati firanṣẹ awọn apo-iwe yoo gba awọn akoko 100 to gun ju RTT inu ile-iṣẹ data naa.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Bayi jẹ ki a pada si oju iṣẹlẹ wa. Kini o n ṣẹlẹ pẹlu iṣẹ naa? Iṣẹ naa bẹrẹ lati padanu awọn apo-iwe. Jẹ ki iṣẹ naa ni orire ni ipo ni akọkọ ati padanu ohunkan ni aarin window, lẹhinna o gba SACK kan ati firanṣẹ awọn apo-iwe ti o sọnu.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Sugbon ti o ba ti buburu orire tun ara, ki o si a ni ohun RTO. Kini pataki nibi? Bẹẹni, a ni ọpọlọpọ awọn ọna ninu nẹtiwọọki wa. Ṣugbọn ijabọ TCP ti asopọ TCP kan pato yoo tẹsiwaju lati lọ nipasẹ akopọ fifọ kanna. Awọn adanu apo, ti a pese pe X11 idan ti wa ko jade funrararẹ, ko yorisi ijabọ ti n ṣan si awọn agbegbe ti ko ni iṣoro. A n gbiyanju lati fi soso naa ranṣẹ nipasẹ akopọ fifọ kanna. Eyi nyorisi ikuna cascading: ile-iṣẹ data jẹ ṣeto awọn ohun elo ibaraenisepo, ati diẹ ninu awọn asopọ TCP ti gbogbo awọn ohun elo wọnyi bẹrẹ lati dinku - nitori superspine kan ni ipa lori gbogbo awọn ohun elo ti o wa ninu ile-iṣẹ data naa. Gẹgẹbi ọrọ naa ti lọ: ti o ko ba bata ẹṣin, ẹṣin naa rọ; ẹṣin lọ arọ - iroyin na ko fi; A ko fi iroyin naa ranṣẹ - a padanu ogun naa. Nikan nibi kika wa ni iṣẹju-aaya lati akoko ti iṣoro naa dide si ipele ibajẹ ti awọn iṣẹ bẹrẹ lati ni rilara. Eyi tumọ si pe awọn olumulo le padanu nkankan ni ibikan.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Nibẹ ni o wa meji Ayebaye solusan ti o iranlowo kọọkan miiran. Akọkọ ni awọn iṣẹ ti o ngbiyanju lati fi awọn koriko sinu ati yanju iṣoro naa bii eyi: “Jẹ ki a tweak ohunkan ninu akopọ TCP. Jẹ ki a ṣe awọn akoko ipari ni ipele ohun elo tabi awọn akoko TCP gigun pẹlu awọn sọwedowo ilera inu. ” Iṣoro naa ni pe iru awọn solusan: a) ma ṣe iwọn rara; b) ti wa ni gan ibi ẹnikeji. Iyẹn ni, paapaa ti iṣẹ naa ba tunto akopọ TCP lairotẹlẹ ni ọna ti o jẹ ki o dara julọ, ni akọkọ, ko ṣeeṣe lati wulo fun gbogbo awọn ohun elo ati gbogbo awọn ile-iṣẹ data, ati keji, o ṣeeṣe julọ, kii yoo loye pe o ti ṣe. ti o tọ, ati kini kii ṣe. Iyẹn ni, o ṣiṣẹ, ṣugbọn o ṣiṣẹ ko dara ati pe ko ṣe iwọn. Ati pe ti iṣoro nẹtiwọki ba wa, tani o jẹbi? Dajudaju, NOC. Kini NOC ṣe?

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ọpọlọpọ awọn iṣẹ gbagbọ pe ni iṣẹ NOC ṣẹlẹ nkan bi eyi. Sugbon lati so ooto, ko nikan ti o.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

NOC ni ero kilasika ti ṣiṣẹ ni idagbasoke ti ọpọlọpọ awọn eto ibojuwo. Iwọnyi jẹ mejeeji apoti dudu ati ibojuwo apoti funfun. Nipa apẹẹrẹ ti ibojuwo ọpa ẹhin apoti dudu so fun Alexander Klimenko ni kẹhin Next Hop. Nipa ọna, ibojuwo yii n ṣiṣẹ. Ṣugbọn paapaa ibojuwo pipe yoo ni aisun akoko kan. Nigbagbogbo eyi jẹ iṣẹju diẹ. Lẹhin ti o lọ, awọn onimọ-ẹrọ ti o wa ni iṣẹ nilo akoko lati ṣayẹwo iṣiṣẹ rẹ lẹẹmeji, sọ iṣoro agbegbe naa ati lẹhinna pa agbegbe iṣoro naa. Iyẹn ni, ninu ọran ti o dara julọ, itọju iṣoro naa gba iṣẹju 5, ninu ọran ti o buruju, iṣẹju 20, ti ko ba han lẹsẹkẹsẹ nibiti awọn adanu ti waye. O han gbangba pe gbogbo akoko yii - awọn iṣẹju 5 tabi 20 - awọn iṣẹ wa yoo tẹsiwaju lati jiya, eyiti o ṣee ṣe ko dara.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini iwọ yoo fẹ gaan lati gba? A ni ọpọlọpọ awọn ọna. Ati pe awọn iṣoro dide ni deede nitori awọn ṣiṣan TCP ti ko ni orire tẹsiwaju lati lo ipa ọna kanna. A nilo nkan ti yoo gba wa laaye lati lo awọn ipa-ọna pupọ laarin asopọ TCP kan. O dabi pe a ni ojutu kan. TCP wa, eyiti a pe ni multipath TCP, iyẹn ni, TCP fun awọn ọna pupọ. Otitọ, o ti ni idagbasoke fun iṣẹ-ṣiṣe ti o yatọ patapata - fun awọn fonutologbolori ti o ni awọn ẹrọ nẹtiwọọki pupọ. Lati mu iwọn gbigbe pọ si tabi ṣe ipo akọkọ/afẹyinti, ẹrọ kan ti ni idagbasoke ti o ṣẹda ọpọlọpọ awọn okun (awọn apejọ) ni gbangba si ohun elo ati gba ọ laaye lati yipada laarin wọn ni iṣẹlẹ ti ikuna. Tabi, bi mo ti sọ, mu ṣiṣan naa pọ si.

Ṣugbọn nuance kan wa nibi. Lati ni oye ohun ti o jẹ, a yoo ni lati wo bi o ti ṣeto awọn okun.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Awọn okun ti fi sori ẹrọ lẹsẹsẹ. Okun akọkọ ti fi sori ẹrọ ni akọkọ. Awọn okun ti o tẹle lẹhinna ni a ṣeto pẹlu lilo kuki ti a ti gba tẹlẹ laarin o tẹle ara yẹn. Ati ki o nibi ni isoro.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Iṣoro naa ni pe ti okun akọkọ ko ba fi idi ara rẹ mulẹ, okun keji ati kẹta kii yoo dide. Iyẹn ni, multipath TCP ko yanju isonu ti apo SYN ni ṣiṣan akọkọ. Ati pe ti SYN ba sọnu, multipath TCP yipada si TCP deede. Eyi tumọ si pe ni agbegbe ile-iṣẹ data kii yoo ran wa lọwọ lati yanju iṣoro ti awọn adanu ni ile-iṣẹ ati kọ ẹkọ lati lo awọn ọna pupọ ni iṣẹlẹ ti ikuna.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kí ló lè ràn wá lọ́wọ́? Diẹ ninu yin ti gboju tẹlẹ lati akọle pe aaye pataki kan ninu itan siwaju wa yoo jẹ aaye akọle ṣiṣan ṣiṣan IPv6. Nitootọ, eyi jẹ aaye ti o han ni v6, kii ṣe ni v4, o wa ni 20 bits, ati pe ariyanjiyan ti wa lori lilo rẹ fun igba pipẹ. Eyi jẹ ohun ti o nifẹ pupọ - awọn ariyanjiyan wa, ohunkan ti wa titi laarin RFC, ati ni akoko kanna imuse kan han ninu ekuro Linux, eyiti ko ṣe akọsilẹ nibikibi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Mo pe o lati lọ pẹlu mi lori kekere kan iwadi. Jẹ ki a wo ohun ti n ṣẹlẹ ninu ekuro Linux ni awọn ọdun diẹ sẹhin.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

odun 2014. Onimọ ẹrọ lati ile-iṣẹ nla kan ti o bọwọ ṣe afikun si iṣẹ ṣiṣe ti ekuro Linux igbẹkẹle ti iye aami sisan lori hash iho. Kini wọn n gbiyanju lati ṣatunṣe nibi? Eyi ni ibatan si RFC 6438, eyiti o jiroro lori ọran atẹle. Ninu ile-iṣẹ data, IPv4 nigbagbogbo ni ifasilẹ ni awọn apo-iwe IPv6, nitori ile-iṣẹ funrararẹ jẹ IPv6, ṣugbọn IPv4 gbọdọ fun ni ita. Fun igba pipẹ awọn iṣoro wa pẹlu awọn iyipada ti ko le wo labẹ awọn akọle IP meji lati lọ si TCP tabi UDP ki o wa src_ports, dst_ports nibẹ. O wa ni jade wipe hash, ti o ba ti o ba wo ni akọkọ meji IP afori, wa ni jade lati wa ni ti o wa titi. Lati yago fun eyi, ki iwọntunwọnsi ti ijabọ encapsulated yii ṣiṣẹ ni deede, o dabaa lati ṣafikun hash ti apo-iṣiro 5-tuple si iye ti aaye aami sisan. Ni isunmọ ohun kanna ni a ṣe fun awọn eto idawọle miiran, fun UDP, fun GRE, igbehin lo aaye GRE Key. Ọna kan tabi omiiran, awọn ibi-afẹde nibi jẹ kedere. Ati pe o kere ju ni akoko yẹn ni akoko wọn wulo.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ni ọdun 2015, alemo tuntun kan wa lati ọdọ ẹlẹrọ ti o bọwọ fun kanna. O jẹ igbadun pupọ. O sọ atẹle naa - a yoo sọ hash laileto ni ọran ti iṣẹlẹ ipa-ọna odi. Kini iṣẹlẹ ipa-ọna odi? Eyi ni RTO ti a sọrọ ni iṣaaju, iyẹn ni, pipadanu iru ti window jẹ iṣẹlẹ ti o jẹ odi gidi. Lootọ, o nira pupọ lati gboju pe eyi ni.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

2016, ile-iṣẹ olokiki miiran, tun tobi. O disassembles awọn ti o kẹhin crutches ati ki o mu ki awọn elile, eyi ti a ti tẹlẹ ṣe ID, bayi ayipada fun kọọkan SYN retransmission ati lẹhin kọọkan RTO akoko. Ati ninu lẹta yii, fun igba akọkọ ati akoko ikẹhin, ibi-afẹde ti o ga julọ ni a sọ - lati rii daju pe ijabọ ni iṣẹlẹ ti awọn adanu tabi isunmọ ikanni ni agbara lati tun-rọsẹ rọra ati lo awọn ọna pupọ. Nitoribẹẹ, lẹhin eyi ọpọlọpọ awọn atẹjade wa, o le ni rọọrun wa wọn.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Botilẹjẹpe rara, o ko le, nitori ko si atẹjade kan lori koko yii. Ṣugbọn a mọ!

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ati pe ti o ko ba loye ni kikun ohun ti a ṣe, Emi yoo sọ fun ọ ni bayi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini o ṣe, iṣẹ wo ni a ṣafikun si ekuro Linux? txhash yipada si iye laileto lẹhin iṣẹlẹ RTO kọọkan. Eyi jẹ abajade odi pupọ ti ipa-ọna. Hash da lori txhash yii, ati aami sisan da lori skb hash. Awọn iṣiro diẹ wa lori awọn iṣẹ nibi; gbogbo awọn alaye ko le gbe sori ifaworanhan kan. Ti ẹnikẹni ba ni iyanilenu, o le lọ nipasẹ koodu ekuro ati ṣayẹwo.

Kini pataki nibi? Awọn iye ti awọn sisan aami aaye ayipada si a ID nọmba lẹhin ti kọọkan RTO. Bawo ni eyi ṣe ni ipa lori ṣiṣan TCP lailoriire wa?
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ti SACK kan ba waye, ko si ohun ti yoo yipada nitori a n gbiyanju lati firanṣẹ apo-iwe ti o sọnu ti a mọ. Nítorí jina ki o dara.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ṣugbọn ninu ọran ti RTO, ti o ba jẹ pe a ti ṣafikun aami sisan si iṣẹ hash lori ToR, ijabọ le gba ọna ti o yatọ. Ati awọn ọna diẹ sii, ti o pọju ni anfani pe yoo wa ọna ti ko ni ipa nipasẹ ikuna lori ẹrọ kan pato.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ọkan isoro si maa wa - RTO. Nitoribẹẹ, ipa-ọna miiran wa, ṣugbọn akoko pupọ ni a padanu lori eyi. 200 ms jẹ pupọ. A keji jẹ Egba egan. Ni iṣaaju, Mo ti sọrọ nipa awọn akoko ipari ti awọn iṣẹ ti wa ni tunto. Nitorinaa, iṣẹju-aaya kan jẹ akoko ipari, eyiti o jẹ tunto nigbagbogbo nipasẹ iṣẹ ni ipele ohun elo, ati ninu eyi iṣẹ naa yoo paapaa jẹ ẹtọ. Pẹlupẹlu, Mo tun ṣe, RTT gidi inu ile-iṣẹ data ode oni wa ni ayika 1 millisecond.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini o le ṣe pẹlu awọn akoko ipari RTO? Ipari akoko, eyiti o jẹ iduro fun RTO ni ọran ti isonu ti awọn apo-iwe data, le tunto ni irọrun ni irọrun lati aaye olumulo: IwUlO IP kan wa, ati ọkan ninu awọn paramita rẹ ni rto_min kanna. Ṣiyesi pe RTO, nitorinaa, nilo lati ṣatunṣe kii ṣe ni kariaye, ṣugbọn fun awọn asọtẹlẹ ti a fun, iru ẹrọ kan dabi iṣẹ ṣiṣe.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Lootọ, pẹlu SYN_RTO ohun gbogbo buru diẹ. O ti wa ni nipa ti mọ. Ekuro naa ni iye ti o wa titi ti iṣẹju 1, ati pe iyẹn ni. O ko le de ibẹ lati aaye olumulo. Ọna kan lo wa.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

eBPF wa si igbala. Lati fi sii ni irọrun, iwọnyi jẹ awọn eto C kekere. Wọn le fi sii sinu awọn kio ni awọn aaye oriṣiriṣi ni ipaniyan ti akopọ kernel ati akopọ TCP, pẹlu eyiti o le yi nọmba ti o tobi pupọ ti awọn eto pada. Ni gbogbogbo, eBPF jẹ aṣa igba pipẹ. Dipo gige awọn dosinni ti awọn paramita sysctl tuntun ati faagun IwUlO IP, iṣipopada naa nlọ si ọna eBPF ati faagun iṣẹ ṣiṣe rẹ. Lilo eBPF, o le yi awọn iṣakoso isọdọkan pada ni agbara ati ọpọlọpọ awọn eto TCP miiran.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ṣugbọn o ṣe pataki fun wa pe o le ṣee lo lati yi awọn iye SYN_RTO pada. Pẹlupẹlu, apẹẹrẹ ti a fiweranṣẹ ni gbangba wa: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Kini a ti ṣe nibi? Apẹẹrẹ n ṣiṣẹ, ṣugbọn ninu ara rẹ jẹ inira pupọ. Nibi o ti ro pe inu ile-iṣẹ data a ṣe afiwe awọn die-die 44 akọkọ; ti wọn ba baamu, lẹhinna a wa inu ile-iṣẹ data naa. Ati ninu ọran yii a yi iye akoko ipari SYN_RTO pada si 4ms. Iṣẹ-ṣiṣe kanna le ṣee ṣe pupọ diẹ sii yangan. Ṣugbọn apẹẹrẹ ti o rọrun yii fihan pe eyi jẹ a) ṣee ṣe; b) jo o rọrun.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini a ti mọ tẹlẹ? Ni otitọ pe faaji ọkọ ofurufu ngbanilaaye fun iwọn, o wa ni iwulo pupọ fun wa nigba ti a ba mu aami sisan ṣiṣẹ lori ToR ati gba agbara lati ṣan ni ayika awọn agbegbe iṣoro. Ọna ti o dara julọ lati dinku RTO ati awọn iye SYN-RTO ni lati lo awọn eto eBPF. Ibeere naa wa: ṣe o jẹ ailewu lati lo aami sisan fun iwọntunwọnsi? Ati pe nuance kan wa nibi.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Ṣebi o ni iṣẹ kan lori nẹtiwọọki rẹ ti o ngbe ni eyikeyicast. Laanu, Emi ko ni akoko lati lọ sinu awọn alaye nipa kini eyikeyicast jẹ, ṣugbọn o jẹ iṣẹ pinpin pẹlu awọn olupin ti ara ti o yatọ ti o wa nipasẹ adiresi IP kanna. Ati pe eyi ni iṣoro ti o ṣeeṣe: iṣẹlẹ RTO le waye kii ṣe nigbati ijabọ ba kọja aṣọ. O tun le waye ni ipele ifipamọ ToR: nigbati iṣẹlẹ incast ba waye, o le paapaa waye lori agbalejo nigbati agbalejo ba da nkan kan silẹ. Nigbati iṣẹlẹ RTO ba waye ati pe o yipada aami sisan. Ni idi eyi, ijabọ le lọ si apẹẹrẹ eyikeyi eyikeyi. Jẹ ki a ro pe eyi jẹ simẹnti eyikeyi ti ipinlẹ, o ni ipo asopọ ninu - o le jẹ Balancer L3 tabi iṣẹ miiran. Lẹhinna iṣoro kan dide, nitori lẹhin RTO asopọ TCP de ọdọ olupin, eyiti ko mọ nkankan nipa asopọ TCP yii. Ati pe ti a ko ba ni pinpin ipinlẹ laarin awọn olupin eyikeyicast, lẹhinna iru awọn ijabọ yoo lọ silẹ ati pe asopọ TCP yoo fọ.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Kini o le ṣe nibi? Laarin agbegbe iṣakoso rẹ, nibiti o ti mu iwọntunwọnsi aami sisan ṣiṣẹ, o nilo lati ṣe igbasilẹ iye aami sisan nigbati o wọle si awọn olupin eyikeyicast. Ọna to rọọrun ni lati ṣe eyi nipasẹ eto eBPF kanna. Ṣugbọn eyi ni aaye pataki pupọ - kini lati ṣe ti o ko ba ṣiṣẹ nẹtiwọọki ile-iṣẹ data kan, ṣugbọn ṣe oniṣẹ tẹlifoonu? Eyi ni iṣoro rẹ paapaa: bẹrẹ pẹlu awọn ẹya kan ti Juniper ati Arista, wọn pẹlu aami sisan ninu awọn iṣẹ hash wọn nipasẹ aiyipada - ni otitọ, fun idi kan ti ko ṣe akiyesi mi. Eyi le jẹ ki o ju awọn asopọ TCP silẹ lati ọdọ awọn olumulo ti n kọja nipasẹ nẹtiwọọki rẹ. Nitorinaa Mo ṣeduro gaan lati ṣayẹwo awọn eto olulana rẹ nibi.

Ni ọna kan tabi omiiran, o dabi si mi pe a ti ṣetan lati lọ siwaju si awọn idanwo.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Nigba ti a ba mu aami sisan ṣiṣẹ lori ToR, pese aṣoju eBPF, eyiti o ngbe bayi lori awọn ọmọ-ogun, a pinnu lati ma duro fun ikuna nla ti nbọ, ṣugbọn lati ṣe awọn bugbamu iṣakoso. A mu ToR, eyi ti o ni mẹrin uplinks, ati ki o ṣeto soke silė lori ọkan ninu wọn. Wọn fa ofin kan o sọ - bayi o padanu gbogbo awọn apo-iwe. Bii o ti le rii ni apa osi, a ni ibojuwo-packet, eyiti o ti lọ silẹ si 75%, iyẹn ni, 25% ti awọn apo-iwe ti sọnu. Ni apa ọtun ni awọn aworan ti awọn iṣẹ ti ngbe lẹhin ToR yii. Ni pataki, iwọnyi jẹ awọn aworan ijabọ ti awọn atọkun pẹlu awọn olupin inu agbeko. Bi o ti le ri, wọn rì paapaa ni isalẹ. Kini idi ti wọn fi lọ silẹ - kii ṣe nipasẹ 25%, ṣugbọn ni awọn igba miiran nipasẹ awọn akoko 3-4? Ti asopọ TCP ko ni orire, o tẹsiwaju lati gbiyanju lati de ọdọ nipasẹ ọna asopọ fifọ. Eyi jẹ ilọsiwaju nipasẹ ihuwasi aṣoju ti iṣẹ inu DC - fun ibeere olumulo kan, awọn ibeere N si awọn iṣẹ inu ni ipilẹṣẹ, ati pe idahun yoo lọ si olumulo boya nigbati gbogbo awọn orisun data ba dahun, tabi nigbati akoko ipari ba waye ni ohun elo naa. ipele, eyiti o tun nilo lati tunto. Iyẹn ni, gbogbo nkan jẹ pupọ, buru pupọ.
Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Bayi adanwo kanna, ṣugbọn pẹlu iye aami sisan ti o ṣiṣẹ. Bii o ti le rii, ni apa osi ibojuwo ipele wa silẹ nipasẹ 25% kanna. Eyi jẹ deede pipe, nitori ko mọ ohunkohun nipa awọn atunto, o firanṣẹ awọn apo-iwe ati nirọrun ka ipin ti nọmba ti jiṣẹ ati awọn apo-iwe ti o sọnu.

Ati ni apa ọtun ni iṣeto iṣẹ. Iwọ kii yoo rii ipa apapọ iṣoro kan nibi. Ni awọn milliseconds kanna, ijabọ ṣiṣan lati agbegbe iṣoro si awọn ọna asopọ mẹta ti o ku ti iṣoro naa ko kan. A ni nẹtiwọki kan ti o mu ara rẹ larada.

Nẹtiwọọki kan ti o mu ararẹ larada: idan ti Aami Flow ati iṣẹ aṣawari ni ayika ekuro Linux. Yandex ijabọ

Eyi ni ifaworanhan ikẹhin mi, akoko lati ṣe akopọ. Bayi, Mo nireti pe o mọ bi o ṣe le kọ nẹtiwọki ile-iṣẹ data iwosan ti ara ẹni. Iwọ kii yoo nilo lati lọ nipasẹ ibi ipamọ ekuro Linux ki o wa awọn abulẹ pataki nibẹ; o mọ pe aami Flow ninu ọran yii yanju iṣoro naa, ṣugbọn o nilo lati sunmọ ẹrọ yii ni pẹkipẹki. Ati pe Mo tẹnumọ lekan si pe ti o ba jẹ oniṣẹ tẹlifoonu, o ko yẹ ki o lo aami sisan bi iṣẹ hash, bibẹẹkọ iwọ yoo ba awọn akoko awọn olumulo rẹ ru.

Awọn onimọ-ẹrọ nẹtiwọọki gbọdọ faragba iyipada imọran: nẹtiwọọki ko bẹrẹ pẹlu ToR, kii ṣe pẹlu ẹrọ nẹtiwọọki, ṣugbọn pẹlu agbalejo. Apeere idaṣẹ titọ ni bawo ni a ṣe lo eBPF mejeeji lati yi RTO pada ati lati ṣatunṣe aami sisan si ọna awọn iṣẹ eyikeyi simẹnti.

Awọn ẹrọ ẹrọ aami sisan jẹ esan dara fun awọn ohun elo miiran laarin apakan iṣakoso iṣakoso. Eyi le jẹ ijabọ laarin awọn ile-iṣẹ data, tabi o le lo iru awọn ẹrọ ẹrọ ni ọna pataki lati ṣakoso ijabọ ti njade. Ṣugbọn Emi yoo sọ fun ọ nipa eyi, Mo nireti, nigbamii ti akoko. O ṣeun pupọ fun akiyesi rẹ.

orisun: www.habr.com