1背景
1.1云计算成为企业IT建设新形态
云计算,凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新形态;而在云计算中,大量的采用和部署虚拟化是一个基本的技术模式。
服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时为了实现业务的灵活变更,虚拟机VM(Virtual Machine)需要能够在网络中不受限制的迁移(如图1-1所示)。实际上,对于数据中心而言,虚拟机迁移已经成为了一个常态性业务。
图1-1 虚拟机迁移
1.2传统数据中心网络面临的挑战
虚拟机数量的快速增长与虚拟机迁移业务的日趋频繁,给传统的“二层+三层”数据中心网络带来了新的挑战:
1、虚拟机规模受网络设备表项规格的限制
对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。
2、VLAN隔离能力不在满足需求
VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,也就是说可用的VLAN数量只有4000个左右。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力显然已经力不从心。
3、虚拟机迁移范围受限
虚拟机迁移,顾名思义,就是将虚拟机从一个物理机迁移到另一个物理机,但是要求在迁移过程中业务不能中断。要做到这一点,需要保证虚拟机迁移前后,其IP地址、MAC地址等参数维持不变。这就决定了,虚拟机迁移必须发生在一个二层域中。而传统数据中心网络的二层域,将虚拟机迁移限制在了一个较小的局部范围内。
针对传统数据中心面临的问题,VXLAN技术很好的解决上面提到的限制:
1、 这对虚拟机规模受网络规格限制
VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC地址作为外层进行封装,对网络只表现为封装后的参数,因此,极大的降低了大二层网路对MAC地址规格的需求。
2、 针对网络隔离能力的限制
VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标示VNI(VXLANnetwork ID),由24位比特组成,支持多达16M的VXLAN段,从而满足了大量的用户标识。
3、 针对虚拟机迁移范围受网络架构的限制
通过VXLAN构建大二层网络,保证了在虚拟机迁移时虚拟机的IP地址MAC地址等保持不变,保证了在迁移过程中业务不中断。
所以随着数据中心在物理网络基础设施上实施服务器虚拟化的快速的发展,VXLAN技术通过24位比特的VNI可以支持多达16M的VXLAN段的网络隔离,对用户进行隔离和标识不再受到限制,可以满足海量用户;除VXLAN网络边缘设备,网络中的其他设备不需要识别虚拟机的MAC地址,减轻了设备的MAC地址学习压力,提升了设备性能;通过采用MAC inUDP封装来延伸了二层网络,时间了物理网络和虚拟网络的解耦,租户可以规划自己的虚拟网络,不需要考虑物理网络IP地址和广播域的限制,大大降低了网络管理的难度。
2 VXLAN应用场景
目前,规模化,虚拟化,云计算已经成为数据中心的发展方向,同时数据中心为了更大的业务量并降低维护成本,逐渐向大二层技术及虚拟化迁移,随着数据中心在物理网络基础设施上试试服务器虚拟化的快速发展,作为NVO3技术之一的VXLAN技术具有很强的适应性,为数据中心提供了良好的解决方案。
2.1相同网段不同站点间通信
如果图2-1所示,某企业在不同数据中心(物理上隔离)都有有VM,且位于同一网段,现需要实现不同数据中心相同网段的VM互通。
图 2-1 相同网段不同站点间互通
可将交换机设备作为VXLAN二层网关,交互机设备间建立VXLAN隧道,通过VXLAN二层网关实现同一网段终端用户互通。
2.2不同网段不同站点间通信
如图2-2所示,某企业在不同的数据中心有VM,且位于不同网段,先需要实现该企业不同网段VM之间互通。
图 2-2 不同网段不同站点间互通
可以将Switch-3设备作为VXLAN三层网关,其他交换机作为VXLAN的二层网关,交换机设备之间建立VXLAN隧道,通过VXLAN三层网关实现不同网段的终端用户互通。
2.3虚拟机在不同站点间迁移
当前数据中心网络中企业通过部署服务器虚拟化来达到整合IT资源,提升资源利用率,降低开支的目的,随着虚拟化水平的不断提高,物理服务器上虚拟机的数量在不断增加,虚拟化环境下运行的应用数量也在不断增加,为虚拟网络带来了很大的挑战。
如图2-3,某企业在数据中心有两个集群Cluster,其中工程部门和财务部门都在Cluster1上,营销部门在Cluseter2上。
Cluster1上显示计算资源不足,而Cluster2未充分利用,网络管理员需要将工程部分迁移到Cluster2上,而且不影响业务正常运行。
图2-3 虚拟机在不同站点间迁移
为了保证工程部门在迁移过程中业务不中断,则需要保证工程部门的IP地址,MAC地址等参数保持不变,这就要求两个Cluster属于一个二层网络。为了将工程部门成功迁移到Cluster2上,可以通过VXLAN来实现。VXLAN是MAC in UDP的网络虚拟化技术,只要物理网络支持IP转发,所有IP路由可达的终端用户即可建立一个大范围的二层网络,通过VXLAN隧道,工程部门在迁移过程中可以保证网络无感知。工程部门在从Cluster1迁移到Cluster2后,终端用户会发送免费ARP报文,所有网关设备上保存的原VM对应的MAC地址表项和ARP表项都会将删除,更新为迁移后的VM对应的MAC地址表项和ARP表项。
3 VXLAN原理描述
3.1技术简介
VXLAN是一种大二层的虚拟技术,主要的技术原理是引入了一个UDP外层隧道,作为数据的链路层,而原有的数据报文内容作为隧道净荷来传输,由于外层采用了UDP作为传出手段,就可以让净荷数据轻而易举的在二三层网络中传送,为了能够支持原有的vlan广播寻址能力,VXLAN还可以引入三层IP组播来代替以太网的广播,让BUM(broadcast广播,unknown unicast未知单播,multicast多播)报文通过广播方式在虚拟网络中传送。
VXLAN技术将已有的三层物理网络作为underlay网络,在其上构建出虚拟的二层网络,即overlay网络,overlay网络通过封装技术,利用underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对租户来说,underlay网络时透明的,同一租户的不同站点就像工作一个局域网中(如图2-1所示)。
图2-1 VXLAN网络组网模型示意图
(1)VM(VirtualMachine,虚拟机):在一台设备上可以创建多台虚拟机,不同的虚拟机可以属于不同的VXLAN。属于相同的VXLAN的虚拟机处于同一个逻辑二层网络,彼此之间二层互通,属于不同VXLAN的虚拟机之间二层隔离。VXLAN通过VXLANID来标识,又被称为VNI(VXLAN network identifier,VXLAN网络标识符),其长度为24比特。
(2)VTEP(VXLAN tunnelend point,VXLAN隧道端点):VXLAN的边缘设备,针对VXLAN的处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN,基于VXLAN对数据帧进行二层转发、封装/解封装报文等。VTEP可以是一台独立的物理设备也可以是虚拟机所在的服务器。
(3)VXLAN隧道:两个VTEP之间的点到点的逻辑隧道,VTEP为数据帧封装VXLAN头,UDP头和IP头,通过VXLAN隧道将封装后的报文传递到远端VTEP,远端VTEP设备对其进行解封装。
(4)核心设备:IP核心网络中的设备,其核心设备不需要参与VXLAN的处理,仅需根据封装后报文的目的IP地址地报文进行三次转发。
(5)VSI(VirtualSwitch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例,可以看做是VTEP设备上一台基于VXLAN进行二层转发的虚拟交换机,它可以具有传统以太网交换机所具有的所有功能,包括源MAC地址的学习、MAC地址老化,洪泛等。VSI与VXLAN一一对应。
3.2VXLAN报文封装格式
图2-2 VXLAN报文封装格式
在原始的二层数据帧外添加8字节的VXLAN头,8字节UDP头和2-字节的IP头。其中UDP头的目的端口号为VXLAN固定UDP端口号(缺省值为4789),VXLAN头主要包含两部分:
(1) 标志位:“I”位为1,表示VXLAN投中的VXLAN ID有效;为0,表示VXLAN ID无效,其他保留未用,设置为0;
(2) VXLAN ID:用来标识一个VXLAN网络,长度为24比特;
主要事项:封装后的报文长度增加了50个字节,所以虚拟机的上行端口以及与上行端口相连的交换机端口,路由器端口都需要配置的比VM虚拟网卡的最大MTU值增加50个字节,如果无法操作的话,可以考虑把VM的最大MTU减小50字节。
4 VXLAN转发机制
图3-1建立VXLAN隧道示意图(1)
如图3-1所示,网络中存在多个VTEP,那么这其中哪些VTEP间需要建立VXLAN隧道呢?
如前所述,通过VXLAN隧道,“二层域”可以突破物理上的界限,实现大二层网络中VM之间的通信。所以,连接在不同VTEP上的VM之间如果有“大二层”互通的需求,这两个VTEP之间就需要建立VXLAN隧道。
例如,假设图3-1中VTEP_1连接的VM、VTEP_2连接的VM以及VTEP_3连接的VM之间需要“大二层”互通,那VTEP_1、VTEP_2和VTEP_3之间就需要两两建立VXLAN隧道,如图3-2所示
图3-2建立VXLAN隧道示意图(2)
VXLAN运行机制可以概括为:
(1) 发现远端的VTEP,在VTEP之间建立VXLAN隧道,并将VXLAN隧道与vxla关联;
(2) 识别接收到的报文所属的VXLAN,以便将报文的源MAC地址学习到VXLAN对应的VSI中,并在该VSI内转发报文;
(3) 学习虚拟机的MAC地址;
(4) 根据学习到的MAC地址表项转发报文;
4.1建立VXLAN隧道并将其与VXLAN关联
为了将VXLAN报文传递到远端VTEP,需要创建VXLAN隧道,并将VXLAN隧道与VXLAN关联起来。
1、 创建VXLAN隧道
(1) 手工方式:手工配置Tunnel接口,并指定隧道的源和目的IP地址分别为本端和远端VTEP的IP地址;
(2) 自动方式:通过ENDP(Enhance Neighbor Discovery Protocol,增强的邻居发现协议)发现远端VTEP,自动在本端和远端VTEP之间建立VXLAN隧道。
2、 关联VXLAN隧道与VXLAN
(1) 手工方式:手工将VXLAN隧道和VXLAN进行关联;
(2) 自动方式:通过扩展IS-IS协议发布VXLAN ID信息。VTEP在所有的VXLAN隧道上通过IS-IS将本地存在的VXLAN ID通告给远端VTEP,远端VTEP将其与本地的VXLAN进行比较,如果存在相同的VXLAN,则将该VXLAN与接收信息的VXLAN隧道关联。
4.2识别报文所属于的VXLAN
1、本地站点内接收到数据帧的识别
VETP将连接本地站点的三层接口或以太网服务实例(Service Instance)与VSI关联,VTEP从三层接口或以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。以太网服务器实例在二层以太网接口上创建,它定义了一系列的匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。主要通过vlan ID来区分从二层以太网接口上接收到的数据帧。
如图3-1所示,VM1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI内创建VXLAN 10,则VETP接收到的VM 1的发送的数据帧后,可以判定该数据帧属于VXLAN 10。
图3-1 二层数据帧匹配VXLAN
2、VXLAN隧道上接收报文的识别
对于从VXLAN隧道上接收的数据帧,VTEP根据报文中携带的VXLAN ID判断报文所属的VXLAN。
4.3MAC地址学习
1、本地MAC地址学习
是指VTEP对本地站点内虚拟机的MAC地址的学习,VETP接收到本地虚拟机发送的数据帧后,判断报文所属的VSI,并将报文中的源MAC地址添加到对应的VSI的MAC表中,该MAC地址对应的接口即为接收到数据帧的接口。
2、远端MAC地址学习
是指VTEP学习远端站点内虚拟机的MAC地址,主要有下面几种方法:
(1) 静态配置:手工指定远端虚拟机的MAC地址所属的VSI(即VXLAN)及其对应的VXLAN隧道接口。
(2) 动态学习:通过报文中的源MAC地址进行动态学习,VTEP从隧道上接收到远端的VETP发送的VXLAN报文后,根据VXLAN ID判断报文所属的VSI,并对报文进解封装,从而还原原始的二层数据帧,并将数据帧的源MAC地址添加到所属的VXLAN对应的VSI的MAC地址表中,该MAC地址对应的接口为其VXLAN隧道接口。
(3) 通过IS-IS协议学习:VXLAN扩展了IS-IS协议来发布本端的MAC地址信息,在VTEP上运行IS-IS协议,通过VXLAN隧道将本地MAC地址及其所属的VXLAN信息通告给远端VTEP,远端VETP接收到该信息后,将其添加到对应的VXLAN所属的VSI的MAC地址表中,该MAC地址对应的接口为其相应的VXLAN隧道接口。
4.4数据报文转发
数据报文转发即为虚拟机报文接入VTEP的方式,其主要有两种VLAN接入模式和Ethernet接入模式。
(1) VLAN接入模式:从本地站点接收到和发送给本地站点的以太网帧必须带有VLAN Tag,VTEP从本地站点接收到以太网帧后,删除其携带的所有VLAN Tag,再转发该数据帧;VTEP发送数据帧到本地站点时,为其添加本地的VLAN Tag。该模式下,VTEP不会传递VLAN信息,不同的站点可以独立的规划自己的VLAN,不同站点的不同VLAN之间可以互通。规划比较灵活。
(2) 从本地站点接收到和发送给本地站点的数据帧可以携带VLAN Tag,也可以不携带VLAN Tag,VTEP从本地站点接收到以太网数据帧后,保持该数据帧的VLAN Tag信息不变,转发该数据帧;VTEP接收到以太网到本地站点的数据帧后,不会为期添加任何的VLAN信息。该方式下,VTEP会在不同的站点之间出传递VLAN信息,不同站点间的VLAN需要统一规划,否则无法互通。
流封装类型 | 允许进入VXLAN隧道的报文类型 | 报文进行封装前的处理 | 接收到VXLAN报文并解封装后的处理 |
dot1q | 只允许携带指定VLAN Tag的报文进入VXLAN隧道 | 进行VXLAN封装前,需要先剥掉原始报文的外层VLAN Tag | 进行VXLAN解封装后,如果内层原始报文还带有VLAN Tag,则VLAN Tag替换为指定的VLAN Tag。 如果内层报文没有携带VLAN,则添加上指定额VLAN Tag。 |
Untag | 只允许不携带VLAN Tag的报文进入VXLAN隧道 | 进行VXLAN封装前,不对原始报文进行任何处理,即不添加任何的VLAN Tag | 进行VXLAN解封装后,如果内层原始报文还带有VLAN Tag,则删除VLAN Tag后转发。 如果内层报文没有携带VLAN,则直接转发。 |
Default | 允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag | 进行VXLAN封装前不对原始报文进行任何改动 | 进行VXLAN解封装后不对原始二层报文进行任何处理,直接转发 |
5 VXLAN网络中报文转发流程
5.1同子网内报文互通
5.1.1 ARP请求处理流程
如图4-1所示,VM_A、VM_B和VM_C同属于10.1.1.0/24网段,且同属于VNI5000。此时,VM_A想与VM_C进行通信。
图4-1 VXLAN隧道示意图
由于是首次进行通信,VM_A上没有VM_C的MAC地址,所以会发送ARP广播报文请求VM_C的MAC地址。
下面就让我们根据ARP请求报文及ARP应答报文的转发流程,来看下MAC地址是如何进行学习的。
(1)ARP请求流程
图4-2 ARP请求流程图
序号 | 描述 |
1 | VM_A发送源MAC为MAC_A、目的MAC为全F、源IP为IP_A、目的IP为IP_C的ARP广播报文,请求VM_C的MAC地址。 |
2 | VTEP_1收到ARP请求后,根据二层子接口上的配置判断报文需要进入VXLAN隧道。也就确定了报文所属的VNI。同时,VTEP_1学习MAC_A、VNI和报文入接口的对应关系,并记录在本地MAC表中。之后,VTEP_1会根据头端复制列表对报文进行复制,并分别进行封装。 可以看到,这里封装的外层源IP地址为本地VTEP(VTEP_1)的IP地址,外层目的IP地址为对端VTEP(VTEP_2和VTEP_3)的IP地址;外层源MAC地址为本地VTEP的MAC地址,而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。 封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP |
3 | 报文到达VTEP_2和VTEP_3后,VTEP对报文进行解封装,得到VM_A发送的原始报文。同时,VTEP_2和VTEP_3学习VM_A的MAC地址、VNI和远端VTEP的IP地址(IP_1)的对应关系,并记录在本地MAC表中。之后,VTEP_2和VTEP_3根据二层子接口上的配置对报文进行相应的处理并在对应的二层域内广播。 VM_B和VM_C接收到ARP请求后,比较报文中的目的IP地址是否为本机的IP地址。VM_B发现目的IP不是本机IP,故将报文丢弃;VM_C发现目的IP是本机IP,则对ARP请求做出应答。 |
真实MAC表中记录的不是VTEP远端的IP地址,而是本端的隧道接口,这是只是用VTEP远端IP地址来标示本端隧道接口。 |
(2)ARP应答流程
图4-3 ARP应答流程图
序号 | 描述 |
1 | 由于此时VM_C上已经学习到了VM_A的MAC地址,所以ARP应答报文为单播报文。报文源MAC为MAC_C,目的MAC为MAC_A,源IP为IP_C、目的IP为IP_A。 |
2 | VTEP_3接收到VM_C发送的ARP应答报文后,识别报文所属的VNI(识别过程与步骤2类似)。同时,VTEP_3学习MAC_C、VNI和报文入接口(Port_3)的对应关系,并记录在本地MAC表中。之后,VTEP_3对报文进行封装。 这里封装的外层源IP地址为本地VTEP(VTEP_3)的IP地址,外层目的IP地址为对端VTEP(VTEP_1)的IP地址;外层源MAC地址为本地VTEP的MAC地址,而外层目的MAC地址为去往目的IP的网络中下一跳设备的MAC地址。 封装后的报文,根据外层MAC和IP信息,在IP网络中进行传输,直至到达对端VTEP。 |
3 | 报文到达VTEP_1后,VTEP_1对报文进行解封装,得到VM_C发送的原始报文。同时,VTEP_1学习VM_C的MAC地址、VNI和远端VTEP的IP地址(IP_3)的对应关系,并记录在本地MAC表中。之后,VTEP_1将解封装后的报文发送给VM_A。 |
5.1.2同一站点内单播流量转发处理
对于同一站点内流程,VTEP判断出报文所属于的VSI后,根据目的MAC地址查找该VSI的MAC地址表,从相应的本地接口转发给目的VM。
图4-4 同站点单播转发流程
如图4-4所示VM1(MAC地址为MAC1)发送以太网帧到VM4(MAC地址为MAC4)时,VTEP1从接口GE1/0/1收到该以太网帧后,判断该数据帧属于VSI A(VXLAN 10),所以查找VSI A的MAC地址表,得到MAC 4的出接口为GE1/0/2,所在VLAN为VLAN 10,则将该以太网帧从接口GE1/0/2的VLAN 10内发送给VM4。
5.1.3 站点间单播流量转发处理
图4-5 站点间单播流量转发流程
如图4-5所示,VM1,MV4和MV7属于一个大二层子网 VXLANID为10(VSI为 A),以VM1与VM7通信为例描述跨站点的二层互通处理流程:
序号 | 描述 |
1 | VM 1发送以太网数据帧给VM 7,数据帧的源MAC地址为MAC 1,目的MAC为MAC 7,VLAN Tag为2 |
2 | VTEP1从接口GE1/0/1收到该数据帧后,判断出该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 7的出接口Tunnel 1 |
3 | VTEP1为数据帧封装VXLAN头,UDP头,IP头后,将封装好的报文通过VXLAN隧道Tunnel 1经由源三层网络P设备转发给VTEP2。 |
4 | VTEP2接收到报文后,根据报文中的VXLAN ID判断该报文属于VXLAN 10,并剥离VXLAN头,UDP头,IP头部,还原原始的二层数据帧。 |
5 | VTEP2查找与VXLAN 10对应的VSI A的MAC地址表,得到MAC 7的出接口GE1/0/1(其vlan为20) |
6 | VTEP2从接口GE1/0/1的VLAN 20内将数据帧发送给VM 7 |
5.2转发洪泛流量处理
洪泛流量包括组播、广播、未知单播,根据复制方式的不同,流量洪泛方式分为单播路由方式(头端复制)、组播路由方式(核心复制)和洪泛代理方式(服务器复制)三种。
5.2.1单播路由方式
在单播路由方式下,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内所有的远端VTEP站点。
图4-6单播路由转发方式
序号 | 描述 |
1 | VTEP1接收到本地虚拟机发送的组播,广播,未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收端口外的所有本地端口和VXLAN隧道转发,通过VXLAN隧道转发时,需要为其封装VXLAN头,UDP头和IP头,将洪泛流量封装在多个单播报文中通过核心交换转发到VXLAN内的所有远端VTEP。 |
2 | 远端VTEP(VTEP2和VTEP3)接收到VXLAN的报文后,解封装报文,将原始数据帧在本地指定的VXLAN内洪泛。 |
为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其洪泛到其他VXLAN隧道。 |
5.2.2组播路由方式
数据中心网络中要通过IP核心网络进行二层网络互连的站点较多时,采用组播路由方式可以节省洪泛流量对核心网络带宽资源的占用。
在组播路由方式下,同一个VXLAN内所有的VTEP都加入同一个组播组内,利用组播路由协议在IP核心网上为该组播组建立转发表项,VTEP接收到洪泛流量后,不仅在本地站点内洪泛,还会为其封装组播目的IP地址,封装后的报文根据已经建立的组播转发表项转发到远端VTEP。
图4-7 组播路由转发方式
序号 | 描述 |
1 | VTEP1接收到本地站点内虚拟机发送的BUM报文后,判断数据帧所属的VXLAN,不仅通过该VXLAN除接收端口以外的所有本地端口将数据帧转发到本地站点,还会为其封装VXLAN头,UDP头,IP头(目IP地址为组播组IP)通过组播转发表项将其发送到远端VTEP。 |
2 | IP核心网内,P设备根据建立的组播转发表项复制并转发该组播报文。 |
3 | 远端VTEP(VTEP2和VTEP3)接收到VXLAN报文后,解封装并将原始的数据帧在本地站点的指定VXLAN内洪泛。 |
(1) BUM: B:广播报文;U:未知单播;M:多播 (2)为了避免环路,VTEP从VXLAN隧道上接收到数据报文后,不在为其封装VXLAN和洪泛到其他VXLAN隧道。 |
5.2.3洪泛代理方式
数据中心网络中需要IP核心网络进行二层互联的站点较多时,采用洪泛代理的方式可以在没有组播协议的参与下,节省洪泛流量对核心网络带宽资源的占用。
在洪泛代理方式下,同一个VXLAN内所有的VTEP都与代理服务器建立隧道,VTEP接收到洪泛流量后,不仅在本地站点内转发,还会将其转发到代理服务器,然后由代理服务器转发到远端的VTEP。
图4-8 洪泛代理转发方式
序号 | 描述 |
1 | VTEP1接收到本地站点内虚拟机发送的广播,多播,未知单播报文后,判断数据帧所属于的VXLAN,不仅在该VXLAN内除接收端口外的所有端口转发数据帧到本地站点,还会为其封住VXLAN头,UDP头,IP头(IP的目的地址为代理服务的地址)通过指定的隧道将其发送到洪泛代理服务器。 |
2 | 代理服务器接收到报文后,修改报文的源IP地址为服务器本身的IP地址,目的IP地址为其他VTEP(同属于一个VXLAN)的地址,并从不同的隧道转发到远端VTEP。 |
3 | 远端VTEP(VTEP2和VTEP3)接收到VXLAN报文后,解封装报文并将原始的数据帧在指定的VXLAN内洪泛。 |
(1) VTEP站点需要首先与代理服务器建立VXLAN隧道; (2) 为了避免环路,VTEP从VXLAN隧道上接收到数据报文后,不在为其封装VXLAN和洪泛到其他VXLAN隧道。 |
5.3 ARP洪泛流量抑制
为了避免广播发送ARP流量占用核心网络带宽,VTEP从本地站点或VXLAN隧道接收到ARP请求或应答报文后,根据该报文在本地建立的ARP洪泛抑制表项。后续当VTEP接收到本地站点内虚拟机请求其他虚拟机MAC地址的ARP请求后,优先根据ARP洪泛抑制表项进行应答。如果没有对应的表项,则将ARP请求洪泛到核心网。
图4-9 ARP洪泛抑制
序号 | 描述 |
1 | 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址 |
2 | VTEP 1根据接收到的ARP请求,建立VM 1的ARP洪泛表项,并在对应的VXLAN内洪泛该ARP请求。 |
3 | 远端VTEP(VTEP2和VTEP3)解封装接收到的VXLAN报文,获取原始的ARP请求报文后,建立VM 1的ARP抑制表项,并在本地站点内指定的VXLAN内洪泛该ARP请求。 |
4 | VM7 接收到ARP请求后,回复ARP应答报文。 |
5 | VTEP2接收到ARP应答后,首先建立VM 7的ARP洪泛抑制表项,然后通过相应的VXLAN隧道将ARP应答发送给VTEP 1。 |
6 | VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据应答建立VM 7的ARP洪泛抑制表项,然后将原始ARP应答表项转发给VM 1。 |
7 | 在VTEP1上建立ARP洪泛抑制表项后,虚拟机VM 4发送ARP请求后,获取VM 1和VM 7的MAC地址。 |
8 | VTEP1收到ARP请求后,建立VM 4的ARP洪泛抑制表项,并查找ARP洪泛抑制表,根据已有的表项回复ARP应答报文,不会对ARP请求进行洪泛。 |
9 | 在VTEP3上建立ARP洪泛抑制表项后,虚拟机VM 10发送ARP请求,获取VM 2的MAC地址表项。 |
10 | VTEP3 接收到ARP请求后,建立VM 10的ARP洪泛抑制表项,并查找ARP洪泛抑制表项,根据已有的表项回复ARP应答报文,不会对ARP进行洪泛处理。 |
5.4 VXLAN 网关
VXLAN可以为分散的物理站点提供二层互联,如果要为VXLAN站点内的虚拟机提供三层业务,则需要在网络中部署VXLAN IP网关,以便在站点内的虚拟机通过VXLAN IP网关与外界网络或其他VXLAN网络内的虚拟机三层互联。VXLAN IP网关可以部署在独立的物理设备上,也可以部署在VTEP设备上。VXLAN IP网关部署在VTEP设备上时,又分为集中式VXLAN 网关和分布式VXLAN网关。
5.4.1独立的VXLAN IP网关
图 4-10 独立VXLAN IP网关
VXLAN IP网关部署在独立的物理设备上时,VXLAN IP网关作为物理站点接入VTEP,VXLAN业务对于网关设备透明,虚拟机通过VXLAN IP网关与三层网络中的节点通信时,虚拟机将三层报文封装成二层数据帧发送给VXLAN IP网关。
VTEP对数据帧进行VXLAN封装,并在IP核心网络上将其转发给远端的VTEP(与VXLAN IP网关连接的VTEP)。远端VTEP对VXLAN报文进行解封装并将原始的三层数据帧转发给VXLAN IP网关,VXLAN IP网关去掉原始报文的链路层头后,进行三层转发处理。
5.4.2集中式VXLAN IP网关
图4-11 集中式VXLAN IP网关
集中式VXLAN IP网关进行二层VXLAN业务终结的同时,还对内层封装的IP报文进行三层处理。与独立的VXLAN IP网关相比,该方式除了能节省设备外,VXLAN IP网关功能由VXLAN对应的三层接口承担,三层业务的部署和控制也更加灵活和方便。
网络间的三层通信流程如下:
图4-12 集中式VXLAN IP网关通信流程图
序号 | 描述 |
1 | 虚拟机(10.1.1.11)跨网段进行三层通信时,首先广播ARP请求 报文,用来获取VXLAN IP网关(10.1.1.1)的MAC地址 |
2 | VTEP1收到ARP请求消息后,添加VXLAN封装并发送给所有的远端VTEP节点。 |
3 | VTEP 3解封装VXLNA报文后,发现ARP请求的目的IP为VXLAN对应的本地网关IP地址,则学习10.1.1.11的ARP信息,并向虚拟机回应ARP应答消息。 |
4 | VTEP1收到ARP应答消息后,将该消息转发给虚拟机。 |
5 | 虚拟机获取到网关的MAC地址后,为三层报文添加网关的MAC地址,通过VXLAN网络将数据帧发送给VTEP 3。 |
6 | VTEP 3解封装VXLAN报文,并去掉联络处头,对内层封装的IP报文进行三层转发,将其发送给最终的目的节点。 |
7 | 目的节点回复的报文到达网关后,网关根据已经学习到的ARP表项,为报文封装链路层头并通过VXLAN网络将其发送给虚拟机。 |
属于不同VXLAN网络的虚拟机之间的通信过程与上述过程类似,不同之处在于一个VXLAN网络的集中式网关需要将报文转发给另一个VXLAN集中式网关,再由该集中式网关将报文转发给本地VXLAN内对应的虚拟机。 |
5.4.3分布式VXLAN IP网关
图4-13 集中式与分布式VXLANIP网关对比图
在不同子网互通(集中式网关)中,同一Leaf(Leaf1)下挂的不同网段VM(VM1和VM2)之间的通信,都需要在Spine上进行绕行,这样就导致Leaf与Spine之间的链路上,存在冗余的报文,额外占用了大量的带宽。同时,Spine作为VXLAN三层网关时,所有通过三层转发的终端租户的表项都需要在该设备上生成。但是,Spine的表项规格有限,当终端租户的数量越来越多时,容易成为网络瓶颈。
分布式网关的出现,很好的解决了这两个问题。
(1)同Leaf节点下不同部门VM之间的通信
Leaf1作为VXLAN网络的VTEP,在Leaf1上部署VXLAN三层网关,即可实现同Leaf下不同部门VM之间的相互通信。此时,VM1和VM2互访时,流量只需要在Leaf1节点进行转发,不再需要经过Spine节点,从而节约了大量的带宽资源。
(2)跨Leaf节点不同部门VM之间的通信
Leaf1和Leaf2作为VXLAN网络的VTEP,在Leaf1和Leaf2上部署VXLAN三层网关。两个VXLAN三层网关之间建立VXLAN隧道,从而实现跨Leaf节点不同部门VM之间的相互通信。
分布式VXLAN IP网络中,所有的分布式VXLANIP网关(GW)上都需要创建三层子接口,并在子接口上配置相同的IP地址,作为VXLAN内虚拟机的网关IP地址。在分布式VXLAN IP网关上还需要是时能ARP本地代理功能。边界网关上也需要创建虚接口的,并配置IP地址。
图4.14 分布式VXLAN IP网关流量转发流程图
5.4.3.1相同VXLAN内不同站点的虚拟机通信过程
以上图4-14所示,VM 1访问VM 4为例,说明相同VXLAN内不同站点的虚拟机通信过程(VM1的三层网关接口为VXLAN 10子接口,VM 4的网关接口为GW2上的VXLAN10子接口):
序号 | 描述 |
1 | VM 1发送ARP请求消息,获取VM 4的MAC地址。 |
2 | GW 1接收到ARP请求后,学习VM 1的ARP信息,并代理应答ARP请求,向VM1发送ARP应答,应答的MAC地址为虚接口的10的MAC地址。 |
3 | VM 1学习到VM 4的MAC地址为GW 1的VXLAN10虚接口的MAC地址。 |
4 | GW 1将接收到的ARP请求消息中的源MAC地址修改为VXLAN 10的虚接口的MAC地址,对消息进行VXLAN封装后,将其发送给VXLAN内所有的远端VTEP。 |
5 | GW 2对VXLAN消息进行解封装后,学习VM 1的ARP消息(IP为10.1.1.11 MAC地址为GW 1上VXLAN 10虚接口的MAC地址, 出接口为其对应的Tunnel接口),并经ARP请求消息中的源MAC地址修改本地VXLAN 10子接口的MAC地址,在VXLAN 10的本地站点内进行广播。 |
6 | VM 2收到ARP请求后,学习VM 1的ARP信息(IP为10.1.1.11 MAC地址为GW2上的VXLAN 10子接口的MAC地址),并发送ARP应答消息给GW 2。 |
7 | GW 2从VM 4接收到ARP应答消息后,学习VM 4的ARP信息,将ARP应答消息总的源MAC地址修改本地VXLAN 10的子接口的MAC地址,并根据学习到ARP表项,为ARP应答消息封装VXLAN头后发送给GW 1。 |
8 | GW 1对VXLAN报文进行解封装后,根据接收到的ARP应答消息学习VM 4的ARP信息(IP为10.1.1.12 MAC地址为GW 2上VXLAN 10子接口的MAC地址,出接口为其对应的Tunnel子接口)。 |
9 | 通过上述步骤完成ARP信息的学习,VM 1发送给VM 4的报文,根据ARP表项,首先发送给GW 1,GW 1对其进行VXLAN封装后发给GW 2;GW 2对其解封装,并将其发送给VM 4。 |
5.4.3.2不同VXLAN间不同站点的虚拟机通讯过程
5.4.3.3虚拟机与外部网络三层通信
虚拟机想要为外部网络进行三层通信,需要在接入虚拟机的本地分布式VXLAN IP 网关上指定流量的下一跳为Border,可以通过静态路由或者策略路由来实现。
(1)在本地分布式VXLANIP网关上配置静态路由,指定路由的下一跳为Border上同一个VXLAN对应的虚接口的IP地址;
(2)在本地分布式VXLANIP网关上配置策略路由,指定下一跳为Border上同一个VXLAN对应的虚接口的IP地址;
序号 | 描述 |
1 | VM 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。 |
2 | GW 1收到ARP请求消息后,学习VM 1的ARP信息,并向VM 1发送ARP应答,应答的MAC地址为VXLAN 10的虚接口MAC地址。 |
3 | VM 1将访问外部网络的报文发送给GW 1。 |
4 | GW 1收到报文后,根据路由判断报文的下一跳为10.1.1.2,GW 1在VXLAN 10内向本地站点和远端站点发送广播ARP请求消息,获取10.1.1.2的MAC地址。 |
5 | Border对VXLAN报文进行解封装,学习GW 1的ARP信息,并通过VXLAN隧道回复ARP应答消息。 |
6 | GW 1对VXLAN报文进行解封装,并获取到10.1.1.12的ARP信息。 |
7 | GW 1根据获取到的信息为VM 1发送的报文封装链路层地址(10.1.1.12对应的MAC地址,并通过VXLAN隧道将报文发送给Border)。 |
8 | Border对接收到的报文进行解封装后,对报文进行三层转发。 |
总结
VXLAN技术将已有的三层物理网络作为underlay网络,在其上构建出虚拟的二层网络,即overlay网络,overlay网络通过封装技术,利用underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。
原文:https://blog.csdn.net/u013743253/article/details/80504551
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...