openflow流表的mac地址match项支持对mac地址做掩码,如同ip地址的掩码一般,就想着既然ip路由可以只使用一条路由表转发到网段内所有主机的报文,那么利用这个特性,二层也可以做到相同的效果,正好工作中也在用ovs做骨干测的转发,同时也存在流表的性能问题,就想着使用这种方法优化一下。
工作业务上的细节不便描述,这里只简单描述一下思路,总体思路就是模仿ip网段和ip三层路由,将同一ovs设备背后的设备的mac地址配置为同一mac地址网段内且全网唯一的地址,从而利用ovs流表mac地址match项支持对mac地址做掩码,将到达同一目的ovs设备背后设备的转发流表聚合为一条基于mac网段的流表,达到大幅缩小流表条目的目的。
如上图所示,两台ovs 可能是物理位置不同的两台虚拟 或物理设备,其中ovs1背后连接着mac网段为 00:00:01:00:00:00/ff:ff:ff:00:00:00 的一群虚拟或物理转发设备,ovs2后面连接着mac网段为 00:00:02:00:00:00/ff:ff:ff:00:00:00 和00:00:03:00:00:00/ff:ff:ff:00:00:00 的一群虚拟或物理转发设备。
这样ovs1 上到ovs2的流表只需要配置两条(ovs之间走的overlay的vxlan):
dl_dst=00:00:02:00:00:00/ff:f