Я пытаюсь создать следующую конфигурацию. Два (Docker) контейнера, давайте назовем их по именам хостов (s1 и s2), как описано ниже, каждый включает Open vSwitch. Я хочу подключить оба устройства OVS друг к другу и к контроллеру (POX).
Это то, что я делаю (все команды запускаются с привилегиями root, если это необходимо):
- Запустить первый контейнер как
docker run -itd -P --hostname=s1 --cap-add NET_ADMIN %DOCKER_IMAGE%
Запустите второй контейнер как
docker run -itd -P --hostname=s2 --cap-add NET_ADMIN %DOCKER_IMAGE%
2
docker exec CID_s1 ovs-vsctl add-br s1
(где CID_s1 - это CID контейнера s1)
docker exec CID_s2 ovs-vsctl add-br s2
3.
На хост-машине:
ip link add s1-eth1 type veth peer name s2-eth1
ip link set s1-eth1 netns PID_s1
(где PID_s1 - PID контейнера s1)
ip link set s2-eth1 netns PID_s2
4
Откройте терминал на s1 и напишите:
ovs-vsctl add-port s1 s1-eth1
ip link set s1-eth1 up
ifconfig s1-eth1 10.0.0.1
ovs-vsctl set-controller s1 tcp:172.17.0.1:6633
Откройте терминал на s2 и напишите:
ovs-vsctl add-port s2 s2-eth1
ip link set s2-eth1 up
ifconfig s2-eth1 10.0.0.2
ovs-vsctl set-controller s2 tcp:172.17.0.1:6633
В этот момент контроллер показывает, что коммутаторы были подключены, и я вижу, что в контроллере установлены потоки (контроллер действует как концентратор, поэтому все действия фактически выполняются).
Однако я не могу пропинговать с s1 по s2 или другим способом (конечно, используя их IP-адреса).