Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ny foibe angona maoderina dia manana fitaovana mavitrika an-jatony napetraka, voarakotry ny karazana fanaraha-maso samihafa. Saingy na dia injeniera tonga lafatra miaraka amin'ny fanaraha-maso tonga lafatra aza dia ho afaka hamaly tsara ny tsy fahombiazan'ny tambajotra ao anatin'ny minitra vitsy. Tao anatin'ny tatitra iray tao amin'ny kaonferansa Next Hop 2020, dia nanolotra fomba famolavolana tambajotra ivotoerana data aho, izay manana endri-javatra tokana - manasitrana ny tenany ao anatin'ny milisegondra ny foibe data. Ny marimarina kokoa, ny injeniera dia mamaha ny olana, fa ny serivisy dia tsy mahatsikaritra izany.

- Hanombohana dia hanome teny fampidirana amin'ny antsipiriany aho ho an'ireo izay mety tsy mahafantatra ny firafitry ny DC maoderina.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ho an'ny injenieran'ny tambajotra maro, ny tambajotran'ny foibem-pamokarana dia manomboka, mazava ho azy, miaraka amin'ny ToR, miaraka amin'ny fikandrana ao amin'ny vata. Matetika ny ToR dia manana karazana rohy roa. Ny kely dia mankany amin'ny mpizara, ny hafa - misy in-n'izy ireo kokoa - mankany amin'ny hazondamosina amin'ny ambaratonga voalohany, izany hoe mankany amin'ny rohy ambony. Matetika ny Uplinks dia heverina ho mitovy, ary ny fifamoivoizana eo amin'ny uplinks dia mandanjalanja mifototra amin'ny hash avy amin'ny 5-tuple, izay ahitana proto, src_ip, dst_ip, src_port, dst_port. Tsy misy surprise eto.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Manaraka, manao ahoana ny endriky ny rafitra drafitra? Ny hazondamosina amin'ny ambaratonga voalohany dia tsy mifandray amin'ny tsirairay, fa mifandray amin'ny alalan'ny superspines. Ny litera X dia ho tompon'andraikitra amin'ny superspines; saika toy ny cross-connect izy io.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ary mazava ho azy fa, etsy ankilany, ny tori dia mifandray amin'ny hazondamosina rehetra amin'ny ambaratonga voalohany. Inona no zava-dehibe amin'ity sary ity? Raha misy fifaneraserana ao anatin'ny rack, ny fifandraisana, mazava ho azy, dia mandalo amin'ny ToR. Raha toa ka ao anatin'ny module ny fifandraisana dia mitranga amin'ny alΓ lan'ny spines ambaratonga voalohany ny fifandraisana. Raha intermodular ny fifandraisana - toy ny eto, ToR 1 sy ToR 2 - dia handeha amin'ny spines ny ambaratonga voalohany sy faharoa ny fifandraisana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Amin'ny teoria, ny maritrano toy izany dia mora scalable. Raha manana seranan-tsambo isika, toerana malalaka ao amin'ny foibe angon-drakitra ary fibre efa napetraka mialoha, dia azo ampitomboina foana ny isan'ny lalana, ka hampitombo ny fahafahan'ny rafitra amin'ny ankapobeny. Tena mora ny manao izany amin'ny taratasy. Ho toy izany koa ny fiainana. Tsy momba izany anefa ny tantara ankehitriny.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Tiako ny tsoa-kevitra mety. Manana lalana maro ao anatin'ny foibe data izahay. Tsy miankina amin'ny fepetra izy ireo. Ny lalana iray ao anatin'ny foibe angona dia ao anatin'ny ToR ihany. Ao anatin'ilay maodely dia manana ny isan'ny lalana mitovy amin'ny isan'ny lalana isika. Ny isan'ny lalana eo anelanelan'ny maody dia mitovy amin'ny vokatry ny isan'ny fiaramanidina sy ny isan'ny superspines isaky ny fiaramanidina. Mba hanazavana bebe kokoa, mba hahafantarana ny haavony, dia hanome isa aho izay manan-kery ho an'ny iray amin'ireo foibe data Yandex.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Misy fiaramanidina valo, ny fiaramanidina tsirairay dia manana superspines 32. Vokatr'izany dia hita fa misy lalana valo ao anatin'ny module, ary miaraka amin'ny intermodule intermodule dia efa misy 256 amin'izy ireo.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Izany hoe, raha mamolavola Cookbook isika, miezaka ny mianatra ny fomba hananganana ivon-toeram-pahalalana mahasitrana ny tenany, dia ny rafitra planar no safidy tsara. Mamaha ny olan'ny scaling izany, ary amin'ny teoria dia mora izany. Misy lalana mahaleo tena maro. Mipetraka ny fanontaniana: ahoana no ahafahan'ny rafitra toy izany ho tafavoaka velona amin'ny tsy fahombiazana? Misy ny tsy fahombiazana isan-karazany. Ary hiresaka momba izany isika izao.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Avelao ny iray amin'ireo superspines antsika "harary". Eto aho dia niverina tamin'ny rafitra misy fiaramanidina roa. Hifikitra amin'ireto ohatra ireto isika satria ho mora kokoa ny mahita ny zava-mitranga amin'ny ampahany kely mihetsika. Avelao ny X11 harary. Inona no mety ho fiantraikan'izany amin'ireo tolotra monina ao anatin'ny foibe angona? Miankina betsaka amin'ny tena endriky ny tsy fahombiazana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Raha tsara ny tsy fahombiazana, dia tratra amin'ny haavon'ny automation amin'ny BFD mitovy, ny automation dia mametraka amim-pifaliana ny tonon-taolana ary manasaraka ny olana, dia tsara ny zava-drehetra. Manana lalana maro isika, averina avy hatrany amin'ny lalana hafa ny fifamoivoizana, ary tsy hahatsikaritra na inona na inona ny serivisy. Ity dia script tsara.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ny scenario ratsy dia raha manana fatiantoka tsy tapaka isika, ary tsy mahatsikaritra ny olana ny automation. Mba hahatakarana ny fiantraikan'izany amin'ny fampiharana iray, dia mila mandany fotoana kely hiresahana ny fomba fiasan'ny TCP isika.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Manantena aho fa tsy manaitra na iza na iza amin'ity vaovao ity: TCP dia protocol fanamafisana ny fandefasana. Izany hoe, amin'ny tranga tsotra indrindra, ny mpandefa dia mandefa fonosana roa ary mahazo ack mitambatra amin'izy ireo: "Nahazo fonosana roa aho."
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Aorian’izay dia handefa fonosana roa indray izy, ary hiverina indray ny toe-javatra. Miala tsiny mialoha amin'ny fanatsorana. Marina io scenario io raha roa ny varavarankely (ny isan'ny fonosana amin'ny sidina). Mazava ho azy fa amin'ny tranga ankapobeny dia tsy voatery ho izany. Saingy ny haben'ny varavarankely dia tsy misy fiantraikany amin'ny tontolon'ny fandefasana entana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no mitranga raha very packet 3 isika? Amin'ity tranga ity, ny mpandray dia hahazo fonosana 1, 2 ary 4. Ary hilaza amin'ny mpandefa amin'ny alΓ lan'ny safidy SACK izy: "Fantatrao fa tonga ny telo, fa very ny afovoany." Hoy izy: "Ack 2, SACK 4."
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ny mpandefa amin'izao fotoana izao tsy misy olana dia mamerina ny fonosana very.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Fa raha very ny fonosana farany eo amin'ny varavarankely, dia ho hafa tanteraka ny toe-javatra.

Ny mpandray dia mahazo ny fonosana telo voalohany ary ny voalohany dia manomboka miandry. Noho ny fanatsarana sasany ao amin'ny TCP stack an'ny kernel Linux, dia hiandry fonosan-tsarimihetsika izy io raha tsy hoe ny saina no manondro mazava fa io no fonosana farany na zavatra mitovy. Hiandry mandra-pahatapitry ny fe-potoana fahatarana ny ACK ary avy eo mandefa fanekena amin'ireo fonosana telo voalohany. Fa izao dia hiandry ny mpandefa. Tsy fantany na very na efa ho tonga ilay fonosana fahefatra. Ary mba tsy hamenoana ny tambazotra, dia hiezaka hiandry famantarana mazava izy fa very ilay fonosana, na ho tapitra ny fe-potoana RTO.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no atao hoe RTO fe-potoana? Io no ambony indrindra amin'ny RTT kajy amin'ny TCP stack ary ny sasany tsy miova. Inona no atao hoe tsy miova, hodinihintsika izao.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Fa ny zava-dehibe dia raha tsy tsara vintana indray isika ka very indray ny fonosana fahefatra dia avo roa heny ny RTO. Izany hoe, isaky ny andrana tsy nahomby dia midika ho avo roa heny ny fe-potoana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Andeha hojerentsika hoe inona io fototra io. Amin'ny alΓ lan'ny default, ny RTO farafahakeliny dia 200 ms. Ity no RTO kely indrindra ho an'ny fonosana angona. Ho an'ny fonosana SYN dia hafa izany, 1 segondra. Araka ny hitanao, na ny andrana voalohany handefa indray ny fonosana aza dia haharitra 100 heny noho ny RTT ao anatin'ny foibe angona.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Andeha isika hiverina amin'ny scenario. Inona no mitranga amin'ny serivisy? Manomboka very fonosana ny serivisy. Avelao ny serivisy ho tsara vintana amin'ny voalohany ary very zavatra eo afovoan'ny varavarankely, dia mahazo SACK izy ary mandefa indray ireo fonosana very.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Fa raha miverimberina ny loza, dia manana RTO isika. Inona no zava-dehibe eto? Eny, manana lalana be dia be izahay ao amin'ny tambajotranay. Saingy ny fifamoivoizana TCP amin'ny fifandraisana TCP iray manokana dia hitohy amin'ny alΓ lan'ny stack tapaka mitovy. Ny fahaverezan'ny fonosana, raha toa ka tsy mivoaka ho azy ity X11 mahagaga ity, dia tsy mitarika fifamoivoizana amin'ny faritra tsy misy olana. Miezaka manatitra ny packet amin'ny alalan'ny stack tapaka mitovy izahay. Izany dia mitarika ho amin'ny tsy fahombiazan'ny cascading: ny foibe data dia andiana fampiharana mifandray, ary ny sasany amin'ireo fifandraisana TCP amin'ireo fampiharana rehetra ireo dia manomboka miharatsy - satria ny superspine dia misy fiantraikany amin'ny fampiharana rehetra misy ao anatin'ny foibe data. Hoy ny fitenenana hoe: raha tsy nanao kiraro ny soavaly dia lasa malemy ny soavaly; nalemy ny soavaly - tsy tonga ny tatitra; tsy tonga ny tatitra - resy tamin'ny ady izahay. Eto ihany ny fanisana dia ao anatin'ny segondra manomboka amin'ny fiposahan'ny olana ka hatrany amin'ny ambaratongan'ny fahasimbana izay manomboka mahatsapa ny serivisy. Midika izany fa mety tsy mahita zavatra any ho any ny mpampiasa.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Misy vahaolana mahazatra roa mifameno. Ny voalohany dia ny serivisy izay manandrana mametraka mololo sy mamaha ny olana toy izao: "Andao isika hanova zavatra ao amin'ny TCP stack. Andao hanao fe-potoana amin'ny ambaratonga fampiharana na fotoam-pivoriana TCP maharitra miaraka amin'ny fisavana ara-pahasalamana anatiny. " Ny olana dia ny vahaolana toy izany: a) tsy mivelatra mihitsy; b) tena tsy voamarina tsara. Izany hoe, na dia tsy nahy nanamboatra ny TCP stack aza ny serivisy amin'ny fomba izay mahatonga azy io ho tsara kokoa, voalohany, dia tsy azo ampiharina amin'ny fampiharana rehetra sy ny foibe data rehetra, ary faharoa, azo inoana fa tsy ho takany fa vita izany. marina, ary inona no tsy. Izany hoe, miasa izy io, saingy tsy miasa ary tsy mirefy. Ary raha misy olana amin'ny tambajotra, iza no omena tsiny? Mazava ho azy, NOC. Inona no ataon'ny NOC?

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Sampan-draharaha maro no mino fa amin'ny asa NOC dia misy zavatra toy izany. Fa raha ny marina, tsy izany ihany.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

NOC ao amin'ny rafitra klasika dia mirotsaka amin'ny famolavolana rafitra fanaraha-maso maro. Sady boaty mainty no fanaraha-maso boaty fotsy ireo. Momba ny ohatra iray momba ny fanaraha-maso ny hazondamosina boaty mainty NOTANTARAIN'I Alexander Klimenko tamin'ny Next Hop farany. Raha ny tokony ho izy dia miasa io fanaraha-maso io. Saingy na ny fanaraha-maso tsara indrindra aza dia hisy fahatarana ny fotoana. Matetika izany dia minitra vitsy. Aorian'ny fandehanana dia mila fotoana ny injeniera miasa mba hanamarinana indroa ny fiasan'izy io, hamaritana ny olana ary hamono ny faritra misy olana. Izany hoe, amin'ny tranga tsara indrindra, ny fitsaboana ny olana dia mila 5 minitra, amin'ny tranga ratsy indrindra, 20 minitra, raha tsy mazava tsara ny toerana misy ny fatiantoka. Mazava fa mandritra izany rehetra izany - 5 na 20 minitra - dia hitohy hijaly ny serivisy, izay mety tsy tsara.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no tena tianao horaisina? Manana fomba maro isika. Ary ny olana dia mipoitra marina satria ny TCP mikoriana izay tsy vintana dia manohy mampiasa lalana mitovy. Mila zavatra ahafahantsika mampiasa lalana maromaro ao anatin'ny fifandraisana TCP tokana. Toa manana vahaolana isika. Misy TCP, izay antsoina hoe multipath TCP, izany hoe, TCP ho an'ny lalana maro. Na izany aza, dia novolavolaina ho an'ny asa hafa tanteraka - ho an'ny finday izay manana fitaovana tambajotra maromaro. Mba hanamafisana ny fifindrana na ny fomba fiasa voalohany/backup, dia novolavolaina ny rafitra iray izay mamorona kofehy maromaro (sessions) mangarahara amin'ny fampiharana ary ahafahanao mifamadika eo amin'izy ireo raha misy tsy fahombiazana. Na, araka ny nolazaiko, ampitomboy ny tsipika.

Saingy misy nuance eto. Mba hahatakarana hoe inona izany, dia tsy maintsy mijery ny fomba fametrahana kofehy.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Apetraka misesy ny kofehy. Ny kofehy voalohany dia napetraka voalohany. Ny kofehy manaraka dia apetraka amin'ny fampiasana ny cookie izay efa nifanarahana tao anatin'io kofehy io. Ary izao ny olana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ny olana dia raha tsy tafapetraka ny kofehy voalohany dia tsy hipoitra mihitsy ny kofehy faharoa sy fahatelo. Izany hoe, multipath TCP dia tsy mamaha ny fahaverezan'ny fonosana SYN amin'ny fikorianan'ny voalohany. Ary raha very ny SYN dia mivadika TCP mahazatra ny multipath TCP. Midika izany fa amin'ny tontolon'ny ivotoerana data dia tsy hanampy antsika hamaha ny olan'ny fatiantoka ao amin'ny orinasa ary hianatra hampiasa lalana maro raha sendra ny tsy fahombiazana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no afaka manampy antsika? Ny sasany aminareo dia efa nieritreritra avy amin'ny lohateny fa sehatra iray manan-danja amin'ny tantarantsika fanampiny dia ny sahan'ny lohatenin'ny marika IPv6. Eny tokoa, sehatra izay miseho amin'ny v6, tsy ao amin'ny v4, mibodo 20 bits, ary efa nisy ny adihevitra momba ny fampiasana azy hatry ny ela. Tena mahaliana izany - nisy ny fifandirana, nisy zavatra raikitra tao anatin'ny RFC, ary tamin'izany fotoana izany dia nisy fampiharana niseho tao amin'ny kernel Linux, izay tsy voarakitra na aiza na aiza.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Manasa anao aho hiaraka amiko hanao fanadihadiana kely. Andeha hojerentsika ny zava-nitranga tao amin'ny kernel Linux tato anatin'ny taona vitsivitsy.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

taona 2014. Injeniera iray avy amin'ny orinasa lehibe iray sy hajaina dia manampy amin'ny fiasan'ny kernel Linux ny fiankinan'ny sandan'ny marika mikoriana amin'ny hash socket. Inona no tian'izy ireo hamboarina eto? Izany dia mifandray amin'ny RFC 6438, izay niresaka momba ity olana manaraka ity. Ao anatin'ny foibe data, matetika ny IPv4 dia voarakitra ao anaty fonosana IPv6, satria ny orinasa dia IPv6, fa ny IPv4 dia tsy maintsy omena any ivelany. Nandritra ny fotoana ela dia nisy olana tamin'ny switch izay tsy afaka mijery ny lohatenin'ny IP roa mba hahatongavana any amin'ny TCP na UDP ary hahita src_ports, dst_ports any. Hita fa ny hash, raha jerena ny lohatenin'ny IP roa voalohany, dia saika raikitra. Mba hisorohana an'izany, mba hahombiazan'ny fifandanjana amin'ity fifamoivoizana voarakitra ity, dia naroso ny hampidirana ny hash amin'ny fonosana 5-tuple voarakitra amin'ny sandan'ny saha marika mikoriana. Toy izany koa no natao ho an'ny tetika encapsulation hafa, ho an'ny UDP, ho an'ny GRE, ity farany dia nampiasa ny saha GRE Key. Na izany na tsy izany, mazava ny tanjona eto. Ary farafaharatsiny tamin'izany fotoana izany dia nahasoa azy ireo.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Tamin'ny taona 2015, nisy patch vaovao avy amin'io injeniera hajaina io ihany. Tena mahaliana izy. Izao manaraka izao no lazainy - dia hataontsika kisendrasendra ny hash raha sendra misy trangan-dΓ lana ratsy. Inona no atao hoe hetsika zotra ratsy? Ity ny RTO izay noresahinay teo aloha, izany hoe ny fahaverezan'ny rambon'ny varavarankely dia hetsika tena ratsy. Marina fa sarotra ny maminavina hoe iza no izy.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

2016, orinasa malaza iray hafa, lehibe ihany koa. Izy io dia manafoana ny tehina farany ary manao izany mba hiova ny hash, izay nataonay kisendrasendra teo aloha, ho an'ny fandefasana indray ny SYN tsirairay ary aorian'ny fiatoan'ny RTO tsirairay. Ary amin'ity taratasy ity, voalohany sy farany, no voalaza ny tanjona faratampony - mba hahazoana antoka fa ny fifamoivoizana raha misy fatiantoka na fitohanana fantsona dia afaka averina moramora sy mampiasa lalana maro. Mazava ho azy fa taorian'izany dia nisy zavatra vita an-tsoratra be dia be, afaka mahita azy ireo mora foana ianao.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Na dia tsia, tsy azonao atao, satria tsy mbola nisy famoahana na dia iray aza momba ity lohahevitra ity. Fa fantatsika!

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ary raha tsy azonao tsara izay natao dia holazaiko aminao izao.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no natao, inona no fiasa nampidirina tamin'ny kernel Linux? txhash dia miova ho sanda kisendrasendra aorian'ny hetsika RTO tsirairay. Izany no tena ratsy vokatry ny routing. Miankina amin'io txhash io ny hash, ary miankina amin'ny hash skb ny mari-pamantarana mikoriana. Misy kajy vitsivitsy momba ny asa eto; tsy azo apetraka amin'ny slide iray ny antsipiriany rehetra. Raha misy olona liana dia afaka mandeha amin'ny kaody kernel ianao ary manamarina.

Inona no zava-dehibe eto? Miova ho isa kisendrasendra aorian'ny RTO tsirairay ny sandan'ny saha marika mikoriana. Inona no fiantraikan'izany amin'ny stream TCP mampalahelo antsika?
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Raha sendra misy SACK dia tsy misy fiovana satria miezaka mamerina ny fonosana very fantatra izahay. Hatreto aloha dia mbola mety tsara.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Saingy amin'ny tranga RTO, raha toa ka nampiana mari-pamantarana mikoriana amin'ny fiasan'ny hash ao amin'ny ToR, dia mety handeha amin'ny lalana hafa ny fifamoivoizana. Ary arakaraky ny lalan-kely, dia vao mainka mety hahita lalana izay tsy misy fiantraikany amin'ny tsy fahombiazana amin'ny fitaovana iray manokana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Olana iray sisa - RTO. Mazava ho azy fa misy lalana hafa, saingy fotoana be no lany amin’izany. 200ms dia be. Ny faharoa dia tena bibidia. Teo aloha dia niresaka momba ny fotoana fiafaran'ny serivisy aho. Noho izany, ny faharoa dia fotoana fiatoana, izay matetika novolavolain'ny serivisy amin'ny haavon'ny fampiharana, ary amin'izany dia mety ho marina ny serivisy. Ambonin'izany, averiko indray, ny tena RTT ao anatin'ny foibe angona maoderina dia manodidina ny 1 milisegondra.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no azonao atao amin'ny fotoana fiafaran'ny RTO? Ny fe-potoana, izay tompon'andraikitra amin'ny RTO raha toa ka very ny fonosana angona, dia azo amboarina mora foana avy amin'ny habaka mpampiasa: misy fitaovana IP, ary ny iray amin'ireo masontsivanany dia misy rto_min mitovy. Raha jerena fa ny RTO, mazava ho azy, dia tsy maintsy avadika eran-tany, fa ho an'ny prefix nomena, ny mekanika toy izany dia toa azo ampiasaina.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Marina fa miaraka amin'ny SYN_RTO dia somary ratsy kokoa ny zava-drehetra. Voafantsika ho azy. Ny kernel dia manana sanda raikitra 1 segondra, ary izany no izy. Tsy afaka mankany ianao avy amin'ny habaka mpampiasa. Iray ihany ny lalana.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Tonga hamonjy ny eBPF. Raha tsorina dia programa kely C ireo. Azo ampidirina amin'ny hooks any amin'ny toerana samihafa izy ireo amin'ny fanatanterahana ny kernel stack sy ny TCP stack, izay ahafahanao manova ny toe-javatra maro be. Amin'ny ankapobeny, ny eBPF dia fironana maharitra. Raha tokony hanapaka am-polony ny masontsivana sysctl vaovao sy hanitarana ny fampitaovana IP, dia mandroso mankany amin'ny eBPF ny hetsika ary manitatra ny asany. Amin'ny fampiasana eBPF, azonao atao ny manova amin'ny fomba mavitrika ny fanaraha-maso ny fitohanana sy ireo fika TCP hafa.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Saingy zava-dehibe ho antsika ny azo ampiasaina hanovana ny soatoavina SYN_RTO. Ankoatra izany, misy ohatra navoakan'ny besinimaro: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Inona no natao teto? Ny ohatra dia miasa, fa amin'ny tenany ihany dia sarotra be. Eto dia heverina fa ao anatin'ny foibe data isika dia mampitaha ny 44 bits voalohany; raha mifanaraka izy ireo, dia ao anatin'ny foibe data isika. Ary amin'ity tranga ity dia manova ny sandan'ny SYN_RTO amin'ny 4ms. Ny asa mitovy dia azo atao amin'ny fomba kanto kokoa. Ity ohatra tsotra ity anefa dia mampiseho fa a) azo atao izany; b) somary tsotra.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no efa fantatsika? Ny zava-misy fa ny rafitra fiaramanidina mamela ny scaling, dia hita fa tena ilaina ho antsika rehefa mamela ny fikorianan'ny mari-pamantarana amin'ny ToR sy mahazo ny fahafahana mikoriana manodidina ny faritra misy olana. Ny fomba tsara indrindra hampihenana ny sanda RTO sy SYN-RTO dia ny fampiasana programa eBPF. Mipetraka ny fanontaniana: azo antoka ve ny mampiasa marika mikoriana mba hampifandanjana? Ary misy nuance eto.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Eritrereto hoe manana serivisy ao amin'ny tambajotrao ianao izay mipetraka amin'ny anycast. Indrisy anefa fa tsy manam-potoana hamantarana ny atao hoe anycast aho, fa serivisy zaraina miaraka amin'ireo mpizara ara-batana samihafa azo idirana amin'ny adiresy IP iray ihany. Ary izao ny olana mety hitranga: ny hetsika RTO dia mety hitranga tsy rehefa mandalo amin'ny lamba ny fifamoivoizana. Mety hitranga amin'ny haavon'ny buffer ToR ihany koa izany: rehefa misy hetsika incast dia mety hitranga amin'ny mpampiantrano mihitsy aza rehefa mandrotsaka zavatra ny mpampiantrano. Rehefa misy hetsika RTO ary manova ny mari-pamantarana mikoriana izany. Amin'ity tranga ity, ny fifamoivoizana dia afaka mankany amin'ny ohatra anycast hafa. Andeha hatao hoe anycast stateful ity, misy toetry ny fifandraisana - mety ho L3 Balancer na serivisy hafa. Avy eo dia misy olana, satria aorian'ny RTO dia tonga amin'ny mpizara ny fifandraisana TCP, izay tsy mahalala na inona na inona momba ity fifandraisana TCP ity. Ary raha tsy manana fifampizarana fanjakana eo amin'ireo mpizara anycast isika, dia ho tapaka ny fifamoivoizana toy izany ary ho tapaka ny fifandraisana TCP.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Inona no azonao atao eto? Ao anatin'ny tontolo fehezinao, izay ahafahanao mampifandanja ny mari-pamantarana mikoriana, mila mirakitra ny sandan'ny mari-pamantarana mikoriana ianao rehefa miditra amin'ireo mpizara anycast. Ny fomba tsotra indrindra dia ny manao izany amin'ny alΓ lan'ny programa eBPF mitovy. Saingy misy teboka iray tena manan-danja - inona no tokony hatao raha tsy miasa tambajotra ivotoerana data ianao, fa mpandraharaha telecom? Olanao ihany koa izany: manomboka amin'ny dikan-teny sasany amin'ny Juniper sy Arista, misy marika mikoriana ao amin'ny fiasan'ny hash azy ireo - am-pahatsorana, noho ny antony tsy mazava amiko. Mety hahatonga anao hanary ny fifandraisana TCP amin'ireo mpampiasa mandalo amin'ny tambajotranao izany. Noho izany dia manoro hevitra aho ny hanamarina ny firafitry ny router eto.

Amin'ny fomba iray na amin'ny fomba hafa, toa ahy fa vonona ny hiroso amin'ny fanandramana isika.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Rehefa navelanay ny mari-pamantarana mikoriana ao amin'ny ToR, nanomana ny eBPF agent, izay mipetraka amin'ny mpampiantrano ankehitriny, dia nanapa-kevitra izahay fa tsy hiandry ny tsy fahombiazana lehibe manaraka, fa hanao fipoahana voafehy. Nalainay ny ToR, izay misy rohy ambony efatra, ary nasianay tetezana tamin'ny iray tamin'izy ireo. Nanamboatra fitsipika izy ireo ary nilaza hoe - very ny fonosana rehetra ianao izao. Araka ny hitanao eo amin'ny ankavia dia misy ny fanaraha-maso isaky ny fonosana, izay nidina ho 75%, izany hoe very 25% ny fonosana. Eo ankavanana ny sarin'ny serivisy miaina ao ambadik'ity ToR ity. Amin'ny ankapobeny, ireo dia sarin'ny fifamoivoizana amin'ny serasera miaraka amin'ireo mpizara ao anaty fitoeran-jiro. Araka ny hitanao dia nilentika ambany kokoa izy ireo. Nahoana izy ireo no nidina ambany - tsy 25%, fa amin'ny tranga sasany in-3-4? Raha tsy tsara vintana ny fifandraisana TCP, dia manohy manandrana mamakivaky ny fihaonan-dΓ lana tapaka. Miharatsy izany noho ny fitondran-tena mahazatra amin'ny serivisy ao anatin'ny DC - ho an'ny fangatahan'ny mpampiasa iray, ny fangatahana N amin'ny serivisy anatiny dia avoaka, ary ny valiny dia mankany amin'ny mpampiasa na rehefa mamaly ny loharanom-baovao rehetra, na rehefa misy fe-potoana eo amin'ny fampiharana. ambaratonga, izay mbola mila amboarina. Izany hoe tena ratsy be ny zava-drehetra.
Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Andrana mitovy izao, fa miaraka amin'ny sandan'ny marika mikoriana. Araka ny hitanao, teo amin'ny ilany havia dia nihena 25% ihany ny fanaraha-maso ny andiany. Marina tanteraka izany, satria tsy mahalala na inona na inona momba ny retransmits izy, mandefa fonosana ary manisa fotsiny ny tahan'ny isan'ny entana naterina sy very.

Ary eo ankavanana ny fandaharam-potoanan'ny serivisy. Tsy ho hitanao eto ny vokatry ny fiaraha-miasa misy olana. Tao anatin'ireo milisegondra ireo ihany, nikoriana avy any amin'ny faritra misy olana ny fifamoivoizana mankany amin'ireo rohy telo sisa tavela izay tsy voakasik'ilay olana. Manana tambajotra manasitrana ny tenany isika.

Tambajotra manasitrana ny tenany: ny majika amin'ny Flow Label sy ny mpitsikilo manodidina ny kernel Linux. Yandex tatitra

Ity no sary farany nataoko, fotoana hamintinana. Ankehitriny, manantena aho fa fantatrao ny fomba hananganana tambajotra ivom-pamokarana manasitrana tena. Tsy mila mandeha amin'ny arsiva kernel Linux ianao ary mitady patch manokana any; fantatrao fa ny marika Flow amin'ity tranga ity dia mamaha ny olana, fa mila manatona tsara an'io mekanika io ianao. Ary manantitrantitra indray aho fa raha mpandraharaha amin'ny fifandraisan-davitra ianao dia tsy tokony hampiasa ny labels flow ho toy ny hash function, raha tsy izany dia hanelingelina ny fivorian'ny mpampiasa anao ianao.

Ny injenieran'ny tambajotra dia tsy maintsy mandalo fiovana ara-kevitra: ny tambajotra dia tsy manomboka amin'ny ToR, tsy amin'ny fitaovana tambajotra, fa amin'ny mpampiantrano. Ohatra iray tena manaitra ny fomba ampiasantsika ny eBPF mba hanovana ny RTO sy hanitsiana ny marika mikoriana mankany amin'ny serivisy anycast.

Ny mekanika marika fikoriana dia azo antoka fa mety amin'ny fampiharana hafa ao anatin'ny fizarana fitantanana voafehy. Mety ho fifamoivoizana eo anelanelan'ny foibe angon-drakitra izany, na azonao atao ny mampiasa mekanika toy izany amin'ny fomba manokana hitantana ny fifamoivoizana mivoaka. Saingy holazaiko aminao izany, manantena aho, amin'ny manaraka. Misaotra indrindra amin'ny fifantohanao.

Source: www.habr.com