用docker搭建了一个FRR vxlan的实验
相比手动配置vxlan隧道端点,利用FRR作为控制面可以自动发现隧道端点。
这里的FRR是Linux和Unix平台的IP路由协议套件,其中 包括BGP,IS-IS,LDP,OSPF,PIM和RIP的协议守护程序。
熟悉网络的朋友们不要和快速重路由搞混了。

创建网络环境

vxlan模拟实验_docker


根据上图,需要5个容器和4段网络组成这个环境。

先配置4个子网

docker network create pe1-p --driver bridge

docker network create pe2-p --driver bridge

docker network create pe1-ce1 --driver bridge

docker network create pe2-ce2 --driver bridge

docker network ls

vxlan模拟实验_docker_02

创建5个容器

docker run -itd --privileged --name pe1 liuvei333777/frr:v1
docker run -itd --privileged --name pe2 liuvei333777/frr:v1
docker run -itd --privileged --name ce1 liuvei333777/frr:v1
docker run -itd --privileged --name ce2 liuvei333777/frr:v1
docker run -itd --privileged --name p1 liuvei333777/frr:v1

开启路由协议,我这里把bgp、ospf、isis都打开了。

vxlan模拟实验_docker_03

按照网络拓扑连接5个容器

docker network connect pe1-p pe1

docker network connect pe1-p p1

docker network connect pe2-p pe2

docker network connect pe2-p p1

docker network connect pe1-ce1 pe1

docker network connect pe1-ce1 ce1

docker network connect pe2-ce2 pe2

docker network connect pe2-ce2 ce2

可以把默认的网络删了,这样看的舒服些。

docker network disconnect bridge p1

docker network disconnect bridge pe1

docker network disconnect bridge pe2

docker network disconnect bridge ce1

docker network disconnect bridge ce2

搭建完网络环境,每个容器的网络连接:

vxlan模拟实验_vxlan模拟实验_04

以p1为例,在这里我把dhcp分的ip清除掉,之后在frr手动配置。
docker exec -it p1 bash 登到p1, ip addr del 命令删除ip

vxlan模拟实验_docker_05

配置FRR

通过vtysh登录设备,后面的配置路由和cisco命令行类似。

配置互联接口,Lo接口,

Underlay层面:pe1、p1、pe2之间配置ospf,打通Lo接口。ospf的配置三台设备类似。

Overlay层面:我这里就直接在pe1和pe2之间起bgp 开启e**n地址族,当然也可以把p1作为bgp rr。

pe1的配置截图:

vxlan模拟实验_docker_06

e**n neighbor已建立。

vxlan模拟实验_路由协议_07

建vxlan隧道

pe1的配置,在pe1容器内创建一个bridge、和vxlan接口,然后把vxlan接口和eth0(互联ce1的接口)都接在bridge上。

画了一个草图,大概是这么个意思。这里vxlan123是overlay的虚接口,它依赖于Underlay路由。

vxlan模拟实验_vxlan模拟实验_08


docker exec -it pe1 bash

brctl addbr br-tun123

ip link set br-tun123 up

ip link add vxlan123 type vxlan id 123 local 2.2.2.2 dstport 4789 nolearning

ip link set vxlan123 up

brctl addif br-tun123 vxlan123

brctl addif br-tun123 eth0

pe2类似操作。

配置终端IP

最后在ce1和ce2上配置同网段ip。 192.168.123.1是ce1,.2是ce2

vxlan模拟实验_vxlan模拟实验_09


ping一下验证是通的

vxlan模拟实验_路由协议_10


通过bridge fdb show dev vxlan123,在pe1的vxlan123接口可以看到ce2的mac地址ac:16:00:00它是由type2路由而来,另外全0的地址从type3转化,用来指导发送广播和未知单播。

vxlan模拟实验_IP_11


在pe1 FRR内可以看到相应的type2和type3路由。

vxlan模拟实验_docker_12