Я новичок как в сети, так и в открытом vswitch, я не уверен, что этот вопрос более актуален для open vswitch (ovs) или gre.
ниже приведены команды настройки ovs. Есть два хоста. На каждом хосте есть два моста br1 и br2. У br2 есть туннельный интерфейс gre, у которого в качестве удаленной конечной точки IP-адрес br1.
хост А
sudo ifconfig eth1 0
sudo ovs-vsctl add-br br1
sudo ovs-vsctl add-br br2
sudo ovs-vsctl add-port br1 eth0
sudo ifconfig br1 192.168.1.155 netmask 255.255.255.0
sudo ifconfig br2 10.1.1.1 netmask 255.255.255.0
sudo ovs-vsctl add-port br2 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.1.152
hostB
sudo ifconfig eth1 0
sudo ovs-vsctl add-br br1
sudo ovs-vsctl add-br br2
sudo ovs-vsctl add-port br1 eth0
sudo ifconfig br1 192.168.1.152 netmask 255.255.255.0
sudo ifconfig br2 10.1.1.2 netmask 255.255.255.0
sudo ovs-vsctl add-port br2 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.1.155
Как трафик GRE находит свой путь после прибытия в удаленную конечную точку? Похоже, что нет связи между br1 и br2 на одном и том же хосте. Я мог понять, как трафик от br2 на хосте A проходит через br1 на хосте B. Но я не мог понять, как трафик находит путь к br2 на хосте B от br1 на хосте B (место назначения gre).
Обратите внимание, что на хосте b вы дали br1 IP-адрес 192.168.1.152. Так что, нравится вам это или нет, ваш туннель заканчивается на br1. В openvswitch мост сам по себе является интерфейсом. Итак, это объясняет ваш вопрос.
Если вы этого не сделали и создали в br2 только интерфейс с именем gre0 и подключенным к remote_ip 192.168.1.155, вам следует создать пару veth и присоединить br1 и br2.
Обратите внимание, что при использовании gre достаточно, чтобы любой из ваших интерфейсов на машине имел IP-адрес. Этот интерфейс вообще не нужно добавлять к вашим мостам. Пока у ваших мостов есть конечная точка, они смогут получать пакеты из этого туннеля.
Надеюсь, поможет.