br-int
/* 下面这条流表是对虚机流出方向流量的匹配.
其中ovs_port_id为source port在br-int上对应的ofport值,
source port出来的流量执行normal动作完成普通业务流的转发.
除此之外,修改报文VLAN值为taas_id,之后送给br-tap做流量镜像策略判断 */
table=0,priority=20,in_port=ovs_port_id,
actions=normal,mod_vlan_vid:taas_id,output:patch-int-tap
/* 下面这条流表是入方向的匹配.
其中port_mac为source port对应的mac地址.
需要送给source port的流量执行normal动作完成普通业务流程.
除此之外,修改报文VLAN为taas_id,
之后送给br-tap做流量镜像策略判断 */
table=0,priority=20,dl_dst=port_mac,
actions=normal,mod_vlan_vid:taas_id,output:patch-int-tap
/*下面这条流表的意思是,如果收到来自br-tap的流量,
转发到MON虚机关联的内部vlan值,再送给MON虚拟机*/
table=0,priority=25,in_port=patch-int-tap,dl_vlan=taas_id,actions=mod_vlan_vid:port_vlan_id,
output:ovs_port_id
br-tap
/*从内部过来的镜像流量,直接返回给br-int*/
table=1,priority=1,dl_vlan=taas_id,actions=output:in_port
/* 从外部经过br-tun接收到的流量,需要送给br-int做远程镜像 */
table=2,priority=1,dl_vlan=taas_id,output:patch_tap_int
第一步:VM1发出的流量,匹配taas相关流表,给报文打上vlan_id=taas_id,再从patch-int-tap出去
第二步:br-tap从patch-tap-int接收到VM1的镜像流量,识别出VLAN_ID 对应的taas_id,送回br-int
第三步:br-int接受到br-tap送过来的镜像流量,转发到MON1
第一步:VM2发出流量到br-int,匹配taas 相关流表,给报文打上VLAN_ID=taas_id,从patch-int-tap口送出
第二步:br-tap接受到镜像流量,由于MON1不在本主机,从patch-tap-tun送出
第三步:br-tun收到VM2的镜像流量,如果没有发现有匹配的任何单播表项,洪泛到所有的VXLAN端口,封装报文为VXLAN,
VNI为报文的VLAN_ID值,报文原有的VLAN_Id改为1
Table=39,priority=1,actions=learn(table=30,hard_timeout=60,
priority=1,NXM_OF_VLAN_TCI[0..11],
load:NXM_OF_VLAN_TCI[0..11]->NXM_NX_TUN_ID[0..11],
load:0-> NXM_OF_VLAN_TCI[0..11],output:NXM_OF_IN_PORT)
第四步:br-tun收到镜像流量后,进一步分类
如果是广播流量,将VLAN改成2,VNI=taas_id然后反射回去。。
如果reg0=2,则是返程流量,添加对应的单播规则
table=35,priority=2,reg0=0,actions=resubmit(,36)
table=35,priority=1,reg0=1,actions=resubmit(,36)
table=35,priority=1,reg0=2,actions=resubmit(,37)
先看看reg=1的情况(收到洪泛报文,生成反射报文并反射回去)
table=38,priority=2,reg0=0,actions=output:patch-tun-tap
table=38,priority=1,reg0=1,actions=output:patch-tun-tap,
move:NXM_OF_VLAN_TCI[0..11]->NXM_NX_TUN_ID[0..11],mod_vlan_vid:2,output:in_port
然后下面的还是上面的表,reg=2
table=4,priority=1,tun_id=taas_id,
actions=move:NXM_OF_VLAN_TCI[0..11]->NXM_NX_REG0[0..11],
move:NXM_NX_TUN_ID[0..11]->NXM_OF_VLAN_TCI[0..11],resubmit(,35)
table=35,priority=2,reg0=0,actions=resubmit(,36)
table=35,priority=1,reg0=1,actions=resubmit(,36)
table=35,priority=1,reg0=2,actions=resubmit(,37)
36是单播和多播的流量,37,39是返程流量学习表
table=4,priority=1,tun_id=taas_id,
actions=move:NXM_OF_VLAN_TCI[0..11]->NXM_NX_REG0[0..11],
move:NXM_NX_TUN_ID[0..11]->NXM_OF_VLAN_TCI[0..11],resubmit(,35)
table=37,priority=1,tun_id=taas_id,resubmit(,39)
Table=39,priority=1,
actions=
learn(
table=30,hard_timeout=60,priority=1,
NXM_OF_VLAN_TCI[0..11],
load:NXM_OF_VLAN_TCI[0..11]->NXM_NX_TUN_ID[0..11],
load:0-> NXM_OF_VLAN_TCI[0..11],
output:NXM_OF_IN_PORT)