前言
openstack版本是ocata,操作系统是ubuntu 1604.3。
架构图
逻辑架构图在这里
flow分析
这里只分析flow(neutron网络用的是openvswitch+vxlan+local vlan)
br-int
|
|
port=2和3是两个不同用户的虚机,port=1是patch-tun。
table=24 arp里的源IP和port验证。
table=25 源mac和port验证。
(<端口,源ip,源mac>的ipv4验证在iptables里)
br-tun
|
|
port=1是patch-int,port 2和3是vxlan接口,没有用通配tunnel。table=0是根据in_port分出向和入向。table=2是出向流表,按广播arp,单播,广播分发到table 21,20,22.table=20是明细的单播flow,送到目的(匹配带vlan_id)table=21是arp代答,然后默认转22table=22是广播flow,送到目的(匹配带vlan_id)table=4是入向,tun_id转成vlan_id,转table 9table=9,转table 10table=10入向流表,同时有学习,在table=20的后面添加一条priority=1的对应出向的流表,类似于cookie=0xa3c68df625ec7f59, duration=37.162s, table=20, n_packets=0, n_bytes=0, hard_timeout=300, idle_age=37, hard_age=0, priority=1,vlan_tci=0x0002/0x0fff,dl_dst=fa:16:3e:5c:4c:d8 actions=load:0->NXM_OF_VLAN_TCI[],load:0x57->NXM_NX_TUN_ID[],output:3,其中已经有了priority=2一样的推送下去的flow。
这条规则在配置了allowed-address-pair(单网卡多IP,多MAC支持)里用到了mac的情况下会用到。
tips,
- vlan tag是在进入br-int时,设置在ovs port上的。
- 本地vlan区分了不同的租户,同时在转发和arp应答时,减少了flow的条数。