Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Sant done modèn yo gen dè santèn de aparèy aktif enstale, ki kouvri pa diferan kalite siveyans. Men, menm yon enjenyè ideyal ak siveyans pafè nan men yo pral kapab kòrèkteman reponn a yon echèk rezo nan sèlman kèk minit. Nan yon rapò nan konferans Next Hop 2020 la, mwen te prezante yon metodoloji konsepsyon rezo sant done, ki gen yon karakteristik inik - sant done a geri tèt li an milisgond. Plis jisteman, enjenyè a avèk kalm rezoud pwoblèm nan, pandan y ap sèvis yo tou senpleman pa remake li.

— Pou kòmanse, mwen pral bay yon entwodiksyon jistis detaye pou moun ki pa ka okouran de estrikti a nan yon DC modèn.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Pou anpil enjenyè rezo, yon rezo sant done kòmanse, nan kou, ak ToR, ak yon switch nan etajè a. ToR anjeneral gen de kalite lyen. Ti yo ale nan serveurs yo, lòt moun - gen N fwa plis nan yo - ale nan direksyon kolòn vètebral yo nan premye nivo a, se sa ki, nan uplinks li yo. Lyen monte yo anjeneral konsidere kòm egal, epi trafik ant uplinks balanse baze sou yon hash soti nan 5-tuple, ki gen ladann proto, src_ip, dst_ip, src_port, dst_port. Pa gen sipriz isit la.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Apre sa, ki sa achitekti plan an sanble? Epin nan premye nivo yo pa konekte youn ak lòt, men yo konekte nan superspines. Lèt X la pral responsab pou superspines; li prèske tankou yon kwa-konekte.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Epi li klè ke, nan lòt men an, tori yo konekte ak tout kolòn vètebral nan premye nivo a. Ki sa ki enpòtan nan foto sa a? Si nou gen entèraksyon andedan etajè a, Lè sa a, entèraksyon an, nan kou, ale nan ToR. Si entèraksyon an fèt andedan modil la, Lè sa a, entèraksyon an rive nan epin premye nivo yo. Si entèraksyon an entèmodulè - tankou isit la, ToR 1 ak ToR 2 - Lè sa a, entèraksyon an pral ale nan kolòn vètebral nan tou de nivo yo premye ak dezyèm.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Nan teyori, tankou yon achitekti se fasil évolutive. Si nou gen kapasite pò, espas rezèv nan sant done a ak fib pre-mete, Lè sa a, kantite liy yo ka toujou ogmante, kidonk ogmante kapasite an jeneral nan sistèm nan. Sa a se trè fasil fè sou papye. Se ta konsa nan lavi. Men, istwa jodi a pa sou sa.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Mwen vle bon konklizyon yo dwe tire. Nou gen anpil chemen andedan sant done a. Yo se kondisyonèl endepandan. Yon chemen andedan sant done a sèlman posib andedan ToR. Anndan modil la, nou gen kantite chemen ki egal ak kantite liy yo. Kantite chemen ki genyen ant modil yo egal a pwodwi kantite avyon ak kantite sipès nan chak avyon. Pou fè li pi klè, pou jwenn yon sans de echèl la, mwen pral bay nimewo ki valab pou youn nan sant done Yandex yo.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Gen uit avyon, chak avyon gen 32 superspines. Kòm yon rezilta, li sanble ke gen uit chemen andedan modil la, epi ak entèraksyon entèmodil gen deja 256 nan yo.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Sa vle di, si nou ap devlope Cookbook, ap eseye aprann kijan pou konstwi sant done ki toleran fay ki geri tèt yo, Lè sa a, achitekti planè se bon chwa. Li rezoud pwoblèm nan dekale, ak nan teyori li fasil. Gen anpil chemen endepandan. Kesyon an rete: ki jan yon achitekti konsa siviv echèk? Gen plizyè echèk. Epi nou pral diskite sou sa a kounye a.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kite youn nan superspines nou yo "malad". Isit la mwen te retounen nan achitekti de avyon an. Nou pral rete ak sa yo kòm yon egzanp paske li pral tou senpleman pi fasil yo wè sa k ap pase ak mwens pati k ap deplase. Kite X11 malad. Ki jan sa pral afekte sèvis ki ap viv andedan sant done yo? Anpil depann sou sa echèk la aktyèlman sanble.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Si echèk la se yon bon bagay, li se kenbe nan nivo a automatisation nan menm BFD a, automatisation a san pwoblèm mwen tap mete jwenti yo pwoblèm ak izole pwoblèm nan, Lè sa a, tout bagay anfòm. Nou gen anpil chemen, trafik la imedyatman re-route nan wout altènatif, ak sèvis yo pa pral remake anyen. Sa a se yon bon script.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Yon move senaryo se si nou gen pèt konstan, ak automatisation a pa remake pwoblèm nan. Pou konprann ki jan sa afekte yon aplikasyon, nou pral oblije pase yon ti tan diskite sou fason TCP fonksyone.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Mwen espere ke mwen pa choke pèsonn ak enfòmasyon sa a: TCP se yon pwotokòl konfimasyon transmisyon. Sa vle di, nan ka ki pi senp la, moun k ap voye a voye de pake epi li resevwa yon akizasyon kimilatif sou yo: "Mwen te resevwa de pake."
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Apre sa, li pral voye de plis pake, epi sitiyasyon an ap repete. Mwen eskize davans pou kèk senplifikasyon. Senaryo sa a kòrèk si fenèt la (kantite pake nan vòl) se de. Natirèlman, nan ka jeneral sa a se pa nesesèman ka a. Men, gwosè fenèt la pa afekte kontèks transmisyon pake a.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kisa k ap pase si nou pèdi pake 3? Nan ka sa a, moun k ap resevwa a pral resevwa pakè 1, 2 ak 4. Epi li pral di moun k ap voye a klèman lè l sèvi avèk opsyon SAK la: "Ou konnen, twa te rive, men mitan an te pèdi." Li di: "Ack 2, SACK 4."
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Nan moman sa a, moun ki voye a san okenn pwoblèm repete egzakteman pake a ki te pèdi.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, si dènye pake a nan fenèt la pèdi, sitiyasyon an ap gade konplètman diferan.

Moun k ap resevwa a resevwa twa premye pake yo epi anvan tout bagay kòmanse tann. Mèsi a kèk optimize nan pil TCP Linux Kernel la, li pral tann pou yon pake pè sof si drapo yo endike klèman ke li se dènye pake a oswa yon bagay ki sanble. Li pral tann jiskaske delè ACK Reta a ekspire epi li pral voye yon rekonesans sou twa premye pake yo. Men koulye a, moun k la ap tann. Li pa konnen si katriyèm pake a te pèdi oswa si li pral rive. Ak nan lòd yo pa twò chaje rezo a, li pral eseye rete tann pou yon endikasyon eksplisit ke pake a pèdi, oswa pou tan RTO a ekspire.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Ki sa ki RTO timeout? Sa a se maksimòm RTT kalkile pa pil TCP la ak kèk konstan. Ki kalite konstan sa a se, nou pral kounye a diskite.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, sa ki enpòtan an se ke si nou pa gen chans ankò epi katriyèm pake a pèdi ankò, Lè sa a, RTO a double. Sa vle di, chak tantativ san siksè vle di double timeout la.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Koulye a, ann wè ki sa baz sa a egal a. Pa default, RTO minimòm lan se 200 ms. Sa a se RTO minimòm pou pakè done yo. Pou pake SYN li diferan, 1 segonn. Kòm ou ka wè, menm premye tantativ pou voye pake yo pral pran 100 fwa pi long pase RTT anndan sant done a.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Koulye a, kite a tounen nan senaryo nou an. Kisa k ap pase ak sèvis la? Sèvis la kòmanse pèdi pake. Se pou sèvis la gen chans kondisyonèl nan premye epi pèdi yon bagay nan mitan an nan fenèt la, Lè sa a, li resevwa yon SAK ak renvoie pake yo ki te pèdi.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, si move chans repete tèt li, Lè sa a, nou gen yon RTO. Ki sa ki enpòtan isit la? Wi, nou gen anpil chemen nan rezo nou an. Men, trafik TCP nan yon koneksyon TCP patikilye ap kontinye ale nan menm pil kase a. Pèt pake, depi sa a majik X11 nou an pa ale pou kont li, pa mennen nan trafik ap koule tankou dlo nan zòn ki pa gen pwoblèm. Nou ap eseye delivre pake a nan menm pil kase a. Sa a mennen nan yon echèk kaskad: yon sant done se yon seri aplikasyon kominike, ak kèk nan koneksyon TCP yo nan tout aplikasyon sa yo kòmanse degrade - paske superspine afekte tout aplikasyon ki egziste andedan sant done a. Jan pwovèb la di: si ou pa t fè chwal, chwal la te bwete; chwal la ale bwete - rapò a pa te delivre; rapò a pa te delivre - nou pèdi lagè a. Se sèlman isit la konte a se nan segonn soti nan moman sa a pwoblèm nan rive nan etap nan degradasyon ke sèvis yo kòmanse santi. Sa vle di ke itilizatè yo ka manke yon bagay yon kote.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Gen de solisyon klasik ki konplete youn ak lòt. Premye a se sèvis ki ap eseye mete pay epi rezoud pwoblèm nan tankou sa a: "Ann ajiste yon bagay nan pil TCP la. Ann fè delè nan nivo aplikasyon an oswa sesyon TCP ki dire lontan ak chèk sante entèn yo.” Pwoblèm lan se ke solisyon sa yo: a) pa echèl ditou; b) yo trè mal tcheke. Sa vle di, menm si sèvis la a aza/chans configure pile TCP nan yon fason ki fè li pi bon, premyèman, li se fasil pou aplike pou tout aplikasyon ak tout sant done, epi dezyèmman, gen plis chans, li pa pral konprann ke li te fè. kòrèkteman, ak sa ki pa. Sa vle di, li travay, men li travay mal epi li pa echèl. Men, si gen yon pwoblèm rezo, ki moun ki blame? Natirèlman, NOC. Kisa NOC fè?

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Anpil sèvis kwè ke nan travay NOC rive yon bagay konsa. Men, yo dwe onèt, pa sèlman sa.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

NOC nan konplo klasik la angaje nan devlopman anpil sistèm siveyans. Sa yo se tou de siveyans bwat nwa ak bwat blan. Konsènan yon egzanp siveyans kolòn vètebral bwat nwa te di Alexander Klimenko nan dènye Next Hop la. By wout la, siveyans sa a ap travay. Men, menm siveyans ideyal pral gen yon dekalaj tan. Anjeneral sa a se kèk minit. Apre li ale, enjenyè yo ki an sèvis yo bezwen tan pou double-tcheke operasyon li yo, lokalize pwoblèm nan ak Lè sa a, etenn zòn nan pwoblèm. Sa vle di, nan pi bon ka a, trete pwoblèm nan pran 5 minit, nan ka ki pi mal la, 20 minit, si li pa imedyatman evidan kote pèt yo rive. Li klè ke tout tan sa a - 5 oswa 20 minit - sèvis nou yo ap kontinye soufri, ki se pwobableman pa bon.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Ki sa ou ta reyèlman renmen resevwa? Nou gen anpil fason. Ak pwoblèm rive jisteman paske koule TCP ki pa gen chans kontinye sèvi ak menm wout la. Nou bezwen yon bagay ki pral pèmèt nou sèvi ak plizyè wout nan yon sèl koneksyon TCP. Li ta sanble ke nou gen yon solisyon. Gen TCP, ki rele multipath TCP, se sa ki TCP pou plizyè chemen. Se vre, li te devlope pou yon travay konplètman diferan - pou smartphones ki gen plizyè aparèy rezo. Pou maksimize transfè oswa fè mòd prensipal / sovgad, yo te devlope yon mekanis ki kreye plizyè fil (sesyon) transparan nan aplikasyon an epi ki pèmèt ou chanje ant yo si yo ta gen yon echèk. Oswa, jan mwen te di, maksimize tras la.

Men, gen yon nuans isit la. Pou konprann sa li ye, nou pral oblije gade ki jan fil yo etabli.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Fil yo enstale sekans. Premye fil enstale an premye. Lè sa a, fil ki vin apre yo mete lè l sèvi avèk bonbon ki te deja dakò sou nan fil sa a. Ak isit la nan pwoblèm nan.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Pwoblèm lan se ke si premye fil la pa etabli tèt li, dezyèm ak twazyèm fil yo p'ap janm leve. Sa vle di, multipath TCP pa rezoud pèt yon pake SYN nan premye koule a. Men, si SYN la pèdi, multipath TCP vire nan TCP regilye. Sa vle di ke nan yon anviwònman sant done li pa pral ede nou rezoud pwoblèm nan nan pèt nan faktori a ak aprann sèvi ak chemen miltip nan evènman an nan yon echèk.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kisa ki ka ede nou? Kèk nan nou te deja devine nan tit la ke yon jaden enpòtan nan plis istwa nou an pral jaden an header etikèt koule IPv6. Vreman vre, sa a se yon jaden ki parèt nan v6, li pa nan v4, li okipe 20 Bits, epi gen konfli sou itilizasyon li yo pou yon tan long. Sa a se trè enteresan - te gen diskisyon, yon bagay te fiks nan RFC a, ak an menm tan an yon aplikasyon parèt nan nwayo a Linux, ki pa te dokimante nenpòt kote.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Mwen envite w ale avè m nan yon ti ankèt. Ann pran yon gade nan sa k ap pase nan nwayo Linux la pandan kèk ane ki sot pase yo.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

ane 2014. Yon enjenyè ki soti nan yon konpayi gwo ak respekte ajoute nan fonksyonalite a nan nwayo a Linux depandans nan valè a etikèt koule sou hash la priz. Ki sa yo t ap eseye ranje isit la? Sa a gen rapò ak RFC 6438, ki te diskite sou pwoblèm sa a. Anndan sant done a, IPv4 souvan encapsulé nan pakè IPv6, paske faktori a li menm se IPv6, men IPv4 dwe yon jan kanmenm bay deyò. Pandan yon bon bout tan te gen pwoblèm ak switch ki pa t 'kapab gade anba de tèt IP pou ale nan TCP oswa UDP epi jwenn src_ports, dst_ports la. Li te tounen soti ke hash la, si ou gade nan de premye tèt IP yo, yo te tounen soti yo dwe prèske fiks. Pou evite sa a, se konsa ke balanse nan trafik sa a encapsulé travay kòrèkteman, li te pwopoze yo ajoute hash la nan pake a encapsulé 5-tuple nan valè a nan jaden an etikèt koule. Apeprè menm bagay la te fè pou lòt plan ankapsulasyon, pou UDP, pou GRE, lèt la te itilize jaden kle GRE. Yon fason oswa yon lòt, objektif yo isit la klè. Ak omwen nan pwen sa a nan tan yo te itil.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

An 2015, yon nouvo patch soti nan menm enjenyè respekte. Li trè enteresan. Li di sa ki annapre yo - nou pral randomize hash la nan ka ta gen yon evènman routage negatif. Ki sa ki se yon evènman routage negatif? Sa a se RTO ke nou te diskite pi bonè, se sa ki, pèt la nan ke nan fenèt la se yon evènman ki vrèman negatif. Vrè, li se relativman difisil devine ke sa a se li.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

2016, yon lòt konpayi bon repitasyon, tou gwo. Li demonte dènye beki yo epi fè li pou hash la, ke nou te fè deja o aza, kounye a chanje pou chak retransmisyon SYN ak apre chak tan RTO. Ak nan lèt sa a, pou premye ak dènye fwa, objektif final la te deklare - asire ke trafik nan ka ta gen pèt oswa konjesyon chanèl gen kapasite pou yo dousman re-route epi sèvi ak plizyè chemen. Natirèlman, apre sa a te gen yon anpil nan piblikasyon, ou ka fasil jwenn yo.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Malgre ke non, ou pa kapab, paske pa te gen yon sèl piblikasyon sou sijè sa a. Men nou konnen!

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, si ou pa byen konprann sa ki te fèt, mwen pral di ou kounye a.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Ki sa ki te fè, ki fonksyonalite yo te ajoute nan nwayo Linux la? txhash chanje nan yon valè o aza apre chak evènman RTO. Sa a se rezilta trè negatif nan routage. Hash la depann sou sa a txhash, ak etikèt la koule depann sou hash la skb. Gen kèk kalkil sou fonksyon isit la; tout detay yo pa ka mete sou yon sèl glisad. Si yon moun kirye, ou ka ale nan kòd nwayo a epi tcheke.

Ki sa ki enpòtan isit la? Valè jaden etikèt koule a chanje nan yon nimewo o aza apre chak RTO. Ki jan sa afekte kouran TCP malere nou an?
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Si yon SAK rive, pa gen anyen ki chanje paske nou ap eseye voye yon pake li te ye pèdi. Jiskaprezan byen.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, nan ka a nan RTO, depi ke nou te ajoute yon etikèt koule nan fonksyon an hash sou ToR, trafik la ka pran yon wout diferan. Ak plis liy yo, se pi gwo chans pou li pral jwenn yon chemen ki pa afekte pa yon echèk sou yon aparèy espesifik.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Yon pwoblèm rete - RTO. Natirèlman, gen yon lòt wout, men anpil tan ap gaspiye sou sa a. 200 ms se anpil. Yon dezyèm se absoliman sovaj. Précédemment, mwen te pale sou timeout ke sèvis yo configuré. Se konsa, yon dezyèm se yon timeout, ki se nòmalman configuré pa sèvis la nan nivo aplikasyon an, ak nan sa a sèvis la pral menm relativman dwat. Anplis, mwen repete, reyèl RTT andedan yon sant done modèn se anviwon 1 milisgond.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kisa ou ka fè ak delè RTO? Timeout la, ki responsab pou RTO nan ka pèt nan pake done, ka konfigirasyon relativman fasil nan espas itilizatè: gen yon sèvis piblik IP, ak youn nan paramèt li yo gen menm rto_min la. Lè nou konsidere ke RTO, nan kou, bezwen yo dwe ajiste pa globalman, men pou bay prefiks, tankou yon mekanis sanble byen travayabl.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Se vre, ak SYN_RTO tout bagay se yon ti jan pi mal. Li natirèlman kloure desann. Kernel la gen yon valè fiks de 1 segonn, e se li. Ou pa ka rive la nan espas itilizatè. Gen yon sèl fason.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

eBPF vin pote sekou. Pou mete li tou senpleman, sa yo se ti pwogram C. Yo ka mete yo nan kwòk nan diferan kote nan ekzekisyon an nan pil nwayo a ak pil TCP a, ak ki ou ka chanje yon gwo kantite anviwònman. An jeneral, eBPF se yon tandans alontèm. Olye pou yo koupe plizyè douzèn nouvo paramèt sysctl ak agrandi sèvis piblik IP la, mouvman an ap deplase nan direksyon eBPF ak agrandi fonksyonalite li yo. Sèvi ak eBPF, ou ka chanje dinamik kontwòl konjesyon ak divès lòt paramèt TCP.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Men, li enpòtan pou nou ke li ka itilize pou chanje valè SYN_RTO yo. Anplis, gen yon egzanp piblikman afiche: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Kisa ki fèt la a? Egzanp lan ap travay, men nan tèt li se trè ki graj. Isit la yo sipoze ke andedan sant done a nou konpare premye 44 bit yo; si yo matche, Lè sa a, nou andedan sant done a. Epi nan ka sa a nou chanje valè delè SYN_RTO a 4ms. Travay la menm ka fè pi plis elegant. Men, egzanp senp sa a montre ke sa a se a) posib; b) relativman senp.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kisa nou konnen deja? Lefèt ke achitekti avyon an pèmèt pou dekale, li vire soti yo dwe trè itil pou nou lè nou pèmèt etikèt la koule sou ToR epi jwenn kapasite nan koule alantou zòn pwoblèm. Pi bon fason pou diminye valè RTO ak SYN-RTO se sèvi ak pwogram eBPF. Kesyon an rete: èske li an sekirite pou itilize yon etikèt koule pou balanse? Epi gen yon nuans isit la.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Sipoze ou gen yon sèvis sou rezo ou ki rete nan anycast. Malerezman, mwen pa gen tan antre nan detay sou sa anycast ye, men li se yon sèvis distribiye ak diferan serveurs fizik aksesib atravè menm adrès IP la. Ak isit la nan yon pwoblèm posib: evènman an RTO ka rive pa sèlman lè trafik pase nan twal la. Li ka rive tou nan nivo tanpon ToR: lè yon evènman incast rive, li ka menm rive sou lame a lè lame a gaye yon bagay. Lè yon evènman RTO rive epi li chanje etikèt la koule. Nan ka sa a, trafik ka ale nan yon lòt egzanp anycast. Ann sipoze sa a se yon anycast stateful, li gen yon eta koneksyon - li ta ka yon Balancer L3 oswa kèk lòt sèvis. Lè sa a, yon pwoblèm rive, paske apre RTO koneksyon TCP a rive nan sèvè a, ki pa konnen anyen sou koneksyon TCP sa a. Men, si nou pa gen pataje eta ant sèvè anycast, Lè sa a, trafik sa yo pral tonbe epi koneksyon TCP a ap kraze.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Kisa ou ka fè la a? Nan anviwònman kontwole ou a, kote ou pèmèt balanse etikèt koule, ou bezwen anrejistre valè etikèt koule a lè w ap jwenn aksè nan sèvè anycast. Fason ki pi fasil la se fè sa atravè menm pwogram eBPF la. Men, isit la se yon pwen trè enpòtan - kisa ou dwe fè si ou pa opere yon rezo sant done, men se yon operatè telecom? Sa a se pwoblèm ou tou: kòmanse ak sèten vèsyon nan Juniper ak Arista, yo enkli yon etikèt koule nan fonksyon hash yo pa default - franchman, pou yon rezon ki pa klè pou mwen. Sa ka lakòz ou lage koneksyon TCP soti nan itilizatè yo pase atravè rezo ou a. Se konsa, mwen trè rekòmande tcheke anviwònman routeurs ou yo isit la.

Yon fason oswa yon lòt, mwen sanble ke nou pare pou nou avanse sou eksperyans.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Lè nou pèmèt etikèt la koule sou ToR, prepare ajan an eBPF, ki kounye a ap viv sou lame yo, nou deside pa rete tann pou pwochen echèk la gwo, men fè eksplozyon kontwole. Nou te pran ToR, ki gen kat uplinks, epi mete gout sou youn nan yo. Yo te trase yon règ epi yo te di - kounye a ou ap pèdi tout pake. Kòm ou ka wè sou bò gòch la, nou gen siveyans pou chak pake, ki te tonbe a 75%, se sa ki, 25% nan pake yo pèdi. Sou bò dwat la se graf sèvis k ap viv dèyè TdR sa a. Esansyèlman, sa yo se graf trafik nan interfaces yo ak serveurs andedan etajè a. Kòm ou ka wè, yo te plonje menm pi ba. Poukisa yo te tonbe pi ba - pa 25%, men nan kèk ka pa 3-4 fwa? Si koneksyon TCP a pa gen chans, li kontinye eseye rive nan junction ki kase a. Sa a agrave pa konpòtman tipik nan sèvis la andedan DC a - pou yon demann itilizatè, N demann nan sèvis entèn yo pwodwi, epi repons lan pral ale nan itilizatè a swa lè tout sous done reponn, oswa lè yon delè rive nan aplikasyon an. nivo, ki toujou bezwen konfigirasyon. Sa vle di, tout bagay trè, trè move.
Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Koulye a, eksperyans nan menm, men ak valè a etikèt koule pèmèt. Kòm ou ka wè, sou bò gòch siveyans pakèt nou an tonbe nan menm 25%. Sa a se absoliman kòrèk, paske li pa konnen anyen sou retransmèt, li voye pake epi tou senpleman konte rapò a nan kantite pake delivre ak pèdi.

Ak sou bò dwat la se orè sèvis la. Ou pa pral jwenn efè a nan yon jwenti pwoblèm isit la. Nan menm milisgond sa yo, trafik te koule soti nan zòn pwoblèm nan nan twa uplinks ki rete yo ki pa te afekte pa pwoblèm nan. Nou gen yon rezo ki geri tèt li.

Yon rezo ki geri tèt li: majik Flow Label ak travay detektif alantou nwayo Linux la. rapò Yandex

Sa a se dènye glise mwen an, tan pou rezime. Koulye a, mwen espere ou konnen ki jan yo bati yon rezo sant done oto-geri. Ou pa pral bezwen ale nan achiv nwayo Linux la epi chèche plak espesyal la; ou konnen ke etikèt la Flow nan ka sa a rezoud pwoblèm nan, men ou bezwen apwoche mekanis sa a ak anpil atansyon. Apre sa, mwen mete aksan sou yon lòt fwa ankò ke si ou se yon operatè telecom, ou pa ta dwe itilize etikèt koule kòm yon fonksyon hash, otreman ou pral deranje sesyon itilizatè ou yo.

Enjenyè rezo yo dwe sibi yon chanjman konseptyèl ekspresyon: rezo a kòmanse pa ak ToR a, pa ak aparèy rezo a, men ak lame a. Yon egzanp jistis frape se fason nou itilize eBPF tou de chanje RTO a ak ranje etikèt la koule nan direksyon pou sèvis anycast.

Mekanik etikèt koule yo sètènman apwopriye pou lòt aplikasyon nan segman administratif kontwole. Sa a ka trafik ant sant done, oswa ou ka itilize mekanik sa yo nan yon fason espesyal pou jere trafik sortan. Men, mwen pral di ou sou sa a, mwen espere, pwochen fwa. Mèsi anpil pou atansyon ou.

Sous: www.habr.com