InterVLAN между пространствами имен с использованием третьего пространства имен в качестве маршрутизатора

Dataplicity здесь, я думаю, что говорил с вами, используя нашу систему поддержки в чате, и решение заключалось в том, чтобы вручную загрузить deb-файлы супервизора и установить их таким образом. Я не знаю, почему у Debian IOT возникли проблемы с установкой супервизора, но мы проверим это и посмотрим, что можно с этим поделать.

3
06.10.2019, 04:42
1 ответ

Раньше я не использовал Open vSwitch, поэтому теперь мне пришлось поиграть с этим.

Ключевая информация находится в man 5 ovs-vswitchd.conf.db, где объясняются различные vlan_mode.

В частности, для порта доступа внутри коммутатора пакет всегда помечен, вне коммутатора он не помечен, и на входе тег добавляется, а на выходе он удаляется.Именно это я и подозревал после твоего описания, но приятно удостовериться.

Итак, чтобы реализовать ваш сценарий только с портами доступа, я использовал три пространства именns0(маршрутизатор ), ns1и ns2вот так:

ns0:
  veth0b (peer veth0a), 10.0.10.254/24
  veth0d (peer veth0c), 10.0.20.254/24

ns1:
  veth1b (peer veth1a), 10.0.10.1/24

ns2:
  veth2b (peer veth2a), 10.0.20.1/24

main namespace:
  br0 (ovs):
    veth0a (access, tag=100)
    veth0c (access, tag=200)
    veth1a (access, tag=100)
    veth2a (access, tag=200)

Чрезвычайно удобно запускать xtermв каждом пространстве имен (Я предпочитаю цветной фон ), тогда вы также можете отлаживать поток пакетов с помощью tcpdumpвнутри пространства имен.

Создайте пространства имен, создайте veth -пары, переместитесь в пространства имен по мере необходимости, не забудьте setкаждую ссылку up. Тогда

Вns0:

sudo ip addr add 10.0.10.254/24 dev veth0b
sudo ip addr add 10.0.20.254/24 dev veth0d
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Вns1:

sudo ip addr add 10.0.10.1/24 dev veth1b
sudo ip route add default via 10.0.10.254

Вns2:

sudo ip addr add 10.0.20.1/24 dev veth2b
sudo ip route add default via 10.0.20.254

В основном пространстве имен:

sudo ovs-vsctl add-br br0
sudo ovs-vsctl add-port br0 veth0a tag=100
sudo ovs-vsctl add-port br0 veth0c tag=200
sudo ovs-vsctl add-port br0 veth1a tag=100
sudo ovs-vsctl add-port br0 veth2a tag=200

Теперь в каждом пространстве имен ping должен работать, сначала проверьте прямого партнера, а затем маршрутизируемого партнера.

Мы также можем заменить две пары портов доступа veth -одной парой магистральных veth -. Нет необходимости добавлять trunk=100,200, потому что по умолчанию каждый порт доступа, отличный от -, является магистральным портом для всех VLAN.

В основном пространстве имен:

sudo ovs-vsctl del-port br0 veth0a
sudo ovs-vsctl del-port br0 veth0c
sudo ip link del veth0a
sudo ip link del veth0c
sudo ip link add veth0a type veth peer name veth0b netns ns0
sudo ip link set veth0a up
sudo ovs-vsctl add-port br0 veth0a

Вns0:

sudo ip link add link veth0b name veth0b.100 type vlan id 100
sudo ip link add link veth0b name veth0b.200 type vlan id 200
sudo ip link set veth0b up
sudo ip addr add 10.0.10.254/24 dev veth0b.100
sudo ip addr add 10.0.20.254/24 dev veth0b.200

Затем проверьте, как описано выше.

2
27.01.2020, 21:24

Теги

Похожие вопросы