抱歉,你查看的文章不存在

基于Neutron实现AWS VPC-Peering的方案讨论

VPC(全称是Virtual Private Cloud,做网络的同学尤其注意,不是思科vPC的virtual Port Channel)是AWS的云平台概念,OpenStack里并没有这一个内容;比较起来,VPC对应OpenStack的一个vRouter及其相关的网络和子网等资源。通常来讲,Neutron的两个vRouter是相互隔离的,才能确保尤其是不同租户之间的安全性,但是在某些场景下存在两个VPC间互通的需求,这种需求的解决方案在AWS里称之为VPC-Peering(http://docs.aws.amazon.com/zh_cn/AmazonVPC/latest/PeeringGuide/Welcome.html

),这些场景举例来说:

1. 灾难恢复的场景,需要将VPC的数据同步到另一个VPC,实现容灾备份;AWS的VPC现在是不能跨Region的,特定VPC子网也不能跨AZ(Availability Zone),但AWS的VPC-Peering虽不支持跨Region,但支持跨账户;

2. 混合云中尤其是不同云平台的数据间通信时,使用VPC间通信也是可以的,但VPC通信并不是一种标准的通信特性或通信协议,所以会对管理平台或数据模型有一定匹配度要求;

3. 在云平台部署到众多DC规模较小且相互联接的情况下,通过VPC互通为节省用户数据通信的成本;

AWS的官网明确说明,“AWS 使用现有 VPC 基础设施创建 VPC 对等连接,既不是网关,也不是 VPN 连接,因此不依赖某个独立的实体硬件。没有单点通信故障也没有带宽瓶颈”,并且有如下主要限制(http://docs.aws.amazon.com/zh_cn/AmazonVPC/latest/PeeringGuide/vpc-peering-overview.html#vpc-peering-limitations):

1)无法在具有匹配或重叠的 CIDR 块的 VPC 之间创建 VPC 对等连接;

2)无法在位于不同区域中的 VPC 之间创建 VPC 对等连接;

3)只能为每个 VPC 创建数量有限的活动和待定 VPC 对等连接;

4)VPC 对等不支持传递的对等关系;

5)不能在相同两个 VPC 之间同时建立多个 VPC 对等连接;

6)通过 VPC 对等连接的最大传输单元 (MTU) 为 1500 字节;

7)不支持在 VPC 对等连接中进行单一地址反向传输路径转发;

8)置放组可以跨越对等的 VPC;但是,您不会在对等 VPC 中的实例之间获得完全等分的带宽;

9)一个实例的公有 DNS 主机名称不会跨对等的 VPC 解析为其私有 IP 地址。

AWS的VPC-Peering管理模型和建立过程与VPN有类似之处,需要建立一个通信认证机制和通信的状态管理,这些都是OpenStack控制面所缺少的,AWS的VPC-Peering通信状态机制如下:

相比于AWS的网络丰富特性之一,VPC-Peering,除了需要实现建立通信认证机制外,OpenStack的网络组件Neutron也并没有明确支持的对象,不过我们可以在现有Neutron能力基础上, 在此类讨论下有哪些可能的实现方案:

01

基于IPSec类似的端到端VPN

如果将两个vRouter之间建立一条端到端的VPN隧道,实现VPC互通是行的通的,但是这个方案对云平台的依赖度较高,就是说如果建立VPN隧道是通过公网IP来进行,那么基本可以归结为VPN功能(这个时候的带宽和网络延迟就会有影响),特性也不是VPC-Peering了,所以需要对云平台内网要求有一个内网网段和vRouter打通,让租户感知来创建基于内网的诸如IPSec VPN隧道。另外,还需要考虑到,IPSec自身是不支持组播和广播的,租户此类业务需要通过GRE+IPSec的技术租户来实现。

02

share network

基于OpenStack云平台的管理员可以使用Neutron来创建Shared类型的Network,这样基本所有租户都看的到并创建虚拟机在上面进行通信,比如浮动IP的external-network基本是将Shared属性设置为True的。那么需要互通的两个VPC网段的虚拟机可以都多出来一个port连接到Shared network上实现VPC互通。这个Share Network为了防止占用公网地址成本高,可以选择一个大范围的私网地址段;这种方式

a)要求这个Shared network必须预先创建,且其网段范围有特殊要求,尽量减少与租户VPC网段地址重叠的影响;

b)该Share Network为管理员创建的,所以所有租户都可以看到并使用,这样就破坏了VPC的安全隔离性,需要不同VPC之间互通的时候做好安全控制;

03

VM连接跨VPC的network实现VNF

当一个租户的两个VPC想互通,可以简单的启动一个虚拟机实例,让该虚拟机同时连接到两个VPC各对应由互通诉求的网络上;该方案相比于AWS的VPC-Peering需要指定虚拟机的Fixd IP,并在虚拟机内部加载路由和过滤规则,实现指定网段地址的VPC互通;另外为了实现将某个VPC发往另一个VPC流量到该虚拟机实例进行中转,需要借助Service chain或者策略路由的方式进行引流,然后让虚拟机实现VNF(Virtual Network Function)的功能打通VPC通路。

但是该方案若是有需求实现两个租户其各自一个VPC之间互通时,因为没有任何一个租户可以看到对端的资源,所以就会产生创建虚拟机时连接网络的权限问题,需要借助管理员创建虚拟机来打通两个VPC;这无疑为VPC互通时租户的管理和维护带来不方便。

04

借助Gre/Vxlan等隧道模式

最后说一种业界比较常用的方案,就是在两个vRouter之间建立一条Gre或Vxlan的内网新隧道,该方案原理上与Share Network类似,都是使用一个新的隔离域,但是仅是两个VPC间私有,不为其他VPC共享。该方案中的Gre或Vxlan隧道隔离域值可以是Neutron从预留的范围里面进行分配,然后借助SDN控制器打通整条链路的通道,从而实现两个VPC间的互通,猜测AWS的VPC-Peering的实现是基于此方案。但是该方案需要针对Neutron进行特定的开发,而且使用成本也相对较高,当然所能使用的带宽和延迟等性能指标,也会较好。

当然,当Neutron的租户网络使用Vxlan时,VPC间通信使用另一种隔离方式比如Gre思路会比较清晰,但是数据转发面实现和运维相对会增加复杂度。

总之,基于Neutron的VPC间通信方案还没有社区的统一实现,各种方案成本、可靠性、性能、隔离性和可维护性等不太相同,需要根据自己的业务实际情况和技术积累,选择合理低成本的方案。

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2016-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

SDNLAB

1608 篇文章96 人订阅

相关文章

来自专栏FreeBuf

BlackHat 2018 | 55款大会软件工具盘点

汇聚了全球信息安全业界精英的年度盛事”Black Hat”上周在美国拉斯维加斯落下帷幕,大佬们也带来了很多有趣的软件工具,其中有一些托管在GitHub上开放下载...

2352
来自专栏北京马哥教育

远离故障的十大原则

故障是运维人员永远的痛。相信每一个运维人员的KPI中都有一项:可用性。可用性高就是不出故障,各个公司对可用性和故障评级的标准都不相同,但是避免故障的方法却是殊途...

3146
来自专栏社区的朋友们

漫谈分布式集群的负载均衡—口水篇

为了理解分布式集群这个概念,我们先说说这两个概念:“集群”和“分布式”。艺术来源于生活,计算机科学亦是如此。

1.2K0
来自专栏java思维导图

一篇文章弄懂CDN技术原理

概述 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加...

6213
来自专栏Android群英传

推送,从入门到放弃

1832
来自专栏JAVA高级架构

微服务架构选型实践

背景 随着公司一年多的成长,我们已经开发了数十个项目了,后台有 JAVA 的有 PHP 的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的 PK,...

5316
来自专栏java工会

调试代码的十个技巧

当程序没有按照预期运行时,我们大多都会使用调试。每个开发人员都应该学会调试代码,虽然调试代码很困难。所幸的是,我们的开发工具很好的继承了调试功能,方便我们调试代...

1043
来自专栏Fundebug

Redis的KEYS命令引起宕机事件

最近的互联网线上事故发生比较频繁,2018年9月19号顺丰发生了一起线上删库事件,在这里就不介绍了。

4955
来自专栏CSDN技术头条

无网不通,有网则顺:OpenStack Neutron解析

Neutron是OpenStac环境的核心组件之一,了解Neutron的功能和部署方式,是企业OpenStack系统的规划、部署和运维需要修炼的内功。在本文中,...

4058
来自专栏IT技术精选文摘

如何实现系统的可扩展性和高可用性

概述 可扩展性,高可用性和性能 可扩展性,高可用性,性能和关键任务这些术语对不同组织或组织内的不同部门来说意味着不同的事情。它们经常被互换,造成混乱,导致管理...

98510

扫码关注云+社区

领取腾讯云代金券