Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Niaj hnub nimno cov chaw zov me nyuam muaj ntau pua cov khoom siv ua haujlwm tau teeb tsa, suav nrog ntau hom kev saib xyuas. Tab sis txawm tias tus kws tshaj lij zoo tshaj plaws nrog kev saib xyuas zoo tshaj plaws hauv tes yuav tuaj yeem ua kom raug rau lub network tsis ua haujlwm hauv ob peb feeb xwb. Hauv tsab ntawv tshaj tawm ntawm Lub Rooj Sib Tham Tom ntej Hop 2020, kuv tau nthuav tawm DC network tsim qauv, uas muaj qhov tshwj xeeb - cov ntaub ntawv chaw kho nws tus kheej hauv milliseconds. Ntau precisely, tus engineer calmly kho qhov teeb meem, thaum cov kev pab cuam tsuas tsis pom nws.

- Pib nrog, Kuv yuav muab cov lus qhia ntxaws ntxaws rau cov neeg uas yuav tsis paub txog cov qauv ntawm DC niaj hnub no.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Rau ntau tus engineers network, cov ntaub ntawv chaw network pib, tau kawg, nrog ToR, nrog rau kev hloov hauv khib. ToR feem ntau muaj ob hom kev sib txuas. Cov me me mus rau cov servers, lwm tus - muaj N lub sij hawm ntau dua ntawm lawv - mus rau cov leeg ntawm thawj theem, uas yog, rau nws cov uplinks. Uplinks feem ntau suav tias yog sib npaug, thiab kev khiav tsheb ntawm uplinks yog sib npaug raws li tus hash los ntawm 5-tuple, uas suav nrog proto, src_ip, dst_ip, src_port, dst_port. Tsis muaj surprises ntawm no.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tom ntej no, lub hom phiaj architecture zoo li cas? Spines ntawm thawj theem tsis txuas rau ib leeg, tab sis txuas nrog los ntawm superspines. Tsab ntawv X yuav ua lub luag haujlwm rau superspines; nws yuav luag zoo li kev sib txuas.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Thiab nws yog qhov tseeb tias, ntawm qhov tod tes, tori txuas nrog txhua tus txha nraub qaum ntawm thawj qib. Dab tsi yog qhov tseem ceeb hauv daim duab no? Yog tias peb muaj kev sib cuam tshuam hauv lub khib, ces qhov kev sib cuam tshuam, ntawm chav kawm, mus ntawm ToR. Yog hais tias qhov kev sib cuam tshuam tshwm sim hauv lub module, ces kev sib cuam tshuam tshwm sim los ntawm thawj theem spines. Yog tias qhov kev sib cuam tshuam yog intermodular - raws li ntawm no, ToR 1 thiab ToR 2 - tom qab ntawd kev sib cuam tshuam yuav dhau los ntawm cov leeg ntawm ob theem thawj thiab thib ob.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Nyob rau hauv kev xav, xws li ib tug architecture yog yooj yim scalable. Yog tias peb muaj qhov chaw nres nkoj muaj peev xwm, qhov chaw seem hauv cov ntaub ntawv chaw thiab pre-ntev fiber ntau, ces tus naj npawb ntawm txoj kab tuaj yeem nce ntxiv, yog li ua kom tag nrho lub peev xwm ntawm lub cev. Qhov no yooj yim heev ua rau ntawm daim ntawv. Nws yuav zoo li no hauv lub neej. Tab sis niaj hnub no tsis yog hais txog qhov ntawd.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Kuv xav kom cov lus xaus raug kos. Peb muaj ntau txoj hauv kev hauv cov ntaub ntawv chaw. Lawv yog conditionally ywj siab. Ib txoj hauv kev hauv cov ntaub ntawv chaw tsuas yog ua tau hauv ToR. Nyob rau hauv lub module, peb muaj tus naj npawb ntawm txoj kev sib npaug ntawm cov kab. Tus naj npawb ntawm txoj kev ntawm cov modules yog sib npaug ntawm cov khoom ntawm cov dav hlau thiab tus naj npawb ntawm superspine hauv txhua lub dav hlau. Txhawm rau ua kom pom tseeb, kom tau txais kev nkag siab ntawm qhov ntsuas, kuv yuav muab cov lej siv tau rau ib qho ntawm Yandex cov chaw zov me nyuam.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Muaj yim lub dav hlau, txhua lub dav hlau muaj 32 superspines. Yog li ntawd, nws hloov tawm tias muaj yim txoj hauv kev hauv lub module, thiab nrog kev sib cuam tshuam intermodule muaj 256 ntawm lawv.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Ntawd yog, yog tias peb tab tom tsim Cookbook, sim kawm yuav ua li cas los tsim cov ntaub ntawv tsis raug cai uas kho lawv tus kheej, ces cov qauv tsim qauv yog qhov kev xaiv. Nws daws qhov teeb meem scaling, thiab hauv txoj kev xav nws yooj yim. Muaj ntau txoj kev ywj pheej. Cov lus nug tseem: yuav ua li cas xws li ib tug architecture muaj sia nyob tsis ua hauj lwm? Muaj ntau yam ua tsis tiav. Thiab peb yuav tham txog qhov no tam sim no.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Cia ib tug ntawm peb superspine "tau mob". Ntawm no kuv rov qab mus rau ob lub dav hlau architecture. Peb mam li lo nrog cov no ua piv txwv vim tias nws yuav yooj yim dua kom pom dab tsi tshwm sim nrog tsawg dua qhov txav. Cia X11 mob. Qhov no yuav cuam tshuam li cas rau cov kev pabcuam uas nyob hauv cov chaw khaws ntaub ntawv? Ntau yam nyob ntawm seb qhov ua tsis tiav tiag tiag zoo li cas.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Yog tias qhov ua tsis tiav yog qhov zoo, nws raug ntes ntawm qhov automation theem ntawm tib BFD, lub automation zoo siab tso cov teeb meem pob qij txha thiab cais qhov teeb meem, ces txhua yam zoo. Peb muaj ntau txoj hauv kev, tsheb khiav tam sim ntawd rov qab mus rau lwm txoj kev, thiab cov kev pabcuam yuav tsis pom dab tsi. Qhov no yog ib tsab ntawv zoo.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Qhov xwm txheej phem yog tias peb muaj qhov poob tas li, thiab lub tshuab hluav taws xob tsis pom qhov teeb meem. Txhawm rau nkag siab tias qhov no cuam tshuam li cas rau daim ntawv thov, peb yuav tau siv sijhawm me ntsis los tham txog seb TCP ua haujlwm li cas.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Kuv vam tias kuv tsis poob rau leej twg nrog cov ntaub ntawv no: TCP yog qhov kev lees paub kev sib kis. Ntawd yog, hauv qhov yooj yim tshaj plaws, tus neeg xa khoom xa ob pob ntawv thiab tau txais ib daim ntawv sau rau ntawm lawv: "Kuv tau txais ob pob ntawv."
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tom qab ntawd, nws yuav xa ob pob ntawv ntxiv, thiab qhov xwm txheej yuav rov ua dua. Kuv thov txim ua ntej rau qee qhov yooj yim. Qhov xwm txheej no yog qhov tseeb yog tias lub qhov rais (tus naj npawb ntawm cov pob ntawv hauv davhlau) yog ob. Ntawm chav kawm, nyob rau hauv cov ntaub ntawv no tsis yog tas li. Tab sis qhov loj qhov rais tsis cuam tshuam rau pob ntawv xa mus rau cov ntsiab lus.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Yuav ua li cas yog tias peb poob pob ntawv 3? Hauv qhov no, tus neeg txais yuav tau txais pob ntawv 1, 2 thiab 4. Thiab nws yuav qhia meej rau tus neeg xa khoom siv qhov kev xaiv SACK: "Koj paub, peb tuaj txog, tab sis qhov nruab nrab poob lawm." Nws hais tias, "Ack 2, SACK 4."
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Lub sijhawm no, tus neeg xa ntawv yam tsis muaj teeb meem rov ua dua raws nraim lub pob ntawv uas ploj lawm.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tab sis yog tias lub pob ntawv kawg hauv lub qhov rais ploj, qhov xwm txheej yuav zoo li txawv kiag li.

Tus neeg txais tau txais thawj peb pob ntawv thiab thawj zaug pib tos. Ua tsaug rau qee qhov kev ua kom zoo dua qub hauv Linux ntsiav TCP pawg, nws yuav tos rau ib pob ntawv sib koom tshwj tsis yog cov chij qhia meej meej tias nws yog pob ntawv kawg lossis qee yam zoo sib xws. Nws yuav tos kom txog thaum Lub Sijhawm ACK Ncua Sijhawm tas sijhawm thiab tom qab ntawd xa daim ntawv lees paub rau thawj peb pob ntawv. Tab sis tam sim no tus xa yuav tos. Nws tsis paub tias lub pob thib plaub puas tau ploj lawm los yog yuav los txog. Thiab txhawm rau kom tsis txhob overload lub network, nws yuav sim tos kom pom tseeb tias pob ntawv ploj lawm, lossis rau lub sijhawm RTO kom tas sijhawm.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

RTO timeout yog dab tsi? Qhov no yog qhov siab tshaj plaws ntawm RTT xam los ntawm TCP pawg thiab qee qhov tas li. Yuav ua li cas tsis tu ncua qhov no, peb tam sim no yuav tham txog.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tab sis qhov tseem ceeb yog tias yog tias peb tsis muaj hmoo dua thiab lub pob ntawv thib plaub tau ploj lawm, ces RTO ob npaug. Qhov ntawd yog, txhua qhov kev sim ua tsis tiav txhais tau tias ua ob npaug rau lub sijhawm.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tam sim no cia saib seb lub hauv paus no sib npaug li cas. Los ntawm lub neej ntawd, qhov tsawg kawg nkaus RTO yog 200 ms. Qhov no yog qhov tsawg kawg nkaus RTO rau cov ntaub ntawv pob. Rau SYN pob ntawv nws txawv, 1 thib ob. Raws li koj tuaj yeem pom, txawm tias thawj zaug sim xa cov pob ntawv yuav siv sijhawm 100 lub sijhawm ntev dua li RTT hauv cov ntaub ntawv chaw.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tam sim no cia peb rov qab mus rau peb qhov xwm txheej. Dab tsi tshwm sim nrog kev pabcuam? Qhov kev pabcuam pib poob pob ntawv. Cia qhov kev pabcuam muaj hmoo thaum xub thawj thiab poob qee yam hauv nruab nrab ntawm lub qhov rais, tom qab ntawd nws tau txais SACK thiab rov xa cov pob ntawv uas ploj lawm.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tab sis yog tias hmoov tsis zoo rov ua dua nws tus kheej, ces peb muaj RTO. Dab tsi tseem ceeb ntawm no? Yog, peb muaj ntau txoj hauv kev hauv peb lub network. Tab sis TCP kev khiav tsheb ntawm ib qho kev sib txuas TCP yuav txuas ntxiv mus los ntawm tib pawg tawg. Cov pob ntawv poob, yog tias qhov no tej yam yees siv X11 ntawm peb tsis tawm ntawm nws tus kheej, tsis ua rau cov tsheb khiav mus rau thaj chaw uas tsis muaj teeb meem. Peb tab tom sim xa cov pob ntawv los ntawm tib pawg tawg. Qhov no ua rau muaj qhov tsis ua tiav: lub chaw khaws ntaub ntawv yog cov txheej txheem kev sib cuam tshuam, thiab qee qhov kev sib txuas ntawm TCP ntawm tag nrho cov ntawv thov no pib degrade - vim tias superspine cuam tshuam rau txhua daim ntawv thov uas muaj nyob hauv cov ntaub ntawv chaw. Raws li cov lus hais tias: Yog tias koj tsis khau nees, tus nees mus ceg tawv; tus nees mus ceg tawv - daim ntawv qhia tsis tau xa; tsab ntawv ceeb toom tsis tau xa - peb poob tsov rog. Tsuas yog ntawm no suav yog nyob rau hauv vib nas this los ntawm lub sijhawm qhov teeb meem tshwm sim mus rau theem ntawm degradation uas cov kev pabcuam pib xav. Qhov no txhais tau hais tias cov neeg siv yuav ploj mus ntawm qee qhov chaw.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Muaj ob txoj kev daws teeb meem classic uas ua tiav ib leeg. Thawj yog cov kev pabcuam uas sim muab cov straws rau hauv thiab daws qhov teeb meem zoo li no: β€œCia peb tweak qee yam hauv TCP pawg. Cia peb ua lub sijhawm nyob rau theem ntawm daim ntawv thov lossis TCP lub sijhawm ntev nrog kev kuaj mob sab hauv. " Qhov teeb meem yog tias cov kev daws teeb meem zoo li no: a) tsis suav nrog; b) raug kuaj xyuas tsis zoo. Ntawd yog, txawm tias qhov kev pabcuam yuam kev teeb tsa TCP pawg hauv txoj hauv kev uas ua rau nws zoo dua, thawj zaug, nws tsis zoo li yuav siv tau rau txhua daim ntawv thov thiab tag nrho cov chaw khaws ntaub ntawv, thiab qhov thib ob, feem ntau, nws yuav tsis nkag siab tias nws tau ua tiav. kom raug, thiab qhov tsis yog. Ntawd yog, nws ua haujlwm, tab sis nws ua haujlwm tsis zoo thiab tsis ntsuas. Thiab yog tias muaj teeb meem hauv network, leej twg yuav liam? Yog lawm, NOC. NOC ua dab tsi?

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Ntau qhov kev pabcuam ntseeg tias hauv NOC ua haujlwm tshwm sim qee yam zoo li no. Tab sis kom ncaj ncees, tsis yog li ntawd xwb.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

NOC nyob rau hauv cov txheej txheem classical yog koom nrog kev txhim kho ntawm ntau yam kev saib xyuas. Cov no yog ob lub thawv dub thiab lub thawv dawb saib xyuas. Hais txog ib qho piv txwv ntawm kev saib xyuas tus txha nraub qaum dub hais Alexander Klimenko ntawm lub xeem Next Hop. Los ntawm txoj kev, qhov kev soj ntsuam no ua haujlwm. Tab sis txawm tias kev saib xyuas zoo tshaj plaws yuav muaj lub sijhawm lag luam. Feem ntau qhov no yog ob peb feeb. Tom qab nws tawm mus, cov engineers ntawm lub luag haujlwm xav tau sijhawm los kuaj xyuas nws cov haujlwm, kho qhov teeb meem thiab tom qab ntawd tua qhov teeb meem ntawm thaj chaw. Ntawd yog, qhov zoo tshaj plaws, kho qhov teeb meem yuav siv li 5 feeb, qhov phem tshaj plaws, 20 feeb, yog tias nws tsis pom tseeb tam sim ntawd qhov kev poob tshwm sim. Nws yog qhov tseeb tias txhua lub sijhawm no - 5 lossis 20 feeb - peb cov kev pabcuam tseem yuav raug kev txom nyem, uas tej zaum tsis zoo.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Koj xav tau dab tsi tiag tiag? Peb muaj ntau txoj kev. Thiab cov teeb meem tshwm sim meej vim tias TCP ntws uas tsis muaj hmoo txuas ntxiv mus siv tib txoj kev. Peb xav tau qee yam uas yuav tso cai rau peb siv ntau txoj hauv kev hauv ib qho kev sib txuas TCP. Nws yuav zoo li tias peb muaj kev daws teeb meem. Muaj TCP, uas yog hu ua multipath TCP, uas yog, TCP rau ntau txoj kev. Muaj tseeb, nws tau tsim los rau txoj haujlwm sib txawv kiag li - rau cov xov tooj smartphones uas muaj ntau lub network. Txhawm rau kom muaj kev hloov pauv ntau tshaj plaws lossis ua hom thawj / thaub qab, ib lub tswv yim tau tsim los tsim ntau cov xov (sessions) pob tshab rau daim ntawv thov thiab tso cai rau koj hloov ntawm lawv thaum muaj kev ua tsis tiav. Los yog, raws li kuv tau hais, ua kom lub zog loj tshaj plaws.

Tab sis muaj ib tug nuance ntawm no. Yuav kom nkag siab tias nws yog dab tsi, peb yuav tsum tau saib seb cov threads raug tsim li cas.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Cov xov yog ntsia tau raws li qhov xav tau. Thawj xov yog ntsia ua ntej. Cov xov tom ntej no tau teeb tsa siv lub ncuav qab zib uas twb tau pom zoo rau hauv cov xov ntawd. Thiab ntawm no yog qhov teeb meem.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Qhov teeb meem yog tias thawj xov tsis tsim nws tus kheej, cov xov thib ob thiab thib peb yuav tsis tshwm sim. Ntawd yog, multipath TCP tsis daws qhov poob ntawm SYN pob ntawv hauv thawj ndlwg. Thiab yog tias SYN ploj lawm, multipath TCP hloov mus rau TCP li niaj zaus. Qhov no txhais tau hais tias nyob rau hauv ib puag ncig cov ntaub ntawv nws yuav tsis pab peb daws qhov teeb meem ntawm kev poob hauv lub Hoobkas thiab kawm siv ntau txoj hauv kev thaum muaj kev ua tsis tiav.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Dab tsi tuaj yeem pab tau peb? Qee tus ntawm koj twb tau twv los ntawm lub npe tias qhov chaw tseem ceeb hauv peb zaj dab neeg ntxiv yuav yog IPv6 flow label header field. Tseeb tiag, qhov no yog daim teb uas tshwm nyob rau hauv v6, nws tsis yog nyob rau hauv v4, nws occupies 20 khoom, thiab tau muaj kev sib cav txog nws siv tau ntev. Qhov no yog qhov nthuav heev - muaj kev tsis sib haum xeeb, ib yam dab tsi tau kho nyob rau hauv RFC, thiab tib lub sij hawm ib qho kev siv tau tshwm sim hauv Linux ntsiav, uas tsis tau sau tseg nyob qhov twg.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Kuv caw koj nrog kuv mus tshawb nrhiav me ntsis. Cia peb saib seb muaj dab tsi tshwm sim hauv Linux kernel nyob rau ob peb xyoos dhau los.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

xyoo 2014. Ib tus kws tshaj lij los ntawm ib lub tuam txhab loj thiab muaj kev hwm ntxiv rau kev ua haujlwm ntawm Linux ntsiav qhov kev vam khom ntawm cov ntawv sau nqi ntawm lub qhov (socket hash). Lawv sim kho dab tsi ntawm no? Qhov no muaj feem xyuam rau RFC 6438, uas tau tham txog cov teeb meem hauv qab no. Nyob rau hauv cov ntaub ntawv chaw, IPv4 feem ntau encapsulated nyob rau hauv IPv6 pob ntawv, vim hais tias lub Hoobkas nws tus kheej yog IPv6, tab sis IPv4 yuav tsum tau muab rau sab nraud. Rau lub sijhawm ntev muaj teeb meem nrog cov keyboards uas tsis tuaj yeem saib hauv qab ob tus IP headers mus rau TCP lossis UDP thiab nrhiav src_ports, dst_ports nyob ntawd. Nws tau muab tawm tias tus hash, yog tias koj saib thawj ob tus IP headers, tig tawm yuav luag tas. Txhawm rau zam qhov no, txhawm rau ntsuas qhov kev sib tw ntawm cov tsheb thauj mus los no ua haujlwm raug, nws tau thov kom ntxiv cov hash ntawm 5-tuple encapsulated pob ntawv rau tus nqi ntawm cov ntawv sau ua haujlwm. Kwv yees li qhov qub tau ua rau lwm cov txheej txheem encapsulation, rau UDP, rau GRE, tom kawg siv GRE Key teb. Ib txoj kev lossis lwm qhov, cov hom phiaj ntawm no yog qhov tseeb. Thiab tsawg kawg ntawm lub sijhawm ntawd lawv tau pab tau.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Nyob rau hauv 2015, ib thaj tshiab los ntawm tib tus kws ua haujlwm hwm. Nws yog qhov nthuav heev. Nws hais tias cov hauv qab no - peb yuav randomize lub hash nyob rau hauv cov ntaub ntawv ntawm ib tug tsis zoo routing tshwm sim. Dab tsi yog qhov kev tshwm sim tsis zoo? Qhov no yog RTO uas peb tau tham ua ntej, uas yog, qhov poob ntawm tus Tsov tus tw ntawm lub qhov rais yog ib qho kev tshwm sim uas tsis zoo tiag tiag. Muaj tseeb, nws yog qhov nyuaj rau kwv yees tias qhov no yog nws.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

2016, lwm lub tuam txhab muaj koob npe, kuj loj. Nws disassembles lub xeem crutches thiab ua rau nws kom cov hash, uas peb yav tas los ua random, tam sim no hloov rau txhua SYN retransmission thiab tom qab txhua RTO timeout. Thiab nyob rau hauv tsab ntawv no, thawj zaug thiab zaum kawg, lub hom phiaj kawg tau hais tseg - txhawm rau xyuas kom meej tias kev tsheb khiav hauv qhov xwm txheej ntawm kev poob lossis kev sib tsoo channel muaj peev xwm ua kom maj mam rov ua dua thiab siv ntau txoj hauv kev. Tau kawg, tom qab qhov no muaj ntau qhov kev tshaj tawm, koj tuaj yeem pom lawv yooj yim.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Txawm hais tias tsis yog, koj ua tsis tau, vim tsis tau muaj ib qho kev tshaj tawm ntawm lub ncauj lus no. Tab sis peb paub!

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Thiab yog tias koj tsis nkag siab qhov ua tiav, kuv yuav qhia koj tam sim no.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Dab tsi ua tiav, dab tsi ua haujlwm tau ntxiv rau Linux kernel? Txhuash hloov mus rau tus nqi random tom qab txhua qhov kev tshwm sim RTO. Qhov no yog qhov tshwm sim tsis zoo ntawm kev routing. Lub hash nyob ntawm qhov no zoosh, thiab cov ntawv ntws ntws nyob ntawm skb hash. Muaj qee qhov kev suav ntawm cov haujlwm ntawm no; tag nrho cov ntsiab lus tsis tuaj yeem muab tso rau ntawm ib qho swb. Yog tias leej twg xav paub, koj tuaj yeem mus dhau lub kernel code thiab tshawb xyuas.

Dab tsi tseem ceeb ntawm no? Tus nqi ntawm qhov ntws daim ntawv lo hloov pauv mus rau tus lej random tom qab txhua RTO. Qhov no cuam tshuam li cas rau peb cov dej tsis muaj TCP?
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Yog tias SACK tshwm sim, tsis muaj dab tsi hloov vim peb tab tom sim rov xa cov pob ntawv ploj uas paub. Txog tam sim no zoo.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tab sis nyob rau hauv rooj plaub ntawm RTO, yog tias peb tau ntxiv cov ntawv ntws mus rau qhov hash muaj nuj nqi ntawm ToR, cov tsheb yuav siv txoj kev sib txawv. Thiab ntau txoj kab, qhov ntau dua lub caij nyoog uas nws yuav pom txoj hauv kev uas tsis cuam tshuam los ntawm kev ua tsis tiav ntawm ib qho khoom siv tshwj xeeb.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Ib qho teeb meem tseem nyob - RTO. Ntawm chav kawm, muaj lwm txoj kev, tab sis ntau lub sij hawm yog nkim rau qhov no. 200 ms yog ntau. Ib tug thib ob yog kiag li qus. Yav dhau los, kuv tau tham txog lub sijhawm uas cov kev pabcuam raug teeb tsa. Yog li, qhov thib ob yog lub sijhawm, uas feem ntau yog teeb tsa los ntawm cov kev pabcuam ntawm qib kev thov, thiab hauv qhov no cov kev pabcuam yuav txawm raug. Ntxiv mus, kuv rov hais dua, qhov tiag RTT hauv ib lub chaw cov ntaub ntawv niaj hnub yog nyob ib ncig ntawm 1 millisecond.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Koj tuaj yeem ua li cas nrog RTO timeouts? Lub sijhawm ua haujlwm, uas yog lub luag haujlwm rau RTO thaum poob ntawm cov ntaub ntawv pob khoom, tuaj yeem teeb tsa tau yooj yim los ntawm cov neeg siv qhov chaw: muaj qhov siv hluav taws xob IP, thiab ib qho ntawm nws qhov tsis muaj tib yam rto_min. Xav txog tias RTO, ntawm chav kawm, yuav tsum tau hloov kho tsis yog thoob ntiaj teb, tab sis rau cov lus qhia ua ntej, xws li cov txheej txheem zoo li ua haujlwm tau zoo.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Muaj tseeb, nrog SYN_RTO txhua yam yog qhov phem me ntsis. Nws yog ib txwm nailed cia. Lub ntsiav muaj tus nqi tas li ntawm 1 thib ob, thiab qhov ntawd yog nws. Koj tuaj yeem ncav tsis tau los ntawm qhov chaw siv. Tsuas muaj ib txoj kev xwb.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

eBPF los cawm. Txhawm rau muab nws yooj yim, cov no yog cov kev pabcuam C me me, lawv tuaj yeem muab tso rau hauv hooks hauv qhov chaw sib txawv hauv kev ua tiav ntawm pawg pawg thiab TCP pawg, uas koj tuaj yeem hloov pauv ntau qhov chaw. Feem ntau, eBPF yog ib lub sijhawm ntev. Hloov chaw ntawm kev txiav kaum tawm ntawm sysctl tsis ntev los no thiab nthuav dav IP kev siv hluav taws xob, kev txav mus los ntawm eBPF thiab nthuav nws cov haujlwm. Siv eBPF, koj tuaj yeem hloov pauv kev tswj hwm kev tswj hwm thiab ntau lwm qhov chaw TCP.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tab sis nws yog ib qho tseem ceeb rau peb tias nws tuaj yeem siv los hloov SYN_RTO qhov tseem ceeb. Tsis tas li ntawd, muaj ib qho piv txwv tshaj tawm rau pej xeem: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Dab tsi tau ua ntawm no? Cov piv txwv ua haujlwm, tab sis hauv nws tus kheej yog qhov ntxhib heev. Ntawm no nws yog assumed tias nyob rau hauv cov ntaub ntawv chaw peb piv cov thawj 44 khoom; yog hais tias lawv phim, ces peb nyob rau hauv cov ntaub ntawv chaw. Thiab qhov no peb hloov SYN_RTO timeout tus nqi rau 4ms. Tib txoj hauj lwm yuav ua tau ntau elegantly. Tab sis qhov piv txwv yooj yim no qhia tau tias qhov no yog a) ua tau; b) kuj yooj yim.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Peb twb paub dab tsi? Qhov tseeb tias lub dav hlau architecture tso cai rau scaling, nws hloov tawm los ua ib qho tseem ceeb heev rau peb thaum peb tso cai rau cov flow daim ntawv lo ntawm ToR thiab tau txais lub peev xwm mus ntws nyob ib ncig ntawm cov teeb meem. Qhov zoo tshaj plaws los txo RTO thiab SYN-RTO qhov tseem ceeb yog siv eBPF cov kev pab cuam. Cov lus nug tseem tshuav: nws puas muaj kev nyab xeeb los siv daim ntawv qhia ntws los ntsuas? Thiab muaj ib tug nuance ntawm no.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Piv txwv tias koj muaj kev pabcuam hauv koj lub network uas nyob hauv anycast. Hmoov tsis zoo, kuv tsis muaj sijhawm los mus rau hauv kev nthuav dav txog dab tsi yog qhov twg, tab sis nws yog ib qho kev pabcuam faib nrog cov servers sib txawv siv tau los ntawm tib tus IP chaw nyob. Thiab ntawm no yog ib qho teeb meem tshwm sim: qhov kev tshwm sim RTO tuaj yeem tshwm sim tsis tau tsuas yog thaum cov tsheb hla ntawm cov ntaub. Nws kuj tseem tuaj yeem tshwm sim ntawm ToR tsis txwv: thaum muaj kev tshwm sim tshwm sim, nws tuaj yeem tshwm sim ntawm tus tswv tsev thaum tus tswv tsev nchuav ib yam dab tsi. Thaum ib qho kev tshwm sim RTO tshwm sim thiab nws hloov cov ntawv ntws. Hauv qhov no, kev khiav tsheb tuaj yeem mus rau lwm qhov piv txwv. Cia peb xav tias qhov no yog ib qho xwm txheej twg, nws muaj lub xeev kev sib txuas - nws tuaj yeem yog L3 Balancer lossis qee qhov kev pabcuam. Tom qab ntawd muaj teeb meem tshwm sim, vim tias tom qab RTO qhov kev sib txuas TCP tuaj txog ntawm lub server, uas tsis paub dab tsi txog qhov kev sib txuas TCP no. Thiab yog tias peb tsis muaj lub xeev sib koom ntawm cov servers ib qho twg, ces cov tsheb yuav raug muab tso tseg thiab TCP kev twb kev txuas yuav tawg.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Koj tuaj yeem ua dab tsi ntawm no? Nyob rau hauv koj qhov chaw tswj hwm, qhov twg koj qhib cov ntawv sau ntsuas ntsuas, koj yuav tsum sau tus nqi ntawm cov ntawv ntws thaum nkag mus rau anycast servers. Qhov yooj yim tshaj plaws yog ua qhov no los ntawm tib qhov kev pab cuam eBPF. Tab sis ntawm no yog ib qho tseem ceeb heev - yuav ua li cas yog tias koj tsis ua hauj lwm ib tug data center network, tab sis yog ib tug telecom neeg teb xov tooj? Qhov no yog koj qhov teeb meem ib yam nkaus: pib nrog qee qhov versions ntawm Juniper thiab Arista, lawv suav nrog cov ntawv ntws ntws hauv lawv cov hash ua haujlwm los ntawm lub neej ntawd - hais ncaj ncees, rau qhov tsis meej rau kuv. Qhov no yuav ua rau koj poob TCP kev sib txuas los ntawm cov neeg siv hla koj lub network. Yog li kuv pom zoo kom kuaj xyuas koj lub routers teeb tsa ntawm no.

Ib txoj kev lossis lwm qhov, zoo li kuv tias peb npaj siab mus rau qhov kev sim.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Thaum peb qhib cov ntawv sau rau ntawm ToR, npaj tus neeg sawv cev eBPF, uas tam sim no nyob rau ntawm cov tswv, peb txiav txim siab tsis tos rau qhov ua tsis tiav loj tom ntej, tab sis los tswj kev tawg. Peb coj ToR, uas muaj plaub qhov txuas ntxiv, thiab teeb tsa tee rau ib qho ntawm lawv. Lawv kos ib txoj cai thiab hais tias - tam sim no koj poob tag nrho cov pob ntawv. Raws li koj tuaj yeem pom ntawm sab laug, peb muaj kev soj ntsuam ib pob ntawv, uas tau nqis mus rau 75%, uas yog, 25% ntawm cov pob ntawv poob. Ntawm sab xis yog cov duab ntawm cov kev pabcuam nyob tom qab ToR no. Qhov tseem ceeb, cov no yog cov duab kos ntawm cov interfaces nrog cov servers hauv khib. Raws li koj tau pom, lawv poob qis dua. Vim li cas lawv poob qis - tsis yog los ntawm 25%, tab sis qee zaum los ntawm 3-4 zaug? Yog tias qhov kev sib txuas TCP tsis muaj hmoo, nws tseem sim mus txog los ntawm kev sib tshuam tawg. Qhov no yog qhov hnyav dua los ntawm tus cwj pwm ntawm cov kev pabcuam hauv DC - rau ib tus neeg siv thov, N thov rau cov kev pabcuam sab hauv raug tsim tawm, thiab cov lus teb yuav mus rau tus neeg siv txawm tias thaum tag nrho cov ntaub ntawv teb, lossis thaum lub sijhawm sijhawm tshwm sim ntawm daim ntawv thov theem, uas tseem yuav tsum tau configured. Ntawd yog, txhua yam yog qhov phem heev.
Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Tam sim no tib qhov kev sim, tab sis nrog tus nqi sau npe tau qhib. Raws li koj tuaj yeem pom, sab laug peb cov kev soj ntsuam batch poob los ntawm tib 25%. Qhov no yog qhov tseeb tiag, vim nws tsis paub dab tsi txog kev xa rov qab, nws xa cov pob ntawv thiab tsuas yog suav qhov piv ntawm tus naj npawb ntawm cov khoom xa tuaj thiab poob.

Thiab ntawm sab xis yog lub sijhawm ua haujlwm. Koj yuav tsis pom qhov cuam tshuam ntawm kev sib koom ua ke ntawm no. Hauv tib milliseconds, kev khiav tsheb khiav los ntawm thaj chaw teeb meem mus rau peb qhov txuas ntxiv uas tsis cuam tshuam los ntawm qhov teeb meem. Peb muaj lub network uas kho nws tus kheej.

Lub network uas kho nws tus kheej: cov khawv koob ntawm Flow Label thiab cov neeg tshawb nrhiav nyob ib puag ncig Linux kernel. Yandex qhia

Nov yog kuv daim swb kawg, lub sijhawm los piav qhia. Tam sim no, kuv vam tias koj paub yuav ua li cas los txhim kho tus kheej-kho cov ntaub ntawv chaw network. Koj yuav tsis tas yuav mus dhau ntawm Linux kernel archive thiab nrhiav thaj chaw tshwj xeeb nyob ntawd; koj paub tias Flow daim ntawv lo rau qhov no daws qhov teeb meem, tab sis koj yuav tsum tau ua tib zoo saib xyuas cov txheej txheem no. Thiab kuv hais ntxiv ib zaug ntxiv tias yog tias koj yog tus neeg siv xov tooj, koj yuav tsum tsis txhob siv cov ntawv sau ua haujlwm hash, txwv tsis pub koj yuav cuam tshuam koj cov neeg siv cov ntu.

Network engineers yuav tsum tau hloov pauv lub tswv yim: lub network pib tsis nrog ToR, tsis yog nrog lub network ntaus ntawv, tab sis nrog tus tswv tsev. Ib qho piv txwv zoo yog qhov peb siv eBPF ob qho tib si hloov RTO thiab kho cov ntawv ntws mus rau cov kev pabcuam twg.

Lub flow label mechanics yeej tsim nyog rau lwm yam kev siv nyob rau hauv qhov kev tswj xyuas ntu. Qhov no tuaj yeem yog kev khiav tsheb ntawm cov chaw khaws ntaub ntawv, lossis koj tuaj yeem siv cov tshuab ua haujlwm tshwj xeeb los tswj cov tsheb khiav tawm. Tab sis kuv yuav qhia koj txog qhov no, kuv vam tias, lwm zaus. Ua tsaug ntau rau koj mloog.

Tau qhov twg los: www.hab.com