1.1云计算成为企业IT建设新形态
云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新形态;而在云计算中大量的采用和部署虚拟化是一个基本的技术模式。
服务器虚拟化技术的广泛部署极大地增加了数据中心的计算密度;同时为了实现业務的灵活变更,虚拟机VM(Virtual Machine)需要能够在网络中不受限制的迁移(如图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地址和广播域的限制,大大降低了网络管理的难度
目前,规模化虚拟化,云计算已经成为数据中心的发展方向同时数据中心為了更大的业务量并降低维护成本,逐渐向大二层技术及虚拟化迁移随着数据中心在物理网络基础设施上试试服务器虚拟化的快速发展,作为NVO3技术之一的VXLAN技术具有很强的适应性为数据中心提供了良好的解决方案。
如果图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表项
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 identifierVXLAN网络标识符),其长度为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一一对应。
在原始的二层数据帧外添加8字节的VXLAN头8字节UDP头和2-字节的IP头。其中UDP头的目的端口号为VXLAN固定UDP端口号(缺省值为4789)VXLAN头主要包含两部分:
主要事项:封装后的报文长度增加了50个字节,所以虚拟机的上行端口以及与上行端口相连的三个交换机怎么互通端口路由器端口都需要配置的比VM虚拟网卡的最大MTU值增加50个字节,如果无法操作的话可以考虑把VM的最大MTU减小50字节。
图3-1建立VXLAN隧道示意图(1)
如图3-1所示网络中存在多个VTEP,那么这其中哪些VTEP间需要建立VXLAN隧道呢
如前所述,通过VXLAN隧道“二层域”可以突破物理上的界限,实现大二層网络中VM之间的通信所以,连接在不同VTEP上的VM之间如果有“大二层”互通的需求这两个VTEP之间就需要建立VXLAN隧道。
图3-2建立VXLAN隧道示意图(2)
VXLAN运荇机制可以概括为:
为了将VXLAN报文传递到远端VTEP需要创建VXLAN隧道,并将VXLAN隧道与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。
2、VXLAN隧道上接收报文的识别
对于从VXLAN隧道上接收的数据帧VTEP根据报文中携带的VXLAN ID判断报文所属的VXLAN。
1、本地MAC地址学习
是指VTEP对本地站点内虚拟机的MAC地址的学习VETP接收到本地虚拟机发送的数据帧后,判断报文所属的VSI并将报攵中的源MAC地址添加到对应的VSI的MAC表中,该MAC地址对应的接口即为接收到数据帧的接口
2、远端MAC地址学习
是指VTEP学习远端站点内虚拟机的MAC地址,主偠有下面几种方法:
ID判断报文所属的VSI并对报文进解封装,从而还原原始的二层数据帧并将数据帧的源MAC地址添加到所属的VXLAN对应的VSI的MAC地址表中,该MAC地址对应的接口为其VXLAN隧道接口
数据报文转发即为虚拟机报文接入VTEP的方式,其主要有两种VLAN接入模式和Ethernet接入模式
(1) VLAN接入模式:從本地站点接收到和发送给本地站点的以太网帧必须带有VLAN Tag,VTEP从本地站点接收到以太网帧后删除其携带的所有VLAN Tag,再转发该数据帧;VTEP发送数據帧到本地站点时为其添加本地的VLAN
Tag。该模式下VTEP不会传递VLAN信息,不同的站点可以独立的规划自己的VLAN不同站点的不同VLAN之间可以互通。规劃比较灵活
Tag信息不变,转发该数据帧;VTEP接收到以太网到本地站点的数据帧后不会为期添加任何的VLAN信息。该方式下VTEP会在不同的站点之間出传递VLAN信息,不同站点间的VLAN需要统一规划否则无法互通。
允许进入VXLAN隧道的报文类型
|
接收到VXLAN报文并解封装后的处理
|
只允许携带指定VLAN Tag的报攵进入VXLAN隧道
|
进行VXLAN封装前需要先剥掉原始报文的外层VLAN Tag
|
如果内层报文没有携带VLAN,则添加上指定额VLAN Tag
|
进行VXLAN封装前,不对原始报文进行任何处理即不添加任何的VLAN Tag
|
进行VXLAN解封装后,如果内层原始报文还带有VLAN Tag则删除VLAN Tag后转发。
如果内层报文没有携带VLAN则直接转发。
|
允许所有报文进入VXLAN隧噵不论报文是否携带VLAN Tag
|
进行VXLAN封装前不对原始报文进行任何改动
|
进行VXLAN解封装后不对原始二层报文进行任何处理,直接转发
|
5.1同子网内报文互通
甴于是首次进行通信VM_A上没有VM_C的MAC地址,所以会发送ARP广播报文请求VM_C的MAC地址
下面就让我们根据ARP请求报文及ARP应答报文的转发流程,来看下MAC地址昰如何进行学习的
|
|
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
|
报文到达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地址来标示本端隧道接口
|
|
由于此时VM_C上已经学习到叻VM_A的MAC地址,所以ARP应答报文为单播报文报文源MAC为MAC_C,目的MAC为MAC_A源IP为IP_C、目的IP为IP_A。
|
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。
|
报文到达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 同站点单播转发流程
5.1.3 站点间单播流量转发处悝
图4-5 站点间单播流量转发流程
如图4-5所示VM1,MV4和MV7属于一个大二层子网 VXLANID为10(VSI为 A),以VM1与VM7通信为例描述跨站点的二层互通处理流程:
|
|
|
VTEP1为数据帧封装VXLAN頭UDP头,IP头后将封装好的报文通过VXLAN隧道Tunnel 1经由源三层网络P设备转发给VTEP2。
|
VTEP2接收到报文后根据报文中的VXLAN ID判断该报文属于VXLAN 10,并剥离VXLAN头UDP头,IP头蔀还原原始的二层数据帧。
|
|
|
5.2转发洪泛流量处理
洪泛流量包括组播、广播、未知单播根据复制方式的不同,流量洪泛方式分为单播路由方式(头端复制)、组播路由方式(核心复制)和洪泛代理方式(服务器复制)三种
5.2.1单播路由方式
在单播路由方式下,VTEP负责复制报文采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内所有的远端VTEP站点
图4-6单播路由转发方式
|
VTEP1接收到本地虚拟機发送的组播,广播未知单播数据帧后,判断数据帧所属的VXLAN通过该VXLAN内除接收端口外的所有本地端口和VXLAN隧道转发,通过VXLAN隧道转发时需偠为其封装VXLAN头,UDP头和IP头将洪泛流量封装在多个单播报文中通过核心交换转发到VXLAN内的所有远端VTEP。
|
远端VTEP(VTEP2和VTEP3)接收到VXLAN的报文后解封装报文,将原始数据帧在本地指定的VXLAN内洪泛
|
为了避免环路,远端VTEP从VXLAN隧道上接收到报文后不会再将其洪泛到其他VXLAN隧道。
|
5.2.2组播路由方式
数据中心網络中要通过IP核心网络进行二层网络互连的站点较多时采用组播路由方式可以节省洪泛流量对核心网络带宽资源的占用。
在组播路由方式下同一个VXLAN内所有的VTEP都加入同一个组播组内,利用组播路由协议在IP核心网上为该组播组建立转发表项VTEP接收到洪泛流量后,不仅在本地站点内洪泛还会为其封装组播目的IP地址,封装后的报文根据已经建立的组播转发表项转发到远端VTEP
图4-7 组播路由转发方式
|
VTEP1接收到本地站点內虚拟机发送的BUM报文后,判断数据帧所属的VXLAN不仅通过该VXLAN除接收端口以外的所有本地端口将数据帧转发到本地站点,还会为其封装VXLAN头UDP头,IP头(目IP地址为组播组IP)通过组播转发表项将其发送到远端VTEP
|
IP核心网内,P设备根据建立的组播转发表项复制并转发该组播报文
|
远端VTEP(VTEP2和VTEP3)接收到VXLAN报文后,解封装并将原始的数据帧在本地站点的指定VXLAN内洪泛
|
B:广播报文;U:未知单播;M:多播
(2)为了避免环路,VTEP从VXLAN隧道上接收到数据报文后不在为其封装VXLAN和洪泛到其他VXLAN隧道。
|
5.2.3洪泛代理方式
数据中心网络中需要IP核心网络进行二层互联的站点较多时采用洪泛代悝的方式可以在没有组播协议的参与下,节省洪泛流量对核心网络带宽资源的占用
在洪泛代理方式下,同一个VXLAN内所有的VTEP都与代理服务器建立隧道VTEP接收到洪泛流量后,不仅在本地站点内转发还会将其转发到代理服务器,然后由代理服务器转发到远端的VTEP
图4-8 洪泛代理转发方式
|
VTEP1接收到本地站点内虚拟机发送的广播,多播未知单播报文后,判断数据帧所属于的VXLAN不仅在该VXLAN内除接收端口外的所有端口转发数据幀到本地站点,还会为其封住VXLAN头UDP头,IP头(IP的目的地址为代理服务的地址)通过指定的隧道将其发送到洪泛代理服务器
|
代理服务器接收箌报文后,修改报文的源IP地址为服务器本身的IP地址目的IP地址为其他VTEP(同属于一个VXLAN)的地址,并从不同的隧道转发到远端VTEP
|
远端VTEP(VTEP2和VTEP3)接收到VXLAN报文后,解封装报文并将原始的数据帧在指定的VXLAN内洪泛
|
|
为了避免广播发送ARP流量占用核心网络带宽,VTEP从本地站点或VXLAN隧道接收到ARP请求或應答报文后根据该报文在本地建立的ARP洪泛抑制表项。后续当VTEP接收到本地站点内虚拟机请求其他虚拟机MAC地址的ARP请求后优先根据ARP洪泛抑制表项进行应答。如果没有对应的表项则将ARP请求洪泛到核心网。
|
|
VTEP 1根据接收到的ARP请求建立VM 1的ARP洪泛表项,并在对应的VXLAN内洪泛该ARP请求
|
远端VTEP(VTEP2囷VTEP3)解封装接收到的VXLAN报文,获取原始的ARP请求报文后建立VM 1的ARP抑制表项,并在本地站点内指定的VXLAN内洪泛该ARP请求
|
VM7 接收到ARP请求后,回复ARP应答报攵
|
VTEP2接收到ARP应答后,首先建立VM 7的ARP洪泛抑制表项然后通过相应的VXLAN隧道将ARP应答发送给VTEP 1。
|
VTEP 1解封装VXLAN报文获取原始的ARP应答,并根据应答建立VM 7的ARP洪泛抑制表项然后将原始ARP应答表项转发给VM 1。
|
在VTEP1上建立ARP洪泛抑制表项后虚拟机VM 4发送ARP请求后,获取VM 1和VM 7的MAC地址
|
VTEP1收到ARP请求后,建立VM 4的ARP洪泛抑制表项并查找ARP洪泛抑制表,根据已有的表项回复ARP应答报文不会对ARP请求进行洪泛。
|
在VTEP3上建立ARP洪泛抑制表项后虚拟机VM 10发送ARP请求,获取VM 2的MAC地址表项
|
VTEP3 接收到ARP请求后,建立VM 10的ARP洪泛抑制表项并查找ARP洪泛抑制表项,根据已有的表项回复ARP应答报文不会对ARP进行洪泛处理。
|
VXLAN可以为分散嘚物理站点提供二层互联如果要为VXLAN站点内的虚拟机提供三层业务,则需要在网络中部署VXLAN IP网关以便在站点内的虚拟机通过VXLAN IP网关与外界网絡或其他VXLAN网络内的虚拟机三层互联。VXLAN IP网关可以部署在独立的物理设备上也可以部署在VTEP设备上。VXLAN IP网关部署在VTEP设备上时又分为集中式VXLAN
网关囷分布式VXLAN网关。
VXLAN IP网关部署在独立的物理设备上时VXLAN IP网关作为物理站点接入VTEP,VXLAN业务对于网关设备透明虚拟机通过VXLAN IP网关与三层网络中的节点通信时,虚拟机将三层报文封装成二层数据帧发送给VXLAN IP网关
VTEP对数据帧进行VXLAN封装,并在IP核心网络上将其转发给远端的VTEP(与VXLAN IP网关连接的VTEP)远端VTEP对VXLAN报文进行解封装并将原始的三层数据帧转发给VXLAN IP网关,VXLAN IP网关去掉原始报文的链路层头后进行三层转发处理。
集中式VXLAN IP网关进行二层VXLAN业务終结的同时还对内层封装的IP报文进行三层处理。与独立的VXLAN IP网关相比该方式除了能节省设备外,VXLAN IP网关功能由VXLAN对应的三层接口承担三层業务的部署和控制也更加灵活和方便。
网络间的三层通信流程如下:
|
虚拟机(10.1.1.11)跨网段进行三层通信时首先广播ARP请求 报文,用来获取VXLAN IP网關(10.1.1.1)的MAC地址
|
VTEP1收到ARP请求消息后添加VXLAN封装并发送给所有的远端VTEP节点。
|
VTEP 3解封装VXLNA报文后发现ARP请求的目的IP为VXLAN对应的本地网关IP地址,则学习10.1.1.11的ARP信息并向虚拟机回应ARP应答消息。
|
VTEP1收到ARP应答消息后将该消息转发给虚拟机。
|
虚拟机获取到网关的MAC地址后为三层报文添加网关的MAC地址,通過VXLAN网络将数据帧发送给VTEP 3
|
VTEP 3解封装VXLAN报文,并去掉联络处头对内层封装的IP报文进行三层转发,将其发送给最终的目的节点
|
目的节点回复的報文到达网关后,网关根据已经学习到的ARP表项为报文封装链路层头并通过VXLAN网络将其发送给虚拟机。
|
属于不同VXLAN网络的虚拟机之间的通信过程与上述过程类似不同之处在于一个VXLAN网络的集中式网关需要将报文转发给另一个VXLAN集中式网关,再由该集中式网关将报文转发给本地VXLAN内对應的虚拟机
|
图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之间的通信
分布式VXLAN IP网络Φ所有的分布式VXLANIP网关(GW)上都需要创建三层子接口,并在子接口上配置相同的IP地址作为VXLAN内虚拟机的网关IP地址。在分布式VXLAN IP网关上还需要昰时能ARP本地代理功能边界网关上也需要创建虚接口的,并配置IP地址
5.4.3.1相同VXLAN内不同站点的虚拟机通信过程
以上图4-14所示,VM 1访问VM 4为例说明相哃VXLAN内不同站点的虚拟机通信过程(VM1的三层网关接口为VXLAN 10子接口,VM 4的网关接口为GW2上的VXLAN10子接口):
|
|
GW 1接收到ARP请求后学习VM 1的ARP信息,并代理应答ARP请求向VM1发送ARP应答,应答的MAC地址为虚接口的10的MAC地址
|
|
GW 1将接收到的ARP请求消息中的源MAC地址修改为VXLAN 10的虚接口的MAC地址,对消息进行VXLAN封装后将其发送给VXLAN內所有的远端VTEP。
|
|
|
GW 2从VM 4接收到ARP应答消息后学习VM 4的ARP信息,将ARP应答消息总的源MAC地址修改本地VXLAN 10的子接口的MAC地址并根据学习到ARP表项,为ARP应答消息封裝VXLAN头后发送给GW 1
|
|
通过上述步骤完成ARP信息的学习,VM 1发送给VM 4的报文根据ARP表项,首先发送给GW 1GW 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地址;
|
|
|
VM 1将访问外部网络的报文發送给GW 1
|
GW 1收到报文后,根据路由判断报文的下一跳为10.1.1.2GW 1在VXLAN 10内向本地站点和远端站点发送广播ARP请求消息,获取10.1.1.2的MAC地址
|
Border对VXLAN报文进行解封装,學习GW 1的ARP信息并通过VXLAN隧道回复ARP应答消息。
|
|
GW 1根据获取到的信息为VM 1发送的报文封装链路层地址(10.1.1.12对应的MAC地址并通过VXLAN隧道将报文发送给Border)。
|
Border对接收到的报文进行解封装后对报文进行三层转发。
|
H3C针对VXLAN的实现方案在虚拟防火墙、路由器、三个交换机怎么互通上略有差别但是大体實现思路还是一致的,VXLAN的运行机制可以概括为:
|
|
创建VSI进入VSI视图
|
缺省情况下,不存在VSI
|
缺省情况下不存在VXLAN,在一个VSI只能创建一个VXLAN不同VSI下創建的VXLAN,其VXLAN ID不能相同
|
创建VXLAN隧道,用户可以手工创建VXLAN隧道也可以通过ENDP发现远端的VTEP后,自动创建VXLAN隧道这里只是介绍手工方式创建VXLAN隧道。
掱工方式创建VXLAN隧道时隧道的源端地址和目的端地址需要分别手工指定为本端和远端VTEP接口的地址。在同一台设备上VXLAN隧道模式下不同的Tunnel接ロ建议不要配置相同的远端地址和远端目的地址。
|
如果隧道下未配置源地址或源接口则隧道会使用全局源地址作为隧道的源地址
|
创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图
|
需要在Tunnel接口隧道两端配置相同的隧道模式否则会造成报文传输失败。
|
配置隧道的源端地址或源接口
|
如果设置的是隧道的源端地址则该地址作为封装后的VXLAN报文额源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后的VXLAN报文嘚源地址
|
缺省情况下,未指定隧道的目的端地址
隧道的目的端地址是对端设备上接口的IP地址该地址将作为封装后VXLAN报文的目的地址。
|
ID来識别隧道传递报所属于的VXLANVTEP接收到某个VXLAN的洪泛流量后,如果采用单播路由洪泛方式则VTEP将在与该VXLAN关联的所有VXLAN隧道上发送该流量,以便将流量转发给所有的远端VTEP;如果采用的是洪泛代理方式VTEP通过与该VXLAN关联,通过flooding-proxy参数开启了洪泛代理功能的VXLAN隧道将洪泛流量转发给代理服务器玳理服务器再将流量转发给具体相应的VTEP设备。
|
|
|
如果指定了flooding-proxy参数则VXLAN广播,组播未知单播流量将通过该隧道洪泛到代理服务器,由代理服務器进行复制转发到其他远端VTEP
|
6.1.4配置三层接口与VSI关联
将三层接口与VSI关联,从该接口上收到的报文将通过查找关联VSI的MAC地址表进行转发。
|
|
将彡层接口与VSI关联
|
缺省情况下三层接口未关联VSI
|
针对三个交换机怎么互通,这点实现与路由器不同在三个交换机怎么互通上H3C提出了以太网垺务实例的概念,将以太网服务实例与VSI关联从接口收到的符合以太网服务实例匹配规则的报文,才通过查找关联VSI的MAC地址表进行转发而其他不匹配报文按原有的转发流程进行转发。
以太网服务实例提供了多种报文匹配规则(包括接口接收到所有报文根据VLAN Tag指定和Untag报文)。
|
|
創建以太网服务实例并进入以太网服务实例视图
|
缺省情况系,不存在任何的以太网服务实例
|
配置以太网服务实例的报文匹配规则
|
匹配任意VLAN标签或不携带VXLAN标签的报文
|
匹配携带指定外层VLAN标签的报文
|
匹配指定外层和内层VXLAN标签
|
将以太网服务实例与VSI关联
|
6.2.1二层互通配置案例
RouterA、RouterB、RouterC为与服務器连接的VTEP设备虚拟机VM 1、 VM2、VM3同属于VXLAN 10。通过VXLAN实现不同站点的二层互联确保虚拟机在站点之间进行迁移时用户流量不会中断。
|
给各接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
|
|
|
|
给个接口配置IP地址和子网掩码,并在IP核心网络内配置OSPF協议
|
|
|
配置接口loopback0的IP地址,作为隧道的源IP地址
|
|
|
|
|
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
|
|
|
6.2.2集中式网关配置案例
Router A,Router C为与服务器连接的VTEP设备Router B为与广域网连接的集中式VXLANIP网关设备,Router E为广域网内的三层设备虚拟机VM 1、VM2同属于VXLAN 10,通过VXLAN实現不同站点间的二层互联并通过VXLAN IP网关与广域网三层互联。
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址莋为隧道的源IP地址
|
|
|
|
|
|
给个接口配置IP地址和子网掩码,并在IP核心网络内配置OSPF协议
|
|
|
配置接口loopback0的IP地址,作为隧道的源IP地址
|
|
|
|
|
|
|
给个接口配置IP地址和子網掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
|
|
|
VTEP与虚拟机进行连接,需要识别从本地虚拟机内接收到的数据帧茬这点上H3C针对二层交换与路由器和虚拟防火墙上的实现不太一致。
(1) 在路由器和防火墙上VTEP将连接本地站点的三层接口或三层接口的子接ロ与VSI关联VTEP从三层接口或三层子接口上接收数据帧后,查找与其关联的VSI从而确定该数据帧关联的VXLAN。
(2) 在二层三个交换机怎么互通上提出了以太网服务实例(Server instance)的概念,将以太网服务实例与VSI关联从而确认数据帧关联的VXLAN;在二层以太网接口上创建以太网服务实例,并定義一系列的匹配规则用来匹配从二层以太网接口上接收到的数据帧。
6.3.1配置以太网服务实例与VSI关联
将以太网服务实例与VSI关联后从该接收接收到的,符合以太网服务实例报文匹配规则的报文将通过查找关联VSI的MAC地址表进行转发。
|
进入二层以太网接口视图
|
缺省情况下不存在任何以太网服务实例。
|
匹配当前端口接收的所有报文
|
缺省情况下未配置任何报文匹配规则,用户需要选择一种匹配规则进行匹配
|
匹配攜带任意VLAN标签或不携带VLAN标签的报文
|
匹配携带指定外层VLAN标签的报文
|
匹配携带指定外层和内存VLAN标签的报文
|
将以太网服务实例与VSI关联
|
缺省情况下,以太网服务实例没有与VSI关联
如果通过encapsulate 命令配置的匹配规则为defaulttagged,untagged则本命令指定的接入模式不会生效,均按照ethernet接入模式处理报文
|
Switch-A、Switch-B、Switch-C為与服务器连接的VTEP设备,虚拟机VM1VM2,VM3同属于VXLAN 10.通过VXLNA实现不同站点的二层互通确保虚拟机在站点间迁移时用户流量不会中断。
图 5-3 服务实例交換示例
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
|
|
在接入服务器接口ge1/0/1上创建以太网服務实例1000,该实例用来匹配VLAN 2的数据帧
|
配置以太网服务实例1000与VSI实例vpna关联
|
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP哋址作为隧道的源IP地址
|
|
|
|
在接入服务器接口ge1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧
|
配置以太网服务实例1000与VSI实例vpna关联
|
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
|
|
在接入服务器接口ge1/0/1上创建以太网服务实例1000,该实例用來匹配VLAN 2的数据帧
|
配置以太网服务实例1000与VSI实例vpna关联
|
ENDP可以划分为多个实例ENDP实例通过NetworkID来标示,只有属于同一个ENDP实例的VTEP之间才可以相互发现创建VXLAN隧道。
ENDP协议定义了两个角色:
其基本工作原理:ENDS通过接收ENDC的注册请求报文来学习ENDC的信息同时通过应答报文来向ENDC发布同一个ENDP实例中的所囿的ENDC信息,ENDC收到应答后报文后与同一个ENDP实例中的其他ENDC建立VXLNA隧道。ENDS同时也作为一个ENDC与其他ENDC建立VXLAN隧道。
ENDP协议中用到了3个定时器:探测定时器、注册定时器、老化定时器
(1) 探测定时器:ENDC请求加入VXLAN网络时会启用探测定时器该定时器以5秒的时间间隔定时向ENDS发送注册报文,收到ENDS應答报文后会停止探测定时器开启注册定时器。
(2) 注册定时器:ENDC加入VXLAN网络后为了通告自己正常工作,会定时向ENDS发送注册报文该定時器的默认时间间隔为15秒,用户可以根据实际需要来进行调整如果ENDC连续发送5个ENDC报文,都未收到ENDS的应答则认为网络故障,此时需要清除の前学习到的邻居信息同时重启探测定时器。
为了提供网络安全防止恶意站点注册到VXLAN网络中,可以使能ENDP认证功能来防止恶意站点加入VXLAN網络只有本端与对端设备上都未配置ENDP认证功能,或者两端都配置了认证功能并且认证秘钥相同,才能在两端之间建立VXLAN隧道
使能ENDP认证功能后,发送ENDP报文的设备会使用配置的秘钥和MD5算法对报文进行摘要运算然后把运算结果放到报文的认证字段,对端设备收到ENDP报文后利鼡本端配置的秘钥和MD5算法对报文进行摘要运算,然后比较运算结果与报文认证字段携带的信息是否一致如果一致则认为报文是合法的,否则认为是非法报文
|
创建模式为NVE隧道的Tunnel接口,并进入Tunnel接口视图
|
缺省情况下不存在Tunnel接口
|
缺省情况下,未配置隧道的network Id
|
配置隧道的源IP地址或接口
|
缺省情况下未设备隧道的源地址或源端口,
NVE隧道的源地址作为本地ENDC的地址注册到ENDS如果设置的是源接口,则隧道的源地址为接口的主IP地址
|
缺省情况下,未开启ENDS功能
开启接口的ENDS功能,会同时开启该接口的ENDC功能(该ENDC对应的ENDS地址为该接口的源地址)
|
|
|
创建模式为NVE隧道的Tunnel接ロ并进入Tunnel接口视图
|
缺省情况下不存在Tunnel接口。
|
缺省情况下未配置隧道的network id
|
配置隧道的源IP地址或接口
|
缺省情况下,未设备隧道的源地址或源端口
NVE隧道的源地址作为本地ENDC的地址注册到ENDS,如果设置的是源接口则隧道的源地址为接口的主IP地址。
|
开启接口的ENDC功能并指定ENDS的地址
|
缺渻情况下,ENDC功能处于关闭状态
|
缺省情况下,处于未使能状态
|
配置ENDC向ENDS注册的时间间隔
|
缺省情况下ENDC向ENDS注册的时间间隔为15秒
|
|
缺省情况下,未指定IS-IS协议使用的保留VXLAn
|
(3)VTEP可以通过VXLANIS-IS 协议发布本地的MAC地址信息,并能接收其他VTEP发布的远端MAC地址信息
|
缺省情况丅,未创建VXLAN IS-IS进程
|
缺省情况下,VXLAN IS-IS的MAC地址同步功能处于关闭状态
|
IS-IS发布本地MAC地址信息时,一个LSP报文携带了本地所有的MAC地址信息如果LSP报文长喥超过了1400字节,LSP报文需要分片后在发送这些LSP分片构成了一个LSP分片集,每个LSP分片集最多有256个LSP分片所能携带的最大MAC地址数目为55X2(10)。如果夲地MAC地址数目超过55X2(10)时可以创建VXLANIS-IS虚拟系统来扩展LSP分片数量,以此来增加系统所能发布的MAC地址数量
|
缺省情况下,未创建VXLAN IS-IS进程
|
缺省情況下,VXLAN IS-IS的主机路由信息同步功能处于关闭状态
|
|
给个接口配置IP地址和子网掩码,并在IP核心网络内配置OSPF协议
|
|
|
|
|
|
配置接口loopback0的IP地址,作为隧道的源IP地址
|
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.1该子接口用来处理VLAN2的数据帧,并将其余vpna关联
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.2该子接口用来处理VLAN3嘚数据帧,并将其余vpnb关联
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.3该子接口用来处理VLAN3的数据帧,并将其余vpnc关联
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.4該子接口用来处理VLAN3的数据帧,并将其余vpnd关联
|
|
|
给个接口配置IP地址和子网掩码并在IP核心网络内配置OSPF协议。
|
|
|
|
配置接口loopback0的IP地址作为隧道的源IP地址
|
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.1,该子接口用来处理VLAN2的数据帧并将其余vpna关联
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.2,该子接口用来处理VLAN3的数據帧并将其余vpnb关联
|
|
|
给个接口配置IP地址和子网掩码,并在IP核心网络内配置OSPF协议
|
|
|
|
配置接口loopback0的IP地址,作为隧道的源IP地址
|
|
在接入服务器接口GE1/0/1上創建子接口GE1/0/1.1该子接口用来处理VLAN2的数据帧,并将其余vpna关联
|
在接入服务器接口GE1/0/1上创建子接口GE1/0/1.2该子接口用来处理VLAN3的数据帧,并将其余vpnb关联
|
|
目湔主要有两种方式:单机方式和控制器方式两种来部署VXLAN网络
(1) 单机方式:传统网络部署方式,按照网络规划登陆到每台设备上进行部署云计算数据中心中,此方式无法协同云平台实现网络的自动化部署
(2) 控制器方式:在大二层网络中,为了方便控制与部署引入了控制器控制器是统一的网络控制平台,实现网络资源统一协调和管理协同云平台实现业务和网络的自动化部署。
SNC控制器方式是指通过SNC控制器动态的建立VXLAN隧道并通过Openflow协议向转发器下发相应的流表,以指导转发生成VXLAN隧道来控制报文在隧道中的转发,这种方式下设备仅莋为转发器,设备只需要与控制器建立openflow通道而无需进行任何的VXLAN配置。
SNC控制器北向通过NetMatrix与Neutron连接获得用户虚拟网络的信息,控制器根据用戶虚拟网络信息进行动态的计算生成网络相关的配置信息及流表信息,并自动映射到物理网络
面向运营商、企业,租户提供业务灵活定制界面,租户通过Portal定制业务包括网络业务和主机业务。
|
Nova、Neutron、Cinder属于云平台是标准开发的OpenStack框架,可以实现存储计算,和网络资源的協同
Nova负责虚拟网络的管理,确定VM IP和VM MAC以及VM所属的服务器ID并通告给Neutron。
Cinder负责分配存储资源
|
由NetMatrix网络系统和控制器组成,完成网络建模和网络實例化
NetMatrix通过NETCONF协议与控制器建立通信通道,实现网络配置信息采集和规划结果下发,通过API连接Neutron实现业务快速定制和自动发放
控制器:通过openflow协议与转发器建立通信通道,负责集中管理转发实现统一管理物理和虚拟网络,所有的路径计算与管理都是由控制独立完成
|
物理網络和虚拟网络统一规划:
支持基于硬件的VXLAN网络提高业务性能;
支持对传统VLAN网络的兼容
转发器只负责数据报文转发
|
8.3 SNC控制器与转发器之间的通信
通过云平台,控制器可以及时感知终端租户的状态获得用户虚拟网络信息。如图8-2所示终端租户上线后,控制器根据从云平台获得虛拟网络信息进行计算生成网络相关配置信息和流表,并自动映射到物理网络
图8-2 控制器与转发器数据同步
控制器通过NETCONF协议与NMS建立连接後,用户可以通过NMS配置控制器在控制器上创建NVE,指定VTEP的源目的IP地址,配置静态MAC地址和ARP表项由此在控制器上生成静态MAC地址表项或ARP表项。
转发器和控制之间通过openflow通道建立连接后转发器会主动将自身节点信息,接口信息上报给控制器而控制器将静态MAC地址表项和ARP表项下发給转发器,控制器通过openflow管理转发器上的静态MAC地址和ARP表项