Посмотреть исходный код на GitHub |
Вы решили, что хотите поэкспериментировать с межсетевой многоадресной рассылкой с помощью OpenWeave. В этом практическом руководстве показано использование инструмента моделирования сети Happy для настройки виртуальной топологии, которая демонстрирует использование уровня Inet OpenWeave в двух разных сетях с многоадресным прокси-сервером.
Загрузите и соберите mcproxy
Демон многоадресной рассылки IPv6 mcproxy служит для проксирования/пересылки/маршрутизации многоадресного трафика IPv6 через два непересекающихся сетевых канала IPv6.
Хотя не особенно важно, где вы клонируете и создаете исполняемый файл демона mcproxy , обратите внимание на место, где вы его создаете, поскольку относительный или абсолютный путь к нему необходим в шаге 6 ниже.
git clone https://github.com/mcproxy/mcproxy.git mcproxysudo apt-get install qt5-qmake qt5-defaultcd mcproxy/mcproxyqmakemake
Скачивайте, собирайте и устанавливайте счастливо
git clone https://github.com/openweave/happy.git happysudo apt-get install bridge-utils python-lockfile python-psutil python-setuptoolscd happysudo make install
Загрузите и соберите ядро openweave
git clone https://github.com/openweave/openweave-core.git openweave-corecd openweave-core./configuremake
Установите счастливую топологию
Это создает топологию, очень похожую на Happy Codelab .
happy-network-add ThreadNetwork threadhappy-network-address ThreadNetwork fd00:0000:0000:0006::happy-network-add WiFiNetwork wifihappy-network-address WiFiNetwork fd00:0000:0000:0001::happy-network-address WiFiNetwork 192.168.1.0happy-node-add ThreadNodehappy-node-add WiFiNodehappy-node-add BorderRouterhappy-node-join ThreadNode ThreadNetworkhappy-node-join WiFiNode WiFiNetworkhappy-node-join BorderRouter ThreadNetworkhappy-node-join BorderRouter WiFiNetworkhappy-network-route --prefix fd00:0000:0000:0006:: ThreadNetwork BorderRouterhappy-network-route --prefix fd00:0000:0000:0001:: WiFiNetwork BorderRouterhappy-network-route --prefix 192.168.1.0 WiFiNetwork BorderRouter
Создайте конфигурацию mcproxy для топологии Happy.
Это создает конфигурацию многоадресного прокси-сервера IPv6 между имитируемым сетевым интерфейсом «Поток» на «wpan0» и имитируемым сетевым интерфейсом «WiFi» на «wlan0» в топологии Happy, которую мы создали выше на шаге 4.
Хотя не особенно важно, где вы создаете файл mcproxy.conf , обратите внимание на место, где вы его создаете, поскольку относительный или абсолютный путь к нему необходим на шаге 6.
cat > mcproxy.conf << EOF
protocol MLDv2;
pinstance myProxy: wpan0 ==> wlan0;
EOF
Запустите демонстрацию
При этом на узле «BorderRouter» запускается прокси-сервер многоадресной рассылки IPv6, mcproxy , а затем запускается отправитель и получатель функционального теста многоадресной рассылки уровня Inet на смоделированных узлах «Thread» и «WiFi» соответственно.
Если хотите, вы можете транспонировать узлы отправителя и получателя, и пример также будет работать одинаково.
Каждый из следующих наборов команд следует запускать из параллельных независимых оболочек.
Пограничный маршрутизатор
happy-shell BorderRouter<path-to-mcproxy-from-step1>/mcproxy -f <path-to-mcproxy-config-from-step5>/mcproxy.conf
Получатель
happy-shell WiFiNodeopenweave-core/src/test-apps/TestInetLayerMulticast -6 --udp -I wlan0 -g 5 --group-expected-rx-packets 5 --group-expected-tx-packets 0 -l
Отправитель
happy-shell ThreadNodeopenweave-core/src/test-apps/TestInetLayerMulticast -6 --udp -I wpan0 -g 5 --group-expected-rx-packets 0 --group-expected-tx-packets 5 -L
Выход
Отправитель
openweave-core/src/test-apps/TestInetLayerMulticast -6 --udp -I wlan0 -g 5 ... -L
Weave Node ready to service events; PID: 50845; PPID: 46482
Using UDP/IPv6, device interface: wpan0 (w/o LwIP)
Will join multicast group ff15::5
1/5 transmitted for multicast group 5
2/5 transmitted for multicast group 5
3/5 transmitted for multicast group 5
4/5 transmitted for multicast group 5
5/5 transmitted for multicast group 5
Will leave multicast group ff15::5
WEAVE:IN: Async DNS worker thread woke up.
WEAVE:IN: Async DNS worker thread exiting.
WEAVE:IN: Async DNS worker thread woke up.
WEAVE:IN: Async DNS worker thread exiting.
Получатель
openweave-core/src/test-apps/TestInetLayerMulticast -6 --udp -I wlan0 -g 5 ... -l
Weave Node ready to service events; PID: 50826; PPID: 46499
Using UDP/IPv6, device interface: wlan0 (w/o LwIP)
Will join multicast group ff15::5
Listening...
UDP packet received from fd00::6:8693:b7ff:fe5a:1dc1:4242 to ff15::5:4242 (59 bytes)
1/5 received for multicast group 5
UDP packet received from fd00::6:8693:b7ff:fe5a:1dc1:4242 to ff15::5:4242 (59 bytes)
2/5 received for multicast group 5
UDP packet received from fd00::6:8693:b7ff:fe5a:1dc1:4242 to ff15::5:4242 (59 bytes)
3/5 received for multicast group 5
UDP packet received from fd00::6:8693:b7ff:fe5a:1dc1:4242 to ff15::5:4242 (59 bytes)
4/5 received for multicast group 5
UDP packet received from fd00::6:8693:b7ff:fe5a:1dc1:4242 to ff15::5:4242 (59 bytes)
5/5 received for multicast group 5
Will leave multicast group ff15::5
WEAVE:IN: Async DNS worker thread woke up.
WEAVE:IN: Async DNS worker thread exiting.
WEAVE:IN: Async DNS worker thread woke up.
WEAVE:IN: Async DNS worker thread exiting.
Посмотреть исходный код на GitHub