Մեկ 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 է վայրկյանում։ Այն ենթադրում է 12 բայթանոց RTP վերնագիր, 8 բայթանոց UDP վերնագիր և առանց ընտրանքների 20 բայթանոց ներքին IPv4 վերնագիր, ինչպես նաև SRTP-ի, վերնագրի սեղմման կամ երթևեկության հոսքի գաղտնիության լցոնման բացակայություն. ցանկացած փոփոխություն բյուջեն էլ է տեղափոխում, այդ պատճառով ենթադրությունները պատասխանի կողքին են։
Ավելացրեք ներքին վերնագրերը, ապա ESP ծրարը
Հավելվածն ուղարկում է օգտակար բեռ գումարած RTP գումարած UDP գումարած IP, որը այս փաթեթավորումով 70 բայթ է։ Այդ ներքին հոսքը ստացվում է 18.7 kbit/s, արդեն ավելի քան երկու անգամ կոդեկի արագությունից, որովհետև փաթեթի մեծ մասը վերնագրերն են, ոչ թե ձայնը։ Այդ բայթերից ոչ մեկը ձայն չէ. դրանք հասցեավորման և հաջորդականացման գինն են։ Թունելից վեր արված գրառումը ցույց է տալիս հենց այս թիվը, և հենց այն են մարդիկ մեջբերում, երբ ասում են, որ զանգը փոքր է։
Սա նաև այն թիվն է, որը երբեք չի հասնում լարին։ ESP թունելի ռեժիմը ավելացնում է 8 բայթանոց SPI և հաջորդականության համար, 8 բայթանոց բացահայտ IV AES-GCM-ի համար, 2 բայթանոց պոչ և 16 բայթանոց նույնականացման պիտակ։ 70 բայթանոց բեռը պոչի հետ հասնում է 72-ի, ինչն արդեն բավարարում է չորս բայթանոց հավասարեցմանը, ուստի այստեղ լրացուցիչ լցոնում պետք չէ։RFC 4106 սահմանում է GCM IV-ի և պիտակի չափերը, և երկուսն էլ թվաբանության մեջ են, ոչ թե ծանոթագրության մեջ.
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 ծրարից դուրս կան 20 բայթանոց արտաքին IPv4 վերնագիր և NAT-ի անցման համար 8 բայթանոց UDP վերնագիր, ուստի փաթեթը դառնում է 132 բայթ։ UDP ինկապսուլյացիան գոյություն ունի այն պատճառով, որ փաթեթը պետք է անցնի զույգերի միջև թարգմանող սարքով, և այն փոխում է արտաքին ձևը՝ չդիպչելով պաշտպանված բեռին։ Վայրկյանում 33.3 փաթեթի դեպքում 132 բայթը մոտ 35.2 kbit/s է, այսինքն՝ մոտավորապես չորս անգամ կոդեկի անվանական արագությունը։
Ոչ պիտակը, ոչ IV-ն չեն կարող հանվել գնահատականից այն փոքրացնելու համար, որովհետև երկուսն էլ այն բանի մասն են, ինչ կապը իրականում կկրի։ Գնահատականը, որը դրանք բաց է թողնում, նկարագրում է փաթեթ, որը ստացողը կմերժեր։ Նույնը վերաբերում է պոչին, որը գոյություն ունի բեռի սահմանը և պաշտպանված տարածքի ներսում հաջորդ վերնագիրը նշելու համար։
Անվանեք սահմանը նախքան թիվը մեջբերելը
Արտաքին IP-ի թիվը դեռ բացառում է Ethernet շրջանակավորումը։ Պիտակավորված կամ առանց պիտակի մուտքի կապը ավելացնում է 14 բայթանոց MAC վերնագիր և 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-ի թույլատրությամբ, թվաբանությունը ճիշտ է, և միայն սահմանն է սխալ անվանվել։ Մեկ շրջանակի վերնագրից շատ ավելի մեծ տարբերությունը ցույց է տալիս կապի վրա մեկ այլ բան, օրինակ կրկնակի ուղարկումներ կամ ինտերֆեյսը կիսող մեկ այլ հոսք։ Գրեք փաթեթավորման ինտերվալը, պաշտպանության հավաքածուն և սահմանը թվի կողքին, որովհետև առանց այդ երեքի գնահատականը հաջորդ ընթերցողը մեջբերում է որպես չափում։