VPC 深入浅出解析

2018-04-03 15:41:06 浏览数 (1)

概述

今天给大家介绍一下博主最近做的一个项目:VPC.VPC(Virtual Private Cloud)虚拟私有云,租户可以在云中预置一个逻辑隔离分区,自己定义的虚拟网络中启动虚拟化资源。 功能特性:

  • 网络隔离(二层网络隔离)
    • 网络虚拟化,基于EV**的OverLay技术在物理基础上虚拟化网络。
    • VPC与VPC间是完全隔离,通过VXLAN协议对每个VPC进行隔离,这样就保证了L2的逻辑隔离。

  • 灵活定制网络环境
    • 自定义子网网段、路由表等。

  • 与公网互通
    • 通过EIP可实现与公网互通,通过NAT网关支持SNAT配置,满足VPC内资源主动访问公网需求;支持DNAT配置,提供IP映射和端口映射功能。

那么如何实现上面这些基本功能点呢?通过SDN和VXLAN技术来实现上述的基本功能点。

SDN

在SDN笔记里面详细介绍了SDN的优势。实现SDN技术可以通过两种方式:1.购买硬件SDN厂商,比如:像cisco,H3C等大型网络公司提供配套的基于SDN实现的交换机。2.自己采用opendaylight和onos网络操作系统实现。各有利弊,自己权衡。无论采用商业SDN还是自研发SDN,都不会离开vxlan

VXLAN

VLAN数量只有4096个,肯定是无法满足大规模云计算IDC的需求。目前大部分IDC内部结构主要分为两种L2和L3。L2结构里面,所有的服务器组成一个大的局域网,TOR下透明的L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上。L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不同交换机之间的互通靠IP地址。 overlay技术:大致的意思可以理解为,VM挂在TOR 1上,随意把它迁移到TOR 2上,而不需要改变IP地址,这个就是L2的特长,因为这个VM和外界(网关之外)通信还靠L3,但是网关内部互访是走L2的,这个在L3里是无法做到的。因为L3里每个IP都是唯一的,地址也是固定位置的,除非你整网段物理搬迁,在L3网络里传输L2数据。 VXLAN(Virtual eXtensible LAN可扩展虚拟局域网)基于IP网络之上,采用的是MAC in UDP技术,本来OSI7层模型里就是一层叠一层的,这种和GRE/IPSEC等tunnel技术是不是很像,这种封装技术对中间网络没有特殊要求,只要你能识别IP报文即可进行传送。

为什么需要Vxlan ● 虚拟机规模受网络规格限制虚拟机规模受网络规格限制 在大二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而MAC地址表的容量限制了虚拟机的数量。 ● 网络隔离能力限制 当前主流的网络隔离技术是VLAN或V**(Virtual Private Network),在大规模的虚拟化网络中部署存在如下限制: ─ 由于IEEE 802.1Q中定义的VLAN Tag域只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量用户群的需求。 ─ 传统二层网络中的VLAN/V**无法满足网络动态调整的需求。 ● 虚拟机迁移范围受网络架构限制 虚拟机启动后,可能由于服务器资源等问题(如CPU过高,内存不够等),需要将虚拟机迁移到新的服务器上。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。

VXLAN解决的问题 ● 针对虚拟机规模受网络规格限制 VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC地址作为外层头进行封装,对网络只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。 ● 针对网络隔离能力限制 VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network ID),由24比特组成,支持多达16M((2^24-1)/1024^2)的VXLAN段,从而满足了大量的用户标识。 ● 针对虚拟机迁移范围受网络架构限制 通过VXLAN构建大二层网络,保证了在虚拟迁移时虚拟机的IP地址、MAC地址等参数保持不变

VLXNA 报文协议

Outer UDP端口使用4798,但可以修改 Outer IP头封装:源IP为发送报文的虚拟机所属的VTEP的IP地址,目的IP为目的虚拟机所属的VTEP IP地址。 Outer的目的IP地址可以是单播和组播地址,单播的情况下,目的IP为VTEP(Vxlan Tunnel End Point)的IP地址,在多播的情况下引入VXLAN的管理层,利用VNI和IP多播组的映射来确定VTEP。 当目的IP为接收端的VTEP的IP时,假如不知道这个IP地址,则需要执行ARP请求来获取,步骤如下:

  1. 目标IP被替换成与源虚拟机具有相同VNI的多播组IP地址;
  2. 所有VTEP端都接收该多播报文,VTEP查找所在主机上的全部虚拟机来匹配源虚拟机的Inner 目的MAC。
  3. 目标VTEP的虚拟机会回应该多播包,从而获得目标VTEP的IP地址。
  4. 发送端VTEP添加VNI-VTEP-虚拟机MAC的映射关系到自己的VXLAN表中,以避免再次组播学习。

Outer 以太封装:SA为发送报文的虚拟机所属的VTEP MAC地址,DA为目的虚拟机所属的VTEP上路由表中下一跳MAC地址。

总结

VXLAN介绍

0 人点赞