Для тех, кто не знает: Mininet - это инструмент, который позволяет автоматизировать создание нескольких коммутаторов OVS, chroot linux «контейнеров» в качестве хостов и связывает их все вместе с прототипами сетей на базе OVS.
Я пытаюсь создать немного нестандартную среду mininet и застрял на том, как mininet обрабатывает контейнеры и сети. Я понимаю, что когда вы создаете новый хост в mininet, между экземпляром mininet и «хостом» создается пара veth.
На этой диаграмме я обрисовал синим цветом стандартное поведение мининета - пара veth между экземпляром мининета и хостом. Я пытаюсь создать ссылку, отмеченную красным, пару veth между «хостом» mininet и сетевым стеком linux на сервере mininet.
Этот сценарий позволил бы мне запустить контроллер на хосте и обмениваться данными с хост-машиной mininet и остальной частью виртуальной сети.
Как мне создать новую пару veth между chroot-контейнером и хост-машиной?
Вы можете создать новую пару veth с помощью следующих команд.
#!/bin/bash
CONTAINERPID=$(get the pid of the container)
ip link add dev swport1 type veth peer h1-eth1
ip link set dev swport1 up
ip link set netns "${CONTAINERPID}" dev h1-eth1
Это создаст в контейнере «отключенную» ссылку, которую вам нужно будет вывести внутри контейнера и добавить IP-адреса и т. Д.