Mã nguồn - iptvprobe_v0.4.tbz2
Các thắc mắc liên quan đến IPTVProbe có thể được thảo luận tại Diễn đàn IPTV của NetUP
Phần mềm này gồm có các thành phần sau đây:
Thiết lập bộ thu góp:
cd iptvprobe/userver/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
Khởi tạo cơ sở dữ liệu:
mysqladmin create iptvprobe mysql iptvprobe < db.sql
Khởi động bộ thu góp:
./iptvprobe_server -l root -s 127.0.0.1
trong ví dụ này, bộ thu góp sẽ viết các số liệu thống kê vào cơ sở dữ liệu 'iptvprobe' trên máy chủ cục bộ (127.0.0.1)
Thiết lập ứng dụng cho nền hệ thống x86:
cd iptvprobe/udaemon/ cmake --debug-output . -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON make
Thiết lập mô-đun nhân Linux cho nền hệ thống x86:
cd iptvprobe/kmodule/ make
Thiết lập mô-đun nhân Linux cho nền hệ thống sh4 (IP STB AmiNET 130):
cd iptvprobe/kmodule/ export CROSS_COMPILE=sh4-unknown-linux-gnu- make ARCH=sh amino130
Thư mục aminet130_bin/ có chứa một mô-đun nhân Linux đã cài đặt sẵn và một ứng dụng cấp người dùng cho AmiNET 130 IP STB.
Tải mô-đun nhân Linux:
cd iptvprobe/kmodule/ insmod netup_netprobe.ko hook_position=0
Thông số hook_position sẽ định rõ vị trí móc nối các gói IP của bộ lọc mạng:
0 – xử lý tất cả các gói IP gửi đến (chính sách ĐỊNH TUYẾN TRƯỚC) 1 – xử lý tất cả các gói IP gửi đi (chính sách ĐỊNH TUYẾN SAU)
Giá trị "0" phải được thiết lập khi chạy mô-đun trên thiết bị của máy khách (chẳng hạn như IP STB AmiNET 130). Trong trường hợp chạy mô-đun trên một máy chủ bằng cách gửi đi lưu lượng đa hướng, giá trị "1" phải được thiết lập.
Yêu cầu phải tạo một hệ thống tập tin node in/ dev và cần phải khởi động ứng dụng iptvpobe khi mô-đun netup_netprobe.ko được nạp thành công:
mknod /dev/iptvprobe c 61 0 cd iptvprobe/udaemon/ ./iptvprobe -i 224.117.117.10 -s 10.1.4.242 -r 5 -p 7700
Các tùy chọn dòng lệnh:
-i Sets the multicast address for monitoring -s Specifies the IP address of the collector -p Specifies the port for the collector to accept connections from probes -r Specifies a run identifier
Có thể tìm được lệnh hợp dịch đầy đủ trong hệ thống con của các báo cáo.
Để chạy hệ thống con của các báo cáo, yêu cầu phải sao chép tất cả các tập lệnh web từ iptvprobe/report_sys/ sang thư mục cgi-bin trên máy chủ web của bạn:
cd iptvprobe/report_sys/ cp *.pl /var/www/localhost/cgi-bin/
ngôn ngữ perl và GD phải được cài đặt trên hệ thống để hoạt động đúng.
Hướng trình duyệt web sang địa chỉ URL sau đây:
http://address/cgi-bin/iptvprobe_runs.pl
trong đó "address" là một địa chỉ máy chủ web của bạn.
Trang khởi động chứa danh sách các lệnh chạy đầu dò:
Cột "Lệnh chạy trên đầu dò" có chứa lệnh đã hợp dịch đầy đủ cần được chạy trên đầu dò.
Có thể xem hiển thị đồ họa của dòng đa hướng bằng cách sử dụng các liên kết "biểu đồ dòng thời gian UDP" hoặc "Quãng cách Đến PCR". Khoảng 30 giây cuối cùng sẽ được hiển thị trên biểu đồ.
Hai lệnh chạy ví dụ đã được thực hiện. Lệnh chạy đầu tiên đã được thực hiện trên AmiNET 130 IP STB được kết nối qua một bộ chuyển đổi đơn giản SOHO mà không có hỗ trợ theo dõi IGMP. Lệnh chạy thứ hai được thực hiện trên AmiNET 130 IP STB được kết nối qua một bộ chuyển đổi Cisco catalyst có hệ thống theo dõi IGMP. Ở trường hợp đầu tiên, có nhiều dữ liệu gói IP mất. Các biểu đồ sau đây sẽ minh họa cho hai trường hợp này:
Khoảng 15-30 giây cuối cùng sẽ được hiển thị trên trục x.
Các thông số sau đây sẽ được hiển thị trên trục y:
| Bảng SQL | Mô tả |
| các lệnh chạy | Danh sách các lệnh chạy. Mọi lệnh chạy đều được nhận dạng bằng một số duy nhất |
| dữ liệu_ip | Các gói IP được dò tìm bằng đầu dò. Thời gian đến của gói IP (nhãn thời gian) được lưu trữ bằng nano giây. Thông tin Nhận dạng gói cũng được (header_id) lưu trữ |
| dữ liệu_ts | Các gói Dòng Chuyển tải MPEG (TS) được dò tìm bằng đầu dò. Các giá trị sau đây được lưu trữ: PID, PTS/DTS/PCR, giá trị của bộ đếm (cont_counter) |
| stat_bandwidth | Số liệu thống kê được tập hợp |
Từ iptvprobe phiên bản 0.3, các yêu cầu IGMP được gửi và nhận bằng IP STB có thể được theo dõi bằng một đầu dò. Các nhãn thời gian của gói nhóm cuối cùng trước khi để lại một nhóm và gói đầu tiên sau khi ghép nối một nhóm cũng được ghi lại. Các dữ liệu này có thể được dùng để đánh giá hiệu quả hoạt động của thiết bị liên kết mạng giúp xử lý các yêu cầu IGMP và theo dõi IGMP.
Dưới đây là một ví dụ về tính năng này có trang bị Aminet 130 IP STB cho đầu nối và NetUP Middleware cho bộ thu góp. Cisco Catalyst 3560 đã được dùng như một bộ chuyển mạch có hỗ trợ tính năng Theo dõi IGMP, và Cisco Catalyst C3550-12T được dùng như một bộ truy vấn IGMP.
Các kênh Truyền hình đã được chuyển đổi trên IP STB. Tại thời điểm đó, STB sẽ gửi một yêu cầu IGMP để lại nhóm đa hướng 224.121.0.4 và sau đó gửi một yêu cầu khác về việc liên kết nhóm tại 224.121.0.3. Các yêu cầu này đều được ghi lại bằng đầu dò và được hiển thị trên giao diện web cùng với các nhãn thời gian:
Các mục quan tâm của chúng tôi nằm trong khung màu xanh. Rõ ràng là sau khi IGMP để lại yêu cầu cho nhóm đa hướng tại 224.121.0.4, STB được tiếp tục thu nhận các gói được gửi cho nhóm đã kể trên cho 4996.2 ms khác. Trì hoãn thời gian giữa yêu cầu liên kết IGMP đến nhóm 224.121.0.3 và gói đã nhận đầu tiên cho nhóm đó được tính đến 80 ms. Trì hoãn giữa các yêu cầu IGMP (chủ yếu được xác định bằng phần mềm STB) là 12.0 ms.
Nhìn chung, tổng thời gian chuyển đổi kênh Truyền hình trên cấp yêu cầu IGMP có tổng lên đến 92 mili giây. Trì hoãn thực tế cho đến khi kênh vừa lựa chọn xuất hiện trên màn hình Truyền hình phụ thuộc vào nhiều thông số, bao gồm hệ thống đệm MPEG, đồng bộ hóa audio/video, v.v..., và có thể lên đến 1 giây hoặc thậm chí nhiều hơn nữa.
Bên cạnh đó, STB đã thu nhận các gói từ các nhóm đa hướng trong khoảng 5 giây, vì thế làm tốn thêm băng thông. Để tránh mất mát, bộ chuyển đổi phải được đặt cấu hình đối với yêu cầu để lại tức thời. Điều này được thực hiện như sau:
c3560(config)#ip igmp snooping vlan 1 immediate-leave
Khi được cấu hình theo cách này, bộ chuyển đổi sẽ nhanh chóng ngắt dòng dữ liệu cho nhóm bị hủy bỏ. Kết quả sẽ được hiển thị trong khung màu đỏ. Có thể được nhìn thấy sau yêu cầu để lại"IGMPv2: Leave Group 224.121.0.11" STB không nhận được gói nào cho nhóm 224.121.0.11. Do vậy, tại bất kỳ thời điểm định sẵn nào, STB sẽ nhận được các gói chỉ có một kênh duy nhất.
Để ghi lại đúng các thông số thời gian về các yêu cầu IGMP, giao diện mạng phải được thiết lập sang chế độ promisc trước khi khởi động đầu dò trên STB:
# ifconfig eth0 promisc