كود المصدر - iptvprobe_v0.4.tbz2
يمكن مناقشة الأسئلة المتعلقة بIPTVProbe منتدى البث التلفزي عبر الإنترنت لشركة NetUP
يتكون البرنامج من الأجزاء التالية:
بناء المجمع:
cd iptvprobe/userver/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
إنشاء قاعدة البيانات:
mysqladmin create iptvprobe mysql iptvprobe < db.sql
إطلاق المجمع:
./iptvprobe_server -l root -s 127.0.0.1
في هذا المثال يكتب المجمع إحصائيات في قاعدة بيانات 'iptvprobe' في المستقبل المحلي localhost (127.0.0.1)
إنشاء البرنامج التطبيقي لقاعدة platform x86:
cd iptvprobe/udaemon/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
إنشاء نموذج Linux kernel لقاعدة platform x86:
cd iptvprobe/kmodule/ make
إنشاء نموذج Linux kernel لقاعدة platform sh4 (IP STB AmiNET 130)
cd iptvprobe/kmodule/ export CROSS_COMPILE=sh4-unknown-linux-gnu- make ARCH=sh amino130
يشمل ملف aminet130_bin/ نموذجا Linux kernel مسبق الإنشاء وبرنامجا تطبيقيا على مستوى المستخدم AmiNET 130 IP STB.
تحميل نموذج Linux kernel:
cd iptvprobe/kmodule/ insmod netup_netprobe.ko hook_position=0
تحدد معايير hook_position موقع ملفات hook لفيلتر الشبكة netfilter:
0 - معالجة جميع ملفات بروتوكول الإنترنت القادمة (سياسة PREROUTING) 1 - معالجة جميع ملفات بروتوكول الإنترنت الخارجة (سياسة POSTROUTING)
يجب تحديد قيمة "0" عند تشغيل النموذج على جهاز زبون (على سبيل المثال، IP STB AmiNET 130). في حالة تشغيل النموذج على خادم ذو إرسال متعدد، يجب تحديد قيمة "1".
من الواجب إنشاء عقدة في نظام ملف /dev filesystem وإطلاق برنامج تطبيقي iptvprobe عند تحميل نموذج netup_netprobe.ko بنجاح:
mknod /dev/iptvprobe c 61 0 cd iptvprobe/udaemon/ ./iptvprobe -i 224.117.117.10 -s 10.1.4.242 -r 5 -p 7700
اختيارات خط التسيير command line:
-i تحدد عنوان الإرسال المتعدد للإشراف -s تحدد عنوان بروتوكول الإنترنت IP للمجمع -p تحدد مدخل المجمع لقبول الربط يالمسابير -r تحدد محدد التشغيل run identifier
يمكن إيجاد الأمر المجمع كليا في الأنظمة الثانوية للتقارير.
لتشغيل الأنظمة الثانوية للتقارير يجب نسخ نصوص الشبكة من iptvprobe/report_sys/ إلى ملف cgi-bin على خادمك في الشبكة:
cd iptvprobe/report_sys/ cp *.pl /var/www/localhost/cgi-bin/
يجب تثبيت perl و GD على النظام من أجل تشغيل جيد.
وجه متصفح الشبكة للعناوين URL التالية:
http://address/cgi-bin/iptvprobe_runs.pl
حيث يكون "العنوان" هو عنوانا لخادمك على الشبكة.
تضم صفحة البداية قائمة تشغيلات المسبار:
خانة "الأمر الجاري على المسبار" يشمل الأمر المجمع كليا الذي يجب تشغيله على المسبار.
يمكن مشاهدة التمثيل المبياني للتدفق المتعدد الإرسال باستخدام وصلات "UDP timeline diagram" أو "PCR Arrival diagram". 30 ثانية الأخيرة تقريبا تظهر على المبيان.
تم الانتهاد من تشغيلين على سبيل المثال. الأول تم إنشاؤه على AmiNET 130 IP STB الموصول عبر وصلة SOHO عادية دون دعم من استطلاع IGMP. التشغيل الثاني تم إنشاؤه على AmiNET 130 IP STB الموصول عبر وصلة Cisco catalyst مع استطلاع IGMP. في الحالة الأولى هناك العديد من خسائر في ملف بروتوكول الإنترنت. المبيان التالي يظهر هاتين الحالتين:
15-30 ثانية الأخيرة تقريبا تظهر على المحور x.
المعايير التالية تظهر على المحور y:
| جدول SQL | الوصف |
| التشغيلات | قائمة التشغيلات. كل تشغيل يتم تحديده بعدد وحيد |
| بيانات بروتوكول الإنترنت data_ip | ملفات بروتوكول الإنترنت المستشعرة من المسبار. وقت وصول ملف بروتوكول الإنترنت (timestamp) مخزن في نانو الثانية nanoseconds. يتم تخزين اسم الملف packet ID (header_id) |
| بيانات data_ts | ملفات تدفق نقل MPEG Transport Stream (TS) المستشعرة من المسبار. تم تخزين القيم التالية: PID, PTS/DTS/PCR, قيم العداد (cont_counter) |
| stat_bandwidth | الإحصائيات المجمعة |
منذ نسخة iptvprobe v0.3، يمكن للمسبار تتبع طلبات IGMP المرسلة والمستقبلة من قبل IP STB. يتم أيضا تسجيل الختمات الزمنة timestamps لملف المجموعة الأخيرة قبل مغادرة مجموعة والملف الأول بعد انضام أحدها. يمكن استخدام هذه البيانات في تقييم أداء معدات الشبكة التي تعالج طلبات IGMP واستطلاع IGMP.
في ما يلي مثال لهذه الخاصية مع Aminet 130 IP STB للمسبار والخادم الوسيط NetUP للمجمع. تم استخدام Cisco Catalyst 3560 كعاكس التيار مع دعم استطلاع IGMP smooping، وتشتغل Cisco Catalyst C3550-12T كمستعلم IGMP.
تم تشغيل القنوات التلفزية على IP STB. عند ذاك ترسل الأجهزة الثابتة STB طلبا IGMP لمغادرة مجموعة الإرسال المتعدد multicast group 224.121.0.4. ومن ثم طلبا آخر للالتحاق بالمجموعة على 224,121,0,3, يتم تسجيل هذه الطلبات من قبل المسبار وعرضها على واجهة الشبكة مع الختمات الزمنية timestamps:
العناصر التي تحظى باهتمامنا مجتمعة في الإطار الأزرق. من الواضح أنه بعد ترك IGMP الطلب لمجموعة الالإرسال المتعدد multicast group 224.121.0.4، استمرت الأجهزة الثابتة STB في استقبال الملفات المرسلة للمجموعة المذكورة ل 4996.2 ms آخر. تأخر الوقت بين IGMP ينضم للطلب ل مجموعة 224.121.0.3 والمجموعة المستقبلة الأولى تعير ب 80 ms. التأخر بين طلبات IGMP (محدد أساسا من قبل برنامج الأجهزة الثابتة STB) هو 12.0 ms.
معا، الوقت الإجمالي لتشغيل القناة التلفزية على مستوى طلبات IGMP يلخص في 92 milliseconds. التأخر الحاصل حتى ظهور القناة التلفزية المختارة حديثا على الشاشة يعتمد على عدة معايير، بما فيها تدفق MPEG، التزامن بين الصوت والصورة، إلخ.، ويمكن أن يصل إلى ثانية واحدة أو أكثر.
إضافة إلى ذلك، استقبلت الأجهزة الثابتة STB الملفات من مجموعتي الإرسال المتعدد لمدة 5 ثوان إجمالا، وبالتالي تفقد المزيد من الحزمة bandwidth. لتجنب هذا الفقد، يجب تجهيز عاكس التيار لمغادرة فورية. وذلك كما يلي:
c3560(config)#ip igmp snooping vlan 1 immediate-leave
عند إظهاره كما سبق، يطفئ عاكس التيار دفق البيانات للمجموعة المتروكة في لحظة. يتم إظهر النتائج في الإطار الأحمر. يمكن مشاهدة أنه بعد المغادرة طلب "IGMPv2: مجموعة المغادرة 224,121,0,11" لم تستقبل الأجهزة الثابتة ملفات عن مجموعة 224,121,0,11. لذلك، تستقبل الأجهزة الثابتة STB في أي لحظة ملفات من قناة واحدة فقط.
من أجل تسجيل صحيح للمعايير المؤقتة لطلبات IGMP، يجب تحديد واجهة الشبكة على نظام promisc قبل البدء في المسبار على الأجهزة الثابتة STB:
# ifconfig eth0 promisc