Броење на еден 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 додава SPI и реден број од 8 бајти, експлицитен IV од 8 бајти за 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, аритметиката е точна и само границата била погрешно именувана. Разлика многу поголема од едно заглавие на рамка упатува на нешто друго на врската, како повторни преноси или друг тек што го дели интерфејсот. Запишете го интервалот на пакетизација, комплетот за заштита и границата покрај бројката, бидејќи проценка без тие три ја цитира како мерка следниот читател.