软硬件overlay方案浅析

什么是overlay

Overlay网络也称为叠加网络。
软硬件overlay方案浅析_第1张图片
它是一种在传统物理网络上构建虚拟网络的网络虚拟化技术。原始数据报文封装在VxLAN UDP报文中,跨物理二层、三层设备,进行大二层转发。

overlay解决的问题

  • 突破传统VLAN网络的4094限制
  • 减少物理核心交换机存储MAC地址表项压力

基于VxLAN的叠加网络,可以新建224个二层网络。VxLAN网络下,核心交换机只需要存储VTEP隧道的MAC地址表项,不需要存储单个主机的MAC地址表项。

硬件overlay方案

软硬件overlay方案浅析_第2张图片
手动配置

管理员手动在物理交换机上配置两种信息:1) VLAN到VxLAN映射规则; 2) 本端VxLAN隧道IP地址和对端VxLAN隧道IP地址。VLAN ID决定租户ID,VxLAN ID决定进入哪条隧道。

一般使用下面四种规则来决定主机报文进入哪条隧道:

  • VLAN Tag。带有特定VLAN Tag的报文进入指定的VxLAN隧道。
  • QinQ。带有特定QinQ的报文进入指定的VxLAN隧道。
  • VLAN 0。未带有VLAN Tag的报文进入指定的VxLAN隧道。
  • 全默认。所有的报文都进入指定的VxLAN隧道。

EVPN动态学习

EVPN基于BPG协议,将本端的主机路由信息和VxLAN隧道信息发布到对端,并且接收对端的主机路由信息和VxLAN隧道信息,动态完成转发表项的建立,随后即可基于转发表项进行主机通信。

基本的BGP EVPN同步路由:1)Type2路由,用来同步主机MAC地址和主机路由信息;2)Type3路由,同步VxLAN隧道信息;3)Type5路由,通告引入外部路由和主机路由。

主机同子网overlay通信

软硬件overlay方案浅析_第3张图片
主机同子网overlay通信,表示通信的两台主机IP地址属于同一个网段,两台主机可以属于同一个VxLAN网络,也可以属于不通的VxLAN网络,由硬件交换机上VLAN到VxLAN映射配置决定。通常情况下两台主机属于同一个VxLAN网络。

同子网overlay通信 ——ARP报文交互

软硬件overlay方案浅析_第4张图片
一般情况下,主机通信的第一个报文为ARP请求报文,在主机接收到ARP回复报文之后,交换机已经完成链路通信的MAC转发表学习。以ARP交互过程为例,介绍overlay网络的二层通信流程和MAC转发表学习流程。

1)VM_A向VM_B发起通信,两台主机属于同一个网段,VM_A直接请求VM_B的ARP报文;

2)SW_A下行链路接口收到ARP请求报文,记录VM_A的MAC转发表项:MAC_VM_A, VLAN ID和接口信息;

3)SW_A进行VxLAN网络映射,依据配置进入VxLAN 5000,并进行报文封装,内层报文为原始ARP请求报文,不做任何修改,外层VxLAN报文源IP地址为本端VTEP 地址1.1.1.1,目的IP地址为2.2.2.2,对于存在多个VxLAN对端情况,这一步需要复制报文,进行多次封装;

4)SW_B收到VxLAN报文,进行VxLAN到VLAN网络的映射,进行解封装,得到VM_A构造的原始报文,记录MAC_VM_A到VxLAN 5000的VTEP转发映射信息,VTEP转发表的学习路径与之后报文的转发路径正好相反;

5)SW_B将解封后的报文转发给VM_B;

6)VM_B收到报文后,判断报文目的IP地址为本机IP地址,记录VM_A的ARP信息,并回复ARP;

7)SW_B收到VM_B的ARP回复报文,MAC转发表记录MAC_VM_B,VLAN ID和接口信息;

8)SW_B根据步骤4)学习到的VTEP转发信息,进行VxLAN 5000报文封装,内层报文为ARP回复原始报文,外层VxLAN报文源IP地址为2.2.2.2,目的IP地址为1.1.1.1;

9)SW_A收到该ARP回复报文,进行VxLAN解封装,得到原始报文,记录VTEP转发表项MAC_VM_B到VxLAN 5000映射信息;

10)SW_A依据步骤2)学习到的MAC表转发信息,将该报文发给VM_A;

11)VM_A收到该报文,依据报文目的MAC地址和IP地址,确定为到本机的ARP回复报文,记录VM_B的ARP表项信息;

12)ARP交互结束,可以开始业务报文通信。

后续业务报文的转发流程,与上述ARP报文的转发流程一致,只是省略了MAC转发表,VTEP转发表和ARP表项的学习。

主机跨子网overly通信

软硬件overlay方案浅析_第5张图片
跨子网overlay通信,表示通信的两台主机IP地址属于不同的子网,并且属于不同的VxLAN网络。

软硬件overlay方案浅析_第6张图片
VM_A与VM_B属于不同的子网,所以ARP请求报文学习的是网关RT_A上的MAC地址,过程与同子网overlay转发流程相同,不再复述。
VM_A和VM_B学习到网关的ARP后,交换机SW_A和SW_B上已经学习到了VM_A和VM_B的MAC转发表项,以及MAC与VxLAN的映射VTEP表项。

下面给出VM_A与VM_B业务报文的交互流程。
1) VM_A向VM_B发送报文,目的IP地址与本机IP地址不在同一网段,报文目的MAC地址为网关MAC_RT_A;

2) SW_A收到报文后进行VxLAN 5000封装,封装后报文发往VTEP对端1.1.1.2;

3) RT_A收到该报文,首先进行VxLAN 5000解封装,随后进行三层路由查找,确定报文需要进行VxLAN隧道,进行VxLAN 6000封装,报文发往VTEP对端2.2.2.1;

4) SW_B收到该报文,进行VxLAN解封装,此前的ARP学习过程已经学习到VM_B的MAC转发表项,直接将报文转发给主机VM_B;

5) VM_B接收该报文;

6) VM_B发往VM_A的报文处理流程与上述步骤一致,只是路径相反。

EVPN overlay隧道建立

软硬件overlay方案浅析_第7张图片
对于还没有使用控制器统一管理配置硬件转发设备网络,可以使用EVPN动态同步VxLAN信息,动态建立VTEP隧道。

同样,EVPN需要解决同子网主机通信场景和不同子网主机通信场景。
下面给出两种场景VxLAN隧道的建立过程,报文的转发过程与手工建立的VxLAN网络没有区别。

同子网建立VxLAN隧道:

  1. 在两端的物理交换机上配置BGP EVPN实例;

  2. 在物理交换机上配置VxLAN,以及用户VLAN ID 到VxLAN的映射;

3)交换机自动同步VxLAN信息,使用EVPN Type3路由通信VxLAN,包括本端VTEP IP地址、VNI ID、RD信息以及IRT和ERT,发送端ERT与接收端IRT相同;

4)接收端收到Type3路由信息后,保存VTEP隧道信息;

  1. 隧道建立完成,可以进行随后的业务报文通信。

跨子网建立VxLAN隧道:
通信的两台主机不在同一个网段,需要经过网关进行转发。进行VxLAN封装的交换机首先与网关设备建立 EVPN VxLAN隧道,过程与上述同子网建立VxLAN隧道一样。
VxLAN网关设备之间通过L3VPN实例发送本地路由信息到对端,发送的信息为Type2路由和Type5路由。网关设备保存对端发送过来的路由信息,用于后续跨网段转发封装报文。
不同网段的主机进行通信过程:
1) 主机先将报文发送至物理交换机进行VxLAN封装;

2) 交换机根据入接口信息和VLAN信息,找到对应的VTEP,封装报文发送给网关设备;

3) 网关设备对报文进行解封装,进行路由查找,命中L3VPN同步的路由,重新进行VxLAN封装,将报文发送至对端交换机;

4) 对端交换机接收该报文,进行VxLAN解封装,使用已经学习到的MAC表项,将报文发送给目的主机;

5) 目的主机收到报文。

软件overlay方案

软硬件overlay方案浅析_第8张图片
软件overlay方案是通过控制器配置管理Hypervisor上的虚拟网络和虚拟网关,来实现软件数据中心内虚拟机间的二三层转发,并通过虚拟网关与物理网络进行通信。

Hypervisor上行接口对发出的报文进行VxLAN封装,并对接收到的报文进行VxLAN解封装。虚拟网关可以运行在虚拟机上,或者运行在裸金属上,虚机网关与Hypervisor之间通信通过overlay网络。

同一个Hypervisor内的虚拟机间通信,如无需到虚拟网关做NAT地址转换、集中式防火墙等业务,则无需经过上行接口,直接通过虚拟网络在Hypervisor内部转发。

Overlay隧道的建立

软硬件overlay方案浅析_第9张图片
SDN overlay隧道建立的基本原理是用户在集中控制器上创建VxLAN网络,Hypervisor上的虚拟机加入overlay网络后,上报虚拟机的IP地址、MAC地址、VNI ID以及本端VTEP IP地址到集中控制器,集中控制器随后将虚拟机信息同步到其它Hypervisor和虚拟网关,完成VxLAN隧道建立。

详细流程如下:

1) Hypervisor KVM1,KVM2,KVM3,虚拟网关接入集中控制器;

2) KVM1上的虚拟机VM1加入VxLAN 5000网络,KVM1探测VM1的IP地址和MAC地址(如解析ARP报文);

3) KVM1上报VM1网络信息至集中控制器;

4) KVM2上的虚拟机VM2加入VxLAN 5000网络,KVM2探测VM2的IP地址和MAC地址;

5) KVM2上报VM2网络信息至集中控制器;

6) 集中控制器收到KVM1和KVM2都有虚拟机加入VxLAN 5000网络,进行转发表项同步,同步信息包括虚拟机ARP信息、二层转发MAC信息以及VTEP表项;

7) KVM1收到VM2的ARP表项、MAC表项以及VTEP表项,VM1会使用这些表项与VM2通信;

8) KVM2收到VM1的ARP表项、MAC表项以及VTEP表项,VM2会使用这些表项与VM1通信;

9) 虚拟网关由于需要同所有Hypervisor通信,会收到VM1和VM2的ARP表项、MAC表项以及VTEP表项;

10) KVM3由于没有虚拟机加入VxLAN 5000网络,所以没有收到任何信息;

11) 表项同步完毕,虚拟机可以使用集中控制器下发的表项进行业务报文转发。

同子网overlay通信

软硬件overlay方案浅析_第10张图片
本图中的拓扑为KVM1上的虚拟机VM1加入了VxLAN 5000,KVM2上的虚拟机VM2加入了VxLAN 5000,两台属于不同Hypervisor的虚拟机加入了相同的二层网络。

经过了上面的控制器同步转发表项,KVM1和KVM2之间已经建立了VTEP隧道,KVM1上已经保存了虚机VM2的ARP表、MAC表以及到KVM2的VTEP表,同样,KVM2上已经保存VM1的ARP表、MAC表以及到KVM1的VTEP表。
KVM1和KVM2的二层虚拟网络在收到本地虚拟机发送的ARP报文或者DHCP报文后,直接学习到相应的MAC转发表项。

虚拟机VM1向虚拟机VM2发送单播报文,流程如下:

1) VM1发送到IP_VM2的ARP请求报文,KVM1上已经保存了控制器同步过来的IP_VM2的ARP表项,KVM1直接代理回复ARP给VM1 (如果KVM1不存在该ARP表项,则在VxLAN内广播ARP请求);

2) VM1学习到IP_VM2对应的ARP表项,构造单播报文至VM2;

3) KVM1收到单播报文,目的MAC为MAC_VM2,该报文命中已有MAC表项,获得VNI为5000,对端VTEP IP为1.1.1.2;

4) KVM1对该报文进行VxLAN封装,内层为原始报文,外层目的MAC为MAC_KVM2,目的IP地址为1.1.1.2,源MAC地址为MAC_KVM1,源IP地址为1.1.1.1;

5) 物理交换机接收该报文,根据目的MAC地址将报文发送至KVM2;

6) KVM2接收该报文,判断VNI 5000为本机支持的overlay网络,进行解封装;

7) 报文进入KVM2虚拟网络,使用目的MAC查找本地MAC转发表,将报文发往虚拟机VM2;

8) VM2收到VM1发送的原始报文。

VM2发往VM1的报文处理流程与上述流程一致。在这个示例中VTEP 1.1.1.1与VTEP 1.1.1.2属于同一个物理二层网络,所以KVM1直接使用了控制器同步的MAC_KVM2进行的外层目的MAC地址封装,对于VxLAN网络两端VTEP属于不同子网的情况,Hypervisor需要学习物理网关的ARP表项,VxLAN封装外层目的MAC地址为网关的MAC地址,并且在物理网络进行二层和三层转发,其它流程与上述步骤一致。

示例中给出的两台虚机属于不同的Hypervisor,对于属于同一个hypervisor的场景,报文在本地的虚拟二层网络转发,直接在Hypervisor内转发至相应的虚机,不会通过上行接口。

跨子网overlay通信

跨子网通信的两台虚拟机需要通过虚拟网关的虚拟路由器进行转发。虚拟机先通过虚拟交换机和虚拟路由器进行二层通信,虚拟路由器做路由查找,将报文转发给目的虚拟机。
软硬件overlay方案浅析_第11张图片

在图中的通信场景中,Hypervisor KVM1中只保留VM1网关的MAC表项、ARP表项以及VTEP表项;同样KVM2中只保留VM2网关的MAC表项、ARP表项和VTEP表项。虚拟网关中保存有相连接虚拟机对应的ARP表项、VTEP表项以及路由表,这些表项全部由控制器完成表项的同步。

软硬件overlay方案浅析_第12张图片
假设VM1和VM2已经学习到了虚拟网关的ARP表项,Hypervisor KVM1和KVM2代理回复了相应的ARP请求。

详细流程如下:

1) KVM1上的虚拟机VM1向KVM2上的VM2发起通信,构造报文,目的IP地址为VM2 IP地址,目的MAC地址为虚拟网关MAC地址,源IP地址和源MAC地址为本机网卡信息;

2) KVM1数据面收到该报文后,虚拟交换机进行MAC表项查找,该报文发往虚拟网关VTEP;

3) 进行VTEP封装,内层报文为原始报文,外层VxLAN UDP头填入VNI 5000,外层报文目的MAC地址为虚拟网关物理网卡MAC地址,目的IP地址为网关VTEP IP地址,源MAC地址为KVM1上行物理接口MAC地址,源IP地址为KVM1 VTEP地址,该报文发往虚拟网关;

4) 虚拟网关GW1收到该报文后,进行解封装,使用内层报文目的IP地址进行路由查找,确定报文需要进行VxLAN 5001封装;

5) GW1重新封装报文,将内层报文的源MAC地址替换为虚机路由器的虚拟MAC地址,VxLAN UDP头填入VNI 50001,外层目的MAC地址为KVM2物理网MAC地址,目的IP地址为KVM2 VTEP地址,源MAC地址为虚拟网关物理MAC地址MAC_GW1,源IP地址为虚拟网关VTEP地址,将报文发往KVM2;

6) KVM2接收到该报文,对VNI 5001进行判断,解封装报文;

7) 使用内层报文目的MAC进行MAC转发表查找,命中已经学习到的MAC表项,报文发往VM2虚拟网卡;

8) VM2接收到该报文,跨子网的三层通信结束。

VM2回复VM1的报文通信流程,与上述报文转发流程一致。

本例中给出的跨子网通信,报文需要到虚拟网关进行三层业务如负载均衡、NAT或者集中式防火墙,所以报文先发往虚拟网关,随后发送至目的主机。对于不需要到虚拟网关做集中式业务的报文,会直接在源Hypervisor KVM1内进行虚拟路由的查找,该路由由控制器统一下发,随后源Hypervisor直接封装目的VxLAN 5001,将报文发送至KVM2,KVM2上的报文处理与同子网一致,这种情况下,虚拟路由也叫做分布式虚拟路由。

更神奇的情况是,需要通信的两台虚机不需要做集中式业务,并且属于同一个Hypervisor,此时所有的通信流程都在这个Hypervisor内完成,包括两次MAC地址表查找,分布式路由查找,这样可以十分高效的完成三层报文转发,避免了对物理网关的发夹访问。

软件SDN网络中的虚拟机也可以通过虚拟网关与数据中心中物理网络中的设备进行通信,虚拟网关通过VLAN网络接入物理网络并与物理网关之间建立BPG连接,虚拟网关上配置到对端物理网络的默认静态路由,在软件SDN网络找不到路由的报文全部发往物理网关,同时通过BGP连接把软件SDN网络的网段路由信息发布给物理网关,这样物理网关就可以把数据中心中的报文发给软件SDN网络。

基本的通信流程为软件SDN网络的虚拟机先把报文发送给虚拟网关,流程与跨子网通信一致,虚拟网关进行路由查找,命中配置的默认静态路由,报文转发给物理网关,之后的流程为物理设备的转发处理流程;物理设备收到报文后,回复报文先到达与软件SDN相连接的物理网关,通过路由查抄将报文发给虚拟网关,虚拟网关通过软件SDN的跨子网通信流程将报文发到对应的虚拟机。

软件与硬件overlay互通

软硬件overlay方案浅析_第13张图片
在实际的使用场景中,有时需要让新建的软件SDN网络与已有的硬件SDN网络进行互通,以及让不同厂商的软件SDN进行互通。在之前的介绍中,我们已经知道软件SDN网络中,虚拟网络的转发表项是靠控制器进行同步的,软件SDN网络中的虚拟网关是到物理网络的出口。软件SDN网络的虚机如何与物理网络中的虚拟机进行同子网的overlay通信,完成虚拟机迁移?

一个可行的方法是在虚拟网关与物理网关之间EVP建立N控制通道,同步软件SDN网络和物理网络的VxLAN网络信息以及转发表项信息。

1) 虚拟网关与软件SDN网络内的虚拟机通过VxLAN隧道通信,虚拟网关通过EVPN隧道将SDN网络中的网段路由和VxLAN信息通过Type2 路由和Type5 路由,发送给物理网关;

2) 物理网关接收到Type 2路由和Type 5路由后,进行软件SDN网络VxLAN与物理网络的VxLAN网络映射,这些映射关系由网络管理员统一管理配置,将这些路由信息在物理网络内进行同步;

3) 同样物理网关也会将物理网络的网段信息和VxLAN信息同步给虚拟网关,虚拟网关将VxLAN映射转换为本地表项,映射关系由管理员统一配置,并把这些表项发送给控制器;

4) 控制器在SDN网络内广播同步这些表项至Hypervisor,网络内的虚机就可以使用这些网络转发表项与物理网络进行同子网的VxLAN通信。

上面描述为网路转发表项的同步过程,至于SDN网络的虚机与物理网络内的虚机VxLAN同子网通信过程,就是使用控制通道同步的表项,经由虚拟网关和物理网关进行转发表项查找,以及VxLAN表项映射转换完成通信。

软硬件overlay方案对比

软硬件overlay方案浅析_第14张图片

你可能感兴趣的:(软硬件overlay方案浅析)