O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O nofoaga autu o faʻamatalaga faʻaonaponei o loʻo i ai le fiaselau o masini gaogao faʻapipiʻiina, e ufiufi i ituaiga eseese o mataʻituina. Ae e oʻo lava i se inisinia lelei ma le mataʻituina lelei i lima o le a mafai ona tali saʻo i se fesoʻotaʻiga le manuia i ni nai minute. I se lipoti i le Next Hop 2020 conference, na ou tuʻuina atu ai se DC network design methodology, lea e iai se uiga tulaga ese - o le nofoaga autu o faʻamaumauga e faʻamalolo ia lava i milliseconds. E sili atu le saʻo, e faʻaleleia filemu e le inisinia le faʻafitauli, ae o le auʻaunaga e le o matauina.

- I le amataga, o le a ou tuʻuina atu se faʻamatalaga auiliili mo i latou atonu e le o iloa le fausaga o le DC faʻaonaponei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Mo le tele o inisinia fesoʻotaʻiga, e amata se fesoʻotaʻiga nofoaga autu, ioe, i le ToR, ma se ki i le fata. ToR e masani ona lua ituaiga o so'oga. O nai mea laiti e alu i le 'au'aunaga, o isi - e N taimi e sili atu - alu atu i tui o le tulaga muamua, o lona uiga, i ona luga. Uplinks e masani ona manatu tutusa, ma fefaʻatauaiga i le va o uplinks e paleni faʻavae i luga o se hash mai le 5-tuple, lea e aofia ai le proto, src_ip, dst_ip, src_port, dst_port. Leai se mea e ofo ai iinei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le isi, o le a le foliga o le fausaga o le ata? Spines o le tulaga muamua e le fesootai le tasi i le isi, ae fesootai e ala i superspines. O le mataitusi X o le a nafa ma superspines; e toetoe lava pei o se fesoʻotaʻiga.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ma e manino lava, i le isi itu, e fesoʻotaʻi le tori i tui uma o le tulaga muamua. O le a le mea taua i lenei ata? Afai ei ai a matou fegalegaleaiga i totonu o le fata, o le fegalegaleaiga, ioe, e alu i le ToR. Afai e tupu le fegalegaleaiga i totonu o le module, ona tupu lea o le fegalegaleaiga e ala i le tulaga muamua. Afai o le fegalegaleai e intermodular - pei o iinei, ToR 1 ma ToR 2 - o le fegalegaleaiga o le a alu i tui o le tulaga muamua ma le lua.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

I le talitonuga, o sea fausaga e faigofie ona faʻaleleia. Afai tatou te maua le gafatia o le taulaga, avanoa avanoa i totonu o le nofoaga autu o faʻamatalaga ma le fiber muamua, ona mafai lea ona faʻateleina le numera o laina, ma faʻateleina ai le gafatia atoa o le faiga. E faigofie tele lenei mea i luga o pepa. E faapena foi i le olaga. Ae o le tala i aso nei e le faatatau i lena mea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ou te mana'o e fai fa'ai'uga sa'o. E tele a matou auala i totonu o le nofoaga autu o faʻamatalaga. Latou te tuto'atasi tuto'atasi. E tasi le ala i totonu o le nofoaga autu o faʻamatalaga e naʻo totonu o le ToR e mafai. I totonu o le module, o loʻo i ai le numera o auala e tutusa ma le numera o laina. Ole numera o auala ile va ole modules e tutusa ma le fua ole numera o vaalele ma le numera o superspines i vaalele taʻitasi. Ina ia faʻamalamalama atili, ia maua se lagona o le fua, o le a ou tuʻuina atu numera e aoga mo se tasi o nofoaga autu o faʻamaumauga a Yandex.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E valu vaalele, o vaalele taitasi e 32 superspines. O se taunuuga, e foliga mai e valu auala i totonu o le module, ma faatasi ai ma fegalegaleaiga intermodule ua uma ona i ai le 256 o latou.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O lona uiga, afai o loʻo matou atiaʻe Cookbook, taumafai e aʻoaʻo pe faʻafefea ona fausia nofoaga faʻamaumauga faʻaletonu e faʻamalolo ai i latou lava, ona avea lea o le ata o le planar architecture o le filifiliga saʻo. E fo'ia ai le fa'afitauli o le fua, ma i le talitonuga e faigofie. E tele auala tutoatasi. O lo'o tumau pea le fesili: e fa'afefea ona ola fa'apea se fausaga fa'apenei i fa'aletonu? E eseese faaletonu. Ma o le a tatou talanoaina nei lenei mea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ia "ma'i" se tasi o tatou superspines. O iinei na ou toe foi ai i le fausaga o vaalele e lua. O le a matou tumau i nei mea e fai ma faʻataʻitaʻiga aua o le a faigofie ona vaʻai i mea o loʻo tupu i nai vaega feʻaveaʻi. Tuu X11 ma'i. E fa'afefea ona a'afia ai 'au'aunaga o lo'o nonofo i totonu o fa'amaumauga? E tele mea e faalagolago i le foliga moni o le toilalo.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Afai e lelei le toilalo, e maua i le tulaga otometi o le BFD tutusa, o le masini e tuʻuina fiafia faʻafitauli faʻafitauli ma faʻateʻaina le faʻafitauli, ona lelei lea o mea uma. E tele a matou auala, o feoaiga e vave ona toe faʻafeiloaʻi i isi auala, ma e leai se mea e iloa ai e auʻaunaga. Ose tusitusiga lelei lea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O se fa'aaliga leaga pe a iai a tatou tupe gau, ma e le iloa e le masini le fa'afitauli. Ina ia malamalama pe fa'afefea ona a'afia se talosaga, e tatau ona tatou fa'aalu sina taimi e talanoa ai pe fa'apefea ona galue le TCP.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ou te faʻamoemoe ou te le faʻateʻia se tasi i lenei faʻamatalaga: TCP o se faʻasalalauga faʻamaonia faʻasalalauga. O lona uiga, i se tulaga sili ona faigofie, e auina atu e le tagata e auina atu ni pepa se lua ma maua se faʻamaumauga faʻaopoopo i luga oi latou: "Na ou mauaina ni pepa se lua."
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

A maeʻa lena, o le a ia auina atu isi pepa e lua, ma o le a toe faʻaalia le tulaga. Ou te faatoese atu mo sina faafaigofieina. E sa'o lenei fa'aaliga pe afai o le fa'amalama (le numera o pepa o lo'o lele) e lua. Ioe, i le tulaga lautele e le o le tulaga lea. Ae o le tele o le fa'amalama e le a'afia ai le fa'asologa o le fa'asalalauina o pepa.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a le mea e tupu pe a leiloa le matou pepa 3? I lenei tulaga, o le a maua e le tagata e mauaina ia pepa 1, 2 ma le 4. Ma o le a ia taʻu manino atu i le tagata na auina mai le faʻaogaina o le SACK filifiliga: "E te iloa, e toʻatolu na taunuu, ae na leiloa le ogatotonu." Fai mai a ia, "Ack 2, SACK 4."
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

I le taimi nei, o le tagata e auina atu e aunoa ma se faʻafitauli e toe fai tonu le pepa na leiloa.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ae afai e leiloa le pusa mulimuli i le faamalama, o le tulaga o le a matua ese lava.

E mauaina e le tagata o lo'o mauaina ia pepa muamua e tolu ma o le mea muamua e amata ona fa'atali. Fa'afetai i nisi fa'ata'ita'iga i le fa'aputuga TCP a le kernel Linux, o le a fa'atali mo se pa'u fa'alua se'i vagana ua fa'ailoa manino mai e fu'a o le afifi mulimuli po'o se mea faapena. O le a fa'atali se'ia mae'a le fa'agata ACK Fa'atuai ona tu'uina atu lea o se fa'aaliga i pepa muamua e tolu. Ae o lea o le a faatali le tagata e auina atu. Na te le iloa pe ua leiloa le afifi lona fa pe o le a taunuu. Ma ina ia aua neʻi faʻateleina le fesoʻotaʻiga, o le a taumafai e faʻatali mo se faʻamatalaga manino o le paʻu ua leiloa, pe mo le RTO taimi e muta ai.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ole a le taimi ole RTO? Ole maualuga lea ole RTT e fa'atatau ile fa'aputuga o le TCP ma nisi fa'aauau. O le a le ituaiga o mea masani lea, o le a tatou talanoaina nei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ae o le itu taua, afai tatou te toe le manuia ae toe leiloa le pusa lona fa, ona faaluaina lea o le RTO. O lona uiga, o taumafaiga uma e le manuia o lona uiga o le faaluaina o le taimi.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Se'i o tatou va'ai po'o le a le mea e tutusa ai lenei fa'avae. Ile faaletonu, ole la'ititi ole RTO ole 200 ms. Ole la'ititi lea ole RTO mo fa'amaumauga. Mo pusa SYN e ese, 1 sekone. E pei ona mafai ona e vaʻai, e oʻo lava i le taumafaiga muamua e toe lafo atu pepa o le a 100 taimi umi nai lo le RTT i totonu o le nofoaga autu o faʻamatalaga.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Se'i tatou toe fo'i i la tatou fa'aaliga. O le a le mea o tupu i le auaunaga? O le tautua ua amata ona leiloa pepa. Tuu le tautua ia laki i le taimi muamua ma leiloa se mea i le ogatotonu o le faamalama, ona maua ai lea o se SACK ma toe lafo atu pepa na leiloa.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ae afai e toe tupu mai le leaga, ona i ai lea o le matou RTO. O le a le mea taua iinei? Ioe, e tele a tatou auala i la tatou fesoʻotaʻiga. Ae o le TCP fefaʻatauaʻiga o se tasi fesoʻotaʻiga TCP faʻapitoa o le a faʻaauau pea ona ui atu i le faaputuga malepe tutusa. O tupe gau, pe a fai o lenei X11 fa'ataulāitu a tatou e le alu i fafo na o ia, e le taitai atu ai i taavale e tafe atu i nofoaga e le o faʻafitauli. O lo'o matou taumafai e tu'uina atu le afifi e ala i le fa'aputu gau. Ole mea lea e o'o atu ai ile fa'aletonu: ole nofoaga autu o fa'amatalaga o se seti o feso'ota'iga feso'ota'iga, ma o nisi o feso'ota'iga TCP o nei talosaga uma e amata ona fa'aleagaina - ona o le superspine e a'afia ai talosaga uma o lo'o iai i totonu ole nofoaga autu o fa'amatalaga. E pei ona fai mai le upu: afai e te le seevae se solofanua, e pipili le solofanua; ua pipili le solofanua - e lei tuuina atu le lipoti; e le'i tu'uina mai le lipoti - na matou faia'ina i le taua. Na'o iinei o le faitau i sekone mai le taimi e tulaʻi mai ai le faʻafitauli i le tulaga o le faʻaleagaina lea e amata ona lagona e le auʻaunaga. O lona uiga e ono misia e tagata fa'aoga se mea i se mea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E lua vaifofo masani e faʻapena e le tasi le isi. Muamua o auaunaga o loʻo taumafai e tuʻu i totonu ma foia le faʻafitauli e pei o lenei: "Seʻi o tatou tweak se mea i le TCP stack. Se'i o tatou faia ni taimi fa'agata i le tulaga o talosaga po'o taimi umi TCP fa'atasi ai ma siaki fa'alesoifua maloloina i totonu." O le fa'afitauli o ia fofo: a) e le fua; e) e matua le lelei le siakiina. O lona uiga, e tusa lava pe faʻafuaseʻi ona faʻapipiʻi e le 'auʻaunaga le faʻaputuga TCP i se auala e faʻaleleia atili ai, muamua, e foliga mai e le talafeagai mo talosaga uma ma nofoaga autu uma, ma lona lua, e foliga mai, o le a le malamalama na faia. sa'o , ae leai. O lona uiga, e aoga, ae e le lelei ma e le fua. Ma afai e iai se faʻafitauli o fesoʻotaʻiga, o ai e tuʻuaia? Ioe, NOC. O le a le mea e fai e le NOC?

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E talitonu le tele o au'aunaga o galuega a le NOC e tupu ai se mea fa'apenei. Ae ia faamaoni, e le gata i lena.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

NOC i le polokalame masani o loʻo faʻatinoina i le atinaʻeina o le tele o faiga mataʻituina. O nei mea uma o pusa uliuli ma pusa paʻepaʻe mataʻituina. E uiga i se faʻataʻitaʻiga o le mataʻituina o tui puipui ta'u atu Alexander Klimenko i le Next Hop mulimuli. I le auala, e aoga lenei mataʻituina. Ae e oo lava i le mataituina lelei o le ai ai se taimi tuai. E masani lava o ni nai minute. A maeʻa, e manaʻomia e le au inisinia o loʻo tiute le taimi e toe siaki ai lana gaioiga, faʻavasega le faʻafitauli ona tape ai lea o le vaega faʻafitauli. O lona uiga, i le tulaga sili ona lelei, o le togafitia o le faʻafitauli e manaʻomia le 5 minute, i le tulaga sili ona leaga, 20 minute, pe afai e le o iloa vave le mea e tupu ai le gau. E manino lava o lenei taimi uma - 5 pe 20 minute - o le a faʻaauau pea ona pagatia a matou tautua, atonu e le lelei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a se mea e te mana'o moni e maua? E tele a tatou auala. Ma o faʻafitauli e tupu tonu lava ona o le TCP o loʻo tafe mai e le manuia o loʻo faʻaauau pea ona faʻaogaina le auala lava e tasi. Matou te manaʻomia se mea e mafai ai ona matou faʻaogaina le tele o auala i totonu o le TCP se tasi. E foliga mai o loo i ai se tatou fofo. E iai le TCP, lea e taʻua o le multipath TCP, o lona uiga, TCP mo le tele o auala. E moni, na atiina ae mo se galuega e matua ese lava - mo smartphones e tele masini fesoʻotaʻiga. Ina ia faʻateleina le faʻafeiloaʻiga poʻo le faia o le tulaga muamua / tua, na fausia se masini e fatuina ai le tele o filo (sauniga) manino i le talosaga ma faʻatagaina oe e fesuiaʻi i latou pe a tupu se toilalo. Pe, e pei ona ou fai atu, faʻateleina le faʻasologa.

Ae o loʻo i ai se nuance iinei. Ina ia malamalama pe o le a le mea, e tatau ona tatou vaʻavaʻai pe faʻapefea ona faʻavae filo.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O filo e faʻapipiʻi faʻasolosolo. O le filo muamua e faʻapipiʻi muamua. Ona fa'atulaga lea o filo e fa'aaoga ai le kuki ua uma ona malilie i ai i totonu o lena filo. Ma o le faafitauli lea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le faʻafitauli o le a le faʻavaeina le filo muamua, o le a le tulaʻi mai le filo lona lua ma le tolu. O lona uiga, multipath TCP e le foia le leiloa o se pusa SYN i le tafe muamua. Ma afai ua leiloa le SYN, multipath TCP liliu i TCP masani. O lona uiga i totonu o le nofoaga autu o faʻamatalaga o le a le fesoasoani ia i tatou e foia le faʻafitauli o le gau i le fale gaosimea ma aʻoaʻo e faʻaoga le tele o auala pe a tupu se toilalo.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le ā e mafai ona fesoasoani iā ​​i tatou? O nisi o outou ua uma ona mateina mai le ulutala o se fanua taua i la tatou tala o le a avea le IPv6 flow label header field. O le mea moni, o se fanua lea e aliali mai i le v6, e leʻo i le v4, o loʻo i ai le 20 bits, ma o loʻo i ai se feeseeseaiga i lona faʻaaogaina mo se taimi umi. E manaia tele lenei mea - sa i ai feeseeseaiga, o se mea na faʻamautu i totonu o le RFC, ma i le taimi lava e tasi na faʻaalia ai se faʻatinoga i le fatu Linux, lea e leʻi tusia i soo se mea.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ou te valaaulia oe e te o faatasi ma au i se suesuega laitiiti. Sei o tatou tilotilo i mea o loʻo tupu i le Linux kernel i nai tausaga talu ai.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

tausaga 2014. O se inisinia mai se tasi kamupani tele ma fa'aaloalogia e fa'aopoopoina i le fa'atinoga o le fatu Linux le fa'alagolago i le tau o le fa'ailoga o le tafe i luga o le socket hash. O le a le mea sa latou taumafai e faaleleia iinei? E fesoʻotaʻi lea ma le RFC 6438, lea na talanoaina le mataupu o loʻo mulimuli mai. I totonu o le nofoaga autu o faʻamatalaga, IPv4 e masani ona faʻapipiʻiina i IPv6 packets, aua o le fale gaosimea lava ia o le IPv6, ae o le IPv4 e tatau ona tuʻuina atu i fafo. Mo se taimi umi sa i ai faʻafitauli i suiga e le mafai ona vaʻavaʻai i lalo o ulutala IP e lua e oʻo i le TCP poʻo le UDP ma maua ai src_ports, dst_ports iina. Na aliali mai o le hash, pe a e vaʻavaʻai i ulutala IP muamua e lua, na foliga mai e toetoe lava a faʻamautuina. Ina ia aloese mai lenei mea, ina ia sa'o lelei le faapaleniina o lenei fe'avea'i fe'avea'i, sa fautuaina e fa'aopoopo le hash o le 5-tuple fa'apipi'i pepa i le tau o le fa'ailoga o le tafe. Pe tusa o le mea lava lea e tasi na faia mo isi polokalame encapsulation, mo UDP, mo GRE, na faʻaaogaina e le vaega mulimuli le GRE Key field. I se tasi auala po o se isi, o sini iinei e manino. Ma o le mea sili i lena taimi i le taimi sa latou aoga.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

I le 2015, o se patch fou e sau mai le inisinia faʻaaloalogia tutusa. E ese le manaia o ia. O lo'o ta'u mai i lalo - o le a tatou fa'avasegaina le hash pe a iai se fa'alavelave fa'aletonu. O le a le mea e ta'u mai ai le ala le lelei? O le RTO lea na matou talanoaina muamua, o lona uiga, o le leiloa o le siʻusiʻu o le faamalama o se mea e matua le lelei. E moni, e fai si faigata ona mate o le mea lea.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

2016, o se isi kamupani lauiloa, tele foi. Na te talepeina tootoo mulimuli ma faia ina ia mafai ai e le hash, lea na matou faia muamua, ua suia nei mo SYN toe faʻasalalau taʻitasi ma pe a maeʻa taimi taʻitasi RTO. Ma i totonu o lenei tusi, mo le taimi muamua ma le taimi mulimuli, o loʻo taʻua ai le sini autu - ia faʻamautinoa o le taʻavale i le tulaga o le gau poʻo le faʻaogaina o le alalaupapa e iai le malosi e toe faʻafeiloaʻi lemu ma faʻaoga le tele o auala. Ioe, a maeʻa lenei mea e tele lomiga, e faigofie ona e mauaina.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E ui lava e leai, e te le mafaia, aua e leʻi i ai se faʻasalalauga e tasi i lenei autu. Ae ua tatou iloa!

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ma afai e te le malamalama atoatoa i le mea na fai, o le a ou taʻu atu ia te oe i le taimi nei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a le mea na faia, o le a le galuega na faʻaopoopoina i le fatu Linux? txhash suia i se tau fa'afuase'i pe a uma mea ta'itasi RTO. Ole i'uga leaga tele lea ole ta'avale. O le hash e fa'alagolago i lenei txhash, ma le fa'ailoga o le tafe e fa'alagolago i le skb hash. O lo'o iai ni fa'atusatusaga i galuega fa'atino iinei; o fa'amatalaga uma e le mafai ona tu'u i luga o le ata e tasi. Afai ei ai se tasi e fia iloa, e mafai ona e alu ile kernel code ma siaki.

O le a le mea taua iinei? O le tau o le fa'ailoga o le tafe e sui i se numera fa'afuase'i pe a uma RTO ta'itasi. E fa'afefea ona a'afia ai a tatou TCP fa'anoanoa?
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Afai e tupu se SACK, e leai se mea e suia ona o loʻo matou taumafai e toe auina atu se pepa na leiloa. E oo mai i le taimi nei ua lelei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ae i le tulaga o le RTO, se'i vagana ua matou fa'aopoopoina se fa'ailoga o le tafe i le hash function i luga o le ToR, e ono alu le ta'avale i se isi auala. Ma o le tele o auala, o le tele foi lea o le avanoa e maua ai se auala e le afaina i se toilalo i luga o se masini faapitoa.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E tasi lava le fa'afitauli - RTO. Ioe, o loʻo i ai se isi auala, ae tele le taimi e faʻaumatia i lenei mea. 200 ms e tele. O le lona lua e matua fe'ai lava. I le taimi muamua, sa ou talanoa e uiga i taimi faʻagata e faʻatulagaina auaunaga. O lea la, o le lona lua o se taimi malolo, lea e masani ona faʻatulagaina e le 'auʻaunaga i le tulaga o talosaga, ma i lenei mea o le a saʻo lava le auaunaga. E le gata i lea, ou te toe fai atu, o le RTT moni i totonu o se nofoaga autu o faʻamatalaga faʻaonaponei e tusa ma le 1 millisecond.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a se mea e mafai ona e faia i taimi fa'agata RTO? Ole taimi ole taimi, lea e nafa ma le RTO i le tulaga o le leiloa o faʻamaumauga, e mafai ona faʻatulagaina faigofie mai avanoa faʻaoga: o loʻo i ai se aoga IP, ma o se tasi o ona faʻamaufaʻailoga e aofia ai le rto_min tutusa. Mafaufau i le RTO, ioe, e manaʻomia le liliu e le o le lalolagi atoa, ae mo faʻasologa tuʻuina atu, o sea masini e foliga mai e aoga.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

E moni, i le SYN_RTO o mea uma e fai si leaga. E masani lava ona tuitui i lalo. O le fatu o loʻo i ai se tau tumau o le 1 sekone, ma o le mea lena. E le mafai ona e o'o atu iina mai avanoa fa'aoga. E tasi lava le auala.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

eBPF e sau e laveai. I se faʻamatalaga faigofie, o polokalame laiti nei C. E mafai ona faʻapipiʻi i matau i nofoaga eseese i le faʻatinoina o le fatu fatu ma le TCP stack, lea e mafai ai ona e suia se numera tele o tulaga. I se tulaga lautele, eBPF ose taimi umi. Nai lo le tipiina o le tele o laina fou sysctl ma faʻalauteleina le aoga IP, o le gaioiga o loʻo agai atu i le eBPF ma faʻalauteleina ana galuega. I le fa'aogaina o le eBPF, e mafai ona e suia fa'atosina fa'atonuga ma isi fa'atulagaga TCP.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ae e taua mo i tatou e mafai ona faʻaaogaina e sui ai le SYN_RTO tau. E le gata i lea, o loʻo i ai se faʻataʻitaʻiga faʻasalalau lautele: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. O le a le mea ua faia iinei? O loʻo galue le faʻataʻitaʻiga, ae o ia lava e matua faigata lava. O iinei e manatu ai i totonu o le nofoaga autu o faʻamatalaga matou te faʻatusatusaina muamua 44 bits; afai latou te fetaui, ona matou i ai lea i totonu o le nofoaga autu o faʻamatalaga. Ma i lenei tulaga matou te suia le SYN_RTO taimi fa'agata i le 4ms. O le galuega lava e tasi e mafai ona sili atu le matagofie. Ae o lenei faʻataʻitaʻiga faigofie e faʻaalia ai o le a) mafai; e) fai si faigofie.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a se mea ua uma ona tatou iloa? O le mea moni o le fausaga o le vaalele e mafai ai ona faʻaleleia, e foliga mai e matua aoga lava mo i tatou pe a tatou faʻaogaina le faʻailoga o le tafe i luga o le ToR ma maua le malosi e tafe ai i vaega faʻafitauli. Ole auala sili e faʻaitiitia ai le RTO ma le SYN-RTO o le faʻaaogaina o polokalame eBPF. O lo'o tumau pea le fesili: pe saogalemu le fa'aogaina o se fa'ailoga tafe mo le paleni? Ma o loʻo i ai se nuance iinei.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Fa'apea e iai sau 'au'aunaga i lau feso'ota'iga e nofo i so'o secast. O le mea e leaga ai, e leai soʻu taimi e faʻamatala auʻiliʻili ai pe o le a le anycast, ae o se tautua tufatufaina ma 'auʻaunaga faaletino eseese e mafai ona maua e ala i le tuatusi IP tutusa. Ma o se faʻafitauli faʻafuaseʻi: o le RTO e mafai ona tupu e le gata pe a oʻo atu le taʻavale i totonu o le ie. E mafai foi ona tupu i le ToR buffer level: pe a tupu se faʻalavelave faʻalavelave, e mafai foi ona tupu i luga o le talimalo pe a sasaa e le talimalo se mea. Pe a tupu se mea na tupu RTO ma suia le igoa tafe. I lenei tulaga, e mafai ona alu le taʻavale i se isi faʻataʻitaʻiga anycast. Se'i tatou fa'apea o se tala fa'atusa lea, o lo'o i ai se tulaga feso'ota'iga - e mafai ona avea ma L3 Balancer po'o se isi auaunaga. Ona tulaʻi mai lea o se faʻafitauli, aua a maeʻa le RTO e oʻo mai le fesoʻotaʻiga TCP i le 'auʻaunaga, e le iloa se mea e uiga i lenei TCP fesoʻotaʻiga. Ma afai e leai se matou faʻasoa i le va o soʻo se faʻaumau, ona paʻu lea o fefaʻatauaiga ma o le a motusia le fesoʻotaʻiga TCP.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O le a se mea e mafai ona e faia iinei? I totonu o lau si'osi'omaga fa'atonutonu, lea e te fa'ataga ai le fa'apaleniina o igoa o le tafe, e tatau ona e fa'amaumau le tau o le fa'ailoga o le tafe pe a fa'aogaina so'o se servers. Ole auala pito sili ona faigofie ole faia lea ile polokalame eBPF lava e tasi. Ae o se mea taua tele lenei - o le a le mea e fai pe afai e te le faʻaogaina se fesoʻotaʻiga nofoaga autu, ae o se telefoni feaveaʻi? O lou faʻafitauli foi lea: amata i nisi o lomiga o Juniper ma Arista, latou te aofia ai se faʻailoga tafe i totonu o latou galuega hash e ala i le faaletonu - saʻo, mo se mafuaaga e le o manino ia te aʻu. E ono mafua ai ona e tu'u'ese feso'ota'iga TCP mai tagata fa'aoga e ui atu i lau feso'otaiga. O lea ou te matua fautuaina le siakiina o au routers settings iinei.

I se tasi auala poʻo se isi, e foliga mai ia te aʻu ua matou sauni e agai i luma i faʻataʻitaʻiga.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Ina ua matou faʻatagaina le faʻailoga o le tafe i luga o le ToR, saunia le sui eBPF, lea o loʻo nofo nei i luga o le au talimalo, na matou filifili e le faʻatali mo le isi toilalo tele, ae ia faʻatautaia faʻalavelave faʻafuaseʻi. Na matou ave le ToR, lea e fa i luga, ma faʻapipiʻi mataua i luga o se tasi. Na latou tusia se tulafono ma fai mai - o lea ua leiloa uma au taga. E pei ona e va'ai i le itu agavale, o lo'o i ai a matou mata'itusi ta'itasi, lea ua pa'ū i le 75%, o lona uiga, 25% o pepa ua leiloa. I le itu taumatau o lo'o i ai kalafi o auaunaga o lo'o ola i tua o lenei ToR. O le mea moni, o kalafi ia o fefa'atauaiga o feso'ota'iga ma 'au'aunaga i totonu o le fata. E pei ona e vaʻaia, na latou goto ifo i lalo. Aisea na latou pa'u ai i lalo - e le o le 25%, ae i nisi tulaga e 3-4 taimi? Afai e le manuia le feso'ota'iga TCP, e fa'aauau pea ona taumafai e o'o atu i le va'aiga malepe. O lenei mea ua faʻateleina e ala i amioga masani a le tautua i totonu o le DC - mo le tasi tagata talosaga, N talosaga i totonu o auaunaga e faʻatupuina, ma o le tali o le a alu i le tagata faʻaoga pe a tali uma faʻamaumauga, pe a oʻo i se taimi malolo i le talosaga. tulaga, lea e manaʻomia pea ona faʻatulagaina. O lona uiga, e matua leaga lava mea uma.
O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

Le taimi nei o le faʻataʻitaʻiga lava lea e tasi, ae faʻatasi ai ma le faʻaogaina o le tau o le faʻasologa. E pei ona e vaʻaia, i le agavale o le matou mataʻituina o vaega na pa'ū i le tutusa 25%. E matua sa'o lava, aua na te le iloa se mea e uiga i le toe fa'aliliuina, e tu'uina atu pepa ma na'o le faitauina o le fua o le aofa'i o pepa na tu'uina atu ma leiloa.

Ma i le itu taumatau o le faasologa o auaunaga. E te le maua le aafiaga o se sooga faʻafitauli iinei. I na lava milliseconds, na tafe mai le taʻavale mai le vaega faʻafitauli i luga ole tolu o loʻo totoe e leʻi aʻafia i le faʻafitauli. Ua matou maua se fesoʻotaʻiga e faʻamalolo ai ia lava.

O se fesoʻotaʻiga e faʻamalolo ai ia lava: o le togafiti faʻatauvaʻa o le Flow Label ma le leoleo o loʻo siomia ai le fatu Linux. Yandex lipoti

O la'u fa'ata'ita'i mulimuli lenei, taimi e fa'ato'oto ai. I le taimi nei, ou te faʻamoemoe e te iloa le auala e fausia ai se fesoʻotaʻiga nofoaga autu o faʻamatalaga faʻamalolo. E te le manaʻomia le alu i le Linux kernel archive ma suʻe ni faʻailoga faʻapitoa iina; e te iloa o le Flow label i lenei tulaga e foia ai le faafitauli, ae e tatau ona e faʻalatalata atu i lenei masini. Ma ou te toe fa'amamafa atu afai o oe o se telefoni feavea'i, e le tatau ona e fa'aogaina le fa'ailoga o le tafe e fai ma fa'aoga hash, a leai o le ae fa'alavelaveina sauniga a au tagata fa'aoga.

E tatau i le au inisinia fesoʻotaʻiga ona faia se suiga faʻavae: o le fesoʻotaʻiga e le amataina i le ToR, ae le o le masini fesoʻotaʻiga, ae o le talimalo. O se fa'ata'ita'iga sili ona mata'ina o le fa'aogaina lea o le eBPF e sui uma ai le RTO ma fa'asa'o le fa'ailoga fa'asolo i so'o se auaunaga.

Ole fa'ailoga fa'ainisinia e mautinoa lava e talafeagai mo isi fa'aoga ile vaega fa'atonutonu fa'afoe. E mafai ona avea lea ma felauaiga i le va o nofoaga autu o faʻamatalaga, pe mafai foʻi ona e faʻaogaina ia masini i se auala faʻapitoa e pulea ai feoaiga i fafo. Ae o le a ou taʻu atu ia te oe lenei mea, ou te faʻamoemoe, i le isi taimi. Fa'afetai tele mo lou fa'alogo.

puna: www.habr.com