Hlas cez IPsec sa uvádza ako bitrate kodeka a toto číslo je nesprávne na každej hranici okrem hranice samotného kodeka. Zvuk je 8 kbit/s, paket, ktorý ho nesie, je väčší, obálka ESP je ešte väčšia a rámec Ethernet pridáva rámovanie, ktoré žiadne zachytenie na tuneli neukáže. Spočítať jeden paket z daného formátu je jediný spôsob, ako zistiť, čo fyzickému spoju skutočne treba preniesť. Rozbor nižšie to robí len pre jeden smer a každé číslo je tu aritmetika, nie meranie.

Začnite voľbou paketizácie, nie číslom kodeka

Tabuľka kodeka dáva prenosovú rýchlosť zaťaženia a nič iné: G.729 vydáva 8 kbit/s, čo je 30 bajtov zvuku každých 30 ms. O hlavičkách, ochrane ani rámovaní nehovorí nič a výsledku dominujú práve tieto tri. Interval je politická voľba, na ktorej sa musia obe strany dohodnúť, preto ho zvoľte prvý a uveďte, lebo na tomto jedinom rozhodnutí závisí každé ďalšie číslo.

Tento príklad používa 30 ms, takže počet paketov je 33.3 za sekundu. Predpokladá hlavičku RTP 12 bajtov, hlavičku UDP 8 bajtov a vnútornú hlavičku IPv4 20 bajtov bez volieb a žiadne SRTP, kompresiu hlavičiek ani výplň dôvernosti toku prevádzky; akákoľvek zmena posunie aj rozpočet, preto predpoklady patria vedľa odpovede.

Pridajte vnútorné hlavičky, potom obálku ESP

Aplikácia posiela zaťaženie plus RTP plus UDP plus IP, čo je pri tejto paketizácii 70 bajtov. Tento vnútorný tok vychádza na 18.7 kbit/s, teda už viac ako dvojnásobok rýchlosti kodeka, pretože väčšinu paketu tvoria hlavičky, nie zvuk. Žiadny z tých bajtov nie je hlas; sú cenou za adresovanie a radenie. Zachytenie nad tunelom ukazuje presne toto číslo a ľudia ho citujú, keď hovoria, že hovor je malý.

Je to aj číslo, ktoré sa nikdy nedostane na drôt. Tunelový režim ESP pridáva 8-bajtové SPI a poradové číslo, 8-bajtový explicitný IV pre AES-GCM, 2-bajtový trailer a 16-bajtový autentifikačný štítok. Zaťaženie 70 bajtov plus trailer sa dostane na 72, čo už spĺňa zarovnanie na štyri bajty, takže tu nie je potrebná žiadna výplň.RFC 4106 určuje veľkosti IV a štítku pre GCM a oboje patrí do aritmetiky, nie do poznámky pod čiarou:

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 packet

Pridajte vonkajšie hlavičky, ktoré vyžaduje prechod NAT

Mimo obálky ESP stoja vonkajšia hlavička IPv4 20 bajtov a hlavička UDP 8 bajtov pre prechod NAT, takže paket má 132 bajtov. Zapuzdrenie UDP existuje preto, že paket musí prežiť prekladajúce zariadenie medzi partnermi, a mení vonkajší tvar bez toho, aby sa dotklo chráneného zaťaženia. Pri 33.3 paketoch za sekundu je 132 bajtov asi 35.2 kbit/s, teda približne štvornásobok nominálnej rýchlosti kodeka.

Ani štítok, ani IV nemožno z odhadu vypustiť, aby bol menší, pretože oboje je súčasťou toho, čo spoj skutočne ponesie. Odhad, ktorý ich vynechá, opisuje paket, ktorý by prijímač odmietol. To isté platí pre trailer, ktorý existuje preto, aby označil hranicu zaťaženia a nasledujúcu hlavičku v chránenej oblasti.

Pomenujte hranicu skôr, než číslo uvediete

Číslo vonkajšej IP stále vylučuje rámovanie Ethernet. Značené alebo neznačené prístupové spojenie pridáva hlavičku MAC 14 bajtov a kontrolnú postupnosť rámca 4 bajty, čím je rámec 150 bajtov, čo je veľkosť, ktorú počíta port prepínača. Pri rovnakom počte paketov je to 40 kbit/s, päťnásobok rýchlosti kodeka, a rozdiel nie je plytvanie, ale cena prenosu.

BoundaryPacket sizeRate at 33.3 packets/sWhat it counts
Codec payload30 bytes8.0 kbit/sThe audio alone
Inner IP packet70 bytes18.7 kbit/sApplication headers included
Outer IP packet132 bytes35.2 kbit/sESP and NAT-T included
Ethernet frame150 bytes40.0 kbit/sLink framing included

Číslo 40 kbit/s stále vylučuje preambulu, medzeru medzi rámcami, značky VLAN, zapuzdrenie poskytovateľa, RTCP, signalizáciu a zvuk putujúci opačným smerom. Je to odhad pre jeden smer, nie rezervácia spoja, a citovať ho ako rezerváciu preceňuje, čo musí spoj rezervovať na jednom mieste, a podceňuje to na inom. Zachytenie na hostiteľovi môže tiež minúť rámovanie, ktoré spoj pridáva, preto hranica musí byť pomenovaná vedľa čísla, a preto je tabuľka hraníc užitočnejšia než jedno hlavné číslo. Rezervujte zvlášť pre smer, ktorý ste nepočítali.

Overte aritmetiku proti rozhraniu

Skôr než odhadu uveríte, porovnajte ho s tým, čo rozhranie hlási pre známy počet paketov. Zachytávajte na fyzickom rozhraní, nie na zariadení tunela, aby bolo zahrnuté rámovanie, ktoré sa snažíte zohľadniť, a očakávajte malý rozdiel, nie dokonalú zhodu.

sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0

Zachytenie potvrdzuje vonkajšiu veľkosť paketu, kým počítadlá rozhrania ukazujú rýchlosť vrátane rámovania. Ak sa obe líšia približne o ethernetovú toleranciu, aritmetika je správna a nesprávne bola označená len hranica. Rozdiel oveľa väčší ako jedna hlavička rámca ukazuje na niečo iné na spoji, napríklad na opakované prenosy alebo iný tok zdieľajúci rozhranie. Napíšte interval paketizácie, sadu ochrany a hranicu vedľa čísla, pretože odhad bez týchto troch cituje nasledujúci čitateľ ako meranie.

Súvisiace články