Kaynak kodu - iptvprobe_v0.4.tbz2
IPTVProbe ile ilgili sorular NetUP's IPTV Forumunda tartışılabilir
Yazılım aşağıdaki kısımlardan oluşur:
Kolektör oluşturulması:
cd iptvprobe/userver/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
Veritabanı oluşturma:
mysqladmin create iptvprobe mysql iptvprobe < db.sql
Kolektörü başlatma:
./iptvprobe_server -l root -s 127.0.0.1
Bu örnekte kolektör istatistikleri localhost (127.0.0.1) üzerinde 'iptvprobe' veritabanına yazar
x86 platformu için uygulama oluşturma:
cd iptvprobe/udaemon/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
x86 platformu için Linux modül çekirdeği oluşturma:
cd iptvprobe/kmodule/ make
sh4 platformu (IP STB AmiNET 130) için Linux modül çekirdeği oluşturma:
cd iptvprobe/kmodule/ export CROSS_COMPILE=sh4-unknown-linux-gnu- make ARCH=sh amino130
aminet130_bin/ dizininde daha önceden oluşturulan bir Linux modül çekirdeği ve AmiNET 130 IP STB için bir kullanıcı seviyesi uygulaması bulunmaktadır.
Linux modül çekirdeğinin yüklenmesi:
cd iptvprobe/kmodule/ insmod netup_netprobe.ko hook_position=0
hook_position parametresi net filtresi için IP paketleri kanca pozisyonunu belirler:
0 - gelen tüm IP paketlerini (PREROUTING politikası) işler 1 - giden tüm IP paketlerini işler (POSTROUTING politikası)
Modülü istemci aygıtında çalıştırmak için "0" değeri ayarlanmalıdır (örneğin, IP STB AmiNET 130). Modülü çoklu gönderi trafiği gönderen bir sunucuda çalıştırmak için "1" değeri ayarlanmalıdır.
/dev dosya sisteminde bir düğüm oluşturulması ve netup_netprobe.ko modülü başarıyla yüklendiğinde iptvpobe uygulamasının başlatılması gereklidir:
mknod /dev/iptvprobe c 61 0 cd iptvprobe/udaemon/ ./iptvprobe -i 224.117.117.10 -s 10.1.4.242 -r 5 -p 7700
Komut satırı seçenekleri:
-i İzlemek için çoklu gönderi adresini ayarlar -s Kolektörün IP adresini belirler -p Problardan bağlantı kabul etmek için kolektör bağlantı noktasını belirler -r Çalışma tanımlayıcısını belirler
Tam monte edilen komut raporlama alt sisteminde bulunabilir.
Rapor alt sistemini çalıştırmak için iptvprobe/report_sys/ adresindeki tüm web komutlarını web sunucunuzun cgi-bin klasörüne kopyalanması gereklidir:
cd iptvprobe/report_sys/ cp *.pl /var/www/localhost/cgi-bin/
Doğru çalışması için perl ve GD sisteminize kurulmalıdır.
Web tarayınıza aşağıdaki URL'yi girin:
http://address/cgi-bin/iptvprobe_runs.pl
burada "address" web sunucunuzun adresidir.
Çalışan prob listesinin bulunduğu sayfayı başlatın:
"Probda çalıştırma komutu" sütunu probda çalışması gereken tam toplanmış komutu içerir.
Çoklu gönderi akışının grafiksel sunumu "UDP zaman çizelgesi diyagramı" veya "PCR Varış Aralığı" linkleri kullanılarak görüntülenebilir. Yaklaşık olarak son 30 saniye çizelgede gösterilir.
İki örnek çalışması da yapılır. İlki basit bir SOHO anahtarı ile IGMP trafik gözetleme desteği olmadan bağlanan AmiNET 130 IP STB'de yapılır. İkinci çalışma Cisco catalyst anahtarı aracılığıyla IGMP trafik gözetlemesi ile bağlanan AmiNET 130 IP STB'de yapılır. İlk durumda çok sayıda IP paket kaybı vardır. Aşağıdaki çizelgelerde bu iki durum da gösterilmektedir:
Yaklaşık olarak son 15-30 saniye x ekseninde gösterilir.
Aşağıdaki parametreler y ekseninde gösterilir:
| SQL tablosu | Açıklama |
| çalışma | Liste çalışması. Her çalışma benzeri olmayan bir sayı ile tanımlanır |
| data_ip | Prob ile saptanan IP paketleri. IP paket varış zamanı (zaman pulu) nano saniye cinsinden yüklenir. Aynı zamanda paket ID'si (header_id) yüklenir |
| data_ts | Prob ile saptanan MPEG Nakil Akış (TS) paketleri. Aşağıdaki değerler yüklenir: PID, PTS/DTS/PCR, sayaç değerleri (cont_counter) |
| stat_bandwidth | Gruplanan istatistikler |
iptvprobe v0.3'den itibaren IP STB ile gönderilen ve alınan IGMP talepleri prob ile takip edilebilir. Bir gruptan ayrılmadan önce son grup paketinin zaman pulları ve bir araya getirildikten sonraki ilk paket de kaydedilir. IGMP taleplerini ve IGMP trafik gözetlemesini işleyen bu veriler ağ cihazının performansını değerlendirmek için kullanılabilir.
Aşağıda prob için Aminet 130 IP STB ve kolektör için NetUP Ara yazılımı ile birlikte bu işlevselliğin bir örneği verilmiştir. Cisco Catalyst 3560, IGMP trafik gözetleme desteği ile birlikte komütatör olarak kullanılmış ve Cisco Catalyst C3550-12T ise IGMP sorgulayıcısı olarak çalışmıştır.
TV kanalları IP STB'de değiştirilmiştir. Şu anda STB bir IGMP talebi göndererek 224.121.0.4 çoklu gönderi grubundan ayrılma talebi verir ve başka bir talep göndererek 224.121.0.3'de gruba katılma talebi verir. Bu talepler prob ile kaydedilir ve zaman pulları ile birlikte web arayüzünde gösterilir:
İlgi alanlarımızın öğeleri mavi çerçeve ile sarmalanmıştır. IGMP talebi 224.121.0.4'de çoklu gönderi grubuna bıraktıktan sonra STB başka bir 4996.2 ms için belirtilen gruba gönderilen paketleri almaya devam ettiği açıktır. IGMP'nin 224.121.0.3 grubuna katılma talebi ile bu grup için alınan ilk paket talep arasındaki zaman farkı 80 ms'ye toplanmıştır. IGMP talepleri arasındaki gecikme (asıl olarak STB yazılımı ile belirlenir) 12.0 ms'dir.
Hepsi bir arada IGMP talepleri seviyesine geçen TV kanalı toplam süresi toplamı 92 milisaniyedir. Yeni seçilen kanal TV ekranında görününceye kadar geçen gerçek gecikme birçok parametreye bağlıdır, bunlara MPEG tamponlaması, ses/video senkronizasyonu vb dahil olup 1 saniyeye kadar ve daha uzun süre sürebilir.
Bunun yanı sıra STB yaklaşık 5 saniye süreyle her iki çoklu gönderi grubundan da paket alır, dolayısıyla ekstra bant genişliği boşa çıkar. Böyle bir kayıptan kaçınmak için komütatör anlık ayrılma için yapılandırılmalıdır. Bu işlem aşağıdaki gibi yapılır:
c3560(config)#ip igmp snooping vlan 1 immediate-leave
Bu şekilde yapılandırırken, komütatör kullanılmayan grup için veri akışını bir an kapatacaktır. Sonuçlar kırmızı çerçevede gösterilmektedir. Şu mesajdan sonra görülebilir "IGMPv2: Leave Group 224.121.0.11" STB, 224.121.0.11 grubu için paket almadı. Dolayısıyla herhangi bir anda STB sadece bir kanalın paketlerini alır.
IGMP taleplerinden oluşan geçici parametrelerin doğru kaydedilmesi için STB'de probu başlatmadan önce ağ arayüzü promisc rejimine ayarlanmalıdır:
# ifconfig eth0 promisc