INTEGRITY Dokumentace

Maximální přenosová jednotka a maximální velikost segmentu

Protože Magic Transit obaluje váš provoz do dalších hlaviček (enkapsulace), zmenšuje se v každém paketu prostor dostupný pro vaše původní data. Pokud s touto režií nepočítáte, mohou být pakety pro danou síťovou cestu příliš velké a budou zahozeny nebo fragmentovány, což vede ke ztrátě výkonu nebo k výpadkům spojení. Tato stránka vysvětluje dvě klíčové hodnoty, které je třeba nastavit: maximální přenosová jednotka (MTU) a maximální velikost segmentu (MSS).

MTU a MSS

maximální přenosová jednotka (MTU) ↗ je hodnota vyjadřující největší datový paket, který zařízení připojené k síti přijme. MTU se v síťové komunikaci téměř vždy vztahuje na vrstvu 3 modelu OSI (Open Systems Interconnection) a zahrnuje celý paket včetně všech hlaviček (Transmission Control Protocol (TCP), Internet Protocol (IP) atd.) i samotných dat (payloadu). Pakety například nesmí přesáhnout 1 500 bajtů, aby mohly být směrovány přes internet.

maximum segment size (MSS) ↗ označuje množství dat, které lze odeslat v jednom TCP datagramu. Tuto hodnotu určíte odečtením velikosti hlaviček IP a TCP od MTU, které routeru udává, jak velký může být payload. Vztahuje se na vrstvu 4 modelu OSI v síťování.

Jedním z běžných mylných představ o MSS/MTU je, že nastavení těchto hodnot negativně ovlivňuje výkon. Mírný dopad na výkon sice existuje, ale horší je tyto hodnoty nenastavit podle specifik vaší sítě.

Zapouzdření

Magic Transit využívá k doručování služeb zapouzdření. Proto je důležité chápat, proč v tomto kontextu záleží na MTU a MSS.

Zapouzdření zvětšuje paket o několik bajtů, protože Cloudflare přidává ke každému paketu novou hlavičku IP a (často) i určitou zapouzdřující hlavičku. Například v případě Generic Routing Encapsulation (GRE) pro Internet Protocol version 4 (IPv4) přidává zapouzdření 24 bajtů: 20 bajtů pro hlavičku IPv4 a 4 bajty pro tunelovou hlavičku GRE.

Síťové rozhraní, které provádí zapouzdření GRE, musí kvůli přidané režii snížit svou hodnotu MTU. Maximální velikost MTU je 1,500 bajtů, takže u IPv4 se MTU sníží na 1,476 bajtů (původních 1,500 bajtů minus 24 bajtů na zapouzdření GRE). Tato snížená hodnota MTU určuje maximální velikost paketu IP, který dokáže GRE zapouzdřit.

Fragmentace

Pokud je datový paket větší, než dokáže síťové rozhraní přijmout, musí ho síť buď zahodit, nebo rozdělit na menší pakety. Při fragmentaci Cloudflare přijímá pouze datové pakety, které dokáže kompletně znovu sestavit. Pokud některé fragmenty chybí, Cloudflare zahodí všechny přijaté fragmenty. Cloudflare nepředává neúplné pakety zákazníkovi.

Nastavení bitu do not fragment (DF) v hlavičce TCP na 1 znamená, že síť musí paket zahodit, a ne fragmentovat, pokud je větší než MTU, které dokážou přijmout mezilehlá síťová zařízení. Většina implementací TCP nastavuje bit DF na 1 a zabraňte potenciálním problémům způsobeným fragmentací.

Pokud řešíte problémy s fragmentací a nemůžete nastavit MSS clamp, Cloudflare za vás může vymazat bit DF. Po zapnutí této možnosti Cloudflare fragmentuje pakety větší než 1,500 bajtů a vaše infrastruktura je po dekapsulaci znovu sestaví. Použijte tuto možnost jen jako poslední řešení. Pro další informace kontaktujte svůj account team.

Fragmentace v Magic Transit

Uvažujme datagram UDP o velikosti 3,000 bajtů (8 bajtů pro hlavičku UDP + 2,992 bajtů pro data UDP). Aby se vešel do standardní MTU o velikosti 1,500 bajtů, byl by tento datagram UDP rozdělen do tří IP paketů následovně:

Diagram znázorňující datagram UDP a jeho jednotlivé části.

Předpokládejme, že datagram UDP má zdrojový port 389 a míří na IP adresu zákazníka Magic Transitu. Předpokládejme dále, že tento zákazník má nastavené pravidlo firewallu, které zahazuje UDP provoz se zdrojovým portem 389, společný Bezspojový protokol Lightweight Directory Access Protocol (CLDAP) ↗ vektor reflexního útoku.

Tři předchozí fragmenty paketu dorazí do Cloudflare, ale pouze první fragment obsahuje hlavičku UDP s informací o zdrojovém portu. Druhý a třetí fragment obsahují data UDP, ale neobsahují informace z hlavičky UDP.

Otázkou tedy je, které z těchto fragmentů Cloudflare zahazuje a které doručuje zákazníkovi. Pokud Cloudflare zahazuje pouze první části fragmentovaných paketů, zbývající části mohou při útoku typu Denial of Service (DoS) stále generovat velké množství provozu.

Jak Cloudflare zpracovává fragmenty

Následující diagram znázorňuje, jak tyto tři fragmenty UDP z předchozího příkladu procházejí sítí Cloudflare a Magic Transit. Hlavní poznatky jsou:

Ve všech případech Cloudflare odesílá zákazníkovi všechny fragmenty.

Diagram znázorňující, jak Cloudflare zpracovává fragmentaci.

omezování MSS

Maximální velikost segmentu (MSS) je nastavení TCP, které omezuje velikost TCP segmentů. Tuto hodnotu nastavují pakety SYN během třícestného handshake.

TCP endpoint ve výchozím nastavení nastavuje hodnotu MSS na základě MTU svého místního síťového rozhraní. Pokud je například u IPv4 MTU 1,500 bajtů, MSS bude 1,460 bajtů (1,500 bajtů minus 20 bajtů za hlavičku IPv4 minus 20 bajtů za hlavičku TCP).

MSS je nástroj, který můžete použít k nastavení chování velikosti paketů TCP. Pokud endpoint TCP leží za sítí se sníženou hodnotou MTU, změna hodnoty MSS tak, aby odpovídala skutečné hodnotě MTU dané cesty, donutí vzdálené endpointy odesílat pakety, které se vejdou do zadané MTU. Pokud tedy endpoint TCP IPv4 leží za tunelem GRE s MTU 1,476 bajtů, hodnota MSS v jeho paketech TCP SYN by měla být 1,436 bajtů, tedy 1,476 bajtů minus 20 bajtů za hlavičku IPv4 a minus 20 bajtů za hlavičku TCP.

Jedním ze způsobů úpravy nastavení MSS je změna MTU síťového rozhraní na WAN rozhraní routeru tak, aby odpovídalo cestovnímu MTU. Dalším způsobem úpravy MSS je použití MSS clamp, kdy nakonfigurujete zprostředkující síťové zařízení, například router, aby za provozu upravovalo TCP volbu MSS v procházejících paketech. Změna MTU na rozhraní zprostředkujícího síťového zařízení není totéž jako použití MSS clamp a hodnotu TCP MSS nemění.

Viz doporučení pro omezování MSS pro informace o tom, na jakou hodnotu nastavit MSS clamping podle typu tunelu.

MSS s Magic Transit a Direct Server Return

Asymetrické směrování ↗ je běžný scénář, zejména u Magic Transit. Příchozí provoz z internetu vstupuje do sítě Cloudflare, poté prochází tunelem GRE (MTU 1,476 bajtů), zatímco odchozí provoz z datového centra je přes internet odesílán pomocí Direct Server Return (DSR) (MTU 1,500 bajtů).

V asymetrickém scénáři musíte snížit hodnotu MSS u paketů, které uživatelé Magic Transit odesílají do internetu, abyste zmenšili velikost paketů přicházejících z internetu do jejich sítě. K tomu musíte nakonfigurovat buď koncové hostitele zákazníka, nebo MSS clamp na zprostředkujícím zařízení na odchozí cestě provozu opouštějícího jejich síť. Následující tabulka popisuje, jak hodnoty MSS ovlivňují velikost užitečného zatížení na obou směrovacích cestách.

Diagram znázorňující, jak MSS funguje s Magic Transit a Direct Server Return.

Klíčové zjištění z předchozí tabulky: MSS clamping ovlivňuje velikost užitečného zatížení paketů TCP proudících opačným směrem, než kde se clamp uplatňuje.

Scénář tunelu v tunelu s Magic Transit

Úprava MSS (MSS clamping) ovlivňuje pouze provoz TCP. Pokud máte například webový server na svém prefixu Magic Transit, uplatní se úprava MSS na datech TCP z provozu Direct Server Return (DSR). Pro tunely uvnitř vašeho tunelu Magic Transit (scénář tunel v tunelu) je však potřeba zvolit jiný postup.

Diagram znázorňující umístění MSS clamp u provozu TCP.

Pokud máte například nastavený tunel Magic Transit GRE a k němu běží ještě další tunel IPsec nebo GRE ze zařízení třetích stran ve vašich prostorách, MSS clamp nemá na vnější pakety zapouzdřeného provozu žádný vliv. Je to proto, že MSS clamping ovlivňuje pouze provoz TCP, zatímco zapouzdřený provoz IPsec/GRE je IP. V tomto scénáři musíte dále snížit MTU vnitřního rozhraní tunelu, a to jak pro příchozí, tak pro odchozí provoz.

Diagram znázorňující umístění MSS clamp u tunelu IPsec uvnitř tunelu GRE.

doporučení pro omezování MSS

Tunely GRE jako off-ramp

Hodnota MSS závisí na uspořádání vaší sítě.

Tunely IPsec

U tunelů IPsec závisí hodnota, kterou je třeba nastavit, na uspořádání vaší sítě. Hodnota MSS clamping je nižší než u tunelů GRE, protože fyzické rozhraní vidí provoz šifrovaný IPsec pakety ↗, nikoli TCP pakety, a MSS clamping se na ně nevztahuje.