本文使用ovn搭建一个三层转发的环境,拓扑图如下
image.png
两个虚拟交换机ls1和ls2,端口ip网段分别为 10.10.10.0/24和 10.10.20.0/24。
虚拟交换机上分别连接两个vm(使用namespace模拟),使用dhclient动态获取ip。
一个虚拟路由器lr1,连接两个虚拟交换机ls1和ls2,实现跨网段通信。
值得注意的是,这里的逻辑路由器不同于neutron中的分布式路由器,虽然ovn逻辑路由器也是分布式的,但它只是一个逻辑上的,不存在实体,而是靠流表实现转发,neutron中的分布式路由器会在每个节点上使用namespace模拟路由器。
创建ls和lr
//创建两个虚拟交换机 ls1 和 ls2
ovn-nbctl ls-add ls1
ovn-nbctl ls-add ls2
//创建一个虚拟路由器 lr1
ovn-nbctl lr-add lr1
//在虚拟路由器上添加端口,用来连接虚拟交换机 ls1
ovn-nbctl lrp-add lr1 lr1-ls1 00:00:00:00:00:01 10.10.10.1/24
//在虚拟交换机 ls1 添加端口,用来连接虚拟路由器 lr1
ovn-nbctl lsp-add ls1 ls1-lr1
//端口类型必须为 router
ovn-nbctl lsp-set-t