عدّ حزمة 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، فالحساب صحيح ولم يُسمَّ الحدّ خطأً إلا هو. والفرق الأكبر بكثير من ترويسة إطار واحدة يشير إلى شيء آخر على الرابط، مثل إعادات الإرسال أو تدفق آخر يتقاسم الواجهة. اكتب فاصل التكتيل وحزمة الحماية والحدّ إلى جانب الرقم، لأن تقديراً بلا هذه الثلاثة يُقتبس كقياس من الشخص التالي الذي يقرأه.