Neutron 基础知识
Neutron 流量全生命周期跟踪
同一个主机和子网
neutron 主机网桥图

RED1-RED2的流量跟踪
# vm1:查看地址,预置流量
ip a
ping 10.0.0.2
computer1
# 在对应的host上的Port id(0e6)
nova interface-list RED1
# 查看网桥,根据port ID前三位找到vm1的bridge
brctl show
# 一个快速抓包 icmp流量,看到有段信息是mac1 >> mac 2,这个信息等会会用到
tcpdump -i tap0e6xxx -n -e icmp
# 关于安全组,这里查看了3组规则,不太懂
iptables -S|grep o0e6
# 查看Linux bridge 和port
ovs-vsctl show
# Bridge br-int
# Port name
# tag: (vlan id)
# interface: o0e6
watch -n.5 "ovs-ofctl dump-flows br-int table=0 |grep -v n_packets=0"
可以从之前的步骤中看到RED2的mac地址:mac2
# 看到 mac2 的分发策略(出口4)
ovs-appctl fdb/show br-int
# port VLAN MAC Age
ovs-vsctl show br-int
# 4(qvo3999):addr:mac2
# 3999是对应RED2的 openvswitch 端口
#在我们去RED2之前,还要看一下另一个网桥
brctl show
# qbr3999
# 现在看一下RED2的入方向安全组规则
iptables -S|grep 3999
ipset list
2 不同host vm的流量跟踪

ping 10.0.0.6
# cmputer1
ovs-appctl fdb/show br-int
ovs-ofctl show br-int
# 9(patch-tun):addr
ovs-vsctl show
# 在br-int上:
# Port patch-tun
Interface patch-tun
type: patch-tun
options : {peer=patch-int}
# Bridge br-tun :
Port patch-int
ovs-ofctl show br-tun
# 1(patch-int) : addr
watch -n.5 "ovs-ofctl dump-flows br-tun table=0 "
# 来自端口1的呗转发到规则table1
# in_port=1 action=resubmit(,1)
watch -n.5 "ovs-ofctl dump-flows br-tun table=1"
...
#TODO 补一下这里的流表规则
# 参数 set_tunnel:0x1e output=5
# 查询输出端口5
ovc-ofctl show br-tun
# 5(vxlan-0a00):addr
ovs-vsctl show
# 在br-tun上:
# Port "vxlan-0a00"
Interface "vxlan-0a00"
type: vxlan
# local_ip host ip ,remote_ip : computer2 ip
options : {,local_ip="10.0.1.11",remote_ip="10.0.1.12"}
在computer2上面:ovs-vsctl show找到br-tun网桥上面对应的Port ,用ovs-ofctl show br-tun查看到这个端口是端口5,看一下流量信息 `watch -n.5 “ovs-ofctl dump-flows br-tun table=0”,看到来自端口5的流量被提交到了table 4,查看table 4,
watch -n.5 "ovs-ofctl dump-flows br-tun table=0
# tun_id=0x1e, actions=mod_vlan_vid:2, resubmit(,9)
根据tun_id=0x1e字段判断这个是来自对应vxlan的,加上了vlan_vid,提交到table9。
3 在同一host上的不同网络的vm通信

现在因为有本地的qrouter 加持,这种流量不用离开host
- 先预置流量,再
brctl show查看tap 后缀信息, - 再简单抓包
tcpdump -i tapxxx -n -e icmp看到源MAC和目的MAC ip netns查看当前主机的名空间ip netns exec qrouter-xxx bash进入名空间的baship a查看当前名空间的地址。有两个qr-xx开头的接口,其中有10.0.01/24地址的是vm1所属子网(subnet)的网关,另一个属于vm3ip route看到定义了网关信息ip neighbor
ovs-vsctl show看到两个 qr 开头的Port,一个用的vlan1 ,一个用的vlan2
4 不同的网络和host上的虚机通信

和上例类似,流量直接在host1里面转换到vlan2直通Green2的vlan1
- neutron router-list -f yaml :
- -f yaml : 易读输出
- 输出结果:name:VR
- neutron l3-agent-list-hosting-router VR
- 查看哪些节点部署了这个router
- ip netns exec qrouter-xxx tcpdump -n -e -i qr-xxx
- 只看到去程没有回程:因为只有去程是在computer1的qrouter上转换的,回程在cp2的qrouter上转换 其他过程(flow table ;iptables)和上述类似
5 南北向浮动ip

ip 在qrouter上面转换
qrouter 发送请求到FIP名空间
FIP名空间通过br-int VLAN和br-ex 名空间连接并转发流量到外部默认网关
ip netns exec qrouter-xx bash
- ip router 没看到到200.0.0.8 的规则
- ip rule show
- from 10.0.0.4 lookup 16 :来自 .4 的流量去到表16
- ip route show table 16 一条默认规则指向rfp-xx名空间
- iptables -S -t nat
ip netns exec fip-xxx bash
- ip a 待补充
6 SNAT
待补充
WLAN模式下的网络节点

wlan 模式下的计算节点

br-tun 转发规则
