dragonflow2018多外网转发方案

笔者曾经在draonglow开发社区launchpad询问过此问题
https://answers.launchpad.net/dragonflow/+question/668047
问题描述见我的这篇博文:
http://vcpu.me/dnat/
但是没有得到答案,下文为我尝试出来的一个可行方案,与大家共享

dragonflow2018 fip转发基本过程

dragonflow2018版本distributed dnat(分布式浮动ip)会需要一个放置外网口的ovs桥(后续称呼为br-ex),dragonflow2018的分布式floating ip会将数据包发给该bridge,由该bridge l3 forwarding,将floating ip流量送出外网;在这个过程中外网的网桥需要起到三层网关的作用

多外网fip支持条件

条件1:支持多外网fip需要申请多个vlan外网

条件2:多个vlan外网需要在br-ex能够三层转发

条件3:br-ex和上联交换机是三层互通

多个vlan外网需要在br-ex能够三层转发

br-ex想要完成vlan流量的三层转发,需要在br-ex上配置fake bridge (br-ex内部口), 给fake bridge配置上三层地址并加上tag属性;且该fake bridge能够和交换机的网关互通。

vlan fip 外向流量的目的mac需要是相同tag接口的mac; 这样vlan fip外出流量在到达br-ex时候会根据路由找到网关mac地址进行三层转发。

那就意味着n个不同vlan网络需要n个fake bridge口才能进行转发。

br-ex和上联交换机是三层互通

使用br-ex上对应vlan的fake bridge口能够和交换机互联,fake bridge的网关配置在物理交换机上,和网关互通。

两种方案

方案1: 互联的地址使用fip网段的地址,fip网关直接落到物理交换机上,在br-ex根据外网vlan号新增两个br-ex三层网关口

eg:

192.168.57.10 属于vlan207 是vlan207 外网fip的网关

192.168.58.10 属于vlan208 是vlan208 外网fip 的网关

vlan 207 外部网络需要在br-ex新增如下配置:

sudo ovs-vsctl add-br vlan207 br-ex 207

sudo ifconfig vlan207 192.168.57.155/24 up

vlan 208 外部网络需要在br-ex新增如下配置:

sudo ovs-vsctl add-br vlan208 br-ex 208

sudo ifconfig vlan208 192.168.58.155/24 up

配置策略路由,不同fip出去的网关不同:

sudo ip rule add from 192.168.57.0/24 table 10

sudo ip route add default via 192.168.57.10 table 10

sudo ip rule add from 192.168.58.0/24 table 11

sudo ip route add default via 192.168.58.10 table 11

!!!如果你不想修改mac地址转发逻辑可以直接将新增的fake bridge mac修改和br-ex默认mac地址一样

sudo ifconfig vlan208 hw ether 08:00:27:12:3f:5b

dd.png

优点:fip网关直接一步落到物理设备上

缺点:每个计算节点占用了一个外网地址,浪费fip

方案2:使用私有网地址完成fake bridge和物理网络的互联

dd.png