Puncte:2

Ce înseamnă reducerea MSS cu 42?

drapel jp

Rulez mai multe VM-uri în Azure. VM-urile rulează într-o subrețea cu NSG. NIC-urile nu folosesc NSG-uri, nu folosim rețele accelerate.

Observ că atunci când un VM vorbește cu un alt VM din aceeași subrețea folosind TCP, valoarea MSS din pachetele SYN este redusă cu 42. Asta înseamnă că dacă trimit un TCP SYN cu MSS=876 către un alt VM din aceeași rețea, alt VM va captura un TCP SYN cu MSS=834:

Client:

18:49:27.526527 IP 10.56.142.25.49614 > 10.56.142.108.ssh: Flags [S], seq 3092614737, win 17520, options [mss 876,sack 876,sack length,sack 36020 val,sack 363020,seq 3092614737
18: 49: 27.528398 IP 10.56.142.108.ssh> 10.56.142.25.49614: steaguri [S.], SEQ 1710658781, ACK 3092614738, Win 28960, Opțiuni [MSS 1418, Sackok, TS Val 390195731 ECR 29362044 ], lungime 0
18:49:27.528430 IP 10.56.142.25.49614 > 10.56.142.108.ssh: Flags [.], ack 1, win 137, options [nop,nop,TS val 2936204425] 1957391 ecr lungime

Server:

18:49:27.527362 IP 10.56.142.25.49614 > 10.56.142.108.ssh: Flags [S], seq 3092614737, win 17520, options [mss 834,sack 834,sack length,sack 36020 val]
18: 49: 27.527682 IP 10.56.142.108.ssh> 10.56.142.25.49614: steaguri [S.], SEQ 1710658781, ACK 3092614738, Win 28960, Opțiuni [MSS 1460, Sackok, TS Val 390195731 ECR 29362044 ], lungime 0
18:49:27.529167 IP 10.56.142.25.49614 > 10.56.142.108.ssh: Flags [.], ack 1, win 137, options [nop,nop,TS val 2936204425] 1957391 ecr lungime

Folosim mai multe NVA-uri, iar pachetele noastre SYN călătoresc prin mai multe hopuri și, de fapt, vedem că MSS-ul este redus de mai multe ori, am măsurat inițial o reducere cu 84, am măsurat și o reducere de 138 în unele cazuri (de fapt, nu un multiplu de 42), asta înseamnă că reducem cu mai mult de 10% eficiența rețelei noastre.

Am petrecut ceva timp privind modul în care diverse aparate de rețea joacă cu MSS. În cele mai multe cazuri, MSS este setat la o valoare fixă, fiind fie fixat la o valoare statică, fie la calea MTU. PaloAlto va folosi o „ajustare” care este relativă la MTU a unei interfețe de rețea, care este o valoare fixă. Arista vă va permite să puneți o valoare plafon pentru traficul de intrare sau de ieșire, din nou valori absolute. Unii furnizori de firewall, cum ar fi PaloAlto, vor reduce MSS în cazul unui atac DoS și cookie-urile SYN sunt activate, dar MSS va fi una dintre cele 8 valori posibile în acest caz.

Cred că acest mecanism MSS -= 42 rupe TCP: dacă clientul acceptă cadre jumbo și trimite un MSS de 8860, serverul din Azure primește 8876, el însuși răspunde 1330, dar clientul primește 1246, clientul va fi de acord că pachetele ar trebui să aibă 1246 de octeți sarcină utilă, în timp ce serverul va trimite o sarcină utilă de 1330 de octeți.

Cea mai mare problemă este că avem cazuri în care traficul funcționează „din întâmplare”.Prinderea nu se face corect pe partea de rută expres, totuși din această cauză -42 ici și colo MSS se reduce efectiv la o valoare care „se potrivește”, până când există o ușoară schimbare în modul în care sunt rutate pachetele și descoperiți dintr-o dată că pe undeva a fost o configurație greșită.

Ai idee cum să explic această reducere? Cred că acest comportament nu este documentat nicăieri.


EDITAȚI | ×

Doar citind RFC879

MSS poate fi utilizat complet independent în fiecare direcție a fluxului de date. Rezultatul poate fi dimensiuni maxime destul de diferite în cele două direcții.

Deci, pare legal conform RFC. Totuși, un comportament ciudat.

Massimo avatar
drapel ng
Acest lucru m-a intrigat suficient de mult încât să îl testez prin crearea unei noi rețele virtuale și a diferitelor mașini virtuale cu diferite sisteme de operare Windows (2012R2, 2016, 2019) și WireShark. Aceeași rețea virtuală, aceeași subrețea, comunicare directă, fără rutare, fără firewall. Pot să confirm că acest lucru se întâmplă de fapt. Un VM trimite un SYN cu MSS 1460 iar celălalt primește un SYN cu MSS 1418. Al doilea răspunde trimițând un ACK cu MSS 1460 și primul primește un ACK cu MSS 1418.
Massimo avatar
drapel ng
Rețeaua Azure este bine cunoscută a fi destul de... *peculiar*. Dacă doriți un șoc real, aruncați o privire la tabelul ARP pe o VM Azure.
drapel cn
`Cred că acest mecanism MSS -= 42 rupe TCP`. Eu nu. Dar acest lucru ar fi ușor de testat și de furnizat date reale.
Ken W MSFT avatar
drapel gb
Acest lucru poate ajuta https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-tcpip-performance-tuning#tcp-mss-window-scaling-and-pmtud
Puncte:4
drapel in

Spre deosebire de rețelele fizice, rețelele SDN consumă „octeți” suplimentari pentru anteturile de încapsulare (GRE). IP-urile vizibile sunt CA (adresa clientului), dar există și PA (adresa furnizorului) care necesită rutare în furnizorul de cloud. Prin urmare, veți vedea mai puține MSS disponibile, deoarece furnizorul de cloud aplică o blocare TCP suplimentară în infra pentru ca rutarea backend să aibă loc.

Explicație CA-PA (hyper-V SDN)

https://docs.microsoft.com/en-us/windows-server/networking/sdn/technologies/hyper-v-network-virtualization/hyperv-network-virtualization-technical-details-windows-server

frigo avatar
drapel jp
Mulțumiri. Pentru pachetele care se potrivesc deja, de ce să se prindă din nou și din nou? Și pentru pachetele care nu se potrivesc, de ce ar ajuta reducerea cu 42? Cred că această reducere cu 42 este o soluție pentru a ține cont de MTU incorect (1500) - poate setarea unui MSS la 1418 este ceea ce preferă SDN-ul, în acest caz ar trebui setat la 1418 dacă este necesar și nu mai puțin.
frigo avatar
drapel jp
Accept acest răspuns pentru că răspunde la întrebarea „ce”, dar încă cred că este rupt.
drapel fr
Poate fi: 20 octeți de antet IPv4, 8 octeți de antet GRE (4 octeți obligatorii + 4 octeți opțional cu suma de control), 14 octeți de antet ethernet interior => oferind exact 42 de octeți.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.