一. 跨VPC通信的流量模型
基于对等连接的跨VPC通信,流量模型如上图。在该模型中,流量首先要从本端VPC中某一网络下某一子网中的特定主机出发,经过虚机A的网卡tap到网桥上的ovs中qvo口。随后进入本网络的网关qrouter的qr口,再经过对等连接的rrp口。至此本端流量结束,对端的流量完全对称。
二. 流量监听和常见问题总结
1. 监听的位置
监听流量,主要从本端的tap口,qvo,本网络的网关qr口,对等连接的rrp口;再到对端的rrp口,qr口,qvo口以及tap口。
2. 相关命令
1)nova interface_list 虚机id查看虚机的port_id。
2)根据port_id前10位,使用ip tuntap | grep port_id查看tap口名。
3)ovs-vsctrl show | grep port_id查看qvo口。
4)在两端的虚机中,使用arp -n 查看虚机的网关mac地址,通过mac_address查询数据库ports表,找到对应记录的device_id,这就是网络的路由,也就是名空间qrouter的名字。
5)ip netns list | grep qrouter_id可以查看该名空间是否在本机上。
6)ip netns exec qrouter_id ip a可以查看qr名和rrp口的名称。
7)使用tcpdump -i (tap、qvo、qr、rrp口的名称)即可监听流量(根据request以及reply报文,查看流量)
3. 常见问题
1.tap口有流量,qvo口无流量
主要原因可能是网络设置了安全组,导致了流量被安全组过滤,无法通过ovs。
2.qr口有流量,rrp口无流量
1)可能的原因是,qrouter中没有配置路由转发,流量到达qr口后,因为没有路由转发的条目,会直接转发到默认路由(default)导致流量包丢失。
2)还有可能是因为qr和rrp口的iptables规则导致的流量包被drop掉,以至于rrp口无流量。
iptable规则主要由四表(raw、mangle、nat、filter)五链(prerouting、input、forword、output、postrouting)组成,根据目的主机是否是qrouter的ip段来决定是走input链还是forword链。
流量首先经过raw的prerouting再到mangle的prerouting最后到nat的prerouting。具体流程如上图所示。