作者:Sammy Liu

第一部分 路由策略及路由表

第二部分 路由配置

第三部分 DVR Router & 安装和功能分析

第四部分:

3.2  DVR Router 流程

3.2.1 创建 DVR Router (1)创建如下的 DVR Router:

0704wechat1

可以看到该 router 被分布在neutron network 节点和计算节点上:

0704wechat2

(2)网络节点上,创建了 SNAT network namespace。该 netns 中,对router 的每一个网络,都有一个 qg 或者 sg interface:

0704wechat3

以及 qrouter network namespace:

0704wechat4

(3)在计算节点 compute1 上创建一个虚机

在 compute1 上生成了一个 qrouter network namespace:

0704wechat5

(4)给虚机分配一个浮动IP 后,compute1 上出现了 fip network namespace。该 netns 的命名规则是 fip-<external net id>,这里的 external net 是指该浮动IP所在的外网的:

0704wechat6

而且,compute1 上的 qrouter netns 中的变化:

0704wechat7

但是 neutron 网络节点上的 qrouter 上并没有增加该浮动 IP和相应的 NAT iptables 规则。

3.2 网络包走向分析

不同网段内的虚机之间或者虚机和计算机之间的网络流向可以分为几类:

  • 3.2.1 SNAT:当数据包离开 rouer 的 external device 时改变它的源 IP 地址。这在没有浮动IP 时虚机访问外网的情况下使用。
  • 3.2.2/3 FIP:有时候也称为 DNAT。当虚机的固定 IP分配了浮动 IP 的时候,虚机和外网中的虚机通信的时候使用。
  • 3.2.4 不同服务器上不同网段内的虚机之间的通信
  • 3.2.5 同一个服务器上不同网段内的虚机之间的通信

3.2.1 SNAT:虚机访问外网(没有分配浮动IP 的情况下)

Neuron 布网:

0704wechat8

虚机(81.1.180.18)发出给外网中机器(192.168.1.20)的包,因为是跨网段的,先发给 compute1 上的 qrouter 的 qr-517bdba3-b1 interface。然后,qruoter 查路由表:

0704wechat9

查表结果是经过 interface qr-517bdba3-b1 将包发到下一个路由器 81.1.180.17,而这个IP 在 neutron 网络节点上的 SNAT netns 的 44: sg-4f80ec3d-f2 interface。在这里,先做 SNAT:

0704wechat10

然后查路由表确定下一跳:

0704wechat11

结论:在没有设置浮动 IP (SNAT)的情况下,虚机访问外网时,虚机发出的网络包首先经过其所在的服务器上的 qrouter 做路由选择(81.1.180.1),然后再经过 neutron network 节点上的 snat network namespace (81.1.180.17)出去到外网。这个结论也和 traceroute 的结果互相验证:

0704wechat12

完整过程:

0704wechat13

3.2.2 FIP:在虚机 81.1.180.18 上添加浮动IP,从它 ping 外网

Neutron 组网:

0704wechat14

添加浮动 IP 后,虚机所在的主机上的 qrouter netns 上添加了浮动IP:

0704wechat15

还增加了一条路由策略及路由表:

0704wechat16

(1)网络包从虚机触发,进入本服务器所在的 qrouter 的 qr interface,首先经过 DNAT,没有命中,然后查路由表,local,main,default 中没有命中的路由规则,查表 16,命中默认路由,需要经过 rfp 端口发到下一个路由器 169.254.31.239。

(2)rfp 端口是这样子:

0704wechat17

(3)该 rfp 和 fip netns 上的端口通过 veth 直接连接:

0704wechat18

(4)看 fip netns 的路由表,决定将其从 fg interface 发出去。

0704wechat19

(5)再经过 SNAT,经 Src 地址换成浮动 IP 地址:-A neutron-l3-agent-float-snat -s 81.1.180.18/32 -j SNAT –to-source 192.168.1.112

结论:配有浮动IP的虚机上 ping 外网,依次经过虚机所在的服务器上的 qrouter (81.1.180.1)和 fip netns (169.254.31.239) 到外网机器(192.168.1.20)。

0704wechat20

完整路径:

0704wechat21

3.2.3 FIP:外网机器通过虚机的浮动 IP 访问虚机

外网中的机器首先要通过 ARP 获取虚机浮动 IP 对应的 MAC 地址。浮动 IP 并没有配置在 fip 的端口上,因此 fip 无法直接响应 ARP 请求,那怎么办呢?Neutron 在 fip NS 的 fg 端口上配置了 arp proxy,这样,fip 既可以响应它自己的 interface 上的 IP 地址的 ARP 请求,也可以响应能通过它路由到的 IP 地址的 ARP 请求。

(1)从下图可见,fip netns 的 fg-4a292fe1-58 interface 上配置了 ARP 代理:

0704wechat22

0704wechat23

(2)fip netns 收到 ARP 请求后,将其 fg interface 的 MAC 地址返回。其实这是一个 MAC 地址欺骗,但是。。这就是一个 arp proxy 所起的作用。

外网中的机器获取到虚机浮动 IP 的 MAC 地址后,发出 ICMP 网络包(Dest IP: 192.168.1.112,Souce IP: 192.168.1.20,Dest MAC: fa:16:3e:95:55:29

(fip 的 fg interface 的 MAC 地址),Source MAC: MAC of 192.168.1.20):

(1)网络包经过 br-ex,被 fip 的 fg 端口收到,查路由表,命中最后一条路由,从其 fpr interface 发出,到达 169.254.31.238.

0704wechat24

(2)被 veth 另一端的 qrouter 的 rfp-e8f12f7a-6 interface 收到。

0704wechat25

(3)在 qrouter 上,首先做 DNAT:

-A neutron-l3-agent-PREROUTING -d 192.168.1.112/32 -j DNAT –to-destination 81.1.180.18。将目的 IP 由浮动 IP 修改为固定 IP。

(4)查 qrouter 的 main 路由表,命中第一条,从 qr-517bdba3-b1 发出

0704wechat26

(5)SNAT:没有

(6)网络包经过 br-int,然后到达虚机

3.2.4 不同服务器上不同网段上的虚机互相访问

在另一个计算节点上新建虚机,固定 IP 为 90.1.180.6。从虚机 81.1.180.18 上 ping 它,看看网络包的走向。新建虚机后,compute 2 节点上也分布了 router 实例:

0704wechat27

在 compute 2 上,创建了 qrouter network namespace,其中的配置和 compute 1 上的 qrouter 的配置完全相同。

(1)网络包离开 vm1,通过br-int,进入 compute 1 上的 qrouter 的 qr-517bdba3-b1,查 main 路由表,从 qr-e47fca31-db 出。

0704wechat28

(2)网络包重新进入 br-int,被它的 flows 处理。

0704wechat29

(3)进入 br-tun,依次被其 flows 处理:

0704wechat30

从这里可以看出:

  • table 1 将网络包的 src mac 修改为了 compute node 1 的 DVR MAC 地址。
  • table 20 通过 l2population 获得了到虚机所在的租户网络内的所有存在的虚机的 MAC 地址和 Tunnel 端口号的映射关系。至此,网络包被打上了 Tunnel ID 4,进入 GRE Port 2.
  • 其 GRE 隧道的另一头正是 compute 2.

(4)到了 compute 2 上,依次被 br-tun,br-int 处理,直到通过 tap 设备进入 vm 2。

小结:

0704wechat31

.2.5 同一个服务器上不同网段上的虚机互相访问

这里只经过 3.2.4 中的 (1) 和 (2),网络包经过 br-int 直接进入 vm2.

3.3 小结

0704wechat32

下一期:DVR代码分析

本文转载自:http://geek.csdn.net/news/detail/76034

  1. 她也是参与祭祀的,长这么漂亮被选去主持仪式不奇怪,搜索看下这个人名的一些视频,她的言论还是比较符合阅历的

  2. 她也是参与祭祀的,长这么漂亮被选去主持仪式不奇怪,搜索看下这个人名的一些视频,她的言论还是比较符合阅历的

  3. 她也是参与祭祀的,长这么漂亮被选去主持仪式不奇怪,搜索看下这个人名的一些视频,她的言论还是比较符合阅历的

  4. 她也是参与祭祀的,长这么漂亮被选去主持仪式不奇怪,搜索看下这个人名的一些视频,她的言论还是比较符合阅历的

  5. 源头货⦛1:1包包⦛复刻手表 118v.netCoachײַ路易威登ײַ万国ײַ菲拉格慕ײַ百达翡丽ײַ

  6. 一件代发ぉ外贸原单ぉ源头货 加微Xin:LoveMeJckBurberry﯂积家﯂巴利﯂蔻驰﯂香奈儿﯂Bvlgari﯂LV﯂香奈儿﯂

  7. 高仿奢侈品ൡ1:1包包ൡ高仿原单 威信:LoveMeJckBvlgari﹠Dior﹠阿玛尼﹠Bally﹠LV﹠