Падлік аднаго пакета G.729 праз тунель IPsec
Разгорнуты прыклад G.729 паказвае, як складваюцца карысная нагрузка, RTP, ESP і кадраванне Ethernet, і чаму той жа выклік каштуе рознай прапускной здольнасці на кожнай мяжы.
Голас праз IPsec падаюць як бітрэйт кодэка, і гэтая лічба няправільная на кожнай мяжы, акрамя ўласнай мяжы кодэка. Аўдыя — 8 kbit/s, пакет, што яго нясе, большы, канверт ESP яшчэ большы, а кадр Ethernet дадае кадраванне, якога ніколі не пакажа захоп на тунелі. Падлік аднаго пакета з зададзенага фармату — адзіны спосаб даведацца, што фізічнае звяно фактычна павінна несці. Разбор ніжэй робіць гэта толькі для аднаго кірунку, і ўсе лічбы тут — арыфметыка, а не вымярэнне.
Пачніце з выбару пакетызацыі, а не з лічбы кодэка
Табліца кодэка дае хуткасць карыснай нагрузкі і нічога іншага: G.729 выдае 8 kbit/s, гэта 30 байт аўдыя кожныя 30 ms. Яна нічога не кажа пра загалоўкі, абарону ці кадраванне, а менавіта гэтыя тры вызначаюць вынік. Інтэрвал — гэта палітычны выбар, пра які павінны дамовіцца абодва бакі, таму абярыце яго першым і зафіксуйце, бо кожная наступная лічба залежыць ад гэтага адзінага рашэння.
Гэты прыклад выкарыстоўвае 30 ms, таму частата пакетаў — 33.3 у секунду. Ён мяркуе загаловак RTP у 12 байт, загаловак UDP у 8 байт і ўнутраны загаловак IPv4 у 20 байт без опцый, а таксама адсутнасць SRTP, сціскання загалоўкаў і запаўнення канфідэнцыяльнасці патоку трафіку; любое змяненне зрушвае бюджэт разам з ім, таму дапушчэнні павінны стаяць побач з адказам.
Дадайце ўнутраныя загалоўкі, потым канверт ESP
Прыкладанне дасылае нагрузку плюс RTP плюс UDP плюс IP, што пры такой пакетызацыі складае 70 байт. Гэты ўнутраны паток дае 18.7 kbit/s, ужо больш чым удвая перавышае хуткасць кодэка, бо большасць пакета складаюць загалоўкі, а не аўдыя. Ніводзін з гэтых байт не з'яўляецца голасам; яны — цана адрасацыі і паслядоўнасці. Захоп, зроблены над тунелем, паказвае менавіта гэтую лічбу, і яе цытуюць, калі кажуць, што выклік маленькі.
Гэта таксама лічба, якая ніколі не даходзіць да дроту. Рэжым тунеля ESP дадае 8-байтавы SPI і нумар паслядоўнасці, 8-байтавы яўны IV для AES-GCM, 2-байтавы трэйлер і 16-байтавы тэг аўтэнтыфікацыі. Нагрузка ў 70 байт разам з трэйлерам дае 72, што ўжо задавальняе чатырохбайтавае выраўноўванне, таму дадатковае запаўненне тут не патрэбна.RFC 4106 вызначае памеры IV і тэга GCM, і абодва належаць да арыфметыкі, а не да зноскі:
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Дадайце знешнія загалоўкі, якіх патрабуе праходжанне NAT
Па-за канвертам ESP стаяць знешні загаловак IPv4 у 20 байт і загаловак UDP у 8 байт для праходжання NAT, таму пакет становіцца 132 байты. Інкапсуляцыя UDP існуе таму, што пакет павінен прайсці праз прыладу перакладу паміж суразмоўцамі, і яна змяняе знешнюю форму, не закранаючы абароненую нагрузку. Пры 33.3 пакета ў секунду 132 байты — гэта каля 35.2 kbit/s, або прыкладна ўчатыры больш за намінальную хуткасць кодэка.
Ні тэг, ні IV нельга выкінуць з ацэнкі, каб паменшыць яе, бо абодва — частка таго, што звяно фактычна будзе несці. Ацэнка, якая іх апускае, апісвае пакет, які атрымальнік адхіліў бы. Тое ж датычыцца трэйлера, які існуе, каб пазначыць мяжу нагрузкі і наступны загаловак унутры абароненай вобласці.
Назавіце мяжу, перш чым цытаваць лічбу
Лічба знешняга IP усё яшчэ выключае кадраванне Ethernet. Звязанае або незвязанае злучэнне доступу дадае загаловак MAC у 14 байт і паслядоўнасць праверкі кадра ў 4 байты, робячы кадр 150 байт — гэта памер, які лічыць порт камутатара. Пры той жа частаце пакетаў гэта 40 kbit/s, упяцяра больш за хуткасць кодэка, і розніца — не марнаванне, а цана перавозкі.
| 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 |
Лічба 40 kbit/s усё яшчэ выключае прэамбулу, міжкадравае інтэрвал, тэгі VLAN, інкапсуляцыю пастаўшчыка, RTCP, сігналізацыю і аўдыя, што ідзе ў адваротны бок. Гэта ацэнка на адзін кірунак, а не рэзерваванне звяна, і цытаванне яе як рэзервавання перабольшвае, што звяно павінна зарэзерваваць у адным месцы, і прымяншае ў іншым. Захоп на хасце таксама можа прапусціць кадраванне, якое дадае звяно, таму мяжу трэба называць побач з лічбай, і таму табліца меж карыснейшая за адну галоўную лічбу. Рэзервуйце асобна для кірунку, які вы не падлічылі.
Зверце арыфметыку з інтэрфейсам
Перш чым давяраць ацэнцы, параўнайце яе з тым, што інтэрфейс паказвае для вядомай колькасці пакетаў. Рабіце захоп на фізічным інтэрфейсе, а не на прыладзе тунеля, каб кадраванне, якое вы спрабуеце ўлічыць, было ўключана, і чакайце невялікага разыходжання, а не ідэальнага супадзення.
sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0Захоп пацвярджае знешні памер пакета, а лічыльнікі інтэрфейса паказваюць хуткасць з улікам кадравання. Калі яны розняцца прыблізна на дапушчальнасць Ethernet, арыфметыка правільная і памылкова пазначана толькі мяжа. Розніца, значна большая за адзін загаловак кадра, указвае на нешта іншае ў звяне, напрыклад паўторныя перадачы або іншы паток, які дзеліць інтэрфейс. Запішыце інтэрвал пакетызацыі, набор абароны і мяжу побач з лічбой, бо ацэнка без гэтых трох цытуецца наступным чытачом як вымярэнне.