用docker搭建了一个FRR vxlan的实验
相比手动配置vxlan隧道端点,利用FRR作为控制面可以自动发现隧道端点。
这里的FRR是Linux和Unix平台的IP路由协议套件,其中 包括BGP,IS-IS,LDP,OSPF,PIM和RIP的协议守护程序。
熟悉网络的朋友们不要和快速重路由搞混了。
创建网络环境
根据上图,需要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
创建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都打开了。
按照网络拓扑连接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
搭建完网络环境,每个容器的网络连接:
以p1为例,在这里我把dhcp分的ip清除掉,之后在frr手动配置。
docker exec -it p1 bash 登到p1, ip addr del 命令删除ip
配置FRR
通过vtysh登录设备,后面的配置路由和cisco命令行类似。
配置互联接口,Lo接口,
Underlay层面:pe1、p1、pe2之间配置ospf,打通Lo接口。ospf的配置三台设备类似。
Overlay层面:我这里就直接在pe1和pe2之间起bgp 开启e**n地址族,当然也可以把p1作为bgp rr。
pe1的配置截图:
e**n neighbor已建立。
建vxlan隧道
pe1的配置,在pe1容器内创建一个bridge、和vxlan接口,然后把vxlan接口和eth0(互联ce1的接口)都接在bridge上。
画了一个草图,大概是这么个意思。这里vxlan123是overlay的虚接口,它依赖于Underlay路由。
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
ping一下验证是通的
通过bridge fdb show dev vxlan123,在pe1的vxlan123接口可以看到ce2的mac地址ac:16:00:00它是由type2路由而来,另外全0的地址从type3转化,用来指导发送广播和未知单播。
在pe1 FRR内可以看到相应的type2和type3路由。