01-VXLAN配置
本章节下载: 01-VXLAN配置 (926.02 KB)
目 录
2.19.3 配置Ping方式检测IPv6 VXLAN隧道的连通性
2.19.4 配置Tracert方式检测VXLAN隧道的连通性
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN主要应用于数据中心网络和园区接入网络。
VXLAN具有如下优点:
· 支持大量的租户:使用24位的标识符,最多可支持2的24次方(16777216)个VXLAN,使支持的租户数目大规模增加,解决了传统二层网络VLAN资源不足的问题。
· 易于维护:基于IP网络组建大二层网络,使得网络部署和维护更加容易,并且可以充分地利用现有的IP网络技术,例如利用等价路由进行负载分担等;只有IP核心网络的边缘设备需要进行VXLAN处理,网络中间设备只需根据IP头转发报文,降低了网络部署的难度和费用。
VXLAN技术将已有的三层物理网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在一个局域网中。
站点网络既可以是IPv4网络也可以是IPv6网络,Underlay网络只能是IPv4网络。
图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比特。
本文档中如无特殊说明,均以VM为例介绍VXLAN工作机制。采用其他类型用户终端时,VXLAN工作机制与VM相同,不再赘述。
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):VXLAN的边缘设备。VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。
· 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一一对应。
· AC(Attachment Circuit,接入电路):VTEP连接本地站点的物理电路或虚拟电路。在VTEP上,与VSI关联的以太网服务实例(service instance)称为AC。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。
如图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比特。
图1-2 VXLAN报文封装示意图
VXLAN运行机制可以概括为:
(1) 发现远端VTEP,在VTEP之间建立VXLAN隧道,并将VXLAN隧道与VXLAN关联。
(2) 识别接收到的报文所属的VXLAN,以便将报文的源MAC地址学习到VXLAN对应的VSI,并在该VSI内转发该报文。
(3) 学习虚拟机的MAC地址。
(4) 根据学习到的MAC地址表项转发报文。
为了将VXLAN报文传递到远端VTEP,需要创建VXLAN隧道,并将VXLAN隧道与VXLAN关联。
VXLAN隧道的建立方式有如下两种:
· 手工方式:手工配置Tunnel接口,并指定隧道的源和目的IP地址分别为本端和远端VTEP的IP地址。
· 自动方式:通过EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)发现远端VTEP后,自动在本端和远端VTEP之间建立VXLAN隧道。EVPN的详细介绍请参见“EVPN配置指导”。
VXLAN隧道与VXLAN关联的方式有如下两种:
· 手工方式:手工将VXLAN隧道与VXLAN关联。
· 自动方式:通过EVPN协议自动关联VXLAN隧道与VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
VTEP采用如下几种方式在数据帧和VXLAN之间建立关联:
· 将以太网服务实例与VSI关联:以太网服务实例定义了一系列匹配规则,如匹配指定VLAN的报文、匹配接口接收到的所有报文等。从二层以太网接口上接收到的、与规则匹配的数据帧均属于指定的VSI/VXLAN。
· 将VLAN与VXLAN关联:VTEP接收到的该VLAN的数据帧均属于指定的VXLAN。
VTEP从指定VLAN或以太网服务实例接收到数据帧后,根据关联方式判断报文所属的VXLAN。
如图1-3所示,VM 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到VM 1发送的数据帧后,可以判定该数据帧属于VXLAN 10。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
MAC地址学习分为本地MAC地址学习和远端MAC地址学习两部分:
· 本地MAC地址学习
是指VTEP对本地站点内虚拟机MAC地址的学习。本地MAC地址的学习方式有如下几种:
¡ 静态配置:手工指定本地MAC地址所属的VSI(VXLAN),及其对应的以太网服务实例(即AC)。
¡ 通过报文中的源MAC地址动态学习:VTEP接收到本地虚拟机发送的数据帧后,判断该数据帧所属的VSI,并将数据帧中的源MAC地址(本地虚拟机的MAC地址)添加到该VSI的MAC地址表中,该MAC地址对应的接口为接收到数据帧的接口。
· 远端MAC地址学习
是指VTEP对远端站点内虚拟机MAC地址的学习。远端MAC地址的学习方式有如下几种:
¡ 静态配置:手工指定远端MAC地址所属的VSI(VXLAN),及其对应的VXLAN隧道接口。
¡ 通过报文中的源MAC地址动态学习:VTEP从VXLAN隧道上接收到远端VTEP发送的VXLAN报文后,根据VXLAN ID判断报文所属的VXLAN,对报文进行解封装,还原二层数据帧,并将数据帧中的源MAC地址(远端虚拟机的MAC地址)添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为VXLAN隧道接口。
¡ 通过BGP EVPN学习:在VTEP上运行BGP EVPN,通过BGP EVPN将本地MAC地址及其所属的VXLAN信息通告给远端VTEP。远端VTEP接收到该信息后,在VXLAN对应VSI的MAC地址表中添加MAC地址表项。EVPN的详细介绍请参见“EVPN配置指导”。
¡ 通过OpenFlow下发:OpenFlow控制器以流表的形式向VTEP设备下发远端MAC地址表项。OpenFlow的详细介绍请参见“OpenFlow配置指导”。
¡ 通过OVSDB下发:控制器通过OVSDB协议向VTEP设备下发远端MAC地址表项。
通过不同方式学习到的远端MAC地址优先级由高到低依次为:
a. 静态配置、OpenFlow下发、OVSDB下发的MAC地址优先级相同,且优先级最高。
b. 通过BGP EVPN学习的MAC地址优先级次之。
c. 动态学习的MAC地址优先级最低。
完成本地和远端MAC地址学习后,VTEP在VXLAN内转发单播流量的过程如下所述。
对于站点内流量,VTEP判断出报文所属的VSI后,根据目的MAC地址查找该VSI的MAC地址表,从相应的本地接口转发给目的VM。
如图1-4所示,VM 1(MAC地址为MAC 1)发送以太网帧到VM 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内发送给VM 4。
如图1-5所示,以VM 1(MAC地址为MAC 1)发送以太网帧给VM 7(MAC地址为MAC 7)为例,站点间单播流量的转发过程为:
(1) VM 1发送以太网数据帧给VM 7,数据帧的源MAC地址为MAC 1,目的MAC为MAC 7,VLAN ID为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内将数据帧发送给VM 7。
VTEP从本地站点接收到泛洪流量(组播、广播和未知单播流量)后,将其转发给除接收接口外的所有本地接口和VXLAN隧道。为了避免环路,VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道,只会转发给所有本地接口。
根据复制方式的不同,流量泛洪方式分为单播路由方式(头端复制)、组播路由方式(核心复制)和泛洪代理方式(服务器复制)。
如图1-6所示,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用组播路由方式可以节省泛洪流量对核心网络带宽资源的占用。
如图1-7所示,在组播路由方式下,同一个VXLAN内的所有VTEP都加入同一个组播组,利用组播路由协议(如PIM)在IP核心网上为该组播组建立组播转发表项。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会为其封装组播目的IP地址,封装后的报文根据已建立的组播转发表项转发到远端VTEP。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用泛洪代理方式可以在没有组播协议参与的情况下,节省泛洪流量对核心网络带宽资源的占用。
如图1-8所示,在泛洪代理方式下,同一个VXLAN内的所有VTEP都通过手工方式与代理服务器建立隧道。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会将其发送到代理服务器,由代理服务器转发到其他远端VTEP。
目前泛洪代理方式主要用于SDN网络,使用虚拟服务器作为泛洪代理服务器。采用泛洪代理方式时,需要在VTEP上进行如下配置:
· 使用vxlan tunnel mac-learning disable命令关闭远端MAC地址自动学习功能,采用SDN控制器下发的MAC地址表项进行流量转发。
· 在网络侧接口上使用undo mac-address static source-check enable命令关闭报文入接口与静态MAC地址表项匹配检查功能。当VTEP设备为IRF设备时,成员设备间互连的IRF端口上也需要关闭报文入接口与静态MAC地址表项匹配检查功能。
接入模式分为VLAN接入模式和Ethernet接入模式两种。
在该模式下,从本地站点接收到的和发送给本地站点的以太网帧必须带有VLAN Tag。
· VTEP从本地站点接收到以太网帧后,删除该帧的所有VLAN Tag,再转发该数据帧;
· VTEP发送以太网帧到本地站点时,为其添加本地站点的VLAN Tag。
采用该模式时,VTEP不会传递VLAN Tag信息,不同站点可以独立地规划自己的VLAN,不同站点的不同VLAN之间可以互通。
在该模式下,从本地站点接收到的和发送给本地站点的以太网帧可以携带VLAN Tag,也可以不携带VLAN Tag。
· VTEP从本地站点接收到以太网帧后,保持该帧的VLAN Tag信息不变,转发该数据帧;
· VTEP发送以太网帧到本地站点时,不会为其添加VLAN Tag。
采用该模式时,VTEP会在不同站点间传递VLAN Tag信息,不同站点的VLAN需要统一规划,否则无法互通。
与VXLAN相关的协议规范有:
· RFC 7348:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
在VXLAN组网中,不能开启生成树协议,仅可以使用边缘端口的BPDU保护功能来防止AC侧出现环路。
VXLAN组网中,需要在VTEP上进行如下配置:
(1) 创建VSI和VXLAN
(2) 配置VXLAN隧道
(4) 建立数据帧与VSI的关联
(5) (可选)管理本地和远端MAC地址
(6) (可选)配置VXLAN over VXLAN功能
(7) 配置VXLAN组播路由泛洪方式
采用组播路由泛洪方式时,必须执行本配置。
(8) (可选)配置VXLAN报文相关功能
(9) (可选)减少发送到核心网的泛洪流量
(10) 维护VXLAN网络
在VXLAN组网中,IP核心网络中的设备上需要配置路由协议,确保VTEP之间路由可达。
如果在VSI视图下同时执行了bandwidth命令和restrain命令,则对于广播、未知组播或未知单播流量,仅通过restrain命令限制该类流量,bandwidth命令不能限制该类流量。bandwidth命令仅能控制未通过restrain命令限制的流量。
(1) 进入系统视图。
system-view
(2) 开启L2VPN功能。
l2vpn enable
缺省情况下,L2VPN功能处于关闭状态。
(3) 创建VSI,并进入VSI视图。
vsi vsi-name
(4) 开启VSI。
undo shutdown
缺省情况下,VSI处于开启状态。
(5) 创建VXLAN,并进入VXLAN视图。
vxlan vxlan-id
在一个VSI下只能创建一个VXLAN。
不同VSI下创建的VXLAN,其VXLAN ID不能相同。
(6) (可选)配置VSI相关参数。
a. 退回VSI视图。
quit
b. 配置VSI的描述信息。
description text
缺省情况下,未配置VSI的描述信息。
c. 配置VSI的MTU值。
mtu size
缺省情况下,VSI的MTU值为1500字节。
d. 配置VSI内流量的最大带宽。
bandwidth bandwidth
缺省情况下,未配置VSI内流量的最大带宽,即不限制VSI内的流量。
e. 配置VSI的广播、组播或未知单播抑制带宽。
restrain { broadcast | multicast | unknown-unicast } bandwidth
缺省情况下,不抑制VSI的广播、未知组播和未知单播流量。
f. 开启VSI的MAC地址学习功能。
mac-learning enable
缺省情况下,VSI的MAC地址学习功能处于开启状态。
g. 配置允许VSI学习到的最大MAC地址数。
mac-table limit mac-limit
缺省情况下,不对VSI学习到的最大MAC地址数进行限制。
h. 配置当VSI学习到的MAC地址数达到最大值后,禁止转发源MAC地址不在MAC地址表里的报文。
mac-table limit drop-unknown
缺省情况下,当VSI学习到的MAC地址数达到最大值后,允许转发源MAC地址不在MAC地址表里的报文,但是不会学习报文的源MAC地址。
手工创建VXLAN隧道时,隧道的源端地址和目的端地址需要分别手工指定为本地和远端VTEP的接口地址。
在同一台设备上,VXLAN隧道模式的不同Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
如果设备上配置了通过EVPN自动建立并关联VXLAN隧道,则隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。
(1) 进入系统视图。
system-view
(2) (可选)配置VXLAN隧道的全局源地址。
tunnel global source-address ipv4-address
缺省情况下,未配置VXLAN隧道的全局源地址。
如果隧道下未配置源地址或源接口,则隧道会使用全局源地址作为隧道的源地址。
(3) 创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode vxlan
在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败。
(4) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source ipv4-address
指定的地址将作为封装后VXLAN报文的源IP地址。
¡ 指定隧道的源接口。
source interface-type interface-number
采用指定接口的IP地址作为封装后VXLAN报文的源IP地址。
缺省情况下,未设置VXLAN隧道的源端地址。
采用OVSDB对VTEP设备进行部署和控制时,不能执行本配置。
采用VXLAN组播路由泛洪方式时,VXLAN隧道的源接口不能是Loopback接口、源端地址不能是Loopback接口的地址。
(5) 配置隧道的目的端地址。
destination ipv4-address
缺省情况下,未指定隧道的目的端地址。
隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后VXLAN报文的目的地址。
隧道的BFD检测功能用来避免VTEP设备无法感知或无法及时感知隧道的故障,导致报文转发失败。开启隧道的BFD检测功能后,VTEP设备周期性地通过VXLAN隧道向配置的目的MAC地址发送单跳BFD控制报文。如果在5秒内未接收到对端发送的BFD控制报文,则将隧道状态置为Defect,隧道接口状态仍为Up。VXLAN隧道故障排除后隧道状态将自动恢复为Up。
隧道两端的VTEP设备上均需要开启隧道的BFD检测功能。
(1) 进入系统视图。
system-view
(2) 配置保留VXLAN。
reserved vxlan vxlan-id
缺省情况下,未指定保留VXLAN。
配置隧道的BFD检测功能时,必须配置保留VXLAN。否则,BFD会话无法up。
设备上只能配置一个保留VXLAN,且该VXLAN不能与VSI下创建的VXLAN相同。
配置的保留VXLAN不能与mapping vni命令配置的映射远端VXLAN相同。mapping vni命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(3) 进入VXLAN隧道模式的Tunnel接口视图。
interface tunnel tunnel-number
(4) 开启隧道的BFD检测功能。
tunnel bfd enable destination-mac mac-address
缺省情况下,隧道的BFD检测功能处于关闭状态。
VXLAN组网中的水平分割功能是指,VTEP设备上VXLAN隧道接口的流量,不会向属于相同水平分割组内相同类型的VXLAN隧道接口转发,从而避免流量在VXLAN网络中形成环路。不同类型或属于不同水平分割组的VXLAN隧道接口之间可以转发流量,不受水平分割的影响。
缺省情况下,VXLAN隧道接口属于缺省水平分割组,在缺省水平分割组中。相同类型的VXLAN隧道接口之间存在水平分割,不同类型的VXLAN隧道接口之间不存在水平分割。
在某些特殊组网中,流量需要在相同类型的VXLAN隧道接口之间进行转发。本功能支持将相同类型的VXLAN隧道接口加入不同的水平分割组,实现相同类型VXLAN隧道接口之间的流量互通。
在VXLAN网络中请谨慎使用本功能,以免引起网络环路。
VXLAN组网中的水平分割功能对单播、组播和广播流量均生效。
本功能对VXLAN M-LAG组网中作为peer-link链路的VXLAN隧道接口不生效,即无论是否配置本功能,该VXLAN隧道接口都会受到水平分割的影响。
(1) 进入系统视图。
system-view
(2) 进入VXLAN隧道模式的Tunnel接口视图。
interface tunnel tunnel-number
(3) 配置VXLAN隧道接口所属的水平分割组。
split-group split-group-name
缺省情况下,VXLAN隧道接口属于缺省水平分割组。
一个VXLAN可以关联多条VXLAN隧道。一条VXLAN隧道可以关联多个VXLAN,这些VXLAN共用该VXLAN隧道,VTEP根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。VTEP接收到某个VXLAN的泛洪流量后,如果采用单播路由泛洪方式,则VTEP将在与该VXLAN关联的所有VXLAN隧道上发送该流量,以便将流量转发给所有的远端VTEP;如果采用泛洪代理方式,则VTEP通过与该VXLAN关联、通过flooding-proxy参数开启了泛洪代理功能的VXLAN隧道将泛洪流量发送给泛洪代理服务器。
VTEP必须与相同VXLAN内的其它VTEP建立VXLAN隧道,并将该隧道与VXLAN关联。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VXLAN视图。
vxlan vxlan-id
(4) 配置VXLAN与VXLAN隧道关联。
tunnel { tunnel-number [ backup-tunnel tunnel-number | flooding-proxy ] | all }
缺省情况下,VXLAN未关联VXLAN隧道。
参数 |
说明 |
backup-tunnel tunnel-number |
本参数指定的隧道作为备用VXLAN隧道,为主用VXLAN隧道提供保护。当主用VXLAN隧道down时,VXLAN将启用备用VXLAN隧道 |
flooding-proxy |
如果指定了本参数,则VXLAN内的广播、组播和未知单播流量将通过该隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP |
开启VLAN关联VXLAN功能后,不能再手工或动态创建以太网服务实例,如需创建以太网服务实例,请先执行undo vxlan vlan-based命令关闭VLAN关联VXLAN功能后再创建;反之,手工或动态创建以太网服务实例后,不能再开启VLAN关联VXLAN功能,如需开启该功能,请先删除所有的以太网服务实例后再开启。
手工创建以太网服务实例,并将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。
配置本功能时,需要注意:对于以太网服务实例所匹配的VLAN,需要在设备上创建对应的VLAN,并在创建以太网服务实例的接口配置允许该VLAN通过。
请不要在同一个二层以太网接口/二层聚合接口上同时配置以下功能:
· VLAN映射、以太网服务实例与VSI关联
· QinQ、以太网服务实例与VSI关联
· 接口桥功能、以太网服务实例与VSI关联
· 端口安全、以太网服务实例与VSI关联
否则,可能导致这些功能不可用。
建议不要将以太网服务实例所在的二层聚合接口配置为聚合边缘接口 ;若以太网服务实例所在的二层聚合接口必须配置为聚合边缘接口,则建议同时将二层聚合接口及子接口配置为AC口,避免流量转发失败。
在同一接口下,如果需要同时创建一下两类以太网服务实例并关联VSI:
· 匹配报文单个外层VLAN tag(encapsulation s-vid vlan-id)
· 同时匹配报文的外层和内层VLAN tag,并且匹配多个外层VLAN tag(encapsulation s-vid vlan-id-list c-vid vlan-id-list)
请先配置匹配报文单个外层VLAN tag的以太网服务实例,否则匹配报文单个外层VLAN tag的以太网服务实例将配置失败。
同一接口下不同以太网服务实例,不能配置匹配相同外层VLAN tag不同内层VLAN tag的报文匹配规则。
配置encapsulation命令时,只要通过vlan-id-list参数指定了匹配多个VLAN tag,以太网服务实例便只能通过Ethernet接入方式与VSI关联。否则,该以太网服务实例无法正常生效。
配置以太网服务实例的报文匹配规则时需要注意的事项请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 手工创建以太网服务实例,并进入以太网服务实例视图。
service-instance instance-id
(4) 配置以太网服务实例的报文匹配规则。请选择其中一项进行配置。
¡ 匹配报文的外层VLAN tag。
encapsulation s-vid vlan-id [ only-tagged ]
encapsulation s-vid vlan-id-list
¡ 同时匹配报文的外层和内层VLAN tag。
encapsulation s-vid vlan-id-list c-vid vlan-id-list
encapsulation s-vid vlan-id c-vid all
当vlan-id-list表示c-vid时,仅能输入一段连续的vlan-id。
¡ 匹配携带VLAN tag或不携带VLAN tag的所有报文。
encapsulation { tagged | untagged }
¡ 匹配未匹配到接口上其他以太网服务实例的所有报文。
encapsulation default
同一个接口上最多只能有一个服务实例的报文匹配规则为encapsulation default。
如果接口上只存在一个配置了encapsulation default规则的以太网服务实例,则该接口上的所有报文都匹配该以太网服务实例。
缺省情况下,未配置报文匹配规则。
(5) (可选)配置入方向报文的处理规则。
rewrite inbound tag { nest s-vid vlan-id | remark 1-to-1 s-vid vlan-id | strip s-vid }
缺省情况下,不对入方向报文进行处理。
(6) (可选)配置出方向报文的处理规则。
rewrite outbound tag strip s-vid
缺省情况下,不对出方向报文进行处理。
(7) (可选)配置AC上流量的最大带宽。
bandwidth bandwidth
缺省情况下,未配置AC上流量的最大带宽,即不限制AC上的流量。
(8) 将以太网服务实例与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } | on-demand ] [ track track-entry-number&<1-3> ]
缺省情况下,以太网服务实例未关联VSI。
802.1X或MAC地址认证为用户下发授权VSI、Guest VSI、Auth-Fail VSI或Critical VSI后,将用户信息(接入端口、所属VLAN、MAC地址等)及VSI信息通知给VXLAN。VXLAN根据用户信息动态创建以太网服务实例,并将其与VSI关联。802.1X和MAC地址认证的详细介绍,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
动态创建的以太网服务实例可以通过以下匹配方式判断接口接收到的报文是否属于该AC:
· VLAN方式:检查报文携带的VLAN ID是否与以太网服务实例匹配的VLAN ID相同。只有二者相同,报文才属于该AC。
· MAC地址方式:检查报文携带的VLAN ID、源MAC地址是否分别与以太网服务实例匹配的VLAN ID、MAC地址相同。只有VLAN ID、源MAC地址均相同时,报文才属于该AC。
缺省情况下,动态创建的以太网服务实例采用VLAN匹配方式。如果需要采用MAC地址方式,那么必须采用MAC地址认证或基于MAC接入控制的802.1X认证,并开启动态创建的以太网服务实例匹配MAC地址功能。
采用VLAN方式时,仅需完成802.1X或MAC地址认证相关配置,并在接入认证设备上配置Guest VSI、Auth-Fail VSI、Critical VSI,或在远程AAA服务器上配置为认证成功用户下发授权VSI。完成上述配置后,接入认证设备上会自动地创建以太网服务实例,并将其与Guest VSI、Auth-Fail VSI、Critical VSI或授权VSI关联。
802.1X或MAC地址认证的配置方法,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 开启动态创建的以太网服务实例匹配MAC地址功能。
mac-based ac
缺省情况下,动态创建的以太网服务实例匹配MAC地址功能处于关闭状态,即动态创建的以太网服务实例只匹配VLAN。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(4) 配置MAC接入控制的802.1X认证或MAC地址认证。
完成802.1X或MAC地址认证相关配置,并在接入认证设备上配置Guest VSI、Auth-Fail VSI、Critical VSI,或在远程AAA服务器上配置为认证成功用户下发授权VSI。
完成上述配置后,接入认证设备上会自动地创建以太网服务实例,并将其与Guest VSI、Auth-Fail VSI、Critical VSI或授权VSI关联。
802.1X或MAC地址认证的配置方法,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
开启VLAN关联VXLAN功能,并在VLAN视图下配置与该VLAN关联的VXLAN后,如果存在属于该VLAN的接口,则自动在该接口上创建编号为当前VLAN ID、匹配外层VLAN tag为当前VLAN ID的以太网服务实例,并将该以太网服务实例与指定VXLAN对应的VSI关联,从而确保属于该VLAN的数据帧均通过指定的VSI转发。
将VLAN与VXLAN关联后,该VLAN内将不能进行普通的二层转发,该VLAN对应的VLAN接口也不能进行三层转发。
与VXLAN关联的VLAN数目、允许这些VLAN通过的Trunk类型的端口数目较多时,AC创建和删除过程可能会耗费一定的时间,VXLAN、EVPN等相关操作需要等待AC创建、删除完成后才会响应。
本配置中指定的与VLAN关联的VXLAN需要通过vxlan命令创建。
(1) 进入系统视图。
system-view
(2) 开启VLAN关联VXLAN功能。
vxlan vlan-based
缺省情况下,VLAN关联VXLAN功能处于关闭状态。
(3) 进入VLAN视图。
vlan vlan-id
本配置中指定的VLAN不能为VLAN 1。
(4) 配置VLAN与指定的VXLAN关联。
vxlan vni vxlan-id
缺省情况下,未指定与VLAN关联的VXLAN。
本地MAC地址可以静态添加,也可以通过报文中的源MAC地址动态学习。在动态添加、删除本地MAC地址时,可以记录日志信息。
远端MAC地址表项的产生方法包括静态添加、根据接收到的VXLAN报文内封装的源MAC地址自动学习等。
请不要为EVPN动态创建的隧道配置静态远端MAC地址表项,避免出现如下问题:
· 如果公网侧接口down,设备将删除已创建的隧道,同时删除为该隧道配置的静态远端MAC地址表项,公网侧接口重新up后会自动重新建立隧道,但是无法恢复静态远端MAC地址表项;
· 如果执行了配置回滚操作,设备会重新创建隧道,新创建的隧道编号可能发生变化,造成配置回滚失败。
有关EVPN的介绍请参见“EVPN配置指导”。
(1) 进入系统视图。
system-view
(2) 添加静态本地MAC地址表项。
mac-address static mac-address interface interface-type interface-number service-instance instance-id vsi vsi-name
本命令中指定的以太网服务实例必须与指定的VSI关联,否则配置将失败
(3) 添加静态远端MAC地址表项。
mac-address static mac-address interface tunnel tunnel-number vsi vsi-name
interface tunnel interface-number参数指定的隧道接口必须与vsi vsi-name参数指定的VSI对应的VXLAN关联,否则配置将失败。
当关闭以太网服务实例的MAC地址自动学习功能后,只能通过mac-address static命令添加静态本地MAC地址表项。
开启以太网服务实例的MAC地址自动学习功能前,需要先在该以太网服务实例关联的VSI视图下执行mac-learning enable命令,开启VSI的MAC地址学习功能。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 进入以太网服务实例视图。
service-instance instance-id
(4) 关闭以太网服务实例的MAC地址自动学习功能。
learning mode disable
缺省情况下,以太网服务实例的MAC地址自动学习功能处于开启状态。
如果网络中存在攻击,为了避免学习到错误的远端MAC地址,可以手工关闭远端MAC地址自动学习功能,手动添加静态的远端MAC地址。
本功能仅对手工创建的VXLAN隧道生效。
(1) 进入系统视图。
system-view
(2) 关闭远端MAC地址自动学习功能。
vxlan tunnel mac-learning disable
缺省情况下,远端MAC地址自动学习功能处于开启状态。
开启本地MAC地址的日志记录功能后,VXLAN会立即根据已经学习到的本地MAC地址表项生成日志信息,之后在增加或删除本地MAC地址时也将产生日志信息。生成的日志信息将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
(1) 进入系统视图。
system-view
(2) 开启本地MAC地址的日志记录功能。
vxlan local-mac report
缺省情况下,本地MAC地址的日志记录功能处于关闭状态。
以太网服务实例(即AC)的MAC地址学习功能分为两个优先级:高优先级和低优先级。对于低优先级的AC,在学习MAC地址时需要查看高优先级AC是否已经学到该MAC地址,如果已经学到,则不允许学习该MAC地址;对于高优先级的AC,在学习MAC地址时如果已经有低优先级的AC或其他高优先级的AC学习到该MAC地址,则覆盖之前的MAC地址表项。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 进入以太网服务实例视图。
service-instance instance-id
(4) 配置以太网服务实例的MAC地址学习优先级。
mac-address mac-learning priority { high | low }
缺省情况下,MAC地址学习优先级为低优先级。
只有以太网服务实例与VSI关联后,本配置才会生效。
本功能适用于SDN(Software Defined Network,软件定义网络)组网。
在SDN组网中,设备将接口学习到的MAC地址上传给控制器,控制器把收到的MAC地址下发给其它远端设备,以减少不必要的广播流量。
接口的MAC地址学习方式包括:
· 硬件学习:接口通过硬件学习MAC地址。软件周期性地检查硬件是否学习到新的MAC地址,把学到的地址上传控制器处理。硬件学习方式下需等待软件检查周期的到来,控制器获取MAC地址的速度较慢。
· 软件学习:接口通过软件学习MAC地址。软件把学到的MAC地址下发给硬件,同时上传控制器处理。软件学习方式下不需等待软件检查周期的到来,控制器获取MAC地址的速度较快。
开启接口的MAC地址软件学习功能后,大量的MAC地址学习可能对系统造成冲击,不建议用户在大量MAC地址频繁变化的情况下开启本功能。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 开启接口的MAC地址软件学习功能。
l2vpn mac-address software-learning enable
缺省情况下,接口的MAC地址软件学习功能处于关闭状态,设备采用硬件方式学习MAC地址。
(4) (可选)配置接口的MAC地址数学习上限。
mac-address max-mac-count count
缺省情况下,未配置接口的MAC地址数学习上限。
有关本命令的详细介绍请参见“二层技术-以太网交换命令参考”中的“MAC地址表”。
缺省情况下,设备接收到报文后,如果报文的目的UDP端口号为VXLAN报文目的端口号(可以通过vxlan udp-port命令配置),则会对其进行VXLAN解封装。即使在报文的接收接口上创建了AC(创建以太网服务实例,并将其与VSI关联),设备也会对接收到的VXLAN报文解封装后,再添加新的VXLAN封装,无法实现VXLAN封装的嵌套。
如果用户希望VXLAN报文穿越VXLAN网络,则需要在报文接收接口上开启VXLAN over VXLAN功能,并在该接口上创建AC。这样,设备从该接口接收到VXLAN报文后,不会对其解封装,从而实现VXLAN封装的嵌套。
不要在公网侧接口上开启本功能。
对于二层聚合接口,只需在该接口上开启VXLAN over VXLAN功能,聚合接口的成员接口上无需开启本功能。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 开启VXLAN over VXLAN功能。
vxlan-over-vxlan enable
缺省情况下,VXLAN over VXLAN功能处于关闭状态。
组播路由泛洪方式支持如下两种实现模式:
· PIM模式:在VTEP和核心设备上运行PIM协议,以建立组播转发表项。采用该模式时,为确保组播报文转发正常,VXLAN组播报文的源IP地址(source-address)需要指定为一个已创建且处于up状态的VXLAN隧道的源端地址,可以使用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。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VXLAN视图。
vxlan vxlan-id
(4) 配置VXLAN泛洪的组播地址和组播报文的源IP地址。
group group-address source source-address
缺省情况下,未指定VXLAN泛洪的组播地址和组播报文的源IP地址,VXLAN采用单播路由方式泛洪。
执行本命令后,VTEP将加入指定的组播组。同一VXLAN的所有VTEP要加入相同的组播组。
(5) 进入接口视图。
interface interface-type interface-number
Loopback接口和与核心设备相连的接口上均需要使能PIM协议。
(6) 在接口上使能PIM协议。请选择其中一项进行配置。
¡ 使能PIM-SM。
pim sm
¡ 使能PIM-DM。
pim dm
缺省情况下,接口上PIM协议处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VXLAN视图。
vxlan vxlan-id
(4) 配置VXLAN泛洪的组播地址和组播报文的源IP地址。
group group-address source source-address
缺省情况下,未指定VXLAN泛洪的组播地址和组播报文的源IP地址,VXLAN采用单播路由方式泛洪。
执行本命令后,VTEP将加入指定的组播组。同一VXLAN的所有VTEP要加入相同的组播组。
(5) 进入与核心设备相连接口的接口视图。
interface interface-type interface-number
(6) 在接口上开启IGMP协议的主机功能。
igmp host enable
缺省情况下,接口上IGMP协议的主机功能处于关闭状态。
执行本命令后,当前接口将作为IGMP主机,即从该接口收到IGMP查询报文后,通过该接口发送组播组的报告报文,以便接收该组播组的报文。
system-view
(2) 配置VXLAN报文的目的UDP端口号。
vxlan udp-port port-number
缺省情况下,VXLAN报文的目的UDP端口号为4789。
属于同一个VXLAN的VTEP设备上需要配置相同的UDP端口号。
通过本配置可以实现对接收到的VXLAN报文的UDP校验和、内层封装的以太网数据帧是否携带VLAN Tag进行检查:
· UDP校验和检查:VTEP接收到VXLAN报文后,检查该报文的UDP校验和是否为0。若UDP校验和为0,则接收该报文;若UDP校验和不为0,则检查UDP检验和是否正确,正确则接收该报文;否则,丢弃该报文。
· VLAN Tag检查:VTEP接收到VXLAN报文并对其解封装后,若内层以太网数据帧带有VLAN Tag,则丢弃该VXLAN报文。
远端VTEP上通过xconnect vsi命令的access-mode参数配置接入模式为ethernet时,VXLAN报文可能携带VLAN Tag。这种情况下建议不要在本端VTEP上执行vxlan invalid-vlan-tag discard命令,以免错误地丢弃报文。
(1) 进入系统视图。
system-view
(2) 配置丢弃UDP校验和检查失败的VXLAN报文。
vxlan invalid-udp-checksum discard
缺省情况下,不会检查VXLAN报文的UDP校验和。
(3) 配置丢弃内层数据帧含有VLAN Tag的VXLAN报文。
vxlan invalid-vlan-tag discard
缺省情况下,不会检查VXLAN报文内层封装的以太网数据帧是否携带VLAN Tag。
在建立单向IPv4 VXLAN隧道的组网(即对端建立了指向本端的VXLAN隧道,但本端未建立指向对端的VXLAN隧道)中,本端从对端接收到VXLAN报文后,会因为无法解封装而丢弃该报文。配置本功能后,如果本端接收到的VXLAN报文的目的地址为BGP邻居地址、虚拟VTEP/ED地址(evpn m-lag group)、M-LAG系统的本地地址(evpn m-lag local)或指定源接口的IPv4地址,则本端会解封装该报文,不会丢弃。可以通过如下两种方式配置本功能:
· vxlan default-decapsulation source方式:本端接收到的VXLAN报文的目的地址为指定源接口的IPv4/IPv6地址,本端会解封装该报文,不会丢弃。
· vxlan default-decapsulation enable方式:本端接收到的VXLAN报文的目的地址为BGP邻居地址、虚拟VTEP/ED地址(evpn m-lag group)或M-LAG系统的本地地址(evpn m-lag local),本端都会解封装该报文,不会丢弃。
只有指定的接口上配置了IPv4地址,本功能才生效。
如果在建立单向IPv4 VXLAN隧道的组网中配置本功能后,又建立了以指定源接口下配置的IPv4地址为源地址的、指向对端的IPv4 VXLAN隧道,则本功能失效。
(1) 进入系统视图。
system-view
(2) 配置缺省解封装IPv4 VXLAN报文功能,请至少选择其中的一项进行配置。
¡ 开启缺省解封装IPv4 VXLAN报文功能。
vxlan default-decapsulation enable
缺省情况下,缺省解封装IPv4 VXLAN报文功能处于关闭状态。
¡ 开启缺省解封装指定IPv4 VXLAN报文功能。
vxlan default-decapsulation source interface interface-type interface-number
缺省情况下,缺省解封装指定IPv4 VXLAN报文功能处于关闭状态。
当AC的接入模式为VLAN模式时,VTEP会为通过AC发送到本地站点的以太网帧添加本地站点的VLAN Tag。
· 若以太网帧携带VLAN Tag,则将最外层的VLAN Tag替换为本地站点的VLAN Tag。
· 若以太网帧未携带VLAN Tag,则为以太网帧添加本地站点的VLAN Tag。
如果业务需要以太网帧在携带原有VLAN Tag的基础上再添加本地站点的VLAN Tag后转发到本地站点,则可以在VTEP上配置本功能。配置本功能后,从VLAN接入模式的AC转发到本地站点的以太网帧都会再添加一层本地站点的VLAN Tag。
本命令仅对VLAN接入模式的AC生效。
(1) 进入系统视图。
system-view
(2) 开启AC出方向报文添加VLAN Tag功能。
l2vpn ac tag-mode nest
缺省情况下,AC出方向报文添加VLAN Tag功能处于关闭状态。
缺省情况下,VTEP从本地站点内接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点;VTEP从VXLAN隧道接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内的所有本地接口上泛洪该数据帧。通过本配置可以手工禁止某类数据帧在VXLAN内泛洪,以减少网络中的泛洪流量。
禁止通过VXLAN隧道向远端站点泛洪后,为了将某些单播或组播MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 关闭VSI的泛洪功能。
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } [ all-direction ]
缺省情况下,VSI泛洪功能处于开启状态。
(4) (可选)配置VSI选择性泛洪的MAC地址。
selective-flooding mac-address mac-address
缺省情况下,AC接收到泛洪报文后,会在属于同一个VSI的其他所有本地AC上泛洪该报文。通过本配置,AC接收到的泛洪报文不能在同一个接口的不同以太网服务实例上泛洪,可以在不同接口的以太网服务实例上泛洪,以免引起广播风暴。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 进入以太网服务实例视图。
service-instance instance-id
(4) 配置在AC间隔离泛洪报文。
flooding disable source-port
缺省情况下,允许在AC之间泛洪报文。
本配置用来开启VSI的报文统计功能,用户可以使用display l2vpn vsi verbose命令查看VSI的报文统计信息,使用reset l2vpn statistics vsi命令清除VSI的报文统计信息。
(1) 进入系统视图。
system-view
(2) 进入VXLAN所在VSI视图。
vsi vsi-name
(3) 开启VSI的报文统计功能。
statistics enable
缺省情况下,VSI的报文统计功能处于关闭状态。
只有为以太网服务实例配置了报文匹配方式并绑定了VSI实例,以太网服务实例的报文统计功能才会生效。如果在报文统计过程中修改报文匹配方式或绑定的VSI实例,则报文统计重新开始。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 进入以太网服务实例视图。
service-instance instance-id
(4) 开启以太网服务实例的报文统计功能。
statistics enable
缺省情况下,以太网服务实例的报文统计功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 开启VLAN下对应AC的报文统计功能。
ac statistics enable
缺省情况下,VLAN下对应AC的报文统计功能处于关闭状态。
本功能用来对VLAN与VXLAN关联方式下自动生成的AC进行报文统计。开启本功能前,必须先执行vxlan vlan-based命令开启VLAN关联VXLAN功能。
VXLAN隧道既可以手工创建,也可以通过EVPN等协议自动创建。手工创建VXLAN隧道的报文统计功能需要在Tunnel接口下开启;自动创建VXLAN隧道的报文统计功能在系统视图下全局开启。开启VXLAN隧道的报文统计功能后,可以通过display interface tunnel命令查看统计信息,通过reset counters interface tunnel命令清除VXLAN隧道的统计信息。
(1) 进入系统视图。
system-view
(2) 进入模式为VXLAN隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode vxlan ]
(3) 开启手工创建VXLAN隧道的报文统计功能。
statistics enable
缺省情况下,手工创建VXLAN隧道的报文统计功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 开启自动VXLAN隧道的报文统计功能。
tunnel statistics vxlan auto [ destination ipv4-address ]
缺省情况下,自动VXLAN隧道的报文统计功能处于关闭状态。
目前,自动VXLAN隧道包括EVPN自动创建的VXLAN隧道和OVSDB VTEP自动创建的VXLAN隧道。EVPN的详细介绍请参见“EVPN配置指导”;OVSDB的详细介绍请参见“3 OVSDB-VTEP”。
通过本功能配置的流量统计信息收集时间间隔对VSI的报文统计、AC的报文统计和VXLAN隧道的报文统计功能均生效。
(1) 进入系统视图。
system-view
(2) 设置L2VPN统计信息收集的时间间隔。
l2vpn statistics interval interval
缺省情况下,L2VPN统计信息收集的时间间隔为15分钟。
执行本配置后,设备将模拟本端虚拟机向远端虚拟机发送ICMP回显请求报文,该报文封装在二层数据帧中,并在指定的VXLAN内发送。本端设备根据是否收到ICMP回显应答报文、收到ICMP回显应答报文的时间,判断在该VXLAN内指定远端虚拟机是否可达。
在使用VXLAN内远端虚拟机连通性检测功能时,需要先执行emulate-ping vxlan enable命令开启VXLAN内远端虚拟机的连通性检测功能。
在EVPN M-LAG组网中,作为M-LAG设备的VTEP不支持本功能。关于EVPN M-LAG的详细介绍,请参见“EVPN配置指导”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 开启VXLAN内远端虚拟机的连通性检测功能。
emulate-ping vxlan enable
(3) 请在任意视图下执行本命令,检测VXLAN内远端虚拟机的连通性。
emulate-ping vxlan [ -c count | -m interval | -s packet-size | -t time-out ] * vxlan-id vxlan-id source-mac mac-address destination-mac mac-address
在隧道源节点上检测VXLAN隧道的连通性前,需要在VXLAN隧道的尾节点上执行本配置,否则隧道尾节点无法正常识别检测报文,导致检测失败。
如果隧道源节点执行ping vxlan/tracert vxlan,或者ping vxlan ipv6/tracert vxlan ipv6命令时指定-r reply-mode参数为3,则还需要在隧道源节点上执行本命令。
(1) 进入系统视图。
system-view
(2) 开启VXLAN隧道的连通性检测功能。
overlay oam enable
缺省情况下,VXLAN隧道的连通性检测功能处于关闭状态。
在VXLAN组网中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能检测VTEP设备间VXLAN隧道的连通性。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装。
(2) 远端VTEP设备收到VXLAN Echo Request报文后,回复VXLAN Echo Reply报文。
(3) 本端设备根据是否收到VXLAN Echo Reply报文、收到VXLAN Echo Reply报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历检测。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
指定vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ]参数后,每个源UDP端口号对应VXLAN Echo Request报文的发送数目由-c count参数决定。
通过本功能检测VXLAN隧道的连通性时,需要在VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测VXLAN隧道的连通性。
ping vxlan [ -a inner-src-address | -c count | -m interval | -r reply-mode | -t timeout | -tos tos-value ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ] | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
在VXLAN组网中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能检测VTEP设备间VXLAN隧道的连通性。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-ipv6-address tunnel-destination dest-ipv6-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装。
(2) 远端VTEP设备收到VXLAN Echo Request报文后,回复VXLAN Echo Reply报文。
(3) 本端设备根据是否收到VXLAN Echo Reply报文、收到VXLAN Echo Reply报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历检测。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
指定vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ]参数后,每个源UDP端口号对应VXLAN Echo Request报文的发送数目由-c count参数决定。
通过本功能检测IPv6 VXLAN隧道的连通性时,需要在IPv6 VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测IPv6 VXLAN隧道的连通性。
ping vxlan [ -a inner-src-ipv6-address | -c count | -m interval | -r reply-mode | -t timeout | -tos tos-value ] * ipv6 vxlan-id vxlan-id tunnel-source source-ipv6-address tunnel-destination dest-ipv6-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-ipv6-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ] | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
在VXLAN中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能查看VXLAN隧道所经过的路径,并根据应答信息对错误点进行定位。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装且IPv4报文头部的TTL字段取值设置为1。
(2) 下一个节点收到报文后,TTL字段的值变成0,会向首节点(即本端VTEP)发送ICMP的TTL超时报文。
(3) 本端VTEP收到ICMP报文后,将TTL字段的取值加1(此时设置为2)继续发送VXLAN Echo Request报文。
(4) 下游节点收到报文后,依次将TTL减1,直到TTL为0,该节点会向首节点发送ICMP报文;若为目的节点则向首节点发送VXLAN Echo Reply报文。
(5) 本端VTEP依次重复上述过程,直至TTL达到最大值或收到远端VTEP发送的应答报文。
(6) 本端VTEP设备根据是否收到应答报文、收到应答报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
通过本命令检测VXLAN隧道的连通性时,需要在VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测VXLAN隧道的连通性。
tracert vxlan [ -a inner-src-address | -h ttl-value | -r reply-mode | -t timeout ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
在VXLAN中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能查看VXLAN隧道所经过的路径,并根据应答信息对错误点进行定位。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装且IPv6报文头部的Hop Limit字段取值设置为1。
(2) 下一个节点收到报文后,Hop Limit字段的值变成0,会向首节点(即本端VTEP)发送ICMP的Hop Limit超时报文。
(3) 本端VTEP收到ICMP报文后,将Hop Limit字段的取值加1(此时设置为2)继续发送VXLAN Echo Request报文。
(4) 下游节点收到报文后,依次将Hop Limit减1,直到Hop Limit为0,该节点会向首节点发送ICMP报文;若为目的节点则向首节点发送VXLAN Echo Reply报文。
(5) 本端VTEP依次重复上述过程,直至Hop Limit达到最大值或收到远端VTEP发送的应答报文。
(6) 本端VTEP设备根据是否收到应答报文、收到应答报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
通过本命令检测VXLAN隧道的连通性时,需要在VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测IPv6 VXLAN隧道的连通性。
tracert vxlan [ -a inner-src-ipv6-address | -h hop-limit-value | -r reply-mode | -t timeout ] * ipv6 vxlan-id vxlan-id tunnel-source source-ipv6-address tunnel-destination dest-ipv6-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-ipv6-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN的相关信息。
操作 |
命令 |
显示IGMP执行主机行为的所有组播组信息 |
display igmp [ vpn-instance vpn-instance-name ] host group [ group-address | interface interface-type interface-number ] [ verbose ] |
显示Tunnel接口信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示VXLAN隧道接口的信息 |
display vxlan tunnel-interface [ tunnel number [ verbose ] ] |
显示VXLAN隧道终结的IP地址信息 |
display vxlan tunnel termination |
显示VSI的MAC地址表信息 |
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count | verbose ] |
显示设备启动后所有VSI内的MAC地址迁移记录 |
display l2vpn mac-address mac-move [ slot slot-number ] |
显示以太网服务实例的信息 |
display l2vpn service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ verbose ] |
显示水平分割组的信息 |
display l2vpn split-group [ id group-id | name split-group-name ] [ vsi vsi-name ] |
显示VSI的信息 |
display l2vpn vsi [ name vsi-name ] [ verbose ] |
显示VXLAN关联的VXLAN隧道信息 |
display vxlan tunnel [ vxlan-id vxlan-id [ tunnel tunnel-number ] ] |
清除VSI动态学习的MAC地址表项 |
reset l2vpn mac-address [ vsi vsi-name ] |
清除设备启动后所有VSI内的MAC地址迁移记录 |
reset l2vpn mac-address mac-move |
清除AC的报文统计信息 |
reset l2vpn statistics ac [ interface interface-type interface-number service-instance instance-id ] |
清除VSI的报文统计信息 |
reset l2vpn statistics vsi [ name vsi-name ] |
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) 创建VLAN和VLAN接口
根据组网图,完成各个VLAN和VLAN接口的创建,具体配置过程略。
(2) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(3) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface hundredgige 1/0/1
[SwitchA-HundredGigE1/0/1] port link-type trunk
[SwitchA-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchA-HundredGigE1/0/1] service-instance 1000
[SwitchA-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchA-HundredGigE1/0/1-srv1000] quit
[SwitchA-HundredGigE1/0/1] quit
(4) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface hundredgige 1/0/1
[SwitchB-HundredGigE1/0/1] port link-type trunk
[SwitchB-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchB-HundredGigE1/0/1] service-instance 1000
[SwitchB-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchB-HundredGigE1/0/1-srv1000] quit
[SwitchB-HundredGigE1/0/1] quit
(5) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface hundredgige 1/0/1
[SwitchC-HundredGigE1/0/1] port link-type trunk
[SwitchC-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchC-HundredGigE1/0/1] service-instance 1000
[SwitchC-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchC-HundredGigE1/0/1-srv1000] quit
[SwitchC-HundredGigE1/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: 64 kbps
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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : Unlimited
MAC Learning rate : -
Drop Unknown : Disabled
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
VLAN ID : -
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
HGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
* - The output interface is issued to another VSI
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) 创建VLAN和VLAN接口
根据组网图,完成各个VLAN和VLAN接口的创建,具体配置过程略。
(2) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(3) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface hundredgige 1/0/1
[SwitchA-HundredGigE1/0/1] port link-type trunk
[SwitchA-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchA-HundredGigE1/0/1] service-instance 1000
[SwitchA-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchA-HundredGigE1/0/1-srv1000] quit
[SwitchA-HundredGigE1/0/1] quit
(4) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface hundredgige 1/0/1
[SwitchB-HundredGigE1/0/1] port link-type trunk
[SwitchB-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchB-HundredGigE1/0/1] service-instance 1000
[SwitchB-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchB-HundredGigE1/0/1-srv1000] quit
[SwitchB-HundredGigE1/0/1] quit
(5) 配置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
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface hundredgige 1/0/1
[SwitchC-HundredGigE1/0/1] port link-type trunk
[SwitchC-HundredGigE1/0/1] port trunk permit vlan 2
[SwitchC-HundredGigE1/0/1] service-instance 1000
[SwitchC-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchC-HundredGigE1/0/1-srv1000] quit
[SwitchC-HundredGigE1/0/1] quit
(6) 配置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
(7) 配置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
(8) 配置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
(9) 配置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: 64 kbps
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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : Unlimited
MAC Learning rate : -
Drop Unknown : Disabled
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
VLAN ID : -
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
HGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
* - The output interface is issued to another VSI
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之间可以互访。
OVSDB(Open vSwitch Database,开源虚拟交换机数据库)控制协议用来实现NVC(Network Virtualization Controller,网络虚拟化控制器)对网络中VTEP设备的管理和部署。
如图3-1所示,VTEP设备上维护OVSDB数据库,VXLAN相关配置以表项的形式保存在该数据库中。控制器与VTEP设备上的OVSDB服务器建立连接,二者采用OVSDB控制协议进行交互并操作OVSDB数据库中的数据。OVSDB VTEP服务从OVSDB服务器获取数据库中的数据,将其转变为VXLAN相关配置(例如创建或删除VXLAN、创建或删除VXLAN隧道)下发到设备上。同时,OVSDB VTEP服务也会通过OVSDB服务器,将本地的用户侧接入端口和VXLAN隧道全局源地址信息添加到数据库中,并上报给控制器。
与OVSDB相关的协议规范有:
· RFC 7047:The Open vSwitch Database Management Protocol
用户可以同时通过命令行和控制器配置VTEP设备。建议不要在VTEP设备上通过命令行删除控制器下发的配置。
要实现控制器对VTEP设备的部署,需要在VTEP设备上进行如下配置:
(2) 开启OVSDB服务器
(3) 开启OVSDB VTEP服务
(4) 配置VXLAN隧道的全局源地址
(5) 指定用户侧的接入端口
(6) 开启组播隧道泛洪代理功能
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须执行本配置。
(7) (可选)开启禁止控制器下发的ACL在VTEP上生效功能
在进行OVSDB-VTEP相关配置前,需要首先通过l2vpn enable命令开启L2VPN功能。
如果OVSDB服务器与控制器之间建立SSL连接,则还需要完成SSL相关配置,详细配置方法请参见“安全配置指导”中的“SSL”。
OVSDB服务器和控制器之间可以建立多种类型的OVSDB连接,设备支持的OVSDB连接类型包括:
· 主动SSL连接:OVSDB服务器主动向控制器发起SSL连接。
· 被动SSL连接:OVSDB服务器监听并接收来自控制器的SSL连接请求。
· 主动TCP连接:OVSDB服务器主动向控制器发起TCP连接。
· 被动TCP连接:OVSDB服务器监听并接收来自控制器的TCP连接请求。
配置OVSDB服务器与控制器建立OVSDB连接时,需要注意:
· OVSDB服务器支持同时与多个控制器建立连接,且支持同时建立多种类型的连接。
· 在开启OVSDB服务器之前,必须先建立OVSDB连接。如果在开启OVSDB服务器之后修改OVSDB连接,那么需要关闭OVSDB服务器后再重新开启,新的连接配置才能生效。
· 所有SSL连接,包括主动SSL连接和被动SSL连接,需要使用相同的PKI域和CA证书文件。
OVSDB服务器与控制器主动SSL连接和被动SSL连接前,需要先创建PKI域,具体方法请参见“安全配置指导”中的“PKI”。
(1) 进入系统视图。
system-view
(2) 指定与控制器进行SSL通信时使用的PKI域。
ovsdb server pki domain domain-name
缺省情况下,未指定与控制器进行SSL通信时使用的PKI域。
(3) (可选)设置SSL通信时使用的CA证书文件。
ovsdb server bootstrap ca-certificate ca-filename
缺省情况下,与控制器进行SSL通信时使用PKI域中的CA证书文件。
如果指定的CA证书文件不存在,则使用开启OVSDB服务器时通过SSL连接获取的自签名证书,并通过本命令指定证书文件名。
(4) 与控制器建立主动SSL连接。
ovsdb server ssl ip ip-address port port-number
缺省情况下,不会与控制器建立主动SSL连接。
OVSDB服务器最多可以同时与8个控制器建立主动SSL连接。
(1) 进入系统视图。
system-view
(2) 指定与控制器进行SSL通信时使用的PKI域。
ovsdb server pki domain domain-name
缺省情况下,未指定与控制器进行SSL通信时使用的PKI域。
(3) (可选)设置SSL通信时使用的CA证书文件。
ovsdb server bootstrap ca-certificate ca-filename
缺省情况下,与控制器进行SSL通信时使用PKI域中的CA证书文件。
如果指定的CA证书文件不存在,则使用开启OVSDB服务器时通过SSL连接获取的自签名证书,并通过本命令指定证书文件名。
(4) 与控制器建立被动SSL连接。
ovsdb server pssl [ port port-number ]
缺省情况下,不会与控制器建立被动SSL连接。
OVSDB服务器只能监听1个端口的SSL连接请求。
(1) 进入系统视图。
system-view
(2) 与控制器建立主动TCP连接。
ovsdb server tcp ip ip-address port port-number
缺省情况下,不会与控制器建立主动TCP连接。
OVSDB服务器最多可以同时与8个控制器建立主动TCP连接。
(1) 进入系统视图。
system-view
(2) 与控制器建立被动TCP连接。
ovsdb server ptcp [ port port-number ] [ acl acl-number ]
缺省情况下,不会与控制器建立被动TCP连接。
OVSDB服务器只能监听1个端口的TCP连接请求。
在开启OVSDB服务器之前,必须先建立OVSDB连接。如果在开启OVSDB服务器之后修改OVSDB连接,那么需要关闭OVSDB服务器后再重新开启,新的连接配置才能生效。
(1) 进入系统视图。
system-view
(2) 开启OVSDB服务器。
ovsdb server enable
缺省情况下,OVSDB服务器处于关闭状态。
(1) 进入系统视图。
system-view
(2) 开启OVSDB VTEP服务。
vtep enable
缺省情况下,OVSDB VTEP服务处于关闭状态。
用户需要在VTEP设备上配置VXLAN隧道的全局源地址,该地址会通过OVSDB协议上报给控制器,用于控制器对VTEP设备进行部署和控制。
采用OVSDB对VTEP设备进行部署和控制时,用户不能在VXLAN隧道的Tunnel接口下手工指定源地址,否则会影响控制器对VTEP设备的管理。
(1) 进入系统视图。
system-view
(2) 配置VXLAN隧道的全局源地址。
tunnel global source-address ipv4-address
缺省情况下,未配置VXLAN隧道的全局源地址。
为了在控制器上显示VTEP上的端口并对其进行控制,必须在VTEP上将该端口配置为用户侧的接入端口。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 指定当前接口为用户侧的接入端口。
vtep access port
缺省情况下,当前接口不是用户侧的接入端口。
开启组播隧道泛洪代理功能后,系统会将控制器下发的组播隧道转换为具有泛洪代理功能的隧道。VXLAN内的广播、组播和未知单播流量将通过具有泛洪代理功能的隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP。
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须开启该功能。
目前,仅采用VMware的NSX控制器作为OVSDB控制器时,设备支持组播隧道泛洪代理功能。在VTEP上开启组播隧道泛洪代理功能后,若控制器下发VSI配置,则系统会自动关闭所有VSI下的ARP泛洪抑制功能,否则所有VSI下的ARP泛洪抑制功能状态保持不变。
若VTEP上未开启组播隧道泛洪代理功能,则不论控制器是否下发VSI配置,VSI下的ARP泛洪抑制功能状态保持不变。
(1) 进入系统视图。
system-view
(2) 开启组播隧道泛洪代理功能。
vxlan tunnel flooding-proxy
缺省情况下,组播隧道泛洪代理功能处于关闭状态。
在OVSDB-VTEP组网中,控制器通过OVSDB控制协议下发ACL到VTEP,占用VTEP上的ACL资源。通过配置本命令,用户可以禁止控制器下发的ACL在VTEP上生效,以便节约设备上的ACL资源。
(1) 进入系统视图。
system-view
(2) 开启禁止控制器下发的ACL在VTEP上生效功能。
vtep acl disable
缺省情况下,控制器下发的ACL在VTEP上生效。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 通过控制器下发配置,在不同VTEP之间建立VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图3-2 OVSDB-VTEP头端复制组网图
(1) 创建VLAN和VLAN接口
根据组网图,完成各个VLAN和VLAN接口的创建,具体配置过程略。
(2) 配置IP地址、单播路由协议、控制器
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchA] ovsdb server tcp 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchA] interface hundredgige 1/0/1
[SwitchA-HundredGigE1/0/1] vtep access port
[SwitchA-HundredGigE1/0/1] quit
(4) 配置Switch B
# 开启L2VPN功能。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchB] ovsdb server tcp 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchB] interface hundredgige 1/0/1
[SwitchB-HundredGigE1/0/1] vtep access port
[SwitchB-HundredGigE1/0/1] quit
(5) 配置Switch C
# 开启L2VPN功能。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchC] ovsdb server tcp 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchC] interface hundredgige 1/0/1
[SwitchC-HundredGigE1/0/1] vtep access port
[SwitchC-HundredGigE1/0/1] quit
(6) 控制器上进行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: 64 kbps
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: evpn2014
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : Unlimited
MAC Learning rate : -
Drop Unknown : Disabled
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
VLAN ID : -
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
HGE1/0/1 srv2 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
* - The output interface is issued to another VSI
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之间可以互访。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 通过控制器下发配置,在不同VTEP之间建立VXLAN隧道。
· 站点之间的泛洪流量采用泛洪代理(服务器复制)的方式转发。
· VTEP采用控制器下发的MAC地址表项进行流量转发。
图3-3 OVSDB-VTEP泛洪代理组网图
(1) 创建VLAN和VLAN接口
根据组网图,完成各个VLAN和VLAN接口的创建,具体配置过程略。
(2) 配置IP地址、单播路由协议、控制器和服务器
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(3) 配置Switch A
# 开启L2VPN功能。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchA] ovsdb server tcp 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchA] interface hundredgige 1/0/1
[SwitchA-HundredGigE1/0/1] vtep access port
[SwitchA-HundredGigE1/0/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchA] interface hundredgige 1/0/2
[SwitchA-HundredGigE1/0/2] undo mac-address static source-check enable
[SwitchA-HundredGigE1/0/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchA] vxlan tunnel flooding-proxy
(4) 配置Switch B
# 开启L2VPN功能。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchB] ovsdb server tcp ip 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchB] interface hundredgige 1/0/1
[SwitchB-HundredGigE1/0/1] vtep access port
[SwitchB-HundredGigE1/0/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchB] interface hundredgige 1/0/2
[SwitchB-HundredGigE1/0/2] undo mac-address static source-check enable
[SwitchB-HundredGigE1/0/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchB] vxlan tunnel flooding-proxy
(5) 配置Switch C
# 开启L2VPN功能。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[SwitchC] ovsdb server tcp 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
# 指定接入服务器的接口HundredGigE1/0/1上为用户侧的接入端口。
[SwitchC] interface hundredgige 1/0/1
[SwitchC-HundredGigE1/0/1] vtep access port
[SwitchC-HundredGigE1/0/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchC] interface hundredgige 1/0/2
[SwitchC-HundredGigE1/0/2] undo mac-address static source-check enable
[SwitchC-HundredGigE1/0/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchC] vxlan tunnel flooding-proxy
(6) 控制器上进行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: 64 kbps
Maximum transmit 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关联的以太网服务实例等信息,其中Tunnel1和Tunnel2为去往SwitchB、SwitchC的隧道,Tunnel3为去往代理服务器的隧道。
[SwitchA] display l2vpn vsi verbose
VSI Name: evpn2014
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : Unlimited
MAC Learning rate : -
Drop Unknown : Disabled
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
VLAN ID : -
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
Tunnel3 0x5000003 Up Manual Enabled
ACs:
AC Link ID State Type
HGE1/0/1 srv2 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到控制器下发的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address : cc3e-5f9c-6cdb
VSI Name : evpn2014
State : OVSDB
Link ID/Name Aging
Tunnel1 NotAging
MAC Address : cc3e-5f9c-23dc
VSI Name : evpn2014
State : OVSDB
Link ID/Name Aging
Tunnel2 NotAging
--- 2 mac address(es) found ---
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!