To udbydere beskriver den samme servicelabel, og kun én af dem nævner en UDP-header. Forskellen er ikke kosmetisk: at lægge MPLS ind i UDP ændrer, hvad det ydre IP-netværk kan se, og dermed hvad det kan hashe på tværs af parallelle links. Det ændrer også, hvem der må implementere det.

Lagene er korte nok til at huske: ydre IP, derefter UDP, derefter MPLS-labelstakken, derefter servicepayloaden. Labelstakken forsvinder ikke; den bestemmer stadig videresendelsen ved det endepunkt, der genoptager label switching.

Hvad UDP-indpakningen tilføjer

RFC 7510 definerer denne indkapsling med UDP-destinationsport 6635 og bruger kildeportfeltet til at bære flowentropi. Den indkapslende enhed beslutter, hvad der tæller som et flow, og hvordan værdien udledes; standarden foreskriver bevidst ikke én bestemt hash. Det efterlader plads til leverandøradfærd, og det betyder, at to implementeringer kan producere forskellige fordelinger for den samme trafikmikstur. Læs værdien som et vink til underlaget, ikke som en routingbeslutning truffet af standarden.

Fordelen er indirekte. Et transitnetværk, der lastbalancerer på en ydre femling, har nu noget at hashe, hvor en nøgen MPLS-pakke måske kun tilbød det øverste label. Om det hjælper, afhænger af den platform, der udfører balanceringen, og af hvilke felter den faktisk tager hensyn til.

Entropi er ikke båndbredde

At fordele flows mere jævnt over de tilgængelige links er ikke det samme som at samle dem i én hurtigere vej. Et enkelt applikationsflow rejser stadig én vej, og per-flow-balancering kan ikke overstige kapaciteten af det link, det lander på. Mekanismen garanterer heller ikke jævn fordeling; den giver blot en hashfunktion bedre input.

Hold indpakningen stabil for et givet flow, medmindre omordning er acceptabel. Hvis kildeporten ændres per pakke, vil underlaget med glæde sprede én samtale over flere veje, og gensamling bliver applikationens problem. Konsistent entropi per flow er målet, ikke konstant nyhed.

Implementeringsgrænsen er en del af specifikationen

RFC 7510 begrænser implementering til én operatørs netværk eller til et tilstødende sæt af samarbejdende operatører, med trafik styret så congestion undgås. Den kræver også filtrering, der forhindrer indkapslet trafik i at undslippe det domæne. Det er ikke dekorative betingelser; de følger af, at indkapslingen ikke tilføjer sin egen sikkerhed. Behandl dem som forudsætninger for en legitim implementering, ikke som forslag i et designnotat.

Intet i UDP-headeren autentificerer afsenderen, og intet i den giver fortrolighed eller integritet for payloaden. Hvis trafikken har brug for beskyttelse, kommer den fra en separat mekanisme med sin egen nøglehåndtering. Valget af MPLS-in-UDP opgraderer ikke tillidsmodellen.

Vær opmærksom på, hvad beskyttelse gør ved den hashing, du ønskede

Tilføj IPsec eller en anden sikkerhedsindkapsling, og den ydre header, som transit enheder hasher, kan ændre form fuldstændigt. Tunnel-tilstand kan skjule den indre UDP-kildeport bag en ny ydre header, hvilket betyder, at den entropi, du omhyggeligt har leveret, muligvis ikke er synlig der, hvor balanceringen sker. Først kryptere og derefter indkapsle er et andet design end den omvendte rækkefølge, og forskellen viser sig som et link, der bærer langt mere trafik end dets naboer.

Vurder den komplette pakke, som den fremstår på kablet, ikke kun det lag, standarden beskriver. Det er også her, MTU og endepunktskapacitet skal overvejes igen, fordi en UDP-header plus enhver sikkerhedsoverhead reducerer den payload, der kan være.

Beslut med hele vejen i syne

Sammenlign MPLS-in-UDP med alternativer som GRE ud fra de kriterier, der betyder noget for dit netværk: hvilke felter underlaget balancerer på, hvor meget overhead du har råd til, hvilken sikkerhedsindpakning der kræves, og om domænegrænsen kan håndhæves. At tilskrive det en ubetinget ydeevnefordel over GRE er en konklusion, som standarderne ikke understøtter.

Test derefter med rigtige trafikmiksturer, og kontroller linkudnyttelsen per medlem, fordi en hash, der ser god ud i et laboratorium, kan kollapse på ét link, når alle flows deler en tuple. Den ærlige opsummering er, at indkapslingen blotlægger information, som underlaget kan bruge, inden for et domæne, der har accepteret at styre den.

Relaterede artikler