浮动ip与路由的思考

### 宿主机角度看路由

对于虚拟化云来说,提供floating ip是一个基本功能。虚拟化云中基本的单位是宿主机,对于宿主机来讲就是客户真正看到的机器,所以提供floating ip比较好的做法是添加一块网卡并assign floating ip,并添加gateway是下面说的外网网关。

宿主机初始状态是有一块只能内网通信(或者通过某种方式外网通信)的网卡,其中外网通信需要某类NAT网关实现。

然后当客户订购外网IP的时候,需要添加外网网卡。这时通信由某类外网网关负责。这两个不同的网关有不同的部署,下面主要讲这个网关。


### neutron的做法

Neutron采用基于kernel的vrouter方案,对于浮动ip的通信处理,有集中式路由、分布式路由两种。集中式路由是所有fip对外网的访问,都是通向一个router,返回的流量一样。这样的问题是这个router压力会比较大。

分布式路由是采用三角传输的方式,对宿主机添加fip的同时,在iptable中添加DNAT。对于1)首次、以及后续外网访问fip的流量,采用vrouter传输;2)首次、以及后续fip主动访问外网的流量,采用DNAT直接访问外网。

Neutron这样的做法主要是因为他使用linux kernel作为vrouter,性能堪忧。


### 其他做法

比较简明的做法是采用硬件外网网关,这样也适合bypass kernel类型的虚拟交换机。

猜你喜欢

转载自blog.csdn.net/batmancn/article/details/82832351