VXLAN基本原理与配置示例

一  VXLAN的原理

     VXLAN(Virtual eXtensible LAN 可扩展虚拟局域网络)是一种网络虚拟化技术,底层基于IP网络,采用"Mac In UDP"封装形式的二层以太网交换技术。相对于VLAN,VXLAN具有以下优势:

     1) 应用灵活部署: 通过VXLAN封装后的2层以太网帧可以跨3层网络边界,让组网以及应用部署变得更加灵活,同时解决多租户网络环境中IP地址冲突问题。

     2) 更好的扩展性: 传统 VLANID字段为12-bit,VLAN数量为4096;VXLAN使用24-bit VNID (VXLAN network identifier),支持 16,000,000 逻辑网络,解决了传统二层网络VLAN资源不足的问题。

     3) 提高网络利用率: 传统以太网使用 STP预防环路, STP导致网络冗余路径处于阻塞状态, VXLAN报文基于 3层 IP报头传输,能有效利用网络路径,支持 ECMP(equal-cost multipath )和链路聚合协议。

      VXLAN的网络模型如图所示:

         VXLAN技术将已有的三层物理网络作为Underlay网络,在其上构建虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术,利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点之间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在同一局域网中。

         VXLAN的网络模型包括以下几个部分:

         1) 用户终端: 可以是PC机、无线设备、服务器上创建的VM等

         2) VTEP(VXLAN Tunel End Point): VXLAN的边缘设备,VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN,报文的封装与解封等

         3) VXLAN隧道: 两个VTEP设备之间的点到点逻辑隧道,用于传输VXLAN报文

         4) 核心设备: 底层IP网络中的设备,不参与VXLAN处理,仅根据VXLAN报文的目的地址进行三层转发

         5) VSI(Virtual Switch Instance 虚拟交换实例): VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例,可以看成是VTEP上一个基于VXLAN进行二层转发的虚拟交换机

         6) AC(Attachment Circuit 接入电路): VTEP上连接本地站点的物理电路或者虚拟电路,与VSI关联的三层接口称为AC。

 

二  VXLAN网关

      和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。

      VXLAN网关分为:

      1) 二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。

      2) 三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。

      根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关

      集中式网关是指将三层网关集中部署在一台设备上,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理,如图所示:

                                                

        集中式网关部署简单,但不同VXLAN的流量均由单一网关处理,使得其负载压力较大。在分布式网关中,每台VTEP设备均可以作为网关,缓解了网关的压力,如图所示:

                                         

         分布式网关中,Spine节点不感知VXLAN隧道,只作为报文转发的中间节点。

 

三、HCL搭建VXLAN示例

       下面在HCL环境中搭建一个VXLAN的示例,加深对以上概念的理解。

                    

        如图所示,RouterA与RouterB作为VTEP设备,同时也作为分布式网关设备。RouterC作为路由反射器,负责在集群中反射BGP路由,这里我们通过BGP路由完成RouterA与RouterB之间VXLAN隧道的建立,并使得客户端之间可以彼此互通。

        1) 在RouterA、RouterB、RouterC之间配置OSPF,使得彼此之间路由可达。注意这里我们配置RouterA的Loopback0地址为1.1.1.1作为其vtep地址,配置RouterB的Loopback0地址为2.2.2.2作为其vtep地址。

        查看RouterA的OSPF路由表:

        

 

       2) 创建三层交换实例,配置其RD和RT

       

 

       3) 创建VSI接口,并配置网关地址:

       

       这里我们在该接口中配置了2个分布式网关,并且绑定了第二步创建的三层交换实例,同时为了保证网关之间的三层互通,指定了l3-vni。

 

        4) 创建VSI实例,并且关联第三步创建的VSI接口

        

           在该VSI实例中创建VXLAN通道。

 

        5) 在RouterA的2/0/2接口上关联第四步创建的VSI实例

        

        以上完成了RouterA的配置,RouterB与RouterA的配置步骤相同。

        到目前为止,RouterA与RouterB之间的VXLAN隧道还没有建立,我们需要配置BGP路由完成VXLAN隧道的自动创建。

 

        6) 在配置BGP时,为了避免BGP对等体之间建立full-mesh连接,将RouterC作为路由反射器,RouterA与RouterB只与RouterC建立BGP连接即可

        RouterA配置如下:

        

 

        RouterB与RouterA配置相同

        RouterC配置如下:

        

        等RouterA、RouterB与RouterC之间的对等体建立好之后,查看BGP路由:

              

        其中下发了二类、三类路由;二类路由是主机IP/MAC路由、三类路由是VTEP路由

        查看VXLAN隧道,已经自动生成:

        

        验证下流量是否通,10.1.1.1 ping 20.1.1.2:

        

        可见,不同网段的主机流量已经互通,下面来抓包验证一下:

        抓取10.1.1.1设备的1/0/1口、RouterA的2/0/1口、20.1.1.2的1/0/1口:

        下图是10.1.1.1设备1/0/1口的报文,封装的ICMP报文中,src ip是10.1.1.1,dst ip 是20.1.1.2,src mac是虚机自身的mac,由于是跨网段互通,故dst mac是RouterA网关的mac

        

 

        下图是RouterA 2/0/1口的报文,可以看见,VTEP在ICMP报文外层又封装了一层VXLAN,且src ip是1.1.1.1,即RouterA的VTEP ip,dst ip是2.2.2.2,即RouterB的VTEP ip,vxlan id是1000,即VSI中指定的l3-vni

        

 

       下图是20.1.1.2设备1/0/1口的报文,可见,RouterB对VXLAN报文进行了解封,此时报文中的src mac为RouterB的网关mac,dst mac为20.1.1.2设备的mac

       

 

        通过以上的步骤,我们完成了搭建VXLAN的示例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章