Suskaičiuoti vieną G.729 paketą per IPsec tunelį
Išspręstas G.729 pavyzdys rodo, kaip susideda naudingoji apkrova, RTP, ESP ir Ethernet įrėminimas, ir kodėl tas pats skambutis prie kiekvienos ribos kainuoja skirtingą pralaidumą.
Balsas per IPsec nurodomas kodeko bitreitu, ir šis skaičius neteisingas prie kiekvienos ribos, išskyrus pačią kodeko ribą. Garsas yra 8 kbit/s, jį nešantis paketas didesnis, ESP apvalkalas dar didesnis, o Ethernet kadras prideda įrėminimą, kurio jokia tunelio nuotrauka niekada neparodo. Vieno paketo suskaičiavimas pagal nurodytą formatą yra vienintelis būdas sužinoti, ką fizinė jungtis iš tikrųjų turi nešti. Toliau pateikta eiga tai daro tik viena kryptimi, ir kiekvienas čia esantis skaičius yra aritmetika, o ne matavimas.
Pradėkite nuo paketizavimo pasirinkimo, o ne nuo kodeko skaičiaus
Kodekų lentelė duoda naudingosios apkrovos spartą ir nieko daugiau: G.729 išduoda 8 kbit/s, tai yra 30 baitų garso kas 30 ms. Ji nieko nesako apie antraštes, apsaugą ar įrėminimą, ir būtent šie trys lemia rezultatą. Intervalas yra politikos pasirinkimas, dėl kurio turi sutarti abu galai, tad pasirinkite jį pirmiausia ir nurodykite, nes kiekvienas vėlesnis skaičius priklauso nuo to vieno sprendimo.
Šiame pavyzdyje naudojama 30 ms, tad paketų sparta yra 33.3 per sekundę. Daroma prielaida, kad RTP antraštė yra 12 baitų, UDP antraštė 8 baitai, o vidinė IPv4 antraštė 20 baitų be parinkčių, ir kad nėra SRTP, antraščių suspaudimo ar srauto konfidencialumo užpildo; bet koks pakeitimas pajudina ir biudžetą, todėl prielaidos turi stovėti prie atsakymo.
Pridėkite vidines antraštes, tada ESP apvalkalą
Programa siunčia naudingąją apkrovą plius RTP plius UDP plius IP, o tai šiame paketizavime yra 70 baitų. Šis vidinis srautas išeina 18.7 kbit/s, jau daugiau nei dvigubai kodeko spartos, nes didžiąją paketo dalį sudaro antraštės, o ne garsas. Nė vienas iš tų baitų nėra balsas; tai adresavimo ir sekvenavimo kaina. Nuotrauka, padaryta virš tunelio, rodo būtent šį skaičių, ir jį cituoja žmonės, sakydami, kad skambutis mažas.
Tai ir skaičius, kuris niekada nepasiekia laido. ESP tunelio režimas prideda 8 baitų SPI ir sekos numerį, 8 baitų aiškų IV AES-GCM, 2 baitų uodegą ir 16 baitų autentifikavimo žymą. 70 baitų apkrova su uodega pasiekia 72, o tai jau tenkina keturių baitų lygiavimą, tad papildomo užpildo čia nereikia.RFC 4106 nustato GCM IV ir žymos dydžius, ir abu priklauso aritmetikai, o ne išnašai:
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 packetPridėkite išorines antraštes, kurių reikalauja NAT praėjimas
Už ESP apvalkalo yra 20 baitų išorinė IPv4 antraštė ir 8 baitų UDP antraštė NAT praėjimui, tad paketas tampa 132 baitų. UDP inkapsuliavimas egzistuoja todėl, kad paketas turi išgyventi vertimo įrenginį tarp partnerių, ir jis keičia išorinę formą neliesdamas apsaugotos apkrovos. Esant 33.3 paketams per sekundę, 132 baitai yra apie 35.2 kbit/s, arba maždaug keturis kartus daugiau už nominalią kodeko spartą.
Nei žymos, nei IV negalima išbraukti iš vertinimo, kad jis būtų mažesnis, nes abu yra to, ką jungtis iš tikrųjų neš, dalis. Vertinimas, kuris jų neįtraukia, aprašo paketą, kurį gavėjas atmestų. Tas pats galioja uodegai, kuri skirta apkrovos ribai ir kitai antraštei apsaugotoje srityje pažymėti.
Įvardykite ribą prieš cituodami skaičių
Išorinis IP skaičius vis dar neapima Ethernet įrėminimo. Žymėta arba nežymėta prieigos jungtis prideda 14 baitų MAC antraštę ir 4 baitų kadro kontrolės seką, todėl kadras tampa 150 baitų, o tai yra dydis, kurį skaičiuoja komutatoriaus prievadas. Esant tokiai pačiai paketų spartai tai yra 40 kbit/s, penkis kartus daugiau už kodeko spartą, ir skirtumas nėra švaistymas, o transportavimo kaina.
| 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 |
Skaičius 40 kbit/s vis dar neapima preambulės, tarpo tarp kadrų, VLAN žymų, teikėjo inkapsuliavimo, RTCP, signalizacijos ir garso, keliaujančio priešinga kryptimi. Tai vienos krypties vertinimas, o ne jungties rezervacija, ir citavimas jį kaip rezervaciją pervertina, ką jungtis turi rezervuoti vienoje vietoje, ir nuvertina kitoje. Nuotrauka pagrindiniame kompiuteryje taip pat gali praleisti įrėminimą, kurį prideda jungtis, todėl riba turi būti įvardyta šalia skaičiaus, ir todėl ribų lentelė naudingesnė už vieną antraštės skaičių. Rezervuokite atskirai tai krypčiai, kurios neskaičiavote.
Patikrinkite aritmetiką pagal sąsają
Prieš pasitikėdami vertinimu, palyginkite jį su tuo, ką sąsaja praneša žinomam paketų skaičiui. Fiksuokite fizinėje sąsajoje, o ne tunelio įrenginyje, kad įrėminimas, kurį bandote įskaityti, būtų įtrauktas, ir tikėkitės nedidelio neatitikimo, o ne tobulo sutapimo.
sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0Nuotrauka patvirtina išorinį paketo dydį, o sąsajos skaitikliai rodo spartą su įrėminimu. Jei abu skiriasi maždaug Ethernet leistinu dydžiu, aritmetika teisinga ir tik riba buvo neteisingai įvardyta. Daug didesnis nei viena kadro antraštė skirtumas rodo į kažką kita jungtyje, pavyzdžiui, pakartotinius perdavimus ar kitą srautą, besidalijantį sąsaja. Užrašykite paketizavimo intervalą, apsaugos rinkinį ir ribą šalia skaičiaus, nes vertinimą be šių trijų kitas skaitytojas cituoja kaip matavimą.