Prebrojavanje jednog G.729 paketa kroz IPsec tunel
Razrađen primjer G.729 pokazuje kako se sabiraju korisni teret, RTP, ESP i Ethernet uokvirivanje i zašto isti poziv na svakoj granici košta različitu propusnost.
Glas preko IPsec-a citira se kao bitrate kodeka, a ta cifra je pogrešna na svakoj granici osim na samoj granici kodeka. Audio je 8 kbit/s, paket koji ga nosi je veći, ESP omotač je još veći, a Ethernet okvir dodaje uokvirivanje koje snimak na tunelu nikada ne pokazuje. Brojanje jednog paketa iz zadatog formata jedini je način da se sazna šta fizička veza zaista mora nositi. Prikaz ispod to radi samo za jedan smjer i svaka cifra ovdje je aritmetika, a ne mjerenje.
Počnite od izbora paketizacije, a ne od cifre kodeka
Tabela kodeka daje brzinu korisnog tereta i ništa drugo: G.729 daje 8 kbit/s, što je 30 bajtova audia svakih 30 ms. Ne govori ništa o zaglavljima, zaštiti ili uokvirivanju, a ta tri dominiraju rezultatom. Interval je politički izbor oko kojeg se obje strane moraju složiti, pa ga odaberite prvo i navedite, jer svaka kasnija cifra zavisi od te jedne odluke.
Ovaj primjer koristi 30 ms, pa je brzina paketa 33.3 u sekundi. Pretpostavlja RTP zaglavlje od 12 bajtova, UDP zaglavlje od 8 bajtova i unutrašnje IPv4 zaglavlje od 20 bajtova bez opcija, te da nema SRTP-a, kompresije zaglavlja ni popune za povjerljivost toka saobraćaja; svaka promjena pomjera i budžet, zato pretpostavke stoje uz odgovor.
Dodajte unutrašnja zaglavlja, pa ESP omotač
Aplikacija šalje teret plus RTP plus UDP plus IP, što je 70 bajtova pri ovoj paketizaciji. Taj unutrašnji tok iznosi 18.7 kbit/s, već više od dvostruke brzine kodeka, jer zaglavlja, a ne audio, čine većinu paketa. Nijedan od tih bajtova nije glas; oni su cijena adresiranja i redoslijeda. Snimak načinjen iznad tunela pokazuje tačno ovu cifru i to je ona koju ljudi citiraju kad kažu da je poziv mali.
To je i cifra koja nikada ne stigne na žicu. ESP tunelski režim dodaje SPI i redni broj od 8 bajtova, eksplicitni IV od 8 bajtova za AES-GCM, prateći dio od 2 bajta i autentifikacijsku oznaku od 16 bajtova. Teret od 70 bajtova plus prateći dio dolazi na 72, što već zadovoljava poravnanje na četiri bajta, pa ovdje nije potrebna dodatna popuna.RFC 4106 utvrđuje veličine GCM IV-a i oznake i oboje pripada aritmetici, a ne fusnoti:
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 packetDodajte vanjska zaglavlja koja zahtijeva NAT prolaz
Izvan ESP omotača stoje vanjsko IPv4 zaglavlje od 20 bajtova i UDP zaglavlje od 8 bajtova za NAT prolaz, pa paket postaje 132 bajta. UDP inkapsulacija postoji zato što paket mora preživjeti uređaj za prevođenje između partnera i ona mijenja vanjski oblik bez diranja u zaštićeni teret. Pri 33.3 paketa u sekundi 132 bajta je oko 35.2 kbit/s, ili otprilike četiri puta nominalna brzina kodeka.
Ni oznaka ni IV ne mogu se izostaviti iz procjene da bi bila manja, jer su oboje dio onoga što će veza zaista nositi. Procjena koja ih izostavlja opisuje paket koji bi prijemnik odbio. Isto vrijedi za prateći dio, koji postoji da označi granicu tereta i sljedeće zaglavlje unutar zaštićenog područja.
Imenujte granicu prije nego citirate cifru
Cifra vanjskog IP-a i dalje isključuje Ethernet uokvirivanje. Označena ili neoznačena pristupna veza dodaje MAC zaglavlje od 14 bajtova i kontrolni niz okvira od 4 bajta, čineći okvir 150 bajtova, što je veličina koju broji port preklopnika. Pri istoj brzini paketa to je 40 kbit/s, pet puta brzina kodeka, a razlika nije rasipanje nego cijena prijenosa.
| 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 |
Cifra od 40 kbit/s i dalje isključuje preambulu, međuokvirni interval, VLAN oznake, inkapsulaciju provajdera, RTCP, signalizaciju i audio koji putuje u drugom smjeru. To je procjena za jedan smjer, a ne rezervacija veze, i citiranje kao rezervacije prenaglašava šta veza mora rezervisati na jednom mjestu, a potcjenjuje na drugom. Snimak na hostu može propustiti i uokvirivanje koje veza dodaje, zato granica mora biti imenovana uz cifru, i zato je tabela granica korisnija od jedne glavne cifre. Rezervišite odvojeno za smjer koji niste brojali.
Provjerite aritmetiku prema interfejsu
Prije nego povjerujete procjeni, uporedite je s onim što interfejs prijavljuje za poznat broj paketa. Snimajte na fizičkom interfejsu, a ne na uređaju tunela, da uokvirivanje koje pokušavate obračunati bude uključeno, i očekujte malo neslaganje, a ne savršeno poklapanje.
sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0Snimak potvrđuje vanjsku veličinu paketa, dok brojači interfejsa pokazuju brzinu uključujući uokvirivanje. Ako se dvoje razlikuju za otprilike Ethernet dodatak, aritmetika je tačna i samo je granica pogrešno označena. Razlika mnogo veća od jednog zaglavlja okvira ukazuje na nešto drugo na vezi, poput ponovnih prijenosa ili drugog toka koji dijeli interfejs. Zapišite interval paketizacije, zaštitni paket i granicu uz cifru, jer procjenu bez ta tri sljedeći čitalac citira kao mjerenje.