Spočítat jeden paket G.729 tunelem IPsec
Rozpracovaný příklad G.729 ukazuje, jak se sčítá užitečné zatížení, RTP, ESP a rámování Ethernet a proč stejný hovor stojí na každé hranici jinou šířku pásma.
Hlas přes IPsec se uvádí jako bitrate kodeku a toto číslo je špatně na každé hranici kromě hranice samotného kodeku. Zvuk je 8 kbit/s, paket, který ho nese, je větší, obálka ESP je ještě větší a rámec Ethernet přidává rámování, které zachycení na tunelu nikdy neukáže. Spočítat jeden paket z daného formátu je jediný způsob, jak zjistit, co fyzické lince skutečně musí projít. Následující rozbor to dělá jen pro jeden směr a každé číslo je tu aritmetika, ne měření.
Začněte volbou paketizace, ne číslem kodeku
Tabulka kodeku dává přenosovou rychlost zátěže a nic jiného: G.729 vydává 8 kbit/s, což je 30 bajtů zvuku každých 30 ms. O hlavičkách, ochraně ani rámování neříká nic a výsledku dominují právě tyto tři. Interval je politická volba, na které se musí obě strany dohodnout, takže ho zvolte první a uveďte, protože na tomto jediném rozhodnutí závisí každé další číslo.
Tento příklad používá 30 ms, takže počet paketů je 33.3 za sekundu. Předpokládá hlavičku RTP 12 bajtů, hlavičku UDP 8 bajtů a vnitřní hlavičku IPv4 20 bajtů bez voleb a žádné SRTP, kompresi hlaviček ani výplň důvěrnosti toku provozu; jakákoli změna posune i rozpočet, proto předpoklady patří vedle odpovědi.
Přidejte vnitřní hlavičky, pak obálku ESP
Aplikace posílá zátěž plus RTP plus UDP plus IP, což je při této paketizaci 70 bajtů. Tento vnitřní tok vychází na 18.7 kbit/s, tedy už více než dvojnásobek rychlosti kodeku, protože většinu paketu tvoří hlavičky, ne zvuk. Žádný z těch bajtů není hlas; jsou cenou za adresování a řazení. Zachycení nad tunelem ukazuje přesně toto číslo a lidé ho citují, když říkají, že hovor je malý.
Je to také číslo, které se nikdy nedostane na drát. Tunelový režim ESP přidává 8bajtové SPI a pořadové číslo, 8bajtový explicitní IV pro AES-GCM, 2bajtový trailer a 16bajtový autentizační štítek. Zátěž 70 bajtů plus trailer se dostane na 72, což už splňuje zarovnání na čtyři bajty, takže zde není potřeba žádná výplň.RFC 4106 určuje velikosti IV a štítku pro GCM a obojí patří do aritmetiky, ne do poznámky pod čarou:
30 payload, G.729 at 30 ms
12 RTP
8 UDP
20 inner IPv4
--
70 inner IP packet
8 ESP SPI and sequence
8 explicit IV
2 pad length and next header
16 authentication tag
--
104 ESP packetPřidejte vnější hlavičky, které vyžaduje průchod NAT
Mimo obálku ESP stojí vnější hlavička IPv4 20 bajtů a hlavička UDP 8 bajtů pro průchod NAT, takže paket má 132 bajtů. Zapouzdření UDP existuje proto, že paket musí přežít překládající zařízení mezi protějšky, a mění vnější tvar, aniž by se dotklo chráněné zátěže. Při 33.3 paketech za sekundu je 132 bajtů asi 35.2 kbit/s, tedy přibližně čtyřnásobek nominální rychlosti kodeku.
Ani štítek, ani IV nelze z odhadu vypustit, aby byl menší, protože obojí je součástí toho, co linka skutečně ponese. Odhad, který je vynechá, popisuje paket, který by přijímač odmítl. Totéž platí pro trailer, který existuje proto, aby označil hranici zátěže a následující hlavičku uvnitř chráněné oblasti.
Pojmenujte hranici, než číslo uvedete
Číslo vnějšího IP stále vylučuje rámování Ethernet. Značená nebo neznačená přístupová linka přidává hlavičku MAC 14 bajtů a kontrolní posloupnost rámce 4 bajty, čímž je rámec 150 bajtů, což je velikost, kterou počítá port přepínače. Při stejném počtu paketů je to 40 kbit/s, pětinásobek rychlosti kodeku, a rozdíl není plýtvání, ale cena přenosu.
| Boundary | Packet size | Rate at 33.3 packets/s | What it counts |
|---|---|---|---|
| Codec payload | 30 bytes | 8.0 kbit/s | The audio alone |
| Inner IP packet | 70 bytes | 18.7 kbit/s | Application headers included |
| Outer IP packet | 132 bytes | 35.2 kbit/s | ESP and NAT-T included |
| Ethernet frame | 150 bytes | 40.0 kbit/s | Link framing included |
Číslo 40 kbit/s stále vylučuje preambuli, mezeru mezi rámci, značky VLAN, zapouzdření poskytovatele, RTCP, signalizaci a zvuk putující opačným směrem. Je to odhad pro jeden směr, ne rezervace linky, a citovat ho jako rezervaci přeceňuje, co linka musí rezervovat na jednom místě, a podceňuje to na jiném. Zachycení na hostiteli může také minout rámování, které linka přidává, proto hranice musí být pojmenována vedle čísla, a proto je tabulka hranic užitečnější než jediné hlavní číslo. Rezervujte zvlášť pro směr, který jste nepočítali.
Ověřte aritmetiku proti rozhraní
Než odhadu uvěříte, porovnejte ho s tím, co rozhraní hlásí pro známý počet paketů. Zachycujte na fyzickém rozhraní, ne na zařízení tunelu, aby bylo zahrnuto rámování, které se snažíte zohlednit, a očekávejte malý rozdíl, ne dokonalou shodu.
sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0Zachycení potvrzuje vnější velikost paketu, zatímco čítače rozhraní ukazují rychlost včetně rámování. Pokud se obojí liší zhruba o ethernetovou toleranci, aritmetika je správná a chybně označena byla jen hranice. Rozdíl mnohem větší než jedna hlavička rámce ukazuje na něco jiného na lince, například na opakované přenosy nebo jiný tok sdílející rozhraní. Napište interval paketizace, sadu ochrany a hranici vedle čísla, protože odhad bez těchto tří následující čtenář cituje jako měření.