Here you find tools and backround knowledge to debug and test the Mcproxy.
An easy way to test the Mcproxy without physical hardware is to create dummy network interfaces.
Create 12 dummy interfaces:
sudo dummy_interfaces/auto_dummy.sh create 12
Delete all dummy interfaces:
sudo dummy_interfaces/auto_dummy.sh delete
Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine. This REAMDE explains how to use Mcproxy within Mininet.
With the Mcproxy Tester you can join groups, set source filter and send multicast packets for IPv4 and IPv6.
To build the Mcproxy Tester, the library boost_regex must be installed. This can be done with the following command:
sudo apt-get install libboost-all-dev
Build the Tester and move it to the directory tester:
cd ../mcproxy/
make clean
qmake CONFIG+=tester
make
cp tester ../debug/tester/.
The Tester loads per default an INI file with the name tester.ini. This INI file example defines two simple configurable actions:
-
receive_data subscribes group 239.99.99.99 with three sources in include mode and wait for arriving data
-
send_a_hello sends a hello message to group 239.99.99.99
These actions can be executed with the following command:
./tester receive_data
or
./tester send_a_hello tester.ini
With the Packet Dropper it is possible to interrupt links without changing interface states. It configures an interface to drop all outgoing packets (Hint: It is nessesary to run it on both sides of the link).
To interrupt the link:
packet_dropper/packet_dropper eth0 drop
To reconnect the link:
packet_dropper/packet_dropper eth0 clear
If you miss a kernel module you have to build your own kernel. The script install_kernel-sh downloads, configures, compiles and installs one for you.
Type the following command for more information:
kernel/install_kernel-sh help
The following options should be enabled:
IP_MULTICAST=y
IP_MROUTE=y
IP_MROUTE_MULTIPLE_TABLES=y
IPV6=y
IPV6_MROUTE=y
IPV6_MROUTE_MULTIPLE_TABLES=y
Locations:
+-> Networking support
|-+-> Networking options
|-+-> TCP/IP networking
|
|====> IP: multicast routing
|
|-+-> The IPv6 protocol
|
|====> IPv6: multicast routing
Displays the subscribed groups per interface:
/proc/net/igmp
/proc/net/igmp6
ip maddress show
Displays announced network interfaces for multicast routing (only for the default multicast talbe):
/proc/net/ip_mr_vif
/proc/net/ip6_mr_vif
Displays the multicast forwarding rules (only for the default multicast table):
/proc/net/ip_mr_cache
/proc/net/ip6_mr_cache
Displays the status of the multicast routing flag (mrt). It can only be hold by one socket per multiast routing table at a time):
/proc/sys/net/ipv4/conf/all/mc_forwarding
/proc/sys/net/ipv6/conf/all/mc_forwarding
Displays all announced interfaces for multicast routing:
/proc/sys/net/ipv4/conf/eth0/mc_forwarding
/proc/sys/net/ipv6/conf/eth0/mc_forwarding
Displays the multicast routing rules for a specific table (table 0 is the default table and summaries all tables):
ip -s mroute show table 0
ip -6 -s mroute show table 0
Defines the maximum allowed memberships:
/proc/sys/net/ipv4/igmp_max_memberships
Defines the maximum allowed source filter:
/proc/sys/net/ipv4/igmp_max_msf
/proc/sys/net/ipv6/igmp_max_msf