جودة الخدمة QoS: الصوت أولًا حين تزدحم الوصلة
درس 2 من 4
2جودة الخدمة QoS: الصوت أولًا حين تزدحم الوصلة
الصورة الكبيرةملف بحجم 2 GB يُرفع لدقيقتين بعد أو قبل لا يهم أحدًا. لكن الصوت في مكالمة إن تأخر 300 ملّي ثانية صار الحوار مستحيلًا، وإن ضاع منه 3% صار متقطعًا. على الوصلات الواسعة بين الفروع حيث السعة غالية، QoS هو ما يجعل المكالمة واضحة رغم أن أحدهم يرفع ملفًا ضخمًا.
ماذا تشاهد في الرسم: عند الحافة يُعرف نوع الحركة ويُكتب في رأس IP، وفي كل موجّه بعدها تُقرأ العلامة وتدخل الحزمة طابورها، والصوت يخرج أولًا دائمًا ضمن حد لا يتجاوزه.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
تخيّل طريقًا مزدحمًا عند المستشفى. سيارة الإسعاف (الصوت) لها مسار خاص تمر فيه أولًا، لكن مسارها ضيق حتى لا تستولي على الطريق كله. الحافلات (الفيديو) لها حارة مضمونة، والشاحنات (النسخ الاحتياطي) تأخذ ما تبقى. QoS هو شرطي المرور: يقرأ لوحة كل سيارة (العلامة) ويوجهها لحارتها. لكن تذكّر: لو كان الطريق فارغًا فلا أحد يحتاج الشرطي.
أهداف الصوت: كمون باتجاه واحد ≤ 150 ملّي ثانية (ITU-T G.114)، وارتعاش ≤ 30 ms، وفقد ≤ 1%. DSCP ستة بتات في رأس IP (RFC 2474): EF = 46 للصوت (RFC 3246)، وAF41 = 34 للفيديو التفاعلي، وCS6 = 48 لبروتوكولات التوجيه، و0 للعادي. حد الثقة: تثق بعلامة الهاتف الرسمي فقط، وتعيد تعليم الباقي. LLQ: طابور أولوية صارم للصوت مع policer يحدّه (عادة ≤ 33% من الوصلة)، وCBWFQ يوزّع الباقي بحصص. التحديد (policing) يرمي ما يزيد فورًا، والتشكيل (shaping) يخزّنه ويؤخره ليخرج بمعدل ثابت، ويستخدم قبل وصلة مزوّد أبطأ من المنفذ. مكالمة G.711 تحتاج نحو 87 kbps شاملة رؤوس Ethernet.
قبل أن تبدأ
📦النقل: TCP وUDP
تعرف أن الصوت يعمل على UDP ولا يُعاد إرساله.
📈مراقبة الشبكة
تعرف الحزم المرمية والكمون.
الفكرة الجوهرية
1متى تحتاج QoS أصلًا؟
QoS يعمل فقط عند الازدحام: حين تصل حزم أكثر مما يخرج، فتصطف في طابور. في شبكة LAN بسرعة 10 Gbps ومستخدمين قليلين لا يكاد يظهر. مكانه الحقيقي: وصلات WAN بين الفروع، ووصلة الإنترنت، والواي فاي، ونقاط تجمّع منافذ كثيرة في منفذ واحد. السؤال الأول دائمًا: هل أحل المشكلة بسعة أكبر بسعر معقول؟
| نوع الحركة | الكمون | الارتعاش | الفقد | DSCP |
|---|---|---|---|---|
| الصوت | ≤ 150 ms باتجاه واحد | ≤ 30 ms | ≤ 1% | EF (46) |
| فيديو تفاعلي | ≤ 200 ms | ≤ 30–50 ms | ≤ 0.1–1% | AF41 (34) |
| تطبيقات العمل | مرن | غير مهم | TCP يعيد | AF21 (18) |
| النسخ الاحتياطي والتحديثات | لا يهم | لا يهم | TCP يعيد | CS1 (8) |
2التصنيف والتعليم بـ DSCP
صنّف أقرب ما يكون للمصدر: منفذ الهاتف، أو قائمة تطابق المنافذ والعناوين. ثم علّم الحزمة بكتابة قيمة DSCP في رأس IP، فلا يحتاج كل موجّه بعدها أن يعيد الفحص. وحد الثقة مهم: لو وثقت بأي علامة، فسيعلّم أي برنامج حركته EF ليتقدم الطابور.
هذا ما تراه في Wireshark: حقل ToS بايت واحد، وأعلى ستة بتات منه هي DSCP.
CLASSES = {46: "EF voice", 34: "AF41 video", 26: "AF31 signalling", 18: "AF21 business",
8: "CS1 scavenger", 48: "CS6 routing", 0: "best effort"}
def dscp_of(tos_byte):
return tos_byte >> 2 # DSCP is the top 6 bits of the old ToS byte
for tos in (0xB8, 0x88, 0x00, 0x20, 0xC0):
d = dscp_of(tos)
print(f"ToS 0x{tos:02X} = {tos:08b} -> DSCP {d:2} ({d:06b}) {CLASSES.get(d, '?')}")3الطوابير: الأولوية والحصص
في منفذ الخروج طوابير متعددة. LLQ طابور أولوية صارم: كلما وُجدت حزمة صوت خرجت أولًا. لكنه محدود بسقف، وإلا لجوّع الصوت الكثير كل شيء آخر. الباقي في CBWFQ: لكل فئة نسبة مضمونة وقت الزحام، والفائض يُقسم. وفي طابور الحركة العادية، WRED يرمي حزم TCP مبكرًا قليلًا قبل أن يمتلئ الطابور، فتبطئ الأجهزة قبل أن يُرمى كل شيء.
class-map match-any VOICE match dscp ef policy-map WAN-OUT class VOICE priority percent 30 ! LLQ, capped at 30% class VIDEO bandwidth percent 25 class class-default fair-queue random-detect dscp-based ! shape to the provider rate, then queue inside the shaper policy-map SHAPE-50M class class-default shape average 50000000 service-policy WAN-OUT interface gi0/0/1 service-policy output SHAPE-50M
4التحديد والتشكيل، وحساب الصوت
منفذك 1 Gbps لكن عقد المزوّد 50 Mbps. لو أرسلت أسرع، سيرمي المزوّد الزائد عشوائيًا (policing) فيضيع صوتك مع غيره. الحل أن تشكّل أنت إلى 50 Mbps قبل أن تخرج، فيحدث الطابور عندك حيث يعمل QoS الذي ضبطته. ولحجز طابور الصوت احسب: عدد المكالمات المتزامنة × عرض المكالمة الواحدة.
غيّر عدد المكالمات أو الترميز لترى متى يتجاوز الصوت ثلث الوصلة.
def call_kbps(codec_kbps, ms_per_packet, overhead_bytes):
pps = 1000 / ms_per_packet
payload = codec_kbps * 1000 / 8 / pps # bytes of voice per packet
return (payload + overhead_bytes) * 8 * pps / 1000
ETH_IP_UDP_RTP = 18 + 20 + 8 + 12 # Ethernet + IP + UDP + RTP headers
g711 = call_kbps(64, 20, ETH_IP_UDP_RTP)
g729 = call_kbps(8, 20, ETH_IP_UDP_RTP)
print(f"G.711 call: {g711:.1f} kbps G.729 call: {g729:.1f} kbps")
link_mbps, calls = 50, 120
need = calls * g711 / 1000
print(f"{calls} G.711 calls need {need:.1f} Mbps = {100 * need / link_mbps:.0f}% of {link_mbps} Mbps")
print("fits a 33% priority queue" if need <= link_mbps * 0.33 else "too much voice: use G.729 or a bigger link")مثال محلول
المسألة: فرع بوصلة WAN 20 Mbps، فيه 40 هاتفًا (أقصى 25 مكالمة متزامنة بـ G.711)، وفيديو اجتماعات، ونسخ احتياطي ليلي يبدأ أحيانًا نهارًا. المكالمات تتقطع عند النسخ. صمّم السياسة.
الحل: الصوت: 25 × 87.2 ≈ 2.2 Mbps، نحو 11% من الوصلة، فطابور أولوية بسقف 15% يكفي ويترك هامشًا. الفيديو AF41 بحصة 30%. تطبيقات العمل AF21 بحصة 20%. النسخ الاحتياطي يُعلَّم CS1 ويأخذ ما تبقى فقط. حد الثقة: منافذ الهواتف تثق بعلامة الهاتف، وكل منفذ آخر يُعاد تعليمه 0. والأهم: شكّل إلى 20 Mbps على منفذ الخروج وضع السياسة داخل المشكّل. تحقق بقياس الارتعاش والفقد للمكالمات أثناء نسخ احتياطي تجريبي.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| QoS يزيد سرعة الوصلة. | لا يضيف بتًا واحدًا. يقرر فقط من يُرمى أو ينتظر حين تمتلئ. |
| اجعل كل شيء مهم أولوية عالية. | إن كان كل شيء أولوية فلا شيء أولوية. الطابور الصارم للصوت فقط ومحدود. |
| العلامات تعبر الإنترنت كما هي. | الإنترنت العام لا يحترم علاماتك غالبًا. QoS يعمل في الشبكات التي تتحكم بها أو بعقد مع المزوّد. |
أين تقابله في العمل
📞الهاتف عبر IP
طابور EF يجعل المكالمة واضحة رغم الزحام.
🏥المستشفيات
أجهزة المراقبة الطبية تأخذ فئة محمية على الشبكة اللاسلكية.
🏪الفروع والمتاجر
نقاط البيع تتقدم على تحديثات الأنظمة في وصلة صغيرة.
اختبر فهمك
ما قيمة DSCP المعتادة للصوت؟
Expedited Forwarding للصوت، وAF41 للفيديو.
ما أقصى كمون باتجاه واحد يوصى به للصوت؟
توصية ITU-T G.114 للحديث الطبيعي.
ما الفرق بين التحديد والتشكيل؟
لهذا تشكّل قبل وصلة المزوّد بدل أن يحددك هو.
لماذا يُحدّ طابور الأولوية للصوت بسقف؟
طابور صارم بلا سقف يأخذ الوصلة كلها إن كثر ما فيه.
أين تضع حد الثقة؟
أقرب نقطة للمصدر تستطيع فيها التحقق من أن الجهاز هاتف رسمي.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا لا تحتاج QoS غالبًا في LAN بسرعة 10 Gbps؟
لأن الطوابير لا تتكون إلا عند الزحام، والزحام نادر بهذه السعة.
مكالمة تتقطع رغم أن الصوت معلّم EF. ما أول شيء تفحصه؟
هل الطابور يتكون في مكان سياستك؟ إن كان الزحام عند المزوّد بلا تشكيل عندك، فسياستك لا تعمل.
لماذا يُعلَّم النسخ الاحتياطي CS1 بدل أن يُترك عاديًا؟
ليأخذ أقل من الحركة العادية، فلا يزاحم حتى التصفح وقت الزحام.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.