چکیده
در شبکههای VoIP، انتخاب Codec یکی از مهمترین مراحل در برقراری تماس است، زیرا Codec مستقیماً بر کیفیت صدا، مصرف پهنای باند و میزان بار پردازشی سیستم تأثیر میگذارد. در پروتکل SIP نسخه 2، فرآیند انتخاب Codec بهصورت مستقیم در خود پروتکل انجام نمیشود، بلکه از طریق Session Description Protocol (SDP) و بر اساس مدل Offer/Answer انجام میگیرد. در این مقاله، ابتدا فرآیند مذاکره و انتخاب Codec در SIP v2 بهصورت مرحلهبهمرحله بررسی میشود و سپس مقایسهای فنی میان Codecهای رایج VoIP از نظر پهنای باند، سربار هدر، بار پردازشی CPU و حجم داده در هر بسته ارائه میشود.
- مقدمه
پروتکل Session Initiation Protocol (SIP) یکی از مهمترین پروتکلهای سیگنالینگ در سیستمهای Voice over IP (VoIP) است که وظیفه برقراری، مدیریت و پایان دادن به جلسات ارتباطی را بر عهده دارد.
با وجود اینکه SIP مسئول مدیریت سیگنالینگ است، انتقال واقعی صوت و تصویر توسط RTP (Real-time Transport Protocol) انجام میشود. برای اینکه دو نقطه ارتباطی بتوانند داده صوتی را تبادل کنند، باید ابتدا درباره پارامترهای رسانه مانند موارد زیر به توافق برسند:
- نوع Codec
- پورت انتقال رسانه
- نوع پروتکل انتقال
- نرخ نمونهبرداری صوت
این توافق از طریق SDP که در بدنه پیامهای SIP قرار میگیرد انجام میشود.

- مدل Offer/Answer در مذاکره Codec
انتخاب Codec در SIP بر اساس مدل Offer/Answer که در RFC 3264 تعریف شده است انجام میشود. در این مدل، یک سمت ارتباط مجموعهای از قابلیتهای رسانهای خود را پیشنهاد میدهد (Offer) و سمت مقابل یکی از گزینههای سازگار را انتخاب کرده و پاسخ میدهد (Answer).
این فرآیند معمولاً در پیامهای زیر رخ میدهد:
INVITE 200 OK ACK
- مرحله اول: ارسال SDP Offer در پیام INVITE
وقتی کاربر A قصد برقراری تماس با کاربر B را دارد، یک پیام INVITE ارسال میکند. در این پیام یک SDP Offer قرار میگیرد که شامل لیستی از Codecهای قابل پشتیبانی توسط فرستنده است.
نمونهای از SDP Offer:
INVITE sip:bob@example.com SIP/2.0 Content-Type: application/sdp v=0 o=alice 2890844526 2890844526 IN IP4 192.168.1.10 s=VoIP Call c=IN IP4 192.168.1.10 t=0 0 m=audio 49170 RTP/AVP 0 8 18 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:18 G729/8000
در خط زیر Codecهای پیشنهادی مشخص شدهاند:
m=audio 49170 RTP/AVP 0 8 18
که نشاندهنده موارد زیر است:
0 → G.711 µ-law 8 → G.711 A-law 18 → G.729
ترتیب این اعداد نشاندهنده اولویت Codecها است.
- مرحله دوم: انتخاب Codec توسط دریافتکننده
پس از دریافت INVITE، سمت مقابل SDP را بررسی میکند و Codecهایی را که پشتیبانی میکند شناسایی میکند.
از میان Codecهای مشترک، یکی انتخاب میشود. انتخاب ممکن است بر اساس موارد زیر انجام شود:
- سیاست شبکه
- میزان پهنای باند
- توان پردازشی دستگاه
- کیفیت مورد نیاز تماس
- مرحله سوم: ارسال SDP Answer در پاسخ OK 200
دریافتکننده در پاسخ OK 200، Codec انتخابشده را در قالب SDP Answer ارسال میکند.
نمونه:
SIP/2.0 200 OK Content-Type: application/sdp v=0 o=bob 2808844564 2808844564 IN IP4 192.168.1.20 s=VoIP Call c=IN IP4 192.168.1.20 t=0 0 m=audio 34560 RTP/AVP 0 a=rtpmap:0 PCMU/8000
در این مثال، Codec G.711 (PCMU) انتخاب شده است.
- مرحله چهارم: ارسال ACK و شروع رسانه
پس از دریافت پیام OK 200، تماسگیرنده پیام ACK را ارسال میکند.
بعد از این مرحله، پارامترهای رسانه نهایی شده و جریان RTP با استفاده از Codec انتخابشده آغاز میشود.
جریان کلی تماس به شکل زیر است:
Alice Bob INVITE (SDP: G711,G729) → ← 180 Ringing ← 200 OK (SDP: G711) ACK → =========== RTP (G711) =======================
- عدم وجود Codec مشترک
اگر دو سمت تماس Codec مشترکی نداشته باشند، تماس برقرار نمیشود و معمولاً پاسخ زیر ارسال میشود:
488 Not Acceptable Here
- مذاکره مجدد Codec
در طول تماس امکان تغییر Codec وجود دارد. این کار با استفاده از پیامهای زیر انجام میشود:
re-INVITE
UPDATE
این قابلیت در شرایط زیر استفاده میشود:
- تغییر پهنای باند شبکه
- انتقال تماس
- استفاده از Media Gateway
- انجام Transcoding
- مقایسه فنی Codecهای رایج VoIP
Codecهای مختلف VoIP از نظر مصرف پهنای باند، کیفیت صدا و میزان پردازش مورد نیاز متفاوت هستند. جدول زیر مقایسهای میان Codecهای رایج ارائه میدهد.
| نرخ بیت خام (kbps) | حجم داده در هر پکت (20ms) | پهنای باند واقعی با هدرها (kbps) | سربار Header در هر پکت | پیچیدگی CPU | کیفیت صدا (MOS) |
G.711 (PCMU/PCMA) | |||||
| 64 | 160 Bytes | ≈87.2 | 40 Bytes | بسیار کم | 4.1–4.4 |
G.729 | |||||
| 8 | 20 Bytes | ≈31.2 | 40 Bytes | بالا | 3.9–4.0 |
G.723.1 (5.3 kbps) | |||||
| 5.3 | 13 Bytes | ≈21.9 | 40 Bytes | بسیار بالا | 3.65 |
G.726 (ADPCM 32 kbps) | |||||
| 32 | 80 Bytes | ≈55.2 | 40 Bytes | کم تا متوسط | 3.8 |
iLBC (Internet Low Bitrate Codec) | |||||
| 15.2 | 38 Bytes | ≈40.5 | 40 Bytes | متوسط | 3.8 |
Opus (Adaptive 8–64 kbps) | |||||
| 8–64 (متغیر) | متغیر | 30–80 (بسته بهbitrate و packetization) | 40 Bytes | متوسط تا بالا | 4.2–4.5 |
AMR-NB (12.2 kbps) | |||||
| 12.2 | 31 | ≈ 36.4 | 40 Bytes | متوسط | 4.0 |
توضیحات فنی:
نرخ بیت خام (Bitrate)
مقدار داده صوتی فشردهشده در سطح Codec است، پیش از اضافه شدن هدرهای پروتکل.
- G.711: بدون فشردهسازی (PCM)
- G.729: فشردهسازی بسیار بالا
- Opus: نرخ متغیر بر اساس شرایط کانال (VBR)
حجم بسته در هر 20 ms (Bytes per packet)
اگر هر پکت شامل 20 ms از صدا باشد:
Data_Bytes=(Bitrate×20ms) / 8
مثال برای G.711:
(64,000×0.02) / 8 = 160 bytes
اگر از 30 ms استفاده شود، اندازه پکت افزایش مییابد ولی نرخ پکت (PPS) کاهش مییابد.
پهنای باند واقعی با Header
در محیط RTP/SIP، هر بسته شامل سربارهای زیر است:
RTP Header → 12 بایت
UDP Header → 8 بایت
IP Header → 20 بایت
جمع: 40 B سربار
برای محاسبه پهنای باند کل:
Bandwidth=(Data+40)×8×50 / 1000 kbps
(50 پکت در ثانیه در فریم 20ms)
پیچیدگی پردازش CPU
نسبی و تجربی:
| سطح | توضیح |
| بسیار پایین | G.711 (تنها تبدیل μ-law/A-law) |
| پایین تا متوسط | G.726 (فشردهسازی ساده) |
| بالا | G.729, G.723.1 (الگوریتمهای CELP) |
| متوسط–بالا | Opus (الگوریتم ترکیبی و تطبیقی) |
- تحلیل انتخاب Codec در شبکههای مختلف
- شبکههای با پهنای باند بالا
- در شبکههای LAN یا مراکز تماس داخلی، معمولاً از 711 استفاده میشود زیرا کیفیت بسیار بالایی دارد و پیچیدگی پردازشی آن بسیار کم است.
- شبکههای با پهنای باند محدود
- در ارتباطات WAN یا اینترنت با ظرفیت محدود، 729 گزینه مناسبی است زیرا مصرف پهنای باند آن بسیار کمتر است.
- کاربردهای مدرن و WebRTC
- در سیستمهای جدید مانند WebRTC، Codec Opus بسیار محبوب است زیرا قابلیت تطبیق با شرایط شبکه را دارد.
| سناریو | Codec پیشنهادی |
| پهنای باند زیاد (LAN / SIP Trunk داخلی) | G.711 |
| پهنای باند محدود (WAN / اینترنت ضعیف) | G.729 یا iLBC |
| کیفیت بالا + تطبیقی (وب / WebRTC) | Opus |
| توازن مصرف CPU و پهنای باند | G.726 |
- جمعبندی
در پروتکل SIP v2 انتخاب Codec از طریق مکانیزم SDP Offer/Answer انجام میشود. در این فرآیند، تماسگیرنده لیستی از Codecهای قابل پشتیبانی خود را در پیام INVITE ارسال میکند و دریافتکننده یکی از Codecهای مشترک را انتخاب کرده و در پاسخ 200 OK اعلام میکند. پس از ارسال ACK، انتقال رسانه از طریق RTP با استفاده از Codec انتخابشده آغاز میشود.
انتخاب صحیح Codec تأثیر مستقیم بر کیفیت تماس، مصرف پهنای باند و بار پردازشی تجهیزات VoIP دارد؛ بنابراین در طراحی شبکههای VoIP باید این انتخاب با توجه به شرایط شبکه و منابع سیستم انجام شود.





نظری ندارم! اولین نفر باشید.