01-VXLAN配置
本章节下载: 01-VXLAN配置 (1.08 MB)
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN主要应用于数据中心网络和园区接入网络。
VXLAN具有如下特点:
· 支持大量的租户:使用24位的标识符,最多可支持2的24次方(16777216)个VXLAN,使支持的租户数目大规模增加,解决了传统二层网络VLAN资源不足的问题。
· 易于维护:基于IP网络组建大二层网络,使得网络部署和维护更加容易,并且可以充分地利用现有的IP网络技术,例如利用等价路由进行负载分担等;只有IP核心网络的边缘设备需要进行VXLAN处理,网络中间设备只需根据IP头转发报文,降低了网络部署的难度和费用。
目前,设备只支持基于IPv4网络的VXLAN技术,不支持基于IPv6网络的VXLAN技术。
VXLAN技术将已有的三层物理网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在一个局域网中。
图1-1 VXLAN网络模型示意图
如图1-1所示,VXLAN的典型网络模型中包括如下几部分:
· 用户终端(Terminal):用户终端设备可以是PC机、无线终端设备、服务器上创建的VM(Virtual Machine,虚拟机)等。不同的用户终端可以属于不同的VXLAN。属于相同VXLAN的用户终端处于同一个逻辑二层网络,彼此之间二层互通;属于不同VXLAN的用户终端之间二层隔离。VXLAN通过VXLAN ID来标识,VXLAN ID又称VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度为24比特。
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):VXLAN的边缘设备。VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。VTEP可以是一台独立的物理设备,也可以是虚拟机所在的服务器。
· VXLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头和IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
· 核心设备:IP核心网络中的设备(如图1-1中的P设备)。核心设备不参与VXLAN处理,仅需要根据封装后报文的目的IP地址对报文进行三层转发。
· VSI(Virtual Switch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源MAC地址学习、MAC地址老化、泛洪等。VSI与VXLAN一一对应。
图1-2 VXLAN报文封装示意图
如图1-2所示,VXLAN报文的封装格式为:在原始二层数据帧外添加8字节VXLAN头、8字节UDP头和20字节IP头。其中,UDP头的目的端口号为VXLAN UDP端口号(缺省为4789)。VXLAN头主要包括两部分:
· 标记位:“I”位为1时,表示VXLAN头中的VXLAN ID有效;为0,表示VXLAN ID无效。其他位保留未用,设置为0。
· VXLAN ID:用来标识一个VXLAN网络,长度为24比特。
VXLAN运行机制可以概括为:
(1) 发现远端VTEP,在VTEP之间建立VXLAN隧道,并将VXLAN隧道与VXLAN关联。
(2) 识别接收到的报文所属的VXLAN,以便将报文的源MAC地址学习到VXLAN对应的VSI,并在该VSI内转发该报文。
(3) 学习用户终端的MAC地址。
(4) 根据学习到的MAC地址表项转发报文。
VTEP将连接本地站点的以太网服务实例(Service Instance)与VSI关联。VTEP从以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。
在VXLAN中,与VSI关联的以太网服务实例称为AC(Attachment Circuit,接入电路)。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。
如图1-3所示,Terminal 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到Terminal 1发送的数据帧后,可以判定该数据帧属于VXLAN 10。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
MAC地址学习分为本地MAC地址学习和远端MAC地址学习两部分。
是指VTEP对本地站点内虚拟机MAC地址的学习。VTEP接收到本地虚拟机发送的数据帧后,判断该数据帧所属的VSI,并将数据帧中的源MAC地址(本地虚拟机的MAC地址)添加到该VSI的MAC地址表中,该MAC地址对应的接口为接收到数据帧的接口。
VXLAN不支持静态配置本地MAC地址。
是指VTEP对远端站点内用户终端MAC地址的学习。远端MAC地址的学习方式有如下几种:
· 静态配置:手工指定远端MAC地址所属的VSI(VXLAN),及其对应的VXLAN隧道接口。
· 通过报文中的源MAC地址动态学习:VTEP从VXLAN隧道上接收到远端VTEP发送的VXLAN报文后,根据VXLAN ID判断报文所属的VXLAN,对报文进行解封装,还原二层数据帧,并将数据帧中的源MAC地址(远端用户终端的MAC地址)添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为VXLAN隧道接口。
静态配置的远端MAC地址表项优先级高于源MAC地址动态学习的表项。
接入模式分为以下两种:
· VLAN接入模式:从本地站点接收到的和发送给本地站点的以太网帧必须带有VLAN Tag。VTEP从本地站点接收到以太网帧后,删除该帧的所有VLAN Tag,再转发该数据帧;VTEP发送以太网帧到本地站点时,为其添加本地站点的VLAN Tag。采用该模式时,VTEP不会传递VLAN Tag信息,不同站点可以独立地规划自己的VLAN,不同站点的不同VLAN之间可以互通。
· Ethernet接入模式:从本地站点接收到的和发送给本地站点的以太网帧可以携带VLAN Tag,也可以不携带VLAN Tag。VTEP从本地站点接收到以太网帧后,保持该帧的VLAN Tag信息不变,转发该数据帧;VTEP发送以太网帧到本地站点时,不会为其添加VLAN Tag。采用该模式时,VTEP会在不同站点间传递VLAN Tag信息,不同站点的VLAN需要统一规划,否则无法互通。
缺省情况下,接入模式为VLAN模式。下文对于流量转发过程的介绍均以VLAN模式为例。
完成本地和远端MAC地址学习后,VTEP在VXLAN内转发单播流量的过程如下所述。
对于站点内流量,VTEP判断出报文所属的VSI后,根据目的MAC地址查找该VSI的MAC地址表,从相应的本地接口转发给目的用户终端。
如图1-4所示,Terminal 1(MAC地址为MAC 1)发送以太网帧到Terminal 4(MAC地址为MAC 4)时,VTEP 1从接口Interface A收到该以太网帧后,判断该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 4的出接口为Interface B,所在VLAN为VLAN 10,则将以太网帧从接口Interface B的VLAN 10内发送给Terminal 4。
如图1-5所示,以Terminal 1(MAC地址为MAC 1)发送以太网帧给Terminal 7(MAC地址为MAC 7)为例,站点间单播流量的转发过程为:
(1) Terminal 1发送以太网数据帧给Terminal 7,数据帧的源MAC地址为MAC 1,目的MAC为MAC 7,VLAN Tag为2。
(2) VTEP 1从接口Interface A(所在VLAN为VLAN 2)收到该数据帧后,判断该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 7的出端口为Tunnel1。
(3) VTEP 1为数据帧封装VXLAN头、UDP头和IP头后,将封装好的报文通过VXLAN隧道Tunnel1、经由P设备发送给VTEP 2。
(4) VTEP 2接收到报文后,根据报文中的VXLAN ID判断该报文属于VXLAN 10,并剥离VXLAN头、UDP头和IP头,还原出原始的数据帧。
(5) VTEP 2查找与VXLAN 10对应的VSI A的MAC地址表,得到MAC 7的出端口为Interface A(所在VLAN为VLAN 20)。
(6) VTEP 2从接口Interface A的VLAN 20内将数据帧发送给Terminal 7。
泛洪流量包括组播、广播和未知单播流量。根据复制方式的不同,流量泛洪方式分为单播路由方式(头端复制)和组播路由方式(核心复制)。
在单播路由方式下,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
如图1-6所示,单播路由方式的泛洪流量转发过程为:
(1) VTEP 1接收到本地用户终端发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。
(2) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用组播路由方式可以节省泛洪流量对核心网络带宽资源的占用。
在组播路由方式下,同一个VXLAN内的所有VTEP都加入同一个组播组,利用组播路由协议(如PIM)在IP核心网上为该组播组建立组播转发表项。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会为其封装组播目的IP地址,封装后的报文根据已建立的组播转发表项转发到远端VTEP。
如图1-7所示,组播路由方式的泛洪流量转发过程为:
(1) VTEP 1接收到本地用户终端发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,不仅通过该VXLAN内除接收接口外的所有本地接口将数据帧转发到本地站点,还会为其封装VXLAN头、UDP头和IP头(目的IP地址为组播地址)通过组播转发表项将其发送到远端VTEP。
(2) 在IP核心网内,P设备根据已经建立的组播转发表项复制并转发该组播报文。
(3) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP从本地站点或VXLAN隧道接收到ARP请求和ARP应答报文后,根据该报文在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内用户终端请求其它用户终端MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-8 ARP泛洪抑制示意图
如图1-8所示,ARP泛洪抑制的处理过程如下:
(1) 用户终端Terminal 1发送ARP请求,获取Terminal 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立Terminal 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-8以单播路由泛洪方式为例)。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立Terminal 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。
(4) Terminal 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立Terminal 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立Terminal 7的ARP泛洪抑制表项,之后将ARP应答报文发送给Terminal 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,用户终端Terminal 4发送ARP请求,获取Terminal 1或Terminal 7的MAC地址。
(8) VTEP 1接收到ARP请求后,建立Terminal 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 在VTEP 3上建立ARP泛洪抑制表项后,用户终端Terminal 10发送ARP请求,获取Terminal 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立Terminal 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
与VXLAN相关的协议规范有:
· RFC 7348:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
· VXLAN公网侧端口必须位于FD/FE/SG系列接口板上。
· VXLAN用户侧端口必须位于FD/FE/SG系列接口板或以下接口板上:
¡ 下列SE系列接口板:LSUM2GP24TSSE0、LSUM2GP44TSSE0、LSUM2GT24PTSSE0、LSUM2GT24TSSE0、LSUM2GT48SE0、LSUM2GV48SE0
¡ 下列EC系列接口板:LSUM1GP44TSEC0、LSUM1QGS6EC0、LSUM1TGS24EC0
· 当多台设备组成IRF时,IRF物理端口必须位于FD/FE/SG系列接口板上,VXLAN才能正常运行。
· 请不要在VXLAN网络中配置MPLS、EVI相关功能。有关MPLS和EVI的详细介绍,请分别参见“MPLS配置指导”和“EVI配置指导”。
· 请不要同时配置VXLAN功能和MAC地址认证请求中携带用户IP地址功能,关于MAC地址认证请求中携带用户IP地址功能的详细介绍,请参见“安全配置指导”中的“MAC地址认证”。
· 端口使能了EVB功能后,不支持配置VXLAN功能,否则二者均将无法正常工作。有关EVB的介绍,请参见“EVB配置指导”。
· 配置AC(以太网服务实例)时,需要注意:
¡ VTEP上配置了AC的端口不支持组播功能。
¡ VTEP设备的同一端口下不支持同时配置AC和QinQ。有关QinQ的介绍,请参见“二层技术-以太网交换配置指导”中的“QinQ”。
¡ 为保证VTEP与本地站点的正常对接,应在配置了AC的端口上关闭生成树协议(undo stp enable)。
¡ 有关AC的其他配置限制,请参见“2.6.1 配置手工创建的以太网服务实例与VSI关联”
· VXLAN网络的公网侧端口和AC侧端口都不支持配置端口优先级信任模式为DSCP。关于优先级信任模式的配置,请参见“ACL和QoS配置指导”中的“QoS”。
· VTEP不支持通过多条等价路由对组播、广播和未知单播流量进行负载分担。
· 多个VXLAN隧道共用一个公网侧端口时,这些隧道必须使用设备的同一个VLAN接口来转发报文。
· 在组播路由方式下,不允许在核心设备上创建VXLAN或VXLAN隧道,否则会导致VXLAN报文转发不通。
· VXLAN网络不支持处理带两层以上VLAN标签的报文。
在VXLAN组网中,IP核心网络中的设备只需要配置路由协议,确保VTEP之间路由可达。VXLAN相关配置都在VTEP上进行。
表2-1 VXLAN配置任务简介
配置任务 |
说明 |
详细配置 |
创建VSI和VXLAN |
必选 |
|
创建VXLAN隧道 |
必选 |
|
关联VXLAN与VXLAN隧道 |
必选 |
|
配置AC与VSI关联 |
必选 |
|
管理本地和远端MAC地址 |
可选 |
|
配置VXLAN组播路由泛洪方式 |
可选 |
|
配置VSI泛洪抑制 |
可选 |
|
配置VXLAN报文的目的UDP端口号 |
可选 |
|
配置VXLAN报文检查功能 |
可选 |
|
配置ARP泛洪抑制 |
可选 |
|
关闭VXLAN远端ARP/ND自动学习功能 |
可选 |
|
配置VXLAN流量统计 |
可选 |
表2-2 创建VSI和VXLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启L2VPN功能 |
l2vpn enable |
缺省情况下,L2VPN功能处于关闭状态 |
创建VSI,并进入VSI视图 |
vsi vsi-name |
缺省情况下,不存在VSI |
(可选)配置VSI的描述信息 |
description text |
缺省情况下,未配置VSI的描述信息 |
开启VSI |
undo shutdown |
缺省情况下,VSI处于开启状态 |
(可选)配置VSI的MTU值 |
mtu mtu |
缺省情况下,VSI的MTU值为1500字节 |
(可选)开启VSI的MAC地址学习功能 |
mac-learning enable |
缺省情况下,VSI的MAC地址学习功能处于开启状态 对于VXLAN,设备不支持关闭VSI的MAC地址学习功能,执行undo mac-learning enable命令后不生效 |
创建VXLAN,并进入VXLAN视图 |
vxlan vxlan-id |
缺省情况下,不存在VXLAN 在一个VSI下只能创建一个VXLAN 不同VSI下创建的VXLAN,其VXLAN ID不能相同 |
手工创建VXLAN隧道时,隧道的源端地址和目的端地址需要分别手工指定为本地和远端VTEP的接口地址。在同一台设备上,VXLAN隧道模式的不同Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
如果设备上配置了通过EVPN自动建立并关联VXLAN隧道,则隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。关于interface tunnel、source和destination命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
表2-3 手工创建VXLAN隧道
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN隧道的全局源地址 |
tunnel global source-address ip-address |
缺省情况下,未配置VXLAN隧道的全局源地址 如果隧道下未配置源地址或源接口,则隧道会使用全局源地址作为隧道的源地址 |
创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图 |
interface tunnel tunnel-number mode vxlan |
缺省情况下,不存在Tunnel接口 在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败 |
配置隧道的源端地址或源接口 |
source { ipv4-address | interface-type interface-number } |
缺省情况下,未设置VXLAN隧道的源端地址和源接口 如果设置的是隧道的源端地址,则该地址将作为封装后VXLAN报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后VXLAN报文的源IP地址 采用VXLAN组播路由泛洪方式时,VXLAN隧道的源接口不能是Loopback接口、源端地址不能是Loopback接口的地址 |
配置隧道的目的端地址 |
destination ipv4-address |
缺省情况下,未指定隧道的目的端地址 隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后VXLAN报文的目的地址 |
(可选)开启隧道的BFD检测功能 |
tunnel bfd enable destination-mac mac-address |
缺省情况下,隧道的BFD检测功能处于关闭状态 执行本命令的同时,需要在系统视图下执行reserved vxlan命令配置保留VXLAN。否则,BFD会话无法up 本命令不能与uRPF功能同时配置,否则,BFD会话无法up。关于uRPF功能的详细介绍请参见“安全配置指导”中的“uRPF” |
(可选)退回系统视图 |
quit |
- |
(可选)配置保留VXLAN |
reserved vxlan vxlan-id |
缺省情况下,未指定保留VXLAN 只能在系统视图下配置一个全局保留VXLAN,该VXLAN不能与VSI下创建的VXLAN相同 |
一个VXLAN可以关联多条VXLAN隧道。一条VXLAN隧道可以关联多个VXLAN,这些VXLAN共用该VXLAN隧道,VTEP根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。VTEP接收到某个VXLAN的泛洪流量后,如果采用单播路由泛洪方式,则VTEP将在与该VXLAN关联的所有VXLAN隧道上发送该流量,以便将流量转发给所有的远端VTEP。
表2-4 手工关联VXLAN与VXLAN隧道
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入VXLAN视图 |
vxlan vxlan-id |
- |
配置VXLAN与VXLAN隧道关联 |
tunnel { tunnel-number [ backup-tunnel tunnel-number ] | all } |
缺省情况下,VXLAN未关联VXLAN隧道 VTEP必须与相同VXLAN内的其它VTEP建立VXLAN隧道,并将该隧道与VXLAN关联 如果指定了backup-tunnel tunnel-number参数,则该参数指定的隧道作为备用VXLAN隧道,为主用VXLAN隧道提供保护。当主用VXLAN隧道down时,VXLAN将启用备用VXLAN隧道 |
将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。
对于使用Ethernet接入模式的以太网服务实例,可以修改该以太网服务实例上入方向和出方向报文的VLAN标签。修改方式包括添加标签、映射标签和剥离标签。关于修改入方向/出方向报文VLAN标签的配置限制和指导,请参见“VXLAN命令参考”中的rewrite inbound tag和rewrite outbound tag命令。
· 请不要在同一端口下同时配置VLAN映射和配置以太网服务实例匹配多个VLAN标签(encapsulation命令中vlan-id-list参数指定多个VLAN);否则会导致报文转发异常,必须删除冲突配置并重启端口所在接口板才能恢复业务。有关VLAN映射的介绍,请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。
· encapsulation命令中匹配的外层VLAN不能再配置其他业务(包括二层、三层业务)。
为确保转发正常,端口上以太网服务实例的报文匹配规则需要与该端口上允许通过的VLAN、VLAN报文是否带Tag配置保持一致。当端口上以太网服务实例的报文匹配规则为encapsulation { default | tagged | untagged }时,该端口需要允许缺省VLAN通过。
当接入模式为VLAN时,如果端口接收到的报文不带Tag,需要配置报文匹配规则为encapsulation untagged。
存在以下情况时,请用xconnect vsi命令指定接入模式为Ethernet。
· 以太网服务实例匹配了多个外层或内层VLAN标签(encapsulation命令中vlan-id-list参数指定了多个VLAN)。
· 以太网服务实例采用缺省的报文匹配规则(encapsulation default)。
· 以太网服务实例匹配携带VLAN标签的报文(encapsulation tagged)。
当以太网服务实例匹配了多个VLAN标签时(encapsulation命令中vlan-id-list参数指定了多个VLAN),需要注意:
· 该以太网服务实例只匹配携带VLAN标签的报文。
· 该以太网服务实例所在端口不支持802.1X、MAC地址认证或端口安全功能。有关802.1X、MAC地址认证和端口安全的介绍,请参见“安全配置指导”。
以太网服务实例上不支持同时配置DHCP和修改入方向/出方向报文的VLAN标签(rewrite inbound tag或rewrite outbound tag命令)。有关DHCP的介绍,请参见“三层技术-IP业务配置指导”中的“DHCP”。
表2-5 配置手工创建的以太网服务实例与VSI关联
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入二层以太网接口视图或二层聚合接口视图 |
· 进入二层以太网接口视图: · 进入二层聚合接口视图: |
- |
|
将二层接口加入本地站点VLAN |
|||
· port access vlan vlan-id · port trunk permit vlan { vlan-id-list | all } · port hybrid vlan vlan-id-list { tagged | untagged } |
本地站点VLAN必须是设备上已创建的VLAN |
||
创建以太网服务实例,并进入以太网服务实例视图 |
service-instance instance-id |
缺省情况下,不存在以太网服务实例 |
|
配置以太网服务实例的报文匹配规则 |
· encapsulation s-vid vlan-id-list [ only-tagged ] · encapsulation s-vid vlan-id-list c-vid { vlan-id-list | all } · encapsulation c-vid vlan-id-list · encapsulation { default | tagged | untagged } |
缺省情况下,未配置报文匹配规则 |
|
(可选)配置入方向报文的处理规则 |
rewrite inbound tag { nest { c-vid vlan-id | s-vid vlan-id [ c-vid vlan-id ] } | remark { { 1-to-1 | 2-to-1 } { c-vid vlan-id | s-vid vlan-id } | { 1-to-2 | 2-to-2 } s-vid vlan-id c-vid vlan-id } | strip { c-vid | s-vid [ c-vid ] } } [ symmetric ] |
缺省情况下,不对入方向报文进行处理 |
|
(可选)配置出方向报文的处理规则 |
rewrite outbound tag { nest { c-vid vlan-id | s-vid vlan-id [ c-vid vlan-id ] } | remark { { 1-to-1 | 2-to-1 } { c-vid vlan-id | s-vid vlan-id } | { 1-to-2 | 2-to-2 } s-vid vlan-id c-vid vlan-id } | strip { c-vid | s-vid [ c-vid ] } } |
缺省情况下,不对出方向报文进行处理 |
|
将以太网服务实例与VSI关联 |
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ] |
缺省情况下,以太网服务实例未关联VSI 配置本功能时,如果不指定access-mode参数,将采用缺省接入模式VLAN |
802.1X或MAC地址认证为用户下发授权VSI、Guest VSI、Auth-Fail VSI或Critical VSI后,将用户信息(接入端口、所属VLAN、MAC地址)及VSI信息通知给VXLAN。VXLAN根据用户信息动态创建以太网服务实例,并将其与VSI关联。802.1X和MAC地址认证的详细介绍,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
动态创建的以太网服务实例仅支持通过MAC地址方式判断接口接收到的报文是否属于该AC:检查报文携带的VLAN ID、源MAC地址是否分别与太网服务实例匹配的VLAN ID、MAC地址相同。只有VLAN ID、源MAC地址均相同时,报文才属于该AC。
配置本功能时,必须采用MAC地址认证或基于MAC接入控制的802.1X认证,并开启动态创建的以太网服务实例匹配MAC地址功能。
配置本功能时,需要注意:
· 用户侧端口必须位于FD/FE/SG系列接口板上。
· 用户侧端口仅支持链路类型为Access或Trunk。
· 如果用户侧端口接收到的报文不带Tag或带的Tag等于端口缺省VLAN,则该端口仅支持转发不带Tag的报文。
· 如果要同时配置以太网服务实例的报文匹配规则,仅支持encapsulation s-vid vlan-id [ only-tagged ]命令。
· 同一接口上源MAC地址相同的报文只能匹配到一个动态创建的以太网服务实例。
802.1X或MAC地址认证中,接入认证设备上配置了Guest VSI、Auth-Fail VSI、Critical VSI,或远程AAA服务器为认证成功用户下发了授权VSI,则接入认证设备上会自动地创建以太网服务实例,并将其与Guest VSI、Auth-Fail VSI、Critical VSI或授权VSI关联。
在接入认证设备上开启动态创建的以太网服务实例匹配MAC地址功能。
表2-6 开启动态创建的以太网服务实例匹配MAC地址功能
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入用户侧二层以太网接口视图或二层聚合接口视图 |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
进入二层聚合接口视图 |
interface bridge-aggregation interface-number |
||
开启动态创建的以太网服务实例匹配MAC地址功能 |
mac-based ac |
缺省情况下,动态创建的以太网服务实例匹配MAC地址功能处于关闭状态,即动态创建的以太网服务实例只匹配VLAN |
本地MAC地址只能动态学习,不能静态配置。在动态添加、删除本地MAC地址时,可以记录日志信息。
远端MAC地址表项可以静态添加。
执行本配置后,VXLAN增加或删除本地MAC地址时,将产生日志信息。生成的日志信息将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
表2-7 配置增删本地MAC地址时记录日志
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN增删本地MAC地址时记录日志 |
vxlan local-mac report |
缺省情况下,VXLAN增删本地MAC地址时不会记录日志信息 |
表2-8 添加静态远端MAC地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
添加静态远端MAC地址表项 |
mac-address static mac-address interface tunnel tunnel-number vsi vsi-name |
缺省情况下,不存在静态的远端MAC地址表项 interface tunnel interface-number参数指定的隧道接口必须与vsi vsi-name参数指定的VSI对应的VXLAN关联,且该VXLAN必须已经创建,否则配置将失败 |
请不要为EVPN动态创建的隧道配置静态远端MAC地址表项,避免出现如下问题:如果公网侧接口down,设备将删除已创建的隧道,同时删除为该隧道配置的静态远端MAC地址表项,公网侧接口重新up后会自动重新建立隧道,但是无法恢复静态远端MAC地址表项;如果执行了配置回滚操作,设备会重新创建隧道,新创建的隧道编号可能发生变化,造成配置回滚失败。
如果网络中存在攻击,为了避免学习到错误的远端MAC地址,可以手工关闭远端MAC地址自动学习功能,手动添加静态的远端MAC地址。
表2-9 关闭远端MAC地址自动学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭远端MAC地址自动学习功能 |
vxlan tunnel mac-learning disable |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
本功能适用于SDN(Software Defined Network,软件定义网络)组网。
在SDN组网中,设备将接口学习到的MAC地址上传给控制器,控制器把收到的MAC地址下发给其它远端设备,以减少不必要的广播流量。
接口的MAC地址学习方式包括:
· 硬件学习:接口通过硬件学习MAC地址。软件周期性地检查硬件是否学习到新的MAC地址,把学到的地址上传控制器处理。硬件学习方式下需等待软件检查周期的到来,控制器获取MAC地址的速度较慢。
· 软件学习:接口通过软件学习MAC地址。软件把学到的MAC地址下发给硬件,同时上传控制器处理。软件学习方式下不需等待软件检查周期的到来,控制器获取MAC地址的速度较快。
需要注意的是,开启接口的MAC地址软件学习功能后,大量的MAC地址学习可能对系统造成冲击,不建议用户在大量MAC地址频繁变化的情况下开启本功能。
表2-10 配置接口的MAC地址软件学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口或二层聚合接口视图 |
· 进入二层以太网接口视图: · 进入二层聚合接口视图: |
- |
开启接口的MAC地址软件学习功能 |
l2vpn mac-address software-learning enable |
缺省情况下,接口的MAC地址软件学习功能处于关闭状态,设备采用硬件方式学习MAC地址 |
配置接口的MAC地址数学习上限 |
缺省情况下,没有配置接口的MAC地址数学习上限 有关本命令的详细介绍请参见“二层技术-以太网交换命令参考”中的“MAC地址表” |
组播路由泛洪方式支持如下两种实现模式:
· PIM模式:在VTEP和核心设备上运行PIM协议,以建立组播转发表项。采用该模式时,可以使用Loopback接口地址作为组播报文的源IP地址。当VTEP存在多个网络侧接口时,PIM协议可以动态选择报文的出接口。
· IGMP主机模式:在VTEP上开启IGMP协议的主机功能、在连接VTEP的核心设备上配置IGMP、在所有核心设备上运行PIM协议,以建立组播转发表项。采用该模式时,必须使用VTEP上网络侧接口的IP地址作为组播报文的源IP地址,并在该接口上开启IGMP协议的主机功能。当VTEP存在多个网络侧接口时,IGMP主机模式只能采用组播报文的源IP地址所在的接口作为报文的出接口。
同一VXLAN网络中的不同VTEP可以采用不同的实现模式。
· 在VTEP和核心设备上使能IP组播路由功能。
· 在核心设备上配置组播路由协议。由于VTEP同时作为组播源和组播接收者,因此推荐使用双向PIM作为组播路由协议。
· VXLAN网络中存在采用IGMP主机模式的VTEP时,需要在连接该VTEP的核心设备上配置IGMP。
表2-11 配置PIM模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入VXLAN视图 |
vxlan vxlan-id |
- |
配置VXLAN泛洪的组播地址和组播报文的源IP地址 |
group group-address source source-address |
缺省情况下,未指定VXLAN泛洪的组播地址和组播报文的源IP地址,VXLAN采用单播路由方式泛洪 执行本命令后,VTEP将加入指定的组播组。同一VXLAN的所有VTEP都要加入相同的组播组 可以使用Loopback接口地址作为组播报文的源IP地址 为确保组播报文转发正常,VXLAN组播报文的源IP地址(source-address)需要指定为一个已创建且处于up状态的VXLAN隧道的源端地址 |
进入与核心设备相连接口的接口视图 |
interface interface-type interface-number |
- |
在接口上使能PIM协议 |
pim sm |
二者选其一 缺省情况下,接口上PIM协议处于关闭状态 |
pim dm |
表2-12 配置IGMP主机模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入VXLAN视图 |
vxlan vxlan-id |
- |
配置VXLAN泛洪的组播地址和组播报文的源IP地址 |
group group-address source source-address |
缺省情况下,未指定VXLAN泛洪的组播地址和组播报文的源IP地址,VXLAN采用单播路由方式泛洪 执行本命令后,VTEP将加入指定的组播组。同一VXLAN的所有VTEP都要加入相同的组播组 必须使用VTEP上网络侧接口的IP地址作为组播报文的源IP地址 |
进入与核心设备相连接口的接口视图 |
interface interface-type interface-number |
- |
在接口上开启IGMP协议的主机功能 |
igmp host enable |
缺省情况下,接口上IGMP协议的主机功能处于关闭状态 执行本命令后,当前接口将作为IGMP主机,即从该接口收到IGMP查询报文后,通过该接口发送组播组的报告报文,以便接收该组播组的报文 只有通过multicast routing命令使能IP组播路由后,本命令才会生效 |
缺省情况下,VTEP从本地站点内接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把某类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止该类数据帧向远端站点泛洪。
禁止泛洪功能后,为了将某些单播或组播MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
表2-13 配置VSI泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
关闭VSI的泛洪功能 |
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } |
缺省情况下,VSI泛洪功能处于开启状态 |
|
(可选)配置VSI选择性泛洪的MAC地址 |
selective-flooding mac-address mac-address |
缺省情况下,不存在VSI选择性泛洪MAC地址 如果用户只希望某些目的MAC地址的报文可以泛洪到其它站点,可以先通过flooding disable命令关闭泛洪功能,再通过本命令配置选择性泛洪的MAC地址 |
|
属于同一个VXLAN的VTEP设备上需要配置相同的UDP端口号。
表2-14 配置VXLAN报文的目的UDP端口号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN报文的目的UDP端口号 |
vxlan udp-port port-number |
缺省情况下,VXLAN报文的目的UDP端口号为4789 |
通过本配置可以实现对接收到的VXLAN报文内层封装的以太网数据帧是否携带VLAN Tag进行检查:VTEP接收到VXLAN报文并对其解封装后,若内层以太网数据帧带有VLAN Tag,则丢弃该VXLAN报文。
需要注意的是:远端VTEP上通过xconnect vsi命令的access-mode参数配置接入模式为ethernet时,VXLAN报文可能携带VLAN Tag。这种情况下建议不要在本端VTEP上执行vxlan invalid-vlan-tag discard命令,以免错误地丢弃报文。
表2-15 配置VXLAN报文检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置丢弃内层数据帧含有VLAN Tag的VXLAN报文 |
vxlan invalid-vlan-tag discard |
缺省情况下,不会检查VXLAN报文内层封装的以太网数据帧是否携带VLAN Tag |
配置ARP泛洪抑制时需要注意:
· 当同时执行flooding disable命令关闭了VSI的泛洪功能时:
¡ 如果要与远端站点互通,则两端VTEP都需要为对端站点添加静态远端MAC地址表项(相关命令为mac-address static)。
¡ 建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
· VLAN接入模式下,如果以太网服务实例的报文匹配规则为encapsulation s-vid vlan-id,且匹配的VLAN为接口的缺省VLAN,则VTEP对匹配ARP泛洪抑制表项的ARP请求进行应答时,ARP应答报文的VLAN tag将被删除后再转发给用户终端。如果用户终端要求接收到的ARP应答报文携带VLAN tag,则会导致该用户终端无法学习到ARP表项。在这种情况下,建议不要将以太网服务实例匹配的VLAN指定为接口的缺省VLAN。
· 当VXLAN网络采用组播路由(核心复制)方式转发泛洪流量时:
¡ 若需要使用ARP泛洪抑制功能,必须保证所有VTEP设备均开启ARP泛洪抑制功能;
¡ 如果需要和其他厂商的VTEP设备互通,则不能使用ARP泛洪抑制功能。
表2-16 配置ARP泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
开启ARP泛洪抑制功能 |
arp suppression enable |
缺省情况下,ARP泛洪抑制功能处于关闭状态 |
|
缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端用户终端的ARP/ND信息,即远端ARP/ND信息。在SDN控制器组网下,当控制器和设备间进行表项同步时,可以通过vxlan tunnel arp-learning disable命令暂时关闭远端ARP/ND自动学习功能,以节省占用的设备资源。同步完成后,再执行undo vxlan tunnel arp-learning disable命令开启远端ARP/ND自动学习功能。
建议用户只在控制器和设备间同步表项的情况下执行本配置。
表2-17 关闭远端ARP/ND自动学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭远端ARP自动学习功能 |
vxlan tunnel arp-learning disable |
缺省情况下,远端ARP自动学习功能处于开启状态 |
关闭远端ND自动学习功能 |
vxlan tunnel nd-learning disable |
缺省情况下,远端ND自动学习功能处于开启状态 |
本配置用来开启VSI的报文统计功能,用户可以使用display l2vpn vsi verbose命令查看VSI的报文统计信息,使用reset l2vpn statistics vsi命令清除VSI的报文统计信息。
表2-18 配置VSI的报文统计功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
开启VSI的报文统计功能 |
statistics enable |
缺省情况下,VSI的报文统计功能处于关闭状态 |
指定本配置后,用户可以使用display l2vpn service-instance verbose命令查看以太网服务实例的报文统计信息,使用reset l2vpn statistics ac命令清除以太网服务实例的报文统计信息。
只有为以太网服务实例配置了报文匹配方式并绑定了VSI实例,报文统计功能才会生效。如果在报文统计过程中修改报文匹配方式或绑定的VSI实例,则报文统计重新开始。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入二层以太网接口视图或二层聚合接口视图 |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
进入二层聚合接口视图 |
interface bridge-aggregation interface-number |
||
进入以太网服务实例视图 |
service-instance instance-id |
- |
|
开启以太网服务实例的报文统计功能 |
statistics enable |
缺省情况下,以太网服务实例的报文统计功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN的相关信息。
操作 |
命令 |
显示VSI的ARP泛洪抑制表项信息(独立运行模式) |
display arp suppression vsi [ name vsi-name ] [ slot slot-number ] [ count ] |
显示VSI的ARP泛洪抑制表项信息(IRF模式) |
display arp suppression vsi [ name vsi-name ] [ chassis chassis-number slot slot-number ] [ count ] |
显示VSI的MAC地址表信息 |
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count | verbose ] |
显示以太网服务实例的信息 |
display l2vpn service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ verbose ] |
显示VSI的信息 |
display l2vpn vsi [ name vsi-name ] [ verbose ] |
显示IGMP执行主机行为的所有组播组信息 |
display igmp host group [ group-address | interface interface-type interface-number ] [ verbose ] |
显示Tunnel接口信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示VXLAN关联的VXLAN隧道信息 |
display vxlan tunnel [ vxlan-id vxlan-id ] |
清除VSI的ARP泛洪抑制表项 |
reset arp suppression vsi [ name vsi-name ] |
清除VSI动态学习的MAC地址表项 |
reset l2vpn mac-address [ vsi vsi-name ] |
清除VSI的报文统计信息 |
reset l2vpn statistics vsi [ name vsi-name ] |
清除AC的报文统计信息 |
reset l2vpn statistics ac [ interface interface-type interface-number service-instance instance-id ] |
display interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
· 站点之间的泛洪流量采用头端复制的方式转发。
图2-1 VXLAN头端复制组网图
(1) 配置IP地址和单播路由协议
请按照图2-1配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic vpna Tunnel1 Aging
cc3e-5f9c-23dc Dynamic vpna Tunnel2 Aging
--- 2 mac address(es) found ---
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
· 站点之间的泛洪流量采用核心复制的方式转发。
图2-2 VXLAN核心复制组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int11 |
11.1.1.1/24 |
Switch C |
Vlan-int13 |
13.1.1.3/24 |
Switch D |
Vlan-int11 |
11.1.1.4/24 |
Switch E |
Vlan-int13 |
13.1.1.5/24 |
|
Vlan-int21 |
21.1.1.4/24 |
|
Vlan-int23 |
23.1.1.5/24 |
Switch F |
Vlan-int21 |
21.1.1.6/24 |
Switch G |
Vlan-int12 |
12.1.1.7/24 |
|
Vlan-int22 |
22.1.1.6/24 |
|
Vlan-int22 |
22.1.1.7/24 |
|
Vlan-int23 |
23.1.1.6/24 |
Switch B |
Vlan-int12 |
12.1.1.2/24 |
|
Loop0 |
6.6.6.6/32 |
|
|
|
(1) 配置IP地址和单播路由协议
请按照图2-2配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 使能IP组播路由。
[SwitchA] multicast routing
[SwitchA-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Vlan-interface11的IP地址,并在该接口上开启IGMP协议的主机功能。
[SwitchA] interface vlan-interface 11
[SwitchA-Vlan-interface11] ip address 11.1.1.1 24
[SwitchA-Vlan-interface11] igmp host enable
[SwitchA-Vlan-interface11] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1
· 指定隧道的源端地址为本地接口Vlan-interface11的地址11.1.1.1
· 指定隧道的目的端地址为Switch B上接口Vlan-interface12的地址12.1.1.2
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 11.1.1.1
[SwitchA-Tunnel1] destination 12.1.1.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 11.1.1.1
[SwitchA-Tunnel2] destination 13.1.1.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为11.1.1.1。
[SwitchA-vsi-vpna-vxlan-10] group 225.1.1.1 source 11.1.1.1
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 使能IP组播路由。
[SwitchB] multicast routing
[SwitchB-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Vlan-interface12的IP地址,并在该接口上开启IGMP协议的主机功能。
[SwitchB] interface vlan-interface 12
[SwitchB-Vlan-interface12] ip address 12.1.1.2 24
[SwitchB-Vlan-interface12] igmp host enable
[SwitchB-Vlan-interface12] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 12.1.1.2
[SwitchB-Tunnel2] destination 11.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 12.1.1.2
[SwitchB-Tunnel3] destination 13.1.1.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为12.1.1.2。
[SwitchB-vsi-vpna-vxlan-10] group 225.1.1.1 source 12.1.1.2
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 使能IP组播路由。
[SwitchC] multicast routing
[SwitchC-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Vlan-interface13的IP地址,并在该接口上开启IGMP协议的主机功能。
[SwitchC] interface vlan-interface 13
[SwitchC-Vlan-interface13] ip address 13.1.1.3 24
[SwitchC-Vlan-interface13] igmp host enable
[SwitchC-Vlan-interface13] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 13.1.1.3
[SwitchC-Tunnel1] destination 11.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 13.1.1.3
[SwitchC-Tunnel3] destination 12.1.1.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为13.1.1.3。
[SwitchC-vsi-vpna-vxlan-10] group 225.1.1.1 source 13.1.1.3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
(5) 配置Switch D
# 使能IP组播路由。
<SwitchD> system-view
[SwitchD] multicast routing
[SwitchD-mrib] quit
# 在接口Vlan-interface11上使能IGMP和PIM-SM。
[SwitchD] interface vlan-interface 11
[SwitchD-Vlan-interface11] igmp enable
[SwitchD-Vlan-interface11] pim sm
[SwitchD-Vlan-interface11] quit
# 在接口Vlan-interface21上使能PIM-SM。
[SwitchD] interface vlan-interface 21
[SwitchD-Vlan-interface21] pim sm
[SwitchD-Vlan-interface21] quit
# 使能双向PIM。
[SwitchD] pim
[SwitchD-pim] bidir-pim enable
[SwitchD-pim] quit
(6) 配置Switch E
# 使能IP组播路由。
<SwitchE> system-view
[SwitchE] multicast routing
[SwitchE-mrib] quit
# 在接口Vlan-interface13上使能IGMP和PIM-SM。
[SwitchE] interface vlan-interface 13
[SwitchE-Vlan-interface13] igmp enable
[SwitchE-Vlan-interface13] pim sm
[SwitchE-Vlan-interface13] quit
# 在接口Vlan-interface23上使能PIM-SM。
[SwitchE] interface vlan-interface 23
[SwitchE-Vlan-interface23] pim sm
[SwitchE-Vlan-interface23] quit
# 使能双向PIM。
[SwitchE] pim
[SwitchE-pim] bidir-pim enable
[SwitchE-pim] quit
(7) 配置Switch F
# 使能IP组播路由。
<SwitchF> system-view
[SwitchF] multicast routing
[SwitchF-mrib] quit
# 在各接口上使能PIM-SM。
[SwitchF] interface vlan-interface 21
[SwitchF-Vlan-interface21] pim sm
[SwitchF-Vlan-interface21] quit
[SwitchF] interface vlan-interface 22
[SwitchF-Vlan-interface22] pim sm
[SwitchF-Vlan-interface22] quit
[SwitchF] interface vlan-interface 23
[SwitchF-Vlan-interface23] pim sm
[SwitchF-Vlan-interface23] quit
[SwitchF] interface loopback 0
[SwitchF-LoopBack0] pim sm
[SwitchF-LoopBack0] quit
# 使能双向PIM。
[SwitchF] pim
[SwitchF-pim] bidir-pim enable
# 将接口Vlan-interface22配置为C-BSR,并将接口Loopback0配置为服务于双向PIM的C-RP。
[SwitchF-pim] c-bsr 22.1.1.6
[SwitchF-pim] c-rp 6.6.6.6 bidir
[SwitchF-pim] quit
(8) 配置Switch G
# 使能IP组播路由。
<SwitchG> system-view
[SwitchG] multicast routing
[SwitchG-mrib] quit
# 在接口Vlan-interface12上使能IGMP和PIM-SM。
[SwitchG] interface vlan-interface 12
[SwitchG-Vlan-interface12] igmp enable
[SwitchG-Vlan-interface12] pim sm
[SwitchG-Vlan-interface12] quit
# 在接口Vlan-interface22上使能PIM-SM。
[SwitchG] interface vlan-interface 22
[SwitchG-Vlan-interface22] pim sm
[SwitchG-Vlan-interface22] quit
# 使能双向PIM。
[SwitchG] pim
[SwitchG-pim] bidir-pim enable
[SwitchG-pim] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 11.1.1.1, destination 12.1.1.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
MTunnel0 0x6000000 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic vpna Tunnel1 Aging
cc3e-5f9c-23dc Dynamic vpna Tunnel2 Aging
--- 2 mac address(es) found ---
# 查看Switch A上IGMP执行主机行为的所有组播组信息,可以看到接口Vlan-interface11下存在组播组225.1.1.1的信息。
<SwitchA> display igmp host group
IGMP host groups in total: 1
Vlan-interface11(11.1.1.1):
IGMP host groups in total: 1
Group address Member state Expires
225.1.1.1 Idle Off
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
VXLAN可以为分散的物理站点提供二层互联。如果要为VXLAN站点内的用户终端提供三层业务,则需要在网络中部署VXLAN IP网关,以便站点内的用户终端通过VXLAN IP网关与外界网络或其他VXLAN网络内的用户终端进行三层通信。VXLAN IP网关既可以部署在独立的物理设备上,也可以部署在VTEP设备上。VXLAN IP网关部署在VTEP设备上时,又分为集中式VXLAN IP网关和分布式VXLAN IP网关两种方式。
图3-1 独立的VXLAN IP网关示意图
如图3-1所示,VXLAN IP网关部署在独立的物理设备上时,VXLAN IP网关作为物理站点接入VTEP,VXLAN业务对于网关设备透明。用户终端通过VXLAN IP网关与三层网络中的节点通信时,用户终端将三层报文封装成二层数据帧发送给VXLAN IP网关。VTEP对该数据帧进行VXLAN封装,并在IP核心网络上将其转发给远端VTEP(连接VXLAN IP网关的VTEP)。远端VTEP对VXLAN报文进行解封装,并将原始的二层数据帧转发给VXLAN IP网关。VXLAN IP网关去掉链路层封装后,对报文进行三层转发。
图3-2 集中式VXLAN IP网关示意图
如图3-2所示,集中式VXLAN IP网关进行二层VXLAN业务终结的同时,还对内层封装的IP报文进行三层转发处理。与独立的VXLAN IP网关相比,该方式除了能够节省设备资源外,VXLAN IP网关功能由VXLAN对应的三层虚接口(VSI虚接口)承担,三层业务的部署和控制也更加灵活和方便。
图3-3 集中式VXLAN IP网关的三层通信过程
如图3-3所示,以地址为10.1.1.11的用户终端为例,用户终端与外界网络进行三层通信的过程为:
(1) 用户终端(10.1.1.11)跨网段进行三层通信时,先广播发送ARP请求消息,解析VXLAN IP网关(10.1.1.1)的MAC地址。
(2) VTEP 1收到ARP请求消息后,添加VXLAN封装并发送给所有的远端VTEP。
(3) VTEP 3解封装VXLAN报文后,发现ARP请求的目的IP为VXLAN对应的本地网关IP地址,即与VXLAN关联的VSI虚接口的IP地址,则学习10.1.1.11的ARP信息,并向用户终端回应ARP应答消息。
(4) VTEP 1收到ARP应答消息后,将该消息转发给用户终端。
(5) 用户终端获取到网关的MAC地址后,为三层报文添加网关的MAC地址,通过VXLAN网络将二层数据帧发送给VTEP 3。
(6) VTEP 3解封装VXLAN报文,并去掉链路层头后,对内层封装的IP报文进行三层转发,将其发送给最终的目的节点。
(7) 目的节点回复的报文到达网关后,网关根据已经学习到的ARP表项,为报文封装链路层头,并通过VXLAN网络将其发送给用户终端。
属于不同VXLAN网络的用户终端之间的通信过程与上述过程类似,不同之处在于一个VXLAN网络的集中式网关需要将报文转发给另一个VXLAN网络的集中式网关,再由该集中式网关将报文转发给本VXLAN内对应的用户终端。
由单台设备承担站点内大量用户终端的集中式VXLAN IP网关功能,对设备的处理资源占用较高,并且对于网关的单点故障没有保护措施。通过集中式VXLAN IP网关保护组,可以实现多台设备同时承担网关功能,在提供单点故障保护机制的同时,还可以实现上下行流量的负载分担。
图3-4 集中式VXLAN IP网关保护组示意图
如图3-4所示,两台集中式VXLAN IP网关形成保护组,两台设备上存在相同的VTEP IP,称为保护组的VTEP IP。接入层VTEP与保护组的VTEP IP建立VXLAN隧道,将用户终端发送至其它网络的报文转发至保护组,保护组中的两台网关设备均可以接收并处理用户终端发往其它网络的流量。
保护组中的成员VTEP之间、每个成员VTEP与接入层VTEP之间还会采用成员自身的IP地址建立VXLAN隧道,以便进行协议通信和表项同步。
图3-5 分布式VXLAN IP网关示意图
采用集中式VXLAN IP网关方案时,不同VXLAN之间的流量以及VXLAN访问外界网络的流量全部由集中式VXLAN IP网关处理,网关压力较大,并加剧了网络带宽资源的消耗。如图3-5所示,在分布式VXLAN IP网关方案中,每台VTEP设备都可以作为VXLAN IP网关,对本地站点的流量进行三层转发,很好地缓解了网关的压力。
图3-6 分布式VXLAN IP网关部署示意图
如图3-6所示,在分布式VXLAN IP网关组网中,所有的分布式VXLAN IP网关(GW)上都需要创建VSI虚接口,并为不同GW上的相同VSI虚接口配置相同的IP地址,作为VXLAN内用户终端的网关地址。在分布式VXLAN IP网关上还需要开启本地代理ARP功能(IPv4网络)或本地ND代理功能(IPv6网络)。边界网关(Border)上也需要创建VSI虚接口,并配置IP地址。
采用分布式VXLAN IP网关组网方案时,流量都通过查找ARP表项(IPv4网络)或ND表项(IPv6网络)进行三层转发。
如图3-6所示,以Terminal 1访问Terminal 4为例,相同VXLAN内不同站点的用户终端的通信过程为:
(1) Terminal 1广播发送ARP请求消息,获取Terminal 4的MAC地址。
(2) GW 1收到ARP请求消息后,学习Terminal 1的ARP信息,并代理应答该ARP请求,即:向Terminal 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。
(3) Terminal 1学习到Terminal 4的MAC地址为GW 1上VSI虚接口10的MAC地址。
(4) GW 1将接收到的ARP请求消息中的源MAC地址修改为VSI虚接口10的MAC地址,对该消息进行VXLAN封装后,将其发送给VXLAN内的所有远端VTEP。
(5) GW 2对VXLAN报文进行解封装后,学习Terminal 1的ARP信息(IP为10.1.1.11、MAC为GW 1上VSI虚接口10的MAC、出接口为接收该VXLAN报文的Tunnel接口),并将ARP请求消息中的源MAC修改为本地VSI虚接口10的MAC地址,在VXLAN 10的本地站点内进行广播。
(6) Terminal 4收到ARP请求后,学习Terminal 1的ARP信息(IP为10.1.1.11、MAC为GW 2上VSI虚接口10的MAC),并发送ARP应答消息给本地网关GW 2。
(7) GW 2从Terminal 4收到ARP应答消息后,学习Terminal 4的ARP信息,将ARP应答消息中的源MAC修改为本地VSI虚接口10的MAC地址,并根据已经学习到的ARP表项,为ARP应答消息添加VXLAN封装后发送给GW 1。
(8) GW 1对VXLAN报文进行解封装后,根据收到的ARP应答消息学习Terminal 4的ARP信息(IP为10.1.1.12、MAC为GW 2上VSI虚接口10的MAC、出接口为接收该VXLAN报文的Tunnel接口)。
(9) 通过上述步骤完成ARP信息的学习后,Terminal 1发送给Terminal 4的报文,根据已经学习到的ARP信息进行转发:首先发送给GW 1;GW 1对其进行VXLAN封装后,将其发送给GW 2;GW 2解封装后,将其发送给Terminal 4。
如图3-6所示,以Terminal 1访问Terminal 5为例,不同VXLAN的用户终端的通信过程为:
(1) Terminal 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。
(2) GW 1收到ARP请求消息后,学习Terminal 1的ARP信息,并向Terminal 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。
(3) Terminal 1将访问Terminal 5的报文发送给GW 1。
(4) GW 1在所有VXLAN内向本地站点和远端站点广播发送ARP请求,获取Terminal 5的MAC地址。ARP请求消息中的源IP地址为20.1.1.1、源MAC地址为本地VSI虚接口20的MAC地址。
(5) GW 2从VXLAN隧道上接收到VXLAN报文,对其进行解封装后,学习GW 1的ARP信息(IP为20.1.1.1、MAC为GW 1上VSI虚接口20的MAC、出接口为接收该VXLAN报文的Tunnel接口),并将ARP请求消息中的源MAC修改为本地VSI虚接口20的MAC地址,在VXLAN 20的本地站点内广播该ARP请求消息。
(6) Terminal 5收到ARP请求后,学习GW 2的ARP信息(IP为20.1.1.1、MAC为GW 2上VSI虚接口20的MAC),并发送ARP应答消息给本地网关GW 2。
(7) GW 2从Terminal 5收到ARP应答消息后,学习Terminal 5的ARP信息,将ARP应答消息中的源MAC修改为本地VSI虚接口20的MAC地址,并根据已经学习到的ARP表项,为ARP应答消息添加VXLAN封装后发送给GW 1。
(8) GW 1对VXLAN报文进行解封装后,根据收到的ARP应答消息学习Terminal 5的ARP信息(IP为20.1.1.12、MAC为GW 2上VSI虚接口20的MAC、出接口为接收该VXLAN报文的Tunnel接口)。
(9) 通过上述步骤完成ARP信息的学习后,Terminal 1发送给Terminal 5的报文,根据已经学习到的ARP信息进行转发:首先发送给GW 1;GW 1对其进行VXLAN封装后,将其发送给GW 2;GW 2解封装后,将其发送给Terminal 5。
用户终端要想与外部网络进行三层通信,需要在接入用户终端的本地分布式VXLAN IP网关上指定流量的下一跳为Border,可以通过如下方式来实现:
· 在本地分布式VXLAN IP网关上配置静态路由,指定路由下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 在本地分布式VXLAN IP网关上配置策略路由,设置报文的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
如图3-6所示,以Terminal 1访问外部网络内的主机50.1.1.1为例,用户终端访问外部网络的三层通信过程为:
(1) Terminal 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。
(2) GW 1收到ARP请求消息后,学习Terminal 1的ARP信息,并向Terminal 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。
(3) Terminal 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.2的ARP信息。
(7) GW 1根据获取到的信息为Terminal 1发送的报文封装链路层地址(10.1.1.2对应的MAC地址),并通过VXLAN隧道将报文发送给Border。
(8) Border对接收到的报文进行解封装后,对报文进行三层转发。
配置VXLAN IP网关时,VXLAN公网侧端口必须位于以下接口板上:
· FD系列接口板
· FE系列接口板
· 下列SG系列接口板:LSUM2CQGS12SG0、LSUM2QGS24RSG0、LSUM2QGS12SG0、LSUM2TGS32QSSG0、LSUM2TGS48SG0
配置VXLAN IP网关时,VXLAN用户侧端口除了不允许位于LSUM1QGS12SG0、LSUM1TGS48SG0之外,允许的所在接口板与“2.1.1 VXLAN硬件限制”一致。
VXLAN IP网关功能不支持与以下特性组合使用:Super VLAN、Private VLAN。有关Super VLAN和Private VLAN的介绍,请参见“二层技术-以太网交换配置指导”中的“Super VLAN”和“Private VLAN”。
建议不要在同一台设备上同时配置集中式VXLAN IP网关和集中式VXLAN IP网关保护组功能。
VXLAN IP网关功能仅支持以下几种以太网服务实例:
· 报文匹配规则为encapsulation s-vid vlan-id或encapsulation untagged,且接入模式为VLAN的以太网服务实例。
· 报文匹配规则为encapsulation s-vid vlan-id c-vid vlan-id,且接入模式为VLAN的以太网服务实例。该AC仅支持与配置相同的本地AC三层互通;与远端VTEP三层通信时,VXLAN隧道报文内层封装的以太网数据帧会携带c-vid(Customer VLAN ID)标签。
VXLAN IP网关接口(VSI虚接口)仅支持如下协议类型:Telnet、TFTP、DHCP、ARP、ND、RADIUS、SSH、NTP、SNMP、NETCONF。有关DHCP、ARP和ND协议的介绍,请分别参见“三层技术-IP业务配置指导”中的“DHCP”、“ARP”和“IPv6基础”;有关RADIUS和SSH协议的介绍,请分别参见“安全配置指导”中的“AAA”和“SSH”;有关NTP、SNMP和NETCONF协议的介绍,请分别参见“网络管理和监控配置指导”中的“NTP”、“SNMP”和“NETCONF”。
以下接口板的端口上,如果以太网服务实例匹配两层VLAN标签的报文(encapsulation命令配置了s-vid和c-vid参数),则该以太网服务实例关联的VSI不支持VXLAN IP网关功能。
· 下列SE系列接口板:LSUM2GP24TSSE0、LSUM2GP44TSSE0、LSUM2GT24PTSSE0、LSUM2GT24TSSE0、LSUM2GT48SE0、LSUM2GV48SE0
· 下列EC系列接口板:LSUM1GP44TSEC0、LSUM1QGS6EC0、LSUM1TGS24EC0
对于以上接口板,还有如下使用限制:
· 这些接口板的端口上以太网服务实例关联的VSI,其网关接口(VSI虚接口)不支持策略路由。
· 对于这些接口板的端口上以太网实例关联的VSI,当不同的VSI指定同一网关接口时,该接口不支持应用ACL进行报文过滤。有关应用ACL进行报文过滤的介绍,请参见“ACL和QoS配置指导”中的“ACL”。
· 请不要将这些接口板上的接口关联到VPN实例(ip binding vpn-instance),否则从这些接口上进入的流量不能进行VXLAN三层转发。有关VPN实例的配置,请参见“MPLS配置指导”中的“MPLS L3VPN”。
· 当用户VLAN流量从这些单板进入,并通过FE系列接口板或SG系列接口板LSUM2QGS12SG0、LSUM2CQGS12SG0、LSUM2QGS24RSG0、LSUM2TGS32QSSG0、LSUM2TGS48SG0的出接口进行VXLAN三层转发时,这些VXLAN报文内层封装的以太网数据帧会携带用户VLAN Tag。
配置集中式VXLAN IP网关和分布式VXLAN IP网关时,需要完成以下配置任务:
· 创建VSI和VXLAN。
· 配置VXLAN隧道,并将VXLAN与VXLAN隧道关联。
表3-1 配置集中式VXLAN IP网关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
配置VSI虚接口的IP地址 |
ip address ip-address { mask | mask-length } |
缺省情况下,未配置VSI虚接口的IP地址 |
退回系统视图 |
quit |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 |
保护组中所有网关上的VXLAN配置需要保证完全一致。
表3-2 配置集中式VXLAN IP网关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 请在保护组中的每台网关上创建相同的VSI虚接口 |
配置VSI虚接口的IP地址 |
ip address ip-address { mask | mask-length } |
缺省情况下,未配置VSI虚接口的IP地址 请在保护组中的每台网关上配置相同的VSI虚接口IP地址 |
配置VSI虚接口的MAC地址 |
mac-address mac-address |
缺省情况下,VSI虚接口的MAC地址为桥MAC地址+1 保护组中所有网关上配置的MAC地址必须相同 |
退回系统视图 |
quit |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 |
退回系统视图 |
quit |
- |
将本设备加入VXLAN IP网关保护组,并配置本设备的成员地址 |
vtep group group-ip member local member-ip |
缺省情况下,设备未加入VXLAN IP网关保护组 保护组中的每台VXLAN IP网关上都要执行此配置。member-ip为本设备的成员地址,该地址必须是设备上已经存在的IP地址,并且需要通过路由协议发布到IP网络 同一个保护组中不同成员VTEP的地址不能相同 |
配置VXLAN IP网关保护组的成员地址列表 |
vtep group group-ip member remote member-ip&<1-8> |
缺省情况下,未配置VXLAN IP网关保护组的成员地址列表 保护组中每台VXLAN IP网关上都要执行此配置,且必须输入保护组中所有其它成员的成员地址 |
分布式VXLAN IP网关上所有公网侧端口都需要配置undo mac-address static source-check enable命令。
分布式网关上不能ping通该网关学习到的远端主机的ARP/ND表项对应的IPv4/IPv6地址。
分布式VXLAN IP网关连接IPv4站点网络时,所有网关上都需要为相同VSI虚接口配置相同的MAC地址。如果网关同时连接IPv4站点网络和IPv6站点网络,则不同分布式VXLAN IP网关上需要为相同VSI虚接口配置不同的链路本地地址。
在分布式VXLAN IP网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式VXLAN IP网关设备上同时开启这两个功能。有关ARP泛洪抑制功能的详细介绍请参见“2.12 配置ARP泛洪抑制”。
如果用户终端要想与外部网络进行三层通信,那么需要在接入用户终端的本地分布式VXLAN IP网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 配置策略路由:通过apply default-next-hop命令或apply next-hop命令设置报文的缺省下一跳或下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。
表3-3 配置分布式VXLAN IP网关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
配置VSI虚接口的IP地址或IPv6地址 |
· 配置VSI虚接口的IP地址: · 配置VSI虚接口的IPv6地址: |
缺省情况下,未配置VSI虚接口的IP地址和IPv6地址 |
配置VSI虚接口为分布式网关接口 |
distributed-gateway local |
缺省情况下,VSI虚接口不是分布式本地网关接口 |
开启本地代理ARP功能 |
local-proxy-arp enable [ ip-range startIP to endIP ] |
对于IPv4网络,必选 缺省情况下,本地代理ARP功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP” |
开启本地ND代理功能 |
local-proxy-nd enable |
对于IPv6网络,必选 缺省情况下,本地ND代理功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础” |
退回系统视图 |
quit |
- |
(可选)开启分布式网关的动态ARP表项同步功能 |
arp distributed-gateway dynamic-entry synchronize |
缺省情况下,分布式网关的动态ARP表项同步功能处于关闭状态 分布式VXLAN IP网关上开启本地代理ARP功能时,需要开启本功能,以保证所有网关都能学习到ARP表项 分布式VXLAN IP网关之间也可以通过控制器或EVPN等在彼此之间同步ARP表项,此时无需开启本功能 |
(可选)开启分布式网关的动态IPv6 ND表项同步功能 |
ipv6 nd distributed-gateway dynamic-entry synchronize |
缺省情况下,分布式网关的动态IPv6 ND表项同步功能处于关闭状态 分布式VXLAN IP网关上开启本地ND代理功能时,本地网关不会将目标IP地址为分布式网关VSI虚接口的IPv6 ND报文转发给其他网关,只有本地网关能够学习到IPv6 ND报文发送者的ND表项。如果希望所有网关都能学习到该ND表项,需要开启分布式网关的动态IPv6 ND表项同步功能 分布式VXLAN IP网关之间也可以通过控制器或EVPN等在彼此之间同步IPv6 ND表项,此时无需开启本功能 |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 |
配置当前VSI所属的子网网段 |
gateway subnet { ipv4-address wildcard-mask | ipv6-address prefix-length } |
缺省情况下,未指定VSI所属的子网网段 为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址、或多个IPv6地址,分别作为不同VXLAN内用户终端的网关地址 多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过本命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制广播报文范围,有效地节省带宽资源 |
VXLAN IP网关既可以动态学习ARP表项,也可以通过本配置静态创建ARP表项。
表3-4 静态配置ARP表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
静态配置本地ARP表项 |
arp static ip-address mac-address vsi-interface vsi-interface-id interface-type interface-number service-instance instance-id vsi vsi-name [ vpn-instance vpn-instance-name ] |
缺省情况下,不存在本地ARP表项 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“ARP” |
静态配置远端ARP表项 |
arp static ip-address mac-address vsi-interface vsi-interface-id tunnel number vsi vsi-name [ vpn-instance vpn-instance-name ] |
缺省情况下,不存在远端ARP表项 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“ARP” |
通过本配置,可以根据需要调整VSI虚接口的参数及状态。
表3-5 配置VSI虚接口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
- |
配置VSI虚接口的MAC地址 |
mac-address mac-address |
缺省情况下,VSI虚接口的MAC地址为桥MAC地址+1 |
(可选)配置接口的描述信息 |
description text |
缺省情况下,接口的描述信息为“接口名 Interface”,例如:Vsi-interface100 Interface |
(可选)配置接口的MTU |
mtu mtu-value |
缺省情况下,VSI虚接口的MTU值为1444字节 |
(可选)配置接口的期望带宽 |
bandwidth bandwidth-value |
缺省情况下,接口的期望带宽=接口的波特率÷1000(kbps) |
(可选)恢复接口的缺省配置 |
default |
- |
(可选)开启VSI虚接口的ARP报文发送限速功能 |
arp send-rate pps |
缺省情况下,VSI虚接口的ARP报文发送限速功能处于关闭状态 |
开启VSI虚接口 |
undo shutdown |
缺省情况下,VSI虚接口处于开启状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN IP网关的运行情况,通过查看显示信息验证配置的效果。
表3-6 VXLAN IP网关显示和维护
操作 |
命令 |
显示VSI虚接口信息 |
display interface [ vsi-interface [ vsi-interface-id ] ] [ brief [ description | down ] ] |
Switch A、Switch C为与服务器连接的VTEP设备,Switch B为与广域网连接的集中式VXLAN IP网关设备,Switch E为广域网内的三层交换机。虚拟机VM 1、VM 2同属于VXLAN 10,通过VXLAN实现不同站点间的二层互联,并通过VXLAN IP网关与广域网三层互联。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
· 站点之间的泛洪流量采用头端复制的方式转发。
图3-7 集中式VXLAN IP网关配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1。(具体配置过程略)
# 请按照图3-7配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达;配置Switch B和Switch E上发布10.1.1.0/24和20.1.1.0/24网段的路由。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址,该IP地址作为VXLAN 10内虚拟机的网关地址。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
(1) 验证VXLAN IP网关设备Switch B
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchB] display interface Vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface100 Interface
Bandwidth: 1000000kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0011-2200-0102
IPv6 packet frame type: Ethernet II, hardware address: 0011-2200-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchB] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel2 0x5000002 Up Manual Disabled
Tunnel3 0x5000003 Up Manual Disabled
# 查看Switch B上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[SwitchB] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VID Interface/Link ID Aging Type
20.1.1.5 000c-29c1-5e46 N/A Vlan20 19 D
10.1.1.11 0000-1234-0001 N/A 0x0 20 D
10.1.1.12 0000-1234-0002 N/A 0x0 19 D
# 查看Switch B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[SwitchB] display fib 10.1.1.11
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination/Mask Nexthop Flag OutInterface/Token Label
10.1.1.11/32 10.1.1.11 UH Vsi100 Null
(2) 验证主机和广域网互访
虚拟机VM 1、VM 2之间可以互访,VM 1、VM 2和Switch E上接口Vlan-interface20的地址20.1.1.5之间可以互访。
Switch A为与服务器连接的VTEP设备,Switch B和Switch C为与广域网连接的集中式VXLAN IP网关设备。虚拟机VM 1属于VXLAN 10,通过VXLAN IP网关保护组实现Switch B和Switch C能够同时为VM 1的跨网络报文进行三层转发,同时实现网关设备的备份。
图3-8 集中式VXLAN IP网关保护组配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1上指定网关地址为10.1.1.1。(具体配置过程略)
# 请按照图3-8配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和VXLAN IP保护组之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
· 指定隧道的目的端地址为Switch B和Switch C上同时存在的接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 配置Tunnel1与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan10] tunnel 1
[SwitchA-vsi-vpna-vxlan10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为保护组的VTEP IP地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 配置接口Loopback1的IP地址,作为保护组的成员地址。
[SwitchB] interface loopback 1
[SwitchB-Loopback1] ip address 3.3.3.3 255.255.255.255
[SwitchB-Loopback1] quit
# 在VXLAN IP网关保护组和Switch A之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 配置Tunnel2与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan10] tunnel 2
[SwitchB-vsi-vpna-vxlan10] quit
[SwitchB-vsi-vpna] quit
# 创建VSI虚接口VSI-interface1,为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,并指定该接口的MAC地址。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] mac-address 2-2-2
[SwitchB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN IP网关保护组,并配置本地成员地址。
[SwitchB] vtep group 2.2.2.2 member local 3.3.3.3
# 配置VXLAN IP网关保护组的其它成员地址。
[SwitchB] vtep group 2.2.2.2 member remote 4.4.4.4
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为数据隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchC-Loopback0] quit
# 配置接口Loopback1的IP地址,作为保护组的成员地址。
[SwitchC] interface loopback 1
[SwitchC-Loopback1] ip address 4.4.4.4 255.255.255.255
[SwitchC-Loopback1] quit
# 在VXLAN IP网关保护组和Switch A之间建立VXLAN隧道。
[SwitchC] interface tunnel 2 mode vxlan
[SwitchC-Tunnel2] source 2.2.2.2
[SwitchC-Tunnel2] destination 1.1.1.1
[SwitchC-Tunnel2] quit
# 配置Tunnel2与VXLAN10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan10] tunnel 2
[SwitchC-vsi-vpna-vxlan10] quit
[SwitchC-vsi-vpna] quit
# 创建VSI虚接口VSI-interface1,为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,并指定该接口的MAC地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] mac-address 2-2-2
[SwitchC-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 配置VXLAN IP网关保护组,并配置本地成员地址。
[SwitchC] vtep group 2.2.2.2 member local 4.4.4.4
# 配置VXLAN IP网关保护组的其它成员地址。
[SwitchC] vtep group 2.2.2.2 member remote 3.3.3.3
Switch A、Switch C为分布式VXLAN IP网关设备,Switch B为与广域网连接的边界网关设备,Switch E为广域网内的三层交换机。虚拟机VM 1属于VXLAN 10,VM 2属于VXLAN 20,VM 3属于VXLAN 30。通过分布式VXLAN IP网关实现不同VXLAN网络的三层互联,并通过边界网关实现与广域网的三层互联。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
· VM 1、VM 2、VM 3之间可以互访,且VM 1、VM 2和VM 3都可以访问外部网络。
图3-9 分布式VXLAN IP网关连接IPv4网络配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上分别指定网关地址为10.1.1.1、10.1.2.1、20.1.1.1。(具体配置过程略)
# 请按照图3-9配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达;配置Switch B和Switch E发布10.1.1.0/24、10.1.2.0/24、20.1.1.0/24和25.1.1.0/24网段的路由。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[SwitchA] vsi vpnc
[SwitchA-vsi-vpnc] vxlan 30
[SwitchA-vsi-vpnc-vxlan-30] quit
[SwitchA-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置Tunnel1和Tunnel2与VXLAN 20关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] tunnel 1
[SwitchA-vsi-vpnb-vxlan-20] tunnel 2
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置Tunnel2与VXLAN 30关联。
[SwitchA] vsi vpnc
[SwitchA-vsi-vpnc] vxlan 30
[SwitchA-vsi-vpnc-vxlan-30] tunnel 2
[SwitchA-vsi-vpnc-vxlan-30] quit
[SwitchA-vsi-vpnc] quit
# 在接入VM 1的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 在接入VM 2的接口Ten-GigabitEthernet1/0/3上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/3
[SwitchA-Ten-GigabitEthernet1/0/3] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/3] port trunk permit vlan 3
[SwitchA-Ten-GigabitEthernet1/0/3] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/3-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchA-Ten-GigabitEthernet1/0/3-srv1000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet1/0/3-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/3] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchA-Vsi-interface2] mac-address 2-2-2
[SwitchA-Vsi-interface2] distributed-gateway local
[SwitchA-Vsi-interface2] local-proxy-arp enable
[SwitchA-Vsi-interface2] quit
# 开启分布式网关的动态ARP表项同步功能。
[SwitchA] arp distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为10.1.1.0/24。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] gateway subnet 10.1.1.0 0.0.0.255
[SwitchA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
# 为VSI虚接口VSI-interface1配置从IP地址,该从IP地址作为VXLAN 30内虚拟机的网关地址。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip address 20.1.1.1 255.255.255.0 sub
[SwitchA-Vsi-interface1] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为20.1.1.0/24。
[SwitchA] vsi vpnc
[SwitchA-vsi-vpnc] gateway vsi-interface 1
[SwitchA-vsi-vpnc] gateway subnet 20.1.1.0 0.0.0.255
[SwitchA-vsi-vpnc] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Switch B上接口VSI-interface1的IP地址10.1.1.2。
[SwitchA] acl advanced 3000
[SwitchA-acl-ipv4-adv-3000] rule 0 permit ip
[SwitchA-acl-ipv4-adv-3000] quit
[SwitchA] policy-based-route vxlan10 permit node 5
[SwitchA-pbr-vxlan10-5] if-match acl 3000
[SwitchA-pbr-vxlan10-5] apply default-next-hop 10.1.1.2
[SwitchA-pbr-vxlan10-5] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Switch B上接口VSI-interface2的IP地址10.1.2.2。
[SwitchA] policy-based-route vxlan20 permit node 5
[SwitchA-pbr-vxlan20-5] if-match acl 3000
[SwitchA-pbr-vxlan20-5] apply default-next-hop 10.1.2.2
[SwitchA-pbr-vxlan20-5] quit
# 在VSI虚接口VSI-interface1和VSI-interface2上应用策略路由。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip policy-based-route vxlan10
[SwitchA-Vsi-interface1] quit
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip policy-based-route vxlan20
[SwitchA-Vsi-interface2] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[SwitchB] vsi vpnc
[SwitchB-vsi-vpnc] vxlan 30
[SwitchB-vsi-vpnc-vxlan-30] quit
[SwitchB-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2与VXLAN 10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置Tunnel2与VXLAN 20关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] tunnel 2
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置Tunnel3与VXLAN 30关联。
[SwitchB] vsi vpnc
[SwitchB-vsi-vpnc] vxlan 30
[SwitchB-vsi-vpnc-vxlan-30] tunnel 3
[SwitchB-vsi-vpnc-vxlan-30] quit
[SwitchB-vsi-vpnc] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip address 10.1.1.2 255.255.255.0
[SwitchB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip address 10.1.2.2 255.255.255.0
[SwitchB-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,并为其配置IP地址。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip address 20.1.1.2 255.255.255.0
[SwitchB-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface3关联。
[SwitchB] vsi vpnc
[SwitchB-vsi-vpnc] gateway vsi-interface 3
[SwitchB-vsi-vpnc] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] vxlan 30
[SwitchC-vsi-vpnc-vxlan-30] quit
[SwitchC-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置Tunnel1与VXLAN 20关联。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] tunnel 1
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置Tunnel1和Tunnel3与VXLAN 30关联。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] vxlan 30
[SwitchC-vsi-vpnc-vxlan-30] tunnel 1
[SwitchC-vsi-vpnc-vxlan-30] tunnel 3
[SwitchC-vsi-vpnc-vxlan-30] quit
[SwitchC-vsi-vpnc] quit
# 在接入VM 3的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-Ten-GigabitEthernet1/0/1] port trunk permit vlan 4
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnc关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnc
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] mac-address 1-1-1
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchC-Vsi-interface2] mac-address 2-2-2
[SwitchC-Vsi-interface2] distributed-gateway local
[SwitchC-Vsi-interface2] local-proxy-arp enable
[SwitchC-Vsi-interface2] quit
# 开启分布式网关的动态ARP表项同步功能。
[SwitchC] arp distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为10.1.1.0/24。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] gateway subnet 10.1.1.0 0.0.0.255
[SwitchC-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 2
[SwitchC-vsi-vpnb] quit
# 为VSI虚接口VSI-interface1配置从IP地址,该从IP地址作为VXLAN 30内虚拟机的网关地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 20.1.1.1 255.255.255.0 sub
[SwitchC-Vsi-interface1] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为20.1.1.0/24。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] gateway vsi-interface 1
[SwitchC-vsi-vpnc] gateway subnet 20.1.1.0 0.0.0.255
[SwitchC-vsi-vpnc] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Switch B上接口VSI-interface1的IP地址20.1.1.2。
[SwitchC] acl advanced 3000
[SwitchC-acl-ipv4-adv-3000] rule 0 permit ip
[SwitchC-acl-ipv4-adv-3000] quit
[SwitchC] policy-based-route vxlan permit node 5
[SwitchC-pbr-vxlan-5] if-match acl 3000
[SwitchC-pbr-vxlan-5] apply default-next-hop 20.1.1.2
[SwitchC-pbr-vxlan-5] quit
# 在VSI虚接口VSI-interface1上应用策略路由。
[SwitchC] interface vsi-interface1
[SwitchC-Vsi-interface1] ip policy-based-route vxlan
[SwitchC-Vsi-interface1] quit
(1) 验证分布式VXLAN IP网关设备Switch A
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0001-0001-0001
IPv6 packet frame type: Ethernet II, hardware address: 0001-0001-0001
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi name vpna verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : 5120 kbps
Multicast Restrain : 5120 kbps
Unknown Unicast Restrain: 5120 kbps
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type
Tunnel1 0x5000001 Up Manual
Tunnel2 0x5000002 Up Manual
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[SwitchA] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VID Interface/Link ID Aging Type
11.1.1.4 000c-29c1-5e46 11 Vlan11 19 D
10.1.1.2 0003-0000-0000 N/A 0x0 20 D
10.1.1.11 0cda-41b5-cf09 N/A 0x0 20 D
10.1.2.2 0004-0000-0000 N/A 0x1 20 D
10.1.2.11 0cda-41b5-cf89 N/A 0x1 20 D
20.1.1.12 0000-fc00-0b01 N/A 0x0 19 D
(2) 验证边界网关设备Switch B
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchB] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.2/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0011-2200-0102
IPv6 packet frame type: Ethernet II, hardware address: 0011-2200-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchB] display l2vpn vsi name vpna verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type
Tunnel1 0x5000001 Up Manual
Tunnel2 0x5000002 Up Manual
# 查看Switch B上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[SwitchB] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VID Interface/Link ID Aging Type
12.1.1.4 0000-fc00-00ab 12 Vlan12 14 D
25.1.1.5 4431-9234-24bb 20 Vlan20 17 D
10.1.1.1 0000-fc00-00ab N/A 0x0 17 D
10.1.1.11 0000-fc00-00ab N/A 0x0 20 D
10.1.2.1 0000-fc00-00bc N/A 0x1 17 D
10.1.1.11 0000-fc00-00bc N/A 0x1 20 D
20.1.1.1 0000-fc00-00aa N/A 0x2 17 D
20.1.1.12 0000-fc00-00aa N/A 0x2 20 D
# 查看Switch B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[SwitchB] display fib 10.1.1.11
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination/Mask Nexthop Flag OutInterface/Token Label
10.1.1.11/32 10.1.1.11 UH Vsi1 Null
[SwitchB] display fib 20.1.1.12
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination/Mask Nexthop Flag OutInterface/Token Label
20.1.1.12/32 20.1.1.12 UH Vsi1 Null
(3) 验证主机和广域网互访
虚拟机VM 1、VM 2、VM 3之间可以互访;VM 1、VM 2和VM 3可以与Switch E上接口Vlan-interface20的地址25.1.1.5之间互访。
Switch A、Switch C为分布式VXLAN IP网关设备,Switch B为与广域网连接的边界网关设备,Switch E为广域网内的三层交换机。虚拟机VM 1属于VXLAN 10,VM 2属于VXLAN 20。通过分布式VXLAN IP网关实现不同VXLAN网络的三层互联,并通过边界网关实现与广域网的三层互联。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图3-10 分布式VXLAN IP网关连接IPv6网络配置组网图
(1) 配置IPv6地址和单播路由协议
# 在VM 1和VM 2上分别指定网关地址为1::1、4::1。(具体配置过程略)
# 请按照图3-10配置各接口的地址;在IP核心网络内配置OSPF协议,确保交换机之间路由可达;配置Switch B和Switch E发布1::/64、4::/64和3::/64网段的路由。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置Tunnel1和Tunnel2与VXLAN 20关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] tunnel 1
[SwitchA-vsi-vpnb-vxlan-20] tunnel 2
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 在接入VM 1的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6任播地址,其中1::1/64地址作为VXLAN 10内虚拟机的网关地址、4::1/64作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地ND代理功能。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ipv6 address 1::1/64 anycast
[SwitchA-Vsi-interface1] ipv6 address 4::1/64 anycast
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-nd enable
[SwitchA-Vsi-interface1] quit
# 开启分布式网关的动态IPv6 ND表项同步功能。
[SwitchA] ipv6 nd distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为1::1/64。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] gateway subnet 1::1 64
[SwitchA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为4::1/64。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 1
[SwitchA-vsi-vpnb] gateway subnet 4::1 64
[SwitchA-vsi-vpnb] quit
# 配置静态路由,指定到达网络3::/64网络的路由下一跳为Switch B的IPv6地址1::2。
[SwitchA] ipv6 route-static 3:: 64 1::2
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置Tunnel2和Tunnel3与VXLAN20关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] tunnel 2
[SwitchB-vsi-vpnb-vxlan-20] tunnel 3
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6地址。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ipv6 address 1::2/64
[SwitchB-Vsi-interface1] ipv6 address 4::2/64
[SwitchB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 1
[SwitchB-vsi-vpnb] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置Tunnel1和Tunnel3与VXLAN 20关联。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] tunnel 1
[SwitchC-vsi-vpnb-vxlan-20] tunnel 3
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 在接入VM 2的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-Ten-GigabitEthernet1/0/1] port trunk permit vlan 4
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnb
[SwitchC-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6地址,其中1::1/64地址作为VXLAN 10内虚拟机的网关地址,4::1/64地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地ND代理功能。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ipv6 address 1::1/64 anycast
[SwitchC-Vsi-interface1] ipv6 address 4::1/64 anycast
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-nd enable
[SwitchC-Vsi-interface1] quit
# 开启分布式网关的动态IPv6 ND表项同步功能。
[SwitchC] ipv6 nd distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为1::1/64。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] gateway subnet 1::1 64
[SwitchC-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为4::1/64。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 1
[SwitchC-vsi-vpnb] gateway subnet 4::1 64
[SwitchC-vsi-vpnb] quit
# 配置静态路由,指定到达网络3::/64网络的路由下一跳为Switch B的IPv6地址4::2。
[SwitchC] ipv6 route-static 3:: 64 4::2
(1) 验证分布式VXLAN IP网关设备Switch A
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000kbps
Maximum transmission unit: 1500
Internet protocol processing: Disabled
IP packet frame type: Ethernet II, hardware address: 0011-2200-0102
IPv6 packet frame type: Ethernet II, hardware address: 0011-2200-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : 5120 kbps
Multicast Restrain : 5120 kbps
Unknown Unicast Restrain: 5120 kbps
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : Disabled
Flooding : Enabled
Gateway Interface : VSI-interface 1
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type
Tunnel1 0x5000001 Up Manual
Tunnel2 0x5000002 Up Manual
# 查看Switch A上IPv6 neighbors表项信息,可以看到已经建立的邻居信息。
[SwitchA] display ipv6 neighbors all
Type: S-Static D-Dynamic O-Openflow R-Rule I-Invalid
IPv6 address Link layer VID Interface State T Age
1::2 0003-0000-0000 N/A Vsi1 STALE D 7
1::100 0001-0000-0047 N/A Vsi1 STALE D 22
4::400 0002-0000-0047 N/A Vsi1 REACH D 5
FE80::201:FF:FE00:47 0001-0000-0047 N/A Vsi1 REACH D 30
FE80::202:FF:FE00:0 0002-0000-0000 N/A Vsi1 REACH D 27
FE80::202:FF:FE00:47 0002-0000-0047 N/A Vsi1 DELAY D 5
# 查看Switch A上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[SwitchA] display ipv6 fib 4::400
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 4::400 Prefix length: 128
Nexthop : 4::400 Flags: UH
Time stamp : 0x2c Label: Null
Interface : Vsi1 Token: Invalid
[SwitchA] display ipv6 fib 3::300
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 3:: Prefix length: 40
Nexthop : 1::2 Flags: USGR
Time stamp : 0x23 Label: Null
Interface : Vsi1 Token: Invalid
(2) 验证VXLAN IP边界网关设备Switch B
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchB] display interface Vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000kbps
Maximum transmission unit: 1500
Internet protocol processing: Disabled
IP packet frame type: Ethernet II, hardware address: 0011-2200-0102
IPv6 packet frame type: Ethernet II, hardware address: 0011-2200-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchB] display l2vpn vsi name vpna verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type
Tunnel1 0x5000001 Up Manual
Tunnel2 0x5000002 Up Manual
# 查看Switch B上IPv6 neighbors表项信息,可以看到已经建立的邻居信息。
[SwitchB] display ipv6 neighbors all
Type: S-Static D-Dynamic O-Openflow R-Rule I-Invalid
IPv6 address Link layer VID Interface State T Age
3::300 0003-0000-0047 N/A FGE2/0/24 DELAY D 3
FE80::203:FF:FE00:47 0003-0000-0047 N/A FGE2/0/24 STALE D 222
1::100 0001-0000-0047 N/A Vsi1 STALE D 232
4::400 0002-0000-0047 N/A Vsi1 REACH D 3
FE80::201:FF:FE00:0 0001-0000-0000 N/A Vsi1 STALE D 237
FE80::201:FF:FE00:47 0001-0000-0047 N/A Vsi1 STALE D 222
FE80::202:FF:FE00:0 0002-0000-0000 N/A Vsi1 STALE D 345
# 查看Switch B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[SwitchB] display ipv6 fib 1::100
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 1::100 Prefix length: 128
Nexthop : 1::100 Flags: UH
Time stamp : 0x21 Label: Null
Interface : Vsi1 Token: Invalid
[SwitchB] display ipv6 fib 4::400
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 4:: Prefix length: 64
Nexthop : :: Flags: U
Time stamp : 0x19 Label: Null
Interface : Vsi1 Token: Invalid
(3) 验证主机和广域网互访
虚拟机VM 1、VM 2之间可以互访,VM 1、VM 2和Switch E上接口Vlan-interface20的地址3::300之间可以互访。
VXLAN隧道只能用于数据中心内部,实现数据中心内部用户终端的互联。VXLAN-DCI(VXLAN Data Center Interconnection,VXLAN数据中心互联)隧道可以用来实现数据中心之间的互联。
VXLAN数据中心互联典型组网如图4-1所示。VXLAN-DCI隧道采用VXLAN封装格式,该隧道的端点称为ED(Edge Device,边缘设备)。ED与数据中心内部的VTEP建立VXLAN隧道。ED从VXLAN隧道或VXLAN-DCI隧道上接收到报文后,解除VXLAN封装,根据目的网络重新对报文进行VXLAN封装,并将其转发到VXLAN-DCI隧道或VXLAN隧道,从而实现VXLAN跨数据中心之间的互通。
图4-1 VXLAN数据中心互联典型组网图
VXLAN数据中心互联组网中,VTEP根据MAC地址表项对流量进行二层转发。ED根据ARP表项或ND表项对流量进行三层转发。
图4-2 VXLAN数据中心互联原理图
如图4-2所示,所有的ED上都需要创建VSI虚接口,并为不同ED上的相同VSI虚接口配置相同的IP地址,作为VXLAN网络内用户终端的网关地址。在ED上还需要开启本地代理ARP功能(IPv4网络)或本地ND代理功能(IPv6网络)。
以Terminal 1访问Terminal 4为例,相同VXLAN内不同站点的用户终端的通信过程为:
(1) Terminal 1广播发送ARP请求消息,获取Terminal 4的MAC地址。
(2) VTEP 1收到ARP请求消息后,学习Terminal 1的MAC地址,并在Terminal 1所属的VXLAN内广播该ARP请求。
(3) ED 1接收到ARP请求后,解除VXLAN封装,学习Terminal 1的ARP信息,并代理应答该ARP请求,即:向Terminal 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。ARP应答消息通过VXLAN隧道发送给VTEP 1。
(4) VTEP 1解除VXLAN封装,学习ED 1的MAC地址,并将ARP应答消息转发给Terminal 1。
(5) Terminal 1学习Terminal 4的MAC地址,该地址为ED 1上VSI虚接口10的MAC地址。
(6) ED 1将接收到的ARP请求消息中的源MAC地址修改为VSI虚接口10的MAC地址,对该消息进行VXLAN封装后,将其发送给VXLAN 10内的所有远端ED。
(7) ED 2对VXLAN报文进行解封装后,学习Terminal 1的ARP信息(IP为10.1.1.100、MAC为ED 1上VSI虚接口10的MAC、出接口为接收该VXLAN报文的VXLAN-DCI模式Tunnel接口),将ARP请求消息中的源MAC修改为本地VSI虚接口10的MAC地址,并在VXLAN 10的所有VXLAN隧道上进行广播。
(8) VTEP 2收到ARP请求后,解除VXLAN封装,学习ED 2的MAC地址,并向本地站点广播该ARP请求。
(9) Terminal 4收到ARP请求后,学习Terminal 1的ARP信息(IP为10.1.1.100、MAC为ED 2上VSI虚接口10的MAC),并发送ARP应答消息给VTEP 2。
(10) VTEP 2 收到ARP应答消息后,查找MAC地址表,对报文进行VXLAN封装后发送给ED 2。
(11) ED 2根据接收到的ARP应答消息学习Terminal 4的ARP信息,将ARP应答消息中的源MAC修改为本地VSI虚接口10的MAC地址,并根据已经学习到的ARP表项,为ARP应答消息添加VXLAN封装后发送给ED 1。
(12) ED 1对VXLAN报文进行解封装后,根据收到的ARP应答消息学习Terminal 4的ARP信息(IP为10.1.1.200、MAC为ED 2上VSI虚接口10的MAC、出接口为接收该VXLAN报文的VXLAN-DCI模式Tunnel接口)。
(13) 通过上述步骤完成MAC地址表项和ARP表项的学习后,Terminal 1发送给Terminal 4的报文,根据已经学习到的表项进行转发:首先VTEP 1添加VXLAN封装,发送给ED 1;ED 1重新进行VXLAN封装后,通过VXLAN-DCI隧道将其发送给ED 2;ED 2重新封装后,通过VXLAN隧道将其发送给VTEP 2;VTEP 2将报文转发给Terminal 4。
以Terminal 1访问Terminal 5为例,不同VXLAN内用户终端的通信过程为:
(1) Terminal 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。
(2) VTEP 1收到ARP请求消息后,学习Terminal 1的MAC地址,并在Terminal 1所属的VXLAN内广播该ARP请求。
(3) ED 1接收到ARP请求后,解除VXLAN封装,学习Terminal 1的ARP信息,并向Terminal 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。ARP应答消息通过VXLAN隧道发送给VTEP 1。
(4) VTEP 1解除VXLAN封装,学习ED 1的MAC地址,并将ARP应答消息转发给Terminal 1。
(5) Terminal 1学习网关的ARP信息,并将访问Terminal 5的报文发送给VTEP 1。
(6) VTEP 1查找MAC地址表项,填加VXLAN封装后,将报文发送给ED 1。
(7) ED 1收到数据报文后,解除VXLAN封装,并根据报文的目的IP地址查找路由表。由于目的IP地址与VSI虚接口20的接口IP地址在同一网段,ED 1在VXLAN 20内向所有VTEP和ED广播发送ARP请求,获取Terminal 5的MAC地址。ARP请求的源IP地址为20.1.1.1、目标IP地址为20.1.1.200、源MAC为ED 1上VSI虚接口20的MAC地址。
(8) ED 2接收到VXLAN报文后,对其进行解封装,将ARP请求中的源MAC修改为本地VSI虚接口20的MAC地址,并在VXLAN 20的所有VXLAN隧道上广播该ARP请求。
(9) VTEP 2收到ARP请求后,解除VXLAN封装,学习ED 2的MAC地址,并向本地站点广播该ARP请求。
(10) Terminal 5收到ARP请求后,学习ED 2的ARP信息(IP为20.1.1.1、MAC为ED 2上VSI虚接口20的MAC地址),并发送ARP应答消息给VTEP 2。
(11) VTEP 2 收到ARP应答消息后,查找MAC地址表项,对报文进行VXLAN封装后发送给ED 2。
(12) ED 2根据接收到的ARP应答消息学习Terminal 5的ARP信息,并通过VXLAN-DCI隧道向ED 1发送免费ARP消息(源IP为20.1.1.200、目标IP为20.1.1.200、源MAC为ED 2上VSI虚接口20的MAC地址)。
(13) ED 1对VXLAN报文进行解封装后,根据收到的免费ARP消息学习Terminal 5的ARP信息(IP为20.1.1.200、 MAC为ED 2上VSI虚接口20的MAC地址、出接口为接收该VXLAN报文的VXLAN-DCI模式Tunnel接口)。
(14) 通过上述步骤ED 1学习到了Terminal 5的ARP信息,ED 2学习Terminal 1的ARP信息的过程同上面过程类似。ED 1和ED 2均学习到Terminal 1和Terminal 5的ARP信息后,Terminal 1发送给Terminal 5的报文根据已经学习到的表项进行转发。
VXLAN-DCI隧道和VXLAN隧道建议不要共用一个公网侧端口,否则会导致报文丢失。
在VXLAN数据中心互联组网中,各设备上需要进行如下配置:
· IP核心网络中的设备配置路由协议,确保ED之间路由可达。
· ED和VTEP上配置路由协议,确保二者之间路由可达。
· ED和VTEP上配置VXLAN,在二者之间建立VXLAN隧道。
· ED上配置VXLAN数据中心互联,在ED之间建立VXLAN-DCI隧道。
VXLAN数据中心互联的大部分配置与VXLAN配置、VXLAN IP网关配置相同。表4-1罗列了VXLAN数据中心互联支持的所有配置。本文只介绍与VXLAN、VXLAN IP网关不同的配置,二者相同的配置请分别参见“2 配置VXLAN”和“3 VXLAN IP网关”。
表4-1 VXLAN数据中心互联配置任务简介
配置任务 |
说明 |
详细配置 |
创建VSI和VXLAN |
必选 配置方式与VXLAN相同 |
|
创建VXLAN-DCI隧道 |
必选 |
|
关联VXLAN与VXLAN-DCI隧道 |
必选 |
|
配置VSI虚接口 |
必选 |
|
为VSI指定网关接口 |
必选 |
|
配置VXLAN报文的目的UDP端口号 |
可选 配置方式与VXLAN相同 |
|
配置VXLAN报文检查功能 |
可选 配置方式与VXLAN相同 |
|
配置VXLAN流量统计 |
可选 配置方式与VXLAN相同,且仅支持VSI的报文统计功能 |
手工创建VXLAN隧道时,隧道的源端地址和目的端地址需要分别手工指定为本地和远端ED的接口地址。在同一台设备上,VXLAN-DCI隧道模式的不同Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。关于interface tunnel、source和destination命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
表4-2 手工创建VXLAN-DCI隧道
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN-DCI隧道的全局源地址 |
tunnel global source-address ip-address |
缺省情况下,未配置VXLAN-DCI隧道的全局源地址 如果隧道下未配置源地址或源接口,则隧道会使用全局源地址作为隧道的源地址 |
创建模式为VXLAN-DCI隧道的Tunnel接口,并进入Tunnel接口视图 |
interface tunnel tunnel-number mode vxlan-dci |
缺省情况下,不存在Tunnel接口 在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败 |
配置隧道的源端地址或源接口 |
source { ipv4-address | interface-type interface-number } |
缺省情况下,未设置VXLAN隧道的源端地址和源接口 如果设置的是隧道的源端地址,则该地址将作为封装后VXLAN报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后VXLAN报文的源IP地址 采用VXLAN组播路由泛洪方式时,VXLAN-DCI隧道的源接口不能是Loopback接口、源端地址不能是Loopback接口的地址 |
配置隧道的目的端地址 |
destination ipv4-address |
缺省情况下,未指定隧道的目的端地址 隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后VXLAN报文的目的地址 |
一个VXLAN可以关联多条VXLAN-DCI隧道。一条VXLAN-DCI隧道可以关联多个VXLAN,这些VXLAN共用该VXLAN-DCI隧道,ED根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。ED接收到某个VXLAN的泛洪流量后,如果采用单播路由泛洪方式,则ED将在与该VXLAN关联的所有VXLAN-DCI隧道上发送该流量,以便将流量转发给所有的远端VTEP。
表4-3 手工关联VXLAN与VXLAN-DCI隧道
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入VXLAN视图 |
vxlan vxlan-id |
- |
配置VXLAN与VXLAN-DCI隧道关联 |
tunnel { tunnel-number [ remote-vni vxlan-id ] | all } |
缺省情况下,VXLAN未关联VXLAN-DCI隧道 ED必须与相同VXLAN内的其它ED建立VXLAN-DCI隧道,并将该隧道与VXLAN关联 指定remote-vni vxlan-id参数后,ED将本地VXLAN ID替换为指定的远端VXLAN ID 属于同一用户的不同数据中心使用了不同的VXLAN ID。如果用户想将这两个数据中心当作同一个VXLAN网络进行互联,则需要在数据中心的ED上指定remote-vni vxlan-id参数 |
表4-4 配置VSI虚接口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,设备上不存在任何VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
|
配置VSI虚接口的IPv4地址或IPv6地址 |
配置VSI虚接口的IPv4地址 |
ip address ip-address { mask | mask-length } [ sub ] |
缺省情况下,未配置VSI虚接口的IPv4地址和IPv6地址 |
配置VSI虚接口的IPv6地址 |
IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础” |
||
配置VSI虚接口为分布式网关接口 |
distributed-gateway local |
缺省情况下,VSI虚接口不是分布式本地网关接口 |
|
开启本地代理ARP功能 |
local-proxy-arp enable [ ip-range startIP to endIP ] |
对于IPv4网络,必选 缺省情况下,本地代理ARP功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP” |
|
开启本地ND代理功能 |
local-proxy-nd enable |
对于IPv6网络,必选 缺省情况下,本地ND代理功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础” |
|
配置VSI虚接口的MAC地址 |
mac-address mac-address |
缺省情况下,VSI虚接口的MAC地址为设备的桥MAC地址+1 |
|
(可选)配置接口的描述信息 |
description text |
缺省情况下,接口的描述信息为“接口名 Interface”,例如:Vsi-interface100 Interface |
|
(可选)配置接口的MTU |
mtu mtu-value |
缺省情况下,接口的MTU为1444字节 |
|
(可选)配置接口的期望带宽 |
bandwidth bandwidth-value |
缺省情况下,接口的期望带宽=接口的波特率÷1000(kbps) |
|
(可选)恢复当前接口的缺省配置 |
default |
- |
|
(可选)开启VSI虚接口的ARP报文发送限速功能 |
arp send-rate pps |
缺省情况下,VSI虚接口的ARP报文发送限速功能处于关闭状态 |
|
开启当前接口 |
undo shutdown |
缺省情况下,接口处于开启状态 |
表4-5 为VSI指定网关接口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,没有为VSI指定网关接口 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN数据中心互联的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN数据中心互联的相关信息。
表4-6 VXLAN数据中心互联显示和维护
操作 |
命令 |
显示VSI的信息 |
display l2vpn vsi [ name vsi-name ] [ verbose ] |
显示Tunnel接口信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示VXLAN关联的VXLAN-DCI隧道信息 |
display vxlan tunnel [ vxlan-id vxlan-id ] |
清除VSI的报文统计信息 |
reset l2vpn statistics vsi [ name vsi-name ] |
display interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
Switch B、Switch D为ED。虚拟机VM 1、VM 3属于VXLAN 10,VM 2属于VXLAN 20。通过VXLAN数据中心互联实现不同数据中心、不同VXLAN网络的互联。
具体需求为:
· 手工建立VXLAN隧道和VXLAN-DCI隧道。
· 手工关联VXLAN和VXLAN隧道、VXLAN-DCI隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图4-3 VXLAN数据中心互联配置组网图
(1) 配置IP地址和单播路由协议
请按照图4-3配置各接口的IP地址和子网掩码;在各台交换机上配置OSPF协议,确保交换机之间路由可达;配置Switch B和Switch D发布10.1.1.0/24、10.1.2.0/24网段的路由。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 配置Tunnel1与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置Tunnel1与VXLAN 20关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] tunnel 1
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧,并将该服务实例与VSI实例vpna关联。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上创建以太网服务实例1000,该实例用来匹配VLAN 200的数据帧,并将该服务实例与VSI实例vpnb关联。
[SwitchA] interface ten-gigabitethernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/2-srv1000] encapsulation s-vid 200
[SwitchA-Ten-GigabitEthernet1/0/2-srv1000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet1/0/2-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/2] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch B和Switch A之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址2.2.2.2。
· 指定隧道的目的端地址为Switch A上接口Loopback0的地址1.1.1.1。
[SwitchB] interface tunnel 1 mode vxlan
[SwitchB-Tunnel1] source 2.2.2.2
[SwitchB-Tunnel1] destination 1.1.1.1
[SwitchB-Tunnel1] quit
# 在Switch B和Switch D之间建立VXLAN-DCI隧道:
· 创建模式为VXLAN-DCI的隧道接口Tunnel2。
· 指定隧道的源端地址为本地接口Loopback0的地址2.2.2.2。
· 指定隧道的目的端地址为Switch D上接口Loopback0的地址3.3.3.3。
[SwitchB] interface tunnel 2 mode vxlan-dci
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 3.3.3.3
[SwitchB-Tunnel2] quit
# 配置Tunnel1、Tunnel2与VXLAN 10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 1
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置Tunnel1、Tunnel2与VXLAN 20关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] tunnel 1
[SwitchB-vsi-vpnb-vxlan-20] tunnel 2
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchB-Vsi-interface2] distributed-gateway local
[SwitchB-Vsi-interface2] local-proxy-arp enable
[SwitchB-Vsi-interface2] quit
# 为VXLAN 10所在的VSI实例vpna指定VSI虚接口VSI-interface1。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(4) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchD] vsi vpna
[SwitchD-vsi-vpna] vxlan 10
[SwitchD-vsi-vpna-vxlan-10] quit
[SwitchD-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchD] interface loopback 0
[SwitchD-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchD-Loopback0] quit
# 在Switch D和Switch E之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址3.3.3.3。
· 指定隧道的目的端地址为Switch E上接口Loopback0的地址4.4.4.4。
[SwitchD] interface tunnel 1 mode vxlan
[SwitchD-Tunnel1] source 3.3.3.3
[SwitchD-Tunnel1] destination 4.4.4.4
[SwitchD-Tunnel1] quit
# 在Switch D和Switch B之间建立VXLAN-DCI隧道:
· 创建模式为VXLAN-DCI的隧道接口Tunnel2。
· 指定隧道的源端地址为本地接口Loopback0的地址3.3.3.。
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchD] interface tunnel 2 mode vxlan-dci
[SwitchD-Tunnel2] source 3.3.3.3
[SwitchD-Tunnel2] destination 2.2.2.2
[SwitchD-Tunnel2] quit
# 配置Tunnel1、Tunnel2与VXLAN 10关联。
[SwitchD] vsi vpna
[SwitchD-vsi-vpna] vxlan 10
[SwitchD-vsi-vpna-vxlan-10] tunnel 1
[SwitchD-vsi-vpna-vxlan-10] tunnel 2
[SwitchD-vsi-vpna-vxlan-10] quit
[SwitchD-vsi-vpna] quit
# 配置Tunnel2与VXLAN 20关联。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] tunnel 2
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchD] interface vsi-interface 1
[SwitchD-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchD-Vsi-interface1] distributed-gateway local
[SwitchD-Vsi-interface1] local-proxy-arp enable
[SwitchD-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[SwitchD] interface vsi-interface 2
[SwitchD-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchD-Vsi-interface2] distributed-gateway local
[SwitchD-Vsi-interface2] local-proxy-arp enable
[SwitchD-Vsi-interface2] quit
# 为VXLAN 10所在的VSI实例vpna指定VSI虚接口VSI-interface1。
[SwitchD] vsi vpna
[SwitchD-vsi-vpna] gateway vsi-interface 1
[SwitchD-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] gateway vsi-interface 2
[SwitchD-vsi-vpnb] quit
(5) 配置Switch E
# 开启L2VPN能力。
<SwitchE> system-view
[SwitchE] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchE] vsi vpna
[SwitchE-vsi-vpna] vxlan 10
[SwitchE-vsi-vpna-vxlan-10] quit
[SwitchE-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchE] interface loopback 0
[SwitchE-Loopback0] ip address 4.4.4.4 255.255.255.255
[SwitchE-Loopback0] quit
# 在Switch E和Switch D之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1。
· 指定隧道的源端地址为本地接口Loopback0的地址4.4.4.4。
· 指定隧道的目的端地址为Switch D上接口Loopback0的地址3.3.3.3。
[SwitchE] interface tunnel 1 mode vxlan
[SwitchE-Tunnel1] source 4.4.4.4
[SwitchE-Tunnel1] destination 3.3.3.3
[SwitchE-Tunnel1] quit
# 配置Tunnel1与VXLAN 10关联。
[SwitchE] vsi vpna
[SwitchE-vsi-vpna] vxlan 10
[SwitchE-vsi-vpna-vxlan-10] tunnel 1
[SwitchE-vsi-vpna-vxlan-10] quit
[SwitchE-vsi-vpna] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(1) 验证ED(下文以Switch B为例,其它设备验证方法与此类似)
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchB] display interface vsi-interface
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.1/24 (primary)
IP packet frame type:PKTFMT_ETHNT_2, hardware address: 0011-2200-0102
IPv6 packet frame type:PKTFMT_ETHNT_2, hardware address: 0011-2200-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Vsi-interface2
Current state: UP
Line protocol state: UP
Description: Vsi-interface2 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.2.1/24 (primary)
IP packet frame type:PKTFMT_ETHNT_2, hardware address: 0011-3300-0102
IPv6 packet frame type:PKTFMT_ETHNT_2, hardware address: 0011-3300-0102
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN,与VSI关联的VSI虚接口,以及VXLAN关联的VXLAN隧道、VXLAN-DCI隧道等信息。
[SwitchB] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
VSI Name: vpnb
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Gateway interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
# 查看Switch B上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[SwitchB] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VID Interface/Link ID Aging Type
11.1.1.4 000c-29c1-5e46 N/A Vlan11 19 D
10.1.1.11 0cda-41b5-cf09 N/A Vsi1 20 D
10.1.1.12 0011-4400-0102 N/A Vsi1 20 D
10.1.2.11 0cda-41b5-cf89 N/A Vsi2 20 D
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
OVSDB(Open vSwitch Database,开源虚拟交换机数据库)控制协议用来实现NVC(Network Virtualization Controller,网络虚拟化控制器)对网络中VTEP设备的管理和部署。
如图5-1所示,VTEP设备上维护OVSDB数据库,VXLAN相关配置以表项的形式保存在该数据库中。控制器与VTEP设备上的OVSDB服务器建立连接,二者采用OVSDB控制协议进行交互并操作OVSDB数据库中的数据。OVSDB VTEP服务从OVSDB服务器获取数据库中的数据,将其转变为VXLAN相关配置(例如创建或删除VXLAN、创建或删除VXLAN隧道)下发到设备上。同时,OVSDB VTEP服务也会通过OVSDB服务器,将本地的用户侧接入端口和VXLAN隧道全局源地址信息添加到数据库中,并上报给控制器。
用户可以同时通过命令行和控制器配置VTEP设备。建议不要在VTEP设备上通过命令行删除控制器下发的配置。
与OVSDB相关的协议规范有:
· RFC 7047:The Open vSwitch Database Management Protocol
要实现控制器对VTEP设备的部署,需要在VTEP设备上完成表5-1所示配置。
表5-1 OVSDB-VTEP配置任务简介
配置任务 |
说明 |
详细配置 |
|
与控制器建立OVSDB连接 |
与控制器建立主动SSL连接 |
必选 OVSDB服务器支持同时与多个控制器建立连接,且支持同时建立多种类型的连接 在开启OVSDB服务器之前,必须先进行本配置。如果在开启OVSDB服务器之后修改本配置,那么需要关闭OVSDB服务器后再重新开启,新的连接配置才能生效 |
|
与控制器建立被动SSL连接 |
|||
与控制器建立主动TCP连接 |
|||
与控制器建立被动TCP连接 |
|||
开启OVSDB服务器 |
必选 |
||
开启OVSDB VTEP服务 |
必选 |
||
配置VXLAN隧道的全局源地址 |
必选 |
||
指定用户侧的接入端口 |
必选 |
在进行OVSDB-VTEP相关配置前,需要首先通过l2vpn enable命令开启L2VPN功能,该命令的详细介绍请参见“MPLS命令参考”中的“MPLS L2VPN”。
如果OVSDB服务器与控制器之间建立SSL连接,则还需要完成SSL相关配置,详细配置方法请参见“安全配置指导”中的“SSL”。
OVSDB服务器和控制器之间可以建立多种类型的OVSDB连接,设备支持的OVSDB连接类型包括:
· 主动SSL连接:OVSDB服务器主动向控制器发起SSL连接。该连接方式必须指定SSL使用的PKI域。OVSDB服务器最多可以同时与8个控制器建立主动SSL连接。
· 被动SSL连接:OVSDB服务器监听并接收来自控制器的SSL连接请求。该连接方式必须指定SSL使用的PKI域。OVSDB服务器只能监听1个端口的SSL连接请求。
· 主动TCP连接:OVSDB服务器主动向控制器发起TCP连接。OVSDB服务器最多可以同时与8个控制器建立主动TCP连接。
· 被动TCP连接:OVSDB服务器监听并接收来自控制器的TCP连接请求。OVSDB服务器只能监听1个端口的TCP连接请求。
所有SSL连接,包括主动SSL连接和被动SSL连接,使用相同的PKI域和CA证书文件。
表5-2 与控制器建立主动SSL连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
指定与控制器进行SSL通信时使用的PKI域 |
ovsdb server pki domain domain-name |
缺省情况下,未指定与控制器进行SSL通信时使用的PKI域 PKI域需提前配置,具体方法请参见“安全配置指导”中的“PKI” |
(可选)设置SSL通信时使用的CA证书文件 |
ovsdb server bootstrap ca-certificate ca-filename |
缺省情况下,与控制器进行SSL通信时使用PKI域中的CA证书文件 |
与控制器建立主动SSL连接 |
ovsdb server ssl ip ip-address port port-number |
缺省情况下,不会与控制器建立主动SSL连接 |
表5-3 与控制器建立被动SSL连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
指定与控制器进行SSL通信时使用的PKI域 |
ovsdb server pki domain domain-name |
缺省情况下,未指定与控制器进行SSL通信时使用的PKI域 PKI域需提前配置,具体方法请参见“安全配置指导”中的“PKI” |
(可选)设置SSL通信时使用的CA证书文件 |
ovsdb server bootstrap ca-certificate ca-filename |
缺省情况下,与控制器进行SSL通信时使用PKI域中的CA证书文件 |
与控制器建立被动SSL连接 |
ovsdb server pssl [ port port-number ] |
缺省情况下,不会与控制器建立被动SSL连接 |
表5-4 与控制器建立主动TCP连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
与控制器建立主动TCP连接 |
ovsdb server tcp ip ip-address port port-number |
缺省情况下,不会与控制器建立主动TCP连接 |
表5-5 与控制器建立被动TCP连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
与控制器建立被动TCP连接 |
ovsdb server ptcp [ port port-number ] |
缺省情况下,不会与控制器建立被动TCP连接 |
需要注意的是,为了保证OVSDB服务器能够与控制器建立连接,在开启OVSDB服务器前,必须先配置至少一条与控制器的连接。
表5-6 开启OVSDB服务器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启OVSDB服务器 |
ovsdb server enable |
缺省情况下,OVSDB服务器处于关闭状态 |
表5-7 开启OVSDB VTEP服务
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启OVSDB VTEP服务 |
vtep enable |
缺省情况下,OVSDB VTEP服务处于关闭状态 |
用户需要在VTEP设备上配置VXLAN隧道的全局源地址,该地址会通过OVSDB协议上报给控制器,用于控制器对VTEP设备进行部署和控制。
采用OVSDB对VTEP设备进行部署和控制时,用户不能在VXLAN隧道的Tunnel接口下手工指定源地址,否则会影响控制器对VTEP设备的管理。
表5-8 配置VXLAN隧道的全局源地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN隧道的全局源地址 |
tunnel global source-address ip-address |
缺省情况下,未配置VXLAN隧道的全局源地址 |
为了在控制器上显示VTEP上的端口并对其进行控制,必须在VTEP上将该端口配置为用户侧的接入端口。
将接口配置为接入侧端口后,建议不要在该接口下进行手工配置,避免影响控制器对接入侧端口的管理。
表5-9 指定接入侧端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
· 进入二层以太网接口视图: · 进入二层聚合接口视图: |
- |
指定当前接口为用户侧的接入端口 |
vtep access port |
缺省情况下,当前接口不是用户侧的接入端口 |
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 通过控制器下发配置,在不同VTEP之间建立VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图5-2 OVSDB-VTEP头端复制组网图
(1) 配置IP地址、单播路由协议、控制器
请按照图5-2配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置与控制器建立主动SSL连接,SSL连接使用的PKI域为a,连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchA] ovsdb server pki domain a
[SwitchA] ovsdb server ssl ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[SwitchA] ovsdb server enable
# 开启OVSDB VTEP服务。
[SwitchA] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchA] interface loopback 0
[SwitchA-LoopBack0] ip address 1.1.1.1 255.255.255.255
[SwitchA-LoopBack0] quit
[SwitchA] tunnel global source-address 1.1.1.1
# 指定接入服务器的接口Ten-GigabitEthernet1/0/1上为用户侧的接入端口。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] vtep access port
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN功能。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置与控制器建立主动SSL连接,SSL连接使用的PKI域为a,连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchB] ovsdb server pki domain a
[SwitchB] ovsdb server ssl 10.0.2.15 port 6632
# 开启OVSDB服务器。
[SwitchB] ovsdb server enable
# 开启OVSDB VTEP服务。
[SwitchB] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchB] interface loopback 0
[SwitchB-LoopBack0] ip address 2.2.2.2 255.255.255.255
[SwitchB-LoopBack0] quit
[SwitchB] tunnel global source-address 2.2.2.2
# 指定接入服务器的接口Ten-GigabitEthernet1/0/1上为用户侧的接入端口。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] vtep access port
[SwitchB-Ten-GigabitEthernet1/0/1] quit
(4) 配置Switch C
# 开启L2VPN功能。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置与控制器建立主动SSL连接,SSL连接使用的PKI域为a,连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchC] ovsdb server pki domain a
[SwitchC] ovsdb server ssl ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[SwitchC] ovsdb server enable
# 开启OVSDB VTEP服务。
[SwitchC] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] ip address 3.3.3.3 255.255.255.255
[SwitchC-LoopBack0] quit
[SwitchC] tunnel global source-address 3.3.3.3
# 指定接入服务器的接口Ten-GigabitEthernet1/0/1上为用户侧的接入端口。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] vtep access port
[SwitchC-Ten-GigabitEthernet1/0/1] quit
(5) 控制器上进行VXLAN配置(略)
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: evpn2014
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv2 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic evpn2014 Tunnel1 Aging
cc3e-5f9c-23dc Dynamic evpn2014 Tunnel2 Aging
--- 2 mac address(es) found ---
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!