برنامج IPTVProbe لشركة NetUP

برنامج مجاني لمراقبة إرسال البث التلفزي عبر الإنترنت
الترخيص: الترخيص (GPLv2, GPLv3)

كود المصدر - iptvprobe_v0.4.tbz2

يمكن مناقشة الأسئلة المتعلقة بIPTVProbe منتدى البث التلفزي عبر الإنترنت لشركة NetUP

تغيير رمز الدخول

    نسخة 0.4
  • التنظيف الدوري لقاعدة البيانات.
  • مراقبة إرسال الجهاز متعدد الإرسال لكل مسبار.
  • قصور الذاكرة في خادم iptvprobe_server الثابت.
  • ملاحظة! يجب إعادة تنظيم قاعدة البيانات بالكامل عند الترقية من نسخ سابقة.
    نسخة 3.0
  • معالجة طلبات IGMP واستعراض المعايير المؤقتة IGMP المضافة.
  • تنقية الكود وتصحيح الشوائب الصغيرة.
  • بروتوكول تبادل المعطيات مع المسابير المحينة في النسخة الجديدة.
    نسخة 0.2
  • دعم Aminet 110 (ppc) مضاف.
    نسخة 0.1
  • الإطلاق الأول.
  • مراقبة الملفات المفقودة مضاف.
  • استراض استقبال ملفات UDP مضاف.

مخطط الشبكة

مخطط الشبكة

مظهر عملية المسبار (iptvprobe) والمجمع Probe (iptvprobe) and Collector Operation Layout

مخطط الشبكة

إنشاء وتثبيت البرنامج

يتكون البرنامج من الأجزاء التالية:

  • المجمع - يجمع الإحصائيات من المسابير. يتم تخزين الإحصائيات المجمعة في قاعدة البيانات (mysql).
  • المسبار - هو برنامج تطبيقي يعمل عن بعد. الإحصائيات حول ملفات بروتوكول الإنترنت المستقبلة تجمع من قبل المسبار وترسل إلى المجمع. يتكون المسبار من نموذج linux kernel (netup_netprobe.ko) وبرنامج على مستوى المستخدم (iptvprobe).
  • برنامج ثانوية للتقارير - هو مجموعة من نصوص الشبكة لإظهار الإحصائيات المجمعة.

إنشاء وإطلاق المجمع

بناء المجمع:

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)

إنشاء iptvprobe

إنشاء البرنامج التطبيقي لقاعدة 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

يمكن إيجاد الأمر المجمع كليا في الأنظمة الثانوية للتقارير.

الأنظمة الثانوية للتقارير Reports Subsystem

لتشغيل الأنظمة الثانوية للتقارير يجب نسخ نصوص الشبكة من 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

حيث يكون "العنوان" هو عنوانا لخادمك على الشبكة.

تضم صفحة البداية قائمة تشغيلات المسبار:

جدول تشغيلات iptvprobe

خانة "الأمر الجاري على المسبار" يشمل الأمر المجمع كليا الذي يجب تشغيله على المسبار.

يمكن مشاهدة التمثيل المبياني للتدفق المتعدد الإرسال باستخدام وصلات "UDP timeline diagram" أو "PCR Arrival diagram". 30 ثانية الأخيرة تقريبا تظهر على المبيان.

تم الانتهاد من تشغيلين على سبيل المثال. الأول تم إنشاؤه على AmiNET 130 IP STB الموصول عبر وصلة SOHO عادية دون دعم من استطلاع IGMP. التشغيل الثاني تم إنشاؤه على AmiNET 130 IP STB الموصول عبر وصلة Cisco catalyst مع استطلاع IGMP. في الحالة الأولى هناك العديد من خسائر في ملف بروتوكول الإنترنت. المبيان التالي يظهر هاتين الحالتين:

نتائج القياس على جهاز الاستقبال الرقمي لبروتوكول الإنترنت AmiNET 130
نتائج القياس على جهاز الاستقبال الرقمي لبروتوكول الإنترنت AmiNET 130

تفسير المبيان

15-30 ثانية الأخيرة تقريبا تظهر على المحور x.

المعايير التالية تظهر على المحور y:

  • عدد ملفات بروتوكول الإنترنت IP packets مجمعة داخل 100 msec.
  • عدد البايت bytes المجمعة داخل 100 msec.
  • الخط الأحمر يحدد ملفات بروتوكول الإنترنت المفقودة. يم إظهار القمة على المبيان عند استشعار تقطع في "IP packet ID". القيمة 0 تبين عدم وجود أي فقد للملفات.

وصف قاعدة البيانات

جدول SQL الوصف
التشغيلات قائمة التشغيلات. كل تشغيل يتم تحديده بعدد وحيد
بيانات بروتوكول الإنترنت data_ip ملفات بروتوكول الإنترنت المستشعرة من المسبار. وقت وصول ملف بروتوكول الإنترنت (timestamp) مخزن في نانو الثانية nanoseconds. يتم تخزين اسم الملف packet ID (header_id)
بيانات data_ts ملفات تدفق نقل MPEG Transport Stream (TS) المستشعرة من المسبار. تم تخزين القيم التالية: PID, PTS/DTS/PCR, قيم العداد (cont_counter)
stat_bandwidth الإحصائيات المجمعة

الإشراف على IGMP

منذ نسخة 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:

NetUP's IPTVProbe, توقيت IGMP

العناصر التي تحظى باهتمامنا مجتمعة في الإطار الأزرق. من الواضح أنه بعد ترك 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

قائمة الأعمال TODO

  • تحسين المبيانات (المعيار، الإزاحة، إلخ.)
  • مبيان "PCR jitter"، مبيانات أخرى
  • يبني ثنائية المسبار probe binary لأنواع مختلفة من IP STB
  • مراقب توفر المسبار لتدبير الشبكة


Get Adobe Flash player