INTEGRITY Dokumentace

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

Cloudflare WAN zabaluje váš provoz do dalších hlaviček (zapouzdření), čímž se zmenšuje efektivní prostor dostupný pro vaše původní data v každém paketu. Pokud s touto režií nepočítáte, mohou být pakety pro danou síťovou cestu příliš velké a dojde k jejich zahození nebo fragmentaci, což vede ke snížení výkonu nebo výpadkům spojení. Tato stránka vysvětluje dvě klíčové hodnoty, které je třeba nastavit: maximální přenosovou jednotku (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í

Cloudflare WAN poskytuje své služby pomocí zapouzdření, proto je důležité rozumět tomu, proč v tomto případě záleží na hodnotách 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 Cloudflare WAN

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 jehož cílem je IP adresa zákazníka Cloudflare WAN. Předpokládejme také, že zákazník Cloudflare WAN má nastavené pravidlo brány firewall, které zahazuje provoz UDP 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 tři fragmenty UDP z předchozího příkladu procházejí přes Cloudflare a Cloudflare WAN. Hlavní poznatky jsou tyto:

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.

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 musíte zadat, na nastavení vaší sítě. Hodnota MSS clamping je nižší než u tunelů GRE, protože fyzické rozhraní vidí pakety šifrované protokolem IPsec, nikoli pakety TCP, a na ty se MSS clamping nevztahuje.