使用Neutron公网IP地址不够怎么办

     在Neutron中通过 floating IP 功能实现公网IP到内网IP的一对一映射,其实质上就是NAT,In做DNAT,Out做SNAT(从虚机的角度)。

-A neutron-l3-agent-PREROUTING -d 120.197.94.83/32 -j DNAT --to-destination 10.13.42.179
-A neutron-l3-agent-float-snat -s 10.13.42.179/32 -j SNAT --to-source 120.197.94.83

这与LVS的NAT模式原理一致,都需要在虚拟机(对应LVS的real server)的默认路由指向NAT网关,在Neutron中就是虚拟Router上连接private network的interface。这就造成一个问题,我要是没有那么多的公网IP怎么办?同时Neutron的vRouter在DVR(分布式路由器)没成熟之前可扩展性、可用性也是一个大难题。

     最直接的想法就是端口转发。

     最简单的办法就是直接用Neutron的LB服务,然后当成端口转发来用,虽然很别扭。现在开源可选的还是Haproxy。

     另外一种就是直接在Neutron L3层的vRouter的基础上增加端口转发功能(如ustack就是这么干的),这种方式的实现还是会受到现有vRouter的架构的一些约束,比如扩展性,可用性。

     为了性能和扩展性,我们选择了(Fullnat模式)LVS+OSPF。需要做的事就是:

       1)集成LVS到Neutron的网络中。

       2)解决客户网络地址不透明的问题(这是FullNAT的原因)

    关于问题1)管理面的东西好说,关键是在基于VXLAN或者GRE的隧道技术的时候需要加、解协议头。

    关于问题2)对于虚拟机系统是Linux系统都好办,打个TOA patch(hook getname() 获取client addr)。要是遇到Windows怎么办,暂时还在想办法。


     


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值