01-VXLAN配置
本章节下载: 01-VXLAN配置 (1.41 MB)
目 录
3.11.2 分布式VXLAN IP网关连接IPv4网络配置举例
3.11.3 分布式VXLAN IP网关连接IPv6网络配置举例
5.6.1 开启VXLAN IS-IS的主机路由信息同步功能
5.7.2 配置VXLAN IS-IS Hello报文的发送
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网络是透明的,同一租户的不同站点就像工作在一个局域网中。
图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关联的三层接口称为AC。
如图1-2所示,VXLAN报文的封装格式为:在原始二层数据帧外添加8字节VXLAN头、8字节UDP头和20字节IPv4头/40字节IPv6头。其中,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地址。
· 自动方式:通过ENDP(Enhanced Neighbor Discovery Protocol,增强的邻居发现协议)或EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)发现远端VTEP后,自动在本端和远端VTEP之间建立VXLAN隧道。EVPN的详细介绍请参见“EVPN配置指导”。
VXLAN隧道与VXLAN关联的方式有如下两种:
· 手工方式:手工将VXLAN隧道与VXLAN关联。
· 自动方式:通过EVPN协议自动关联VXLAN隧道与VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
VTEP将三层接口与VSI关联,从该三层接口接收到的数据帧均属于指定的VSI。VSI内创建的VXLAN即为该数据帧所属的VXLAN。
VTEP从三层接口接收到数据帧后,根据关联方式判断报文所属的VXLAN。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
MAC地址学习分为本地MAC地址学习和远端MAC地址学习两部分:
· 本地MAC地址学习
是指VTEP对本地站点内虚拟机MAC地址的学习。本地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-3所示,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-4所示,以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-5所示,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用组播路由方式可以节省泛洪流量对核心网络带宽资源的占用。
如图1-6所示,在组播路由方式下,同一个VXLAN内的所有VTEP都会加入同一个组播组中,通过使用组播路由协议(如PIM协议)在IP核心网络上为该组播组建立组播转发表项。当VTEP接收到泛洪流量时,除了在本地站点内进行泛洪,还会为流量封装组播目的IP地址。然后,封装后的报文通过已经建立的组播转发表项被转发到远端的VTEP。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用泛洪代理方式可以在没有组播协议参与的情况下,节省泛洪流量对核心网络带宽资源的占用。
如图1-7所示,在泛洪代理方式下,同一个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需要统一规划,否则无法互通。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP从本地站点或VXLAN隧道接收到ARP请求和ARP应答报文后,根据该报文在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-8 ARP泛洪抑制示意图
如图1-8所示,ARP泛洪抑制的处理过程如下:
(1) 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-8以单播路由泛洪方式为例)。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立VM 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。
(4) VM 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立VM 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立VM 7的ARP泛洪抑制表项,之后将ARP应答报文发送给VM 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,虚拟机VM 4发送ARP请求,获取VM 1或VM 7的MAC地址。
(8) VTEP 1接收到ARP请求后,建立VM 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 在VTEP 3上建立ARP泛洪抑制表项后,虚拟机VM 10发送ARP请求,获取VM 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立VM 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
VXLAN可以为分散的物理站点提供二层互联。如果要为VXLAN站点内的虚拟机提供三层业务,则需要在网络中部署VXLAN IP网关,以便站点内的虚拟机通过VXLAN IP网关与外界网络或其他VXLAN网络内的虚拟机进行三层通信。
VXLAN IP网关的详细介绍,请参见“VXLAN IP网关”。
与VXLAN相关的协议规范有:
· RFC 7348:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
VXLAN组网中,需要在VTEP上进行如下配置:
(1) 创建VSI和VXLAN
(2) 配置VXLAN隧道
(4) 建立数据帧与VSI的关联
(5) (可选)管理本地和远端MAC地址
(6) (可选)配置VXLAN报文相关功能
(7) (可选)减少发送到核心网的泛洪流量
(8) (可选)配置VXLAN流量统计
(9) (可选)开启VXLAN软件快速转发功能
在VXLAN组网中,IP核心网络中的设备上需要配置路由协议,确保VTEP之间路由可达。
(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 mtu
缺省情况下,VSI的MTU值为1500字节。
VSI的MTU值是指从AC上接收且通过VXLAN隧道转发的用户报文的最大长度。VSI内的其他报文不受该MTU值的限制。
d. 配置VSI的已知单播流量的最大带宽。
bandwidth bandwidth
缺省情况下,未配置VSI的最大已知单播流量带宽,即不限制已知单播流量带宽。
e. 配置VSI的广播、组播或未知单播抑制带宽。
restrain { broadcast | multicast | unknown-unicast } bandwidth
缺省情况下,VSI的广播、组播、未知单播抑制带宽均为5120kbps。
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 | ipv6 ipv6-address }
缺省情况下,未配置VXLAN隧道的全局源地址。
如果隧道下未配置源地址或源接口,则隧道会使用全局源地址作为隧道的源地址。
(3) 创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode vxlan [ ipv6 ]
在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败。
(4) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source { ipv4-address | ipv6-address }
指定的地址将作为封装后VXLAN报文的源IP地址。
¡ 指定隧道的源接口。
source interface-type interface-number
指定接口的主IP地址将作为封装后VXLAN报文的源IP地址。
缺省情况下,未设置VXLAN隧道的源端地址。
采用OVSDB对VTEP设备进行部署和控制时,不能执行本配置。
采用VXLAN组播路由泛洪方式时,VXLAN隧道的源接口不能是Loopback接口、源端地址不能是Loopback接口的地址。
(5) 配置隧道的目的端地址。
destination { ipv4-address | ipv6-address }
缺省情况下,未指定隧道的目的端地址。
隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后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关联。
配置VXLAN与VXLAN隧道关联时,如果指定了no-split-horizon参数,则该VXLAN内不能存在去往同一个VTEP的其他VXLAN隧道。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VXLAN视图。
vxlan vxlan-id
(4) 配置VXLAN与VXLAN隧道关联。
tunnel tunnel-number [ flooding-proxy | no-split-horizon ] *
缺省情况下,VXLAN未关联VXLAN隧道。
参数 |
说明 |
flooding-proxy |
如果指定了本参数,则VXLAN内的广播、组播和未知单播流量将通过该隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP |
no-split-horizon |
如果指定了本参数,则VXLAN内从AC和VXLAN隧道接收到的报文均可以通过该隧道转发 |
将三层接口与VSI关联后,从该接口接收到的报文,将通过查找关联VSI的MAC地址表进行转发。
(1) 进入系统视图。
system-view
(2) 进入三层接口视图。
interface interface-type interface-number
(3) 将三层接口与VSI关联。
xconnect vsi vsi-name [ track track-entry-number&<1-3> ]
缺省情况下,三层接口未关联VSI。
本地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 | 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地址自动学习功能,手动添加静态的远端MAC地址。
(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地址的日志记录功能处于关闭状态。
system-view
(2) 配置VXLAN报文的目的UDP端口号。
vxlan udp-port port-number
缺省情况下,VXLAN报文的目的UDP端口号为4789。
属于同一个VXLAN的VTEP设备上需要配置相同的UDP端口号。
执行本配置后,对Tunnel接口上发送的报文进行VXLAN封装时,VTEP会为其封装指定的源UDP端口号。为不同报文封装不同源UDP端口号后,IPsec可以根据源端口号匹配需要进行加密的报文,从而实现对特定的流量进行IPsec保护。
本配置仅对IPv4站点网络生效。
仅手工创建的VXLAN隧道支持本配置。
Tunnel接口下同时配置vxlan source udp-port acl与vxlan source udp-port five-tuple命令时,如果报文能够匹配vxlan source udp-port acl命令指定的ACL,则优先使用vxlan source udp-port acl配置的源UDP端口号;否则,根据内层报文的五元组信息生成源UDP端口号。
(1) 进入系统视图。
system-view
(2) 进入VXLAN隧道接口视图。
interface tunnel tunnel-number mode vxlan [ ipv6 ]
(3) 配置VXLAN报文的源UDP端口号。
¡ 为符合ACL规则的报文指定VXLAN封装的源UDP端口号。
vxlan source udp-port port-number acl acl-number
多次执行本命令时,仅最后一次执行的命令生效。
如果Tunnel接口下仅配置vxlan source udp-port acl命令,且该命令中指定的ACL未创建或ACL中没有配置IP地址相关的规则,则按照缺省情况封装源UDP端口号。
¡ 根据内层报文的五元组信息生成VXLAN封装的源UDP端口号。
vxlan source udp-port five-tuple
缺省情况下,根据内层报文的源和目的MAC地址自动生成VXLAN封装的源UDP端口号。
通过本配置可以实现对接收到的VXLAN报文的UDP校验和进行检查,VTEP接收到VXLAN报文后,检查该报文的UDP校验和是否为0。若UDP校验和为0,则接收该报文;若UDP校验和不为0,则检查UDP检验和是否正确,正确则接收该报文;否则,丢弃该报文。
(1) 进入系统视图。
system-view
(2) 配置丢弃UDP校验和检查失败的VXLAN报文。
vxlan invalid-udp-checksum discard
缺省情况下,不会检查VXLAN报文的UDP校验和。
缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。
禁止泛洪功能后,为了将某些MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 关闭VSI的泛洪功能。
flooding disable
缺省情况下,VSI泛洪功能处于开启状态。
(4) (可选)配置VSI选择性泛洪的MAC地址。
selective-flooding mac-address mac-address
如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
如果配置了vxlan tunnel arp-learning disable命令,则设备从VXLAN隧道上接收到ARP请求报文后,不会采用匹配的ARP泛洪抑制表项对其进行应答。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启ARP泛洪抑制功能。
arp suppression enable
缺省情况下,ARP泛洪抑制功能处于关闭状态。
本配置用来开启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实例,作为AC的三层接口的报文统计功能才会生效。如果在报文统计过程中修改绑定的VSI,则报文统计重新开始。
(1) 进入系统视图。
system-view
(2) 进入三层接口视图。
interface interface-type interface-number
(3) 开启作为AC的三层接口的报文统计功能。
ac statistics enable
缺省情况下,作为AC的三层接口的报文统计功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 设置VXLAN统计信息收集的时间间隔。
l2vpn statistics interval interval
缺省情况下,VXLAN统计信息收集的时间间隔为15分钟。
开启本功能后,数据报文通过VXLAN隧道进行软件转发时,不会进行QoS、安全等业务处理,直接进行转发,以提高处理性能。建议仅在VSI虚接口和VXLAN隧道对应的报文出接口上没有配置QoS、安全等业务,且需要加快VXLAN软件转发速度的场景下,开启本功能。
开启本功能后,如果到达VXLAN隧道目的端地址存在多条等价路由,只会从中选择一条路由转发VXLAN报文,不能在多条路由之间进行负载分担。
(1) 进入系统视图。
system-view
(2) 开启VXLAN软件快速转发功能。
vxlan fast-forwarding enable
缺省情况下,VXLAN软件快速转发功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN的相关信息。
操作 |
命令 |
显示VSI的ARP泛洪抑制表项信息 |
display arp suppression vsi [ name vsi-name ] [ count ] |
显示Tunnel接口信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示与VSI关联的三层接口的L2VPN信息 |
display l2vpn interface [ vsi vsi-name | interface-type interface-number ] [ verbose ] |
显示VSI的MAC地址表信息 |
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count ] |
显示VSI的信息 |
display l2vpn vsi [ name vsi-name ] [ verbose ] |
显示VXLAN关联的VXLAN隧道信息 |
display vxlan tunnel [ vxlan-id vxlan-id [ tunnel tunnel-number ] ] |
清除VSI的ARP泛洪抑制表项 |
reset arp suppression vsi [ name vsi-name ] |
清除VSI动态学习的MAC地址表项 |
reset l2vpn mac-address [ vsi vsi-name ] |
清除AC的报文统计信息 |
reset l2vpn statistics ac [ interface interface-type interface-number ] |
清除VSI的报文统计信息 |
reset l2vpn statistics vsi [ name vsi-name ] |
display interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
Router A、Router B、Router C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
· 站点之间的泛洪流量采用头端复制的方式转发。
图2-1 VXLAN头端复制组网图
(1) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1
¡ 指定隧道的目的端地址为Router B上接口Loopback0的地址2.2.2.2。
[RouterA] interface tunnel 1 mode vxlan
[RouterA-Tunnel1] source 1.1.1.1
[RouterA-Tunnel1] destination 2.2.2.2
[RouterA-Tunnel1] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterA] interface tunnel 2 mode vxlan
[RouterA-Tunnel2] source 1.1.1.1
[RouterA-Tunnel2] destination 3.3.3.3
[RouterA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] tunnel 1
[RouterA-vsi-vpna-vxlan-10] tunnel 2
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet1/0上关联VSI实例vpna。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] xconnect vsi vpna
[RouterA-GigabitEthernet1/0] quit
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道。
[RouterB] interface tunnel 2 mode vxlan
[RouterB-Tunnel2] source 2.2.2.2
[RouterB-Tunnel2] destination 1.1.1.1
[RouterB-Tunnel2] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterB] interface tunnel 3 mode vxlan
[RouterB-Tunnel3] source 2.2.2.2
[RouterB-Tunnel3] destination 3.3.3.3
[RouterB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] tunnel 2
[RouterB-vsi-vpna-vxlan-10] tunnel 3
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet1/0上关联VSI实例vpna。
[RouterB] interface gigabitethernet 1/0
[RouterB-GigabitEthernet1/0] xconnect vsi vpna
[RouterB-GigabitEthernet1/0] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 1 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 1.1.1.1
[RouterC-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 3 mode vxlan
[RouterC-Tunnel3] source 3.3.3.3
[RouterC-Tunnel3] destination 2.2.2.2
[RouterC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] tunnel 1
[RouterC-vsi-vpna-vxlan-10] tunnel 3
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet1/0上关联VSI实例vpna。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] xconnect vsi vpna
[RouterC-GigabitEthernet1/0] quit
(1) 验证VTEP设备(下文以Router A为例,其它设备验证方法与此类似)
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] 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
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的三层接口等信息。
[RouterA] display l2vpn vsi 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 : -
Drop Unknown : Disabled
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Statistics : Disabled
VXLAN ID : 10
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
ACs:
AC Link ID State
GE1/0 0 Up
# 查看Router A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<RouterA> 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之间可以互访。
VXLAN可以为分散的物理站点提供二层互联。如果要为VXLAN站点内的虚拟机提供三层业务,则需要在网络中部署VXLAN IP网关,以便站点内的虚拟机通过VXLAN IP网关与外界网络或其他VXLAN网络内的虚拟机进行三层通信。VXLAN IP网关既可以部署在独立的物理设备上,也可以部署在VTEP设备上。VXLAN IP网关部署在VTEP设备上时,又分为集中式VXLAN IP网关和分布式VXLAN IP网关两种方式。
本节仅以IPv4网络为例说明VXLAN IP网关的流量转发过程,IPv6网络中的流量转发过程与此类似。
如图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-1 独立的VXLAN IP网关示意图
如图3-2所示,集中式VXLAN IP网关进行二层VXLAN业务终结的同时,还对内层封装的IP报文进行三层转发处理。与独立的VXLAN IP网关相比,该方式除了能够节省设备资源外,VXLAN IP网关功能由VXLAN对应的三层虚接口(VSI虚接口)承担,三层业务的部署和控制也更加灵活和方便。
图3-2 集中式VXLAN IP网关示意图
如图3-3所示,以地址为10.1.1.11的虚拟机为例,虚拟机与外界网络进行三层通信的过程为:
(2) 虚拟机(10.1.1.11)跨网段进行三层通信时,先广播发送ARP请求消息,解析VXLAN IP网关(10.1.1.1)的MAC地址。
(3) VTEP 1收到ARP请求消息后,添加VXLAN封装并发送给所有的远端VTEP。
(4) VTEP 3解封装VXLAN报文后,发现ARP请求的目的IP为VXLAN对应的本地网关IP地址,即与VXLAN关联的VSI虚接口的IP地址,则学习10.1.1.11的ARP信息,并向虚拟机回应ARP应答消息。
(5) VTEP 1收到ARP应答消息后,将该消息转发给虚拟机。
(6) 虚拟机获取到网关的MAC地址后,为三层报文添加网关的MAC地址,通过VXLAN网络将二层数据帧发送给VTEP 3。
(7) VTEP 3解封装VXLAN报文,并去掉链路层头后,对内层封装的IP报文进行三层转发,将其发送给最终的目的节点。
(8) 目的节点回复的报文到达网关后,网关根据已经学习到的ARP表项,为报文封装链路层头,并通过VXLAN网络将其发送给虚拟机。
图3-3 集中式VXLAN IP网关的三层通信过程
属于不同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隧道,以便进行协议通信和表项同步。
采用集中式VXLAN IP网关方案时,不同VXLAN之间的流量以及VXLAN访问外界网络的流量全部由集中式VXLAN IP网关处理,网关压力较大,并加剧了网络带宽资源的消耗。如图3-5所示,在分布式VXLAN IP网关方案中,每台VTEP设备都可以作为VXLAN IP网关,对本地站点的流量进行三层转发,很好地缓解了网关的压力。
图3-5 分布式VXLAN IP网关示意图
如图3-6所示,在分布式VXLAN IP网关组网中,所有的分布式VXLAN IP网关(GW)上都需要创建VSI虚接口,并为不同GW上的相同VSI虚接口配置相同的IP地址,作为VXLAN内虚拟机的网关地址。边界网关(Border)上也需要创建VSI虚接口,并配置IP地址。在分布式VXLAN IP网关上还需要开启以下功能中的一种:
· ARP泛洪抑制功能:开启本功能后,二层流量查找MAC地址表进行转发,三层流量查找ARP表项进行转发。
· 本地代理ARP功能或本地ND代理功能:开启本功能后,所有流量都通过查找ARP表项或ND表项进行三层转发。下文均以此功能为例,介绍分布式VXLAN IP网关中的通信过程。
网关可以通过多种方式生成ARP表项和ND表项,下文以根据ARP协议和ND协议动态学习表项来介绍分布式VXLAN IP网关中的通信过程。
图3-6 分布式VXLAN IP网关部署示意图
如图3-7所示,以VM 1访问VM 4为例,相同VXLAN内不同站点的虚拟机的通信过程为:
(1) VM 1广播发送ARP请求消息,获取VM 4的MAC地址。
(2) GW 1收到ARP请求消息后,学习VM 1的ARP信息,并代理应答该ARP请求,即:向VM 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。
(3) VM 1学习到VM 4的MAC地址为GW 1上VSI虚接口10的MAC地址。
(4) GW 1将接收到的ARP请求消息中的源MAC地址修改为VSI虚接口10的MAC地址,在VXLAN 10内向本地站点和远端站点广播发送该ARP请求。
(5) GW 2对VXLAN报文进行解封装后,学习VM 1的ARP信息(IP为10.1.1.11、MAC为GW 1上VSI虚接口10的MAC、出接口为接收该VXLAN报文的Tunnel接口),并将ARP请求消息中的源MAC修改为本地VSI虚接口10的MAC地址,在VXLAN 10的本地站点内进行广播。
(6) VM 4收到ARP请求后,学习VM 1的ARP信息(IP为10.1.1.11、MAC为GW 2上VSI虚接口10的MAC),并发送ARP应答消息给本地网关GW 2。
(7) GW 2从VM 4收到ARP应答消息后,学习VM 4的ARP信息,将ARP应答消息中的源MAC修改为本地VSI虚接口10的MAC地址,并根据已经学习到的ARP表项,为ARP应答消息添加VXLAN封装后发送给GW 1。
(8) GW 1对VXLAN报文进行解封装后,根据收到的ARP应答消息学习VM 4的ARP信息(IP为10.1.1.12、MAC为GW 2上VSI虚接口10的MAC、出接口为接收该VXLAN报文的Tunnel接口)。
(9) 通过上述步骤完成ARP信息的学习后,VM 1发送给VM 4的报文,根据已经学习到的ARP信息进行转发:首先发送给GW 1;GW 1对其进行VXLAN封装后,将其发送给GW 2;GW 2解封装后,将其发送给VM 4。
图3-7 分布式VXLAN IP网关部署示意图
图3-8 不同VXLAN间不同站点的虚拟机通信过程示意图
如图3-8所示,以VM 1(VXLAN 10)访问VM 5(VXLAN 20)为例,不同VXLAN的虚拟机的通信过程为:
VM 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。
(2) GW 1收到ARP请求消息后,学习VM 1的ARP信息,并向VM 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。这样,VM 1会将访问VM 5的报文发送给GW 1。
(3) GW 1在VXLAN 10内向本地站点和远端站点广播发送ARP请求。ARP请求消息中的源IP地址为10.1.1.11、源MAC地址为本地VSI虚接口10的MAC地址。
(4) GW 2从VXLAN隧道上接收到VXLAN报文,对其进行解封装后,学习VM 1的ARP信息(IP为10.1.1.11、MAC为GW 1上VSI虚接口10的MAC、出接口为接收该VXLAN报文的Tunnel接口),并将ARP请求消息中的源MAC修改为本地VSI虚接口10的MAC地址,在VXLAN 10的本地站点内广播该ARP请求消息。GW 2发送ARP应答消息(IP为10.1.1.1、MAC为GW 2上VSI虚接口10的MAC)给GW 1。
(5) GW 1在VXLAN 10内发送ARP请求的同时,也会在VXLAN 20内向本地站点和远端站点广播发送ARP请求,获取VM 5的MAC地址。ARP请求消息中的源IP地址为20.1.1.1、源MAC地址为本地VSI虚接口20的MAC地址。
(6) GW 2从VXLAN 20内收到ARP请求后,将ARP请求消息中的源MAC修改为本地VSI虚接口20的MAC地址,在VXLAN 20的本地站点内广播该ARP请求消息。
(7) VM 5收到ARP请求后,学习GW 2的ARP信息(IP为20.1.1.1、MAC为GW 2上VSI虚接口20的MAC),并发送ARP应答消息给本地网关GW 2。
(8) GW 2从VM 5收到ARP应答消息后,学习VM 5的ARP信息,并向本地站点和远端站点发送免费ARP。免费ARP消息中的源IP地址为20.1.1.12、源MAC地址为本地VSI虚接口20的MAC地址。GW 1从VXLAN隧道上接收到VXLAN报文,对其进行解封装后,根据收到的免费ARP消息学习VM 5的ARP信息(IP为20.1.1.12、MAC为GW 2上VSI虚接口20的MAC、出接口为接收该VXLAN报文的Tunnel接口)。
(9) 通过上述步骤完成ARP信息的学习后,VM 1发送给VM 5的报文,根据已经学习到的ARP信息进行转发:首先发送给GW 1;GW 1对其进行VXLAN封装后,将其发送给GW 2;GW 2解封装后,将其发送给VM 5。
虚拟机要想与外部网络进行三层通信,需要在接入虚拟机的本地分布式VXLAN IP网关上指定流量的下一跳为Border,可以通过如下方式来实现:
· 在本地分布式VXLAN IP网关上配置静态路由,指定路由下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 在本地分布式VXLAN IP网关上配置策略路由,设置报文的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
如图3-9所示,以VM 1访问外部网络内的主机50.1.1.1为例,虚拟机访问外部网络的三层通信过程为:
(1) VM 1广播发送ARP请求消息,获取网关10.1.1.1的MAC地址。
(2) GW 1收到ARP请求消息后,学习VM 1的ARP信息,并向VM 1发送ARP应答消息,应答的MAC地址为VSI虚接口10的MAC地址。
(3) VM 1将访问外部网络的报文发送给GW 1。
(4) GW 1接收到报文后,根据策略路由判断报文的下一跳地址为10.1.1.2。GW 1在VXLAN 10内向本地站点和远端站点广播发送ARP请求消息,获取10.1.1.2对应的MAC地址。
(5) Border对VXLAN报文进行解封装,学习GW 1的ARP信息,并通过VXLAN隧道回复ARP应答消息。
(6) GW 1对VXLAN报文进行解封装,并获取到10.1.1.2的ARP信息。
(7) GW 1根据获取到的信息为VM 1发送的报文封装链路层地址(10.1.1.2对应的MAC地址),并通过VXLAN隧道将报文发送给Border。
(8) Border对接收到的报文进行解封装后,对报文进行三层转发。
图3-9 分布式VXLAN IP网关部署示意图
建议不要在同一台设备上同时配置集中式VXLAN IP网关和集中式VXLAN IP网关保护组功能。
建议在VXLAN IP网关上为VXLAN隧道的出接口配置较大的MTU值,以免VXLAN报文分片导致转发失败。
VXLAN IP网关配置任务如下:
(1) 配置VXLAN IP网关
请根据实际组网,选择以下一项任务进行配置:
(2) (可选)关闭VXLAN远端ARP自动学习功能
(3) (可选)配置VSI虚接口
配置集中式VXLAN IP网关和分布式VXLAN IP网关设备前,需要创建VSI和VXLAN。
配置VXLAN隧道,并将VXLAN与VXLAN隧道关联。
在集中式VXLAN IP网关组网中,请不要执行local-proxy-arp enable命令开启本地代理ARP功能。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置VSI虚接口的IP地址。
ip address ip-address { mask | mask-length }
缺省情况下,未配置VSI虚接口的IP地址。
(4) 退回系统视图。
quit
(5) 进入VXLAN所在VSI视图。
vsi vsi-name
(6) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址,分别作为不同VXLAN内虚拟机的网关地址。
多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过本命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制广播报文范围,有效地节省带宽资源。
(1) 进入系统视图。
system-view
(2) 进入VXLAN所在VSI视图。
vsi vsi-name
(3) 配置当前VSI所属的子网网段。
gateway subnet ipv4-address wildcard-mask
缺省情况下,未指定VSI所属的子网网段。
保护组中所有网关上的VXLAN配置需要保证完全一致。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置VSI虚接口的IP地址。
ip address ip-address { mask | mask-length }
缺省情况下,未配置VSI虚接口的IP地址。
请在保护组中的每台网关上配置相同的VSI虚接口IP地址。
(4) 配置VSI虚接口的MAC地址。
mac-address mac-address
缺省情况下,VSI虚接口未指定MAC地址。
保护组中所有网关上配置的MAC地址必须相同。
(5) 退回系统视图。
quit
(6) 进入VXLAN所在VSI视图。
vsi vsi-name
(7) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
(8) 退回系统视图。
quit
(9) 将本设备加入VXLAN IP网关保护组,并配置本设备的成员地址。
vtep group group-ip member local member-ip
缺省情况下,设备未加入VXLAN IP网关保护组。
member-ip为本设备的成员地址,该地址必须是设备上已经存在的IP地址,并且需要通过路由协议发布到IP网络。同一个保护组中不同成员VTEP的地址不能相同。
(10) 配置VXLAN IP网关保护组的成员地址列表。
vtep group group-ip member remote member-ip&<1-8>
缺省情况下,未配置VXLAN IP网关保护组的成员地址列表。
执行本命令时,必须输入保护组中所有其它成员的成员地址。
执行本配置时,需要完成以下配置任务:
· 配置VXLAN隧道工作在二层转发模式。
· 创建VSI和VXLAN。
· 配置VXLAN隧道,并将VXLAN与VXLAN隧道关联。
(1) 进入系统视图。
system-view
(2) 配置VXLAN IP网关保护组的成员地址列表。
vtep group group-ip member remote member-ip&<1-8>
缺省情况下,未配置VXLAN IP网关保护组的成员地址列表。
执行本命令时,必须输入保护组中所有成员的成员地址。
如果虚拟机要想与外部网络进行三层通信,除本配置外,还需要在接入虚拟机的本地分布式VXLAN IP网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 配置策略路由:通过apply default-next-hop命令设置报文的缺省下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。
在分布式VXLAN IP网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式VXLAN IP网关设备上同时开启这两个功能。有关ARP泛洪抑制功能的详细介绍请参见“配置ARP泛洪抑制”。
分布式VXLAN IP网关连接IPv4站点网络时,所有网关上都需要为相同VSI虚接口配置相同的MAC地址。如果网关同时连接IPv4站点网络和IPv6站点网络,则不同分布式VXLAN IP网关上需要为相同VSI虚接口配置不同的链路本地地址。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置VSI虚接口的IP地址。
(IPv4网络)
ip address ip-address { mask | mask-length } [ sub ]
(IPv6网络)
IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
缺省情况下,未配置VSI虚接口的IP地址。
(4) 配置VSI虚接口为分布式网关接口。
distributed-gateway local
缺省情况下,VSI虚接口不是分布式本地网关接口。
(5) 开启本地代理ARP或本地ND代理功能。
(IPv4网络)
local-proxy-arp enable [ ip-range startIP to endIP ]
缺省情况下,本地代理ARP功能处于关闭状态。
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP”。
(IPv6网络)
local-proxy-nd enable
缺省情况下,本地ND代理功能处于关闭状态。
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”。
(6) 开启VSI虚接口。
undo shutdown
缺省情况下,VSI虚接口处于开启状态。
(7) 退回系统视图。
quit
(8) 进入VXLAN所在VSI视图。
vsi vsi-name
(9) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
分布式VXLAN IP网关上开启本地代理ARP功能时,本地网关不会将目标IP地址为分布式网关VSI虚接口的ARP报文转发给其他网关,只有本地网关能够学习到ARP报文发送者的ARP表项。如果希望所有网关都能学习到该ARP表项,需要开启分布式网关的动态ARP表项同步功能。分布式VXLAN IP网关之间也可以通过控制器或EVPN等在彼此之间同步ARP表项,此时无需开启该功能。
(1) 进入系统视图。
system-view
(2) 开启分布式网关的动态ARP表项同步功能。
arp distributed-gateway dynamic-entry synchronize
缺省情况下,分布式网关的动态ARP表项同步功能处于关闭状态。
为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址、或多个IPv6地址,分别作为不同VXLAN内虚拟机的网关地址。
多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过本命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制广播报文范围,有效地节省带宽资源。
(1) 进入系统视图。
system-view
(2) 进入VXLAN所在VSI视图。
vsi vsi-name
(3) 配置当前VSI所属的子网网段。
gateway subnet { ipv4-address wildcard-mask | ipv6-address prefix-length }
缺省情况下,未指定VSI所属的子网网段。
缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端虚拟机的ARP信息,即远端ARP信息。在SDN控制器组网下,当控制器和设备间进行表项同步时,可以通过本配置暂时关闭远端ARP自动学习功能,以节省占用的设备资源。同步完成后,再开启远端ARP自动学习功能。
建议用户只在控制器和设备间同步表项的情况下执行本配置。
(1) 进入系统视图。
system-view
(2) 关闭VXLAN远端ARP自动学习功能。
vxlan tunnel arp-learning disable
缺省情况下,远端ARP自动学习功能处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置接口的MAC地址。
mac-address mac-address
缺省情况下,未配置VSI虚接口的MAC地址。
(4) 配置接口的描述信息。
description text
缺省情况下,接口的描述信息为“接口名 Interface”,例如:Vsi-interface100 Interface。
(5) 配置接口的MTU。
mtu mtu-value
缺省情况下,VSI虚接口的MTU值为1500。
(6) 配置接口的期望带宽。
bandwidth bandwidth-value
缺省情况下,接口的期望带宽=接口的波特率÷1000(kbps)。
期望带宽供业务模块使用,不会对接口实际带宽造成影响。
接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行本配置前,完全了解其对网络产生的影响。
您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议您查阅相关功能的命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 恢复接口的缺省配置。
default
在VSI虚接口上应用QoS策略后,可以根据QoS策略对接口接收、发送的报文进行QoS相关处理,以提高服务质量。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置接口应用QoS策略。
qos apply policy policy-name { inbound | outbound }
缺省情况下,接口未应用QoS策略。
本命令的详细介绍及QoS策略的配置方法,请参见“ACL和QoS配置指导”中的“QoS配置方式”。
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN IP网关的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VSI虚接口的统计信息。
表3-1 VXLAN IP网关显示和维护
操作 |
命令 |
显示VSI虚接口信息 |
display interface [ vsi-interface [ vsi-interface-id | vsi-interface-id.subid ] ] [ brief [ description | down ] ] |
清除VSI虚接口的统计信息 |
reset counters interface [ vsi-interface [ vsi-interface-id | vsi-interface-id.subid ] ] |
Router A、Router C为与服务器连接的VTEP设备,Router B为与广域网连接的集中式VXLAN IP网关设备,Router E为广域网内的三层设备。虚拟机VM 1、VM 2同属于VXLAN 10,通过VXLAN实现不同站点间的二层互联,并通过VXLAN IP网关与广域网三层互联。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
· 站点之间的泛洪流量采用头端复制的方式转发。
图3-10 集中式VXLAN IP网关配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1,具体配置过程略。
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保路由器之间路由可达;配置Router B和Router E发布10.1.1.0/24和20.1.1.0/24网段的路由,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1。
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
¡ 指定隧道的目的端地址为Router B上接口Loopback0的地址2.2.2.2。
[RouterA] interface tunnel 1 mode vxlan
[RouterA-Tunnel1] source 1.1.1.1
[RouterA-Tunnel1] destination 2.2.2.2
[RouterA-Tunnel1] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterA] interface tunnel 2 mode vxlan
[RouterA-Tunnel2] source 1.1.1.1
[RouterA-Tunnel2] destination 3.3.3.3
[RouterA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] tunnel 1
[RouterA-vsi-vpna-vxlan-10] tunnel 2
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 配置接入服务器的接口GigabitEthernet1/0与VSI实例vpna关联。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] xconnect vsi vpna
[RouterA-GigabitEthernet1/0] quit
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道。
[RouterB] interface tunnel 2 mode vxlan
[RouterB-Tunnel2] source 2.2.2.2
[RouterB-Tunnel2] destination 1.1.1.1
[RouterB-Tunnel2] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterB] interface tunnel 3 mode vxlan
[RouterB-Tunnel3] source 2.2.2.2
[RouterB-Tunnel3] destination 3.3.3.3
[RouterB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] tunnel 2
[RouterB-vsi-vpna-vxlan-10] tunnel 3
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址,该IP地址作为VXLAN 10内虚拟机的网关地址。
[RouterB] interface vsi-interface 1
[RouterB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[RouterB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] gateway vsi-interface 1
[RouterB-vsi-vpna] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 1 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 1.1.1.1
[RouterC-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 3 mode vxlan
[RouterC-Tunnel3] source 3.3.3.3
[RouterC-Tunnel3] destination 2.2.2.2
[RouterC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] tunnel 1
[RouterC-vsi-vpna-vxlan-10] tunnel 3
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 配置接入服务器的接口GigabitEthernet1/0与VSI实例vpna关联。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] xconnect vsi vpna
[RouterC-GigabitEthernet1/0] quit
(1) 验证VXLAN IP网关设备Router B
# 查看Router B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[RouterB] 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 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
# 查看Router B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[RouterB] display l2vpn vsi 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 : -
Drop Unknown : Disabled
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Statistics : Disabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 Up Manual Disabled Enabled
Tunnel3 0x5000003 Up Manual Disabled Enabled
# 查看Router B上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[RouterB] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address SVLAN/VSI Interface/Link ID Aging Type
20.1.1.5 000c-29c1-5e46 -- GE1/0 19 D
10.1.1.11 0000-1234-0001 0 Tunnel2 20 D
10.1.1.12 0000-1234-0002 0 Tunnel3 19 D
# 查看Router B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[RouterB] display fib 10.1.1.11
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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
(2) 验证主机和广域网互访
虚拟机VM 1、VM 2之间可以互访,VM 1、VM 2和Router E上接口GigabitEthernet1/0的地址20.1.1.5之间可以互访。
Router A、Router C为分布式VXLAN IP网关设备,Router B为与广域网连接的边界网关设备,Router 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-11 分布式VXLAN IP网关连接IPv4网络配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上分别指定网关地址为10.1.1.1、10.1.2.1、20.1.1.1,具体配置过程略。
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保路由器之间路由可达;配置Router B和Router E发布10.1.1.0/24、10.1.2.0/24、20.1.1.0/24和25.1.1.0/24网段的路由,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 20
[RouterA-vsi-vpnb-vxlan-20] quit
[RouterA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[RouterA] vsi vpnc
[RouterA-vsi-vpnc] vxlan 30
[RouterA-vsi-vpnc-vxlan-30] quit
[RouterA-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1。
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
¡ 指定隧道的目的端地址为Router B上接口Loopback0的地址2.2.2.2。
[RouterA] interface tunnel 1 mode vxlan
[RouterA-Tunnel1] source 1.1.1.1
[RouterA-Tunnel1] destination 2.2.2.2
[RouterA-Tunnel1] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterA] interface tunnel 2 mode vxlan
[RouterA-Tunnel2] source 1.1.1.1
[RouterA-Tunnel2] destination 3.3.3.3
[RouterA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] tunnel 1
[RouterA-vsi-vpna-vxlan-10] tunnel 2
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 配置Tunnel1和Tunnel2与VXLAN 20关联。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 20
[RouterA-vsi-vpnb-vxlan-20] tunnel 1
[RouterA-vsi-vpnb-vxlan-20] tunnel 2
[RouterA-vsi-vpnb-vxlan-20] quit
[RouterA-vsi-vpnb] quit
# 配置Tunnel2与VXLAN 30关联。
[RouterA] vsi vpnc
[RouterA-vsi-vpnc] vxlan 30
[RouterA-vsi-vpnc-vxlan-30] tunnel 2
[RouterA-vsi-vpnc-vxlan-30] quit
[RouterA-vsi-vpnc] quit
# 配置接入VM 1的接口GigabitEthernet1/0关联VSI实例vpna。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] xconnect vsi vpna
[RouterA-GigabitEthernet1/0] quit
# 配置接入VM 2的接口GigabitEthernet3/0关联VSI实例vpnb。
[RouterA] interface gigabitethernet 3/0
[RouterA-GigabitEthernet3/0] xconnect vsi vpnb
[RouterA-GigabitEthernet3/0] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[RouterA] interface vsi-interface 1
[RouterA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[RouterA-Vsi-interface1] mac-address 1-1-1
[RouterA-Vsi-interface1] distributed-gateway local
[RouterA-Vsi-interface1] local-proxy-arp enable
[RouterA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[RouterA] interface vsi-interface 2
[RouterA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[RouterA-Vsi-interface2] mac-address 2-2-2
[RouterA-Vsi-interface2] distributed-gateway local
[RouterA-Vsi-interface2] local-proxy-arp enable
[RouterA-Vsi-interface2] quit
# 开启分布式网关的动态ARP表项同步功能。
[RouterA] arp distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为10.1.1.0/24。
[RouterA] vsi vpna
[RouterA-vsi-vpna] gateway vsi-interface 1
[RouterA-vsi-vpna] gateway subnet 10.1.1.0 0.0.0.255
[RouterA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] gateway vsi-interface 2
[RouterA-vsi-vpnb] quit
# 为VSI虚接口VSI-interface1配置从IP地址,该从IP地址作为VXLAN 30内虚拟机的网关地址。
[RouterA] interface vsi-interface 1
[RouterA-Vsi-interface1] ip address 20.1.1.1 255.255.255.0 sub
[RouterA-Vsi-interface1] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为20.1.1.0/24。
[RouterA] vsi vpnc
[RouterA-vsi-vpnc] gateway vsi-interface 1
[RouterA-vsi-vpnc] gateway subnet 20.1.1.0 0.0.0.255
[RouterA-vsi-vpnc] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Router B上接口VSI-interface1的IP地址10.1.1.2。
[RouterA] acl advanced 3000
[RouterA-acl-ipv4-adv-3000] rule 0 permit ip
[RouterA-acl-ipv4-adv-3000] quit
[RouterA] policy-based-route vxlan10 permit node 5
[RouterA-pbr-vxlan10-5] if-match acl 3000
[RouterA-pbr-vxlan10-5] apply default-next-hop 10.1.1.2
[RouterA-pbr-vxlan10-5] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Router B上接口VSI-interface2的IP地址10.1.2.2。
[RouterA] policy-based-route vxlan20 permit node 5
[RouterA-pbr-vxlan20-5] if-match acl 3000
[RouterA-pbr-vxlan20-5] apply default-next-hop 10.1.2.2
[RouterA-pbr-vxlan20-5] quit
# 在VSI虚接口VSI-interface1和VSI-interface2上应用策略路由。
[RouterA] interface vsi-interface 1
[RouterA-Vsi-interface1] ip policy-based-route vxlan10
[RouterA-Vsi-interface1] quit
[RouterA] interface vsi-interface 2
[RouterA-Vsi-interface2] ip policy-based-route vxlan20
[RouterA-Vsi-interface2] quit
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 20
[RouterB-vsi-vpnb-vxlan-20] quit
[RouterB-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[RouterB] vsi vpnc
[RouterB-vsi-vpnc] vxlan 30
[RouterB-vsi-vpnc-vxlan-30] quit
[RouterB-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道。
[RouterB] interface tunnel 2 mode vxlan
[RouterB-Tunnel2] source 2.2.2.2
[RouterB-Tunnel2] destination 1.1.1.1
[RouterB-Tunnel2] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterB] interface tunnel 3 mode vxlan
[RouterB-Tunnel3] source 2.2.2.2
[RouterB-Tunnel3] destination 3.3.3.3
[RouterB-Tunnel3] quit
# 配置Tunnel2与VXLAN 10关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] tunnel 2
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 配置Tunnel2与VXLAN 20关联。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 20
[RouterB-vsi-vpnb-vxlan-20] tunnel 2
[RouterB-vsi-vpnb-vxlan-20] quit
[RouterB-vsi-vpnb] quit
# 配置Tunnel3与VXLAN 30关联。
[RouterB] vsi vpnc
[RouterB-vsi-vpnc] vxlan 30
[RouterB-vsi-vpnc-vxlan-30] tunnel 3
[RouterB-vsi-vpnc-vxlan-30] quit
[RouterB-vsi-vpnc] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址。
[RouterB] interface vsi-interface 1
[RouterB-Vsi-interface1] ip address 10.1.1.2 255.255.255.0
[RouterB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址。
[RouterB] interface vsi-interface 2
[RouterB-Vsi-interface2] ip address 10.1.2.2 255.255.255.0
[RouterB-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,并为其配置IP地址。
[RouterB] interface vsi-interface 3
[RouterB-Vsi-interface3] ip address 20.1.1.2 255.255.255.0
[RouterB-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] gateway vsi-interface 1
[RouterB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] gateway vsi-interface 2
[RouterB-vsi-vpnb] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface3关联。
[RouterB] vsi vpnc
[RouterB-vsi-vpnc] gateway vsi-interface 3
[RouterB-vsi-vpnc] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 20
[RouterC-vsi-vpnb-vxlan-20] quit
[RouterC-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 30。
[RouterC] vsi vpnc
[RouterC-vsi-vpnc] vxlan 30
[RouterC-vsi-vpnc-vxlan-30] quit
[RouterC-vsi-vpnc] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 1 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 1.1.1.1
[RouterC-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 3 mode vxlan
[RouterC-Tunnel3] source 3.3.3.3
[RouterC-Tunnel3] destination 2.2.2.2
[RouterC-Tunnel3] quit
# 配置Tunnel1与VXLAN 10关联。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] tunnel 1
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 配置Tunnel1与VXLAN 20关联。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 20
[RouterC-vsi-vpnb-vxlan-20] tunnel 1
[RouterC-vsi-vpnb-vxlan-20] quit
[RouterC-vsi-vpnb] quit
# 配置Tunnel1和Tunnel3与VXLAN 30关联。
[RouterC] vsi vpnc
[RouterC-vsi-vpnc] vxlan 30
[RouterC-vsi-vpnc-vxlan-30] tunnel 1
[RouterC-vsi-vpnc-vxlan-30] tunnel 3
[RouterC-vsi-vpnc-vxlan-30] quit
[RouterC-vsi-vpnc] quit
# 在接入VM 3的接口GigabitEthernet1/0关联VSI实例vpnc。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] xconnect vsi vpnc
[RouterC-GigabitEthernet1/0] quit
# 创建VSI虚接口VSI-interface1,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 10内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[RouterC] interface vsi-interface 1
[RouterC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[RouterC-Vsi-interface1] mac-address 1-1-1
[RouterC-Vsi-interface1] distributed-gateway local
[RouterC-Vsi-interface1] local-proxy-arp enable
[RouterC-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,并为其配置IP地址和MAC地址,该IP地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地代理ARP功能。
[RouterC] interface vsi-interface 2
[RouterC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[RouterC-Vsi-interface2] mac-address 2-2-2
[RouterC-Vsi-interface2] distributed-gateway local
[RouterC-Vsi-interface2] local-proxy-arp enable
[RouterC-Vsi-interface2] quit
# 开启分布式网关的动态ARP表项同步功能。
[RouterC] arp distributed-gateway dynamic-entry synchronize
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为10.1.1.0/24。
[RouterC] vsi vpna
[RouterC-vsi-vpna] gateway vsi-interface 1
[RouterC-vsi-vpna] gateway subnet 10.1.1.0 0.0.0.255
[RouterC-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] gateway vsi-interface 2
[RouterC-vsi-vpnb] quit
# 为VSI虚接口VSI-interface1配置从IP地址,该从IP地址作为VXLAN 30内虚拟机的网关地址。
[RouterC] interface vsi-interface 1
[RouterC-Vsi-interface1] ip address 20.1.1.1 255.255.255.0 sub
[RouterC-Vsi-interface1] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为20.1.1.0/24。
[RouterC] vsi vpnc
[RouterC-vsi-vpnc] gateway vsi-interface 1
[RouterC-vsi-vpnc] gateway subnet 20.1.1.0 0.0.0.255
[RouterC-vsi-vpnc] quit
# 配置策略路由,指定IPv4报文如果未找到匹配的路由表项,则设置报文的下一跳为Router B上接口VSI-interface1的IP地址20.1.1.2。
[RouterC] acl advanced 3000
[RouterC-acl-ipv4-adv-3000] rule 0 permit ip
[RouterC-acl-ipv4-adv-3000] quit
[RouterC] policy-based-route vxlan permit node 5
[RouterC-pbr-vxlan-5] if-match acl 3000
[RouterC-pbr-vxlan-5] apply default-next-hop 20.1.1.2
[RouterC-pbr-vxlan-5] quit
# 在VSI虚接口VSI-interface1上应用策略路由。
[RouterC] interface vsi-interface 1
[RouterC-Vsi-interface1] ip policy-based-route vxlan
[RouterC-Vsi-interface1] quit
(1) 验证分布式VXLAN IP网关设备Router A
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[RouterA] 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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[RouterA] 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 : -
Drop Unknown : Disabled
Flooding : Enabled
Service Class : -
Statistics : Disabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
ACs:
AC Link ID State
GE1/0 0 Up
# 查看Router A上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[RouterA] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address SVLAN/VSI Interface/Link ID Aging Type
11.1.1.4 000c-29c1-5e46 -- GE1/0/2 19 D
10.1.1.2 3c8c-400d-867a 0 Tunnel1 20 D
10.1.1.11 0cda-41b5-cf09 0 0 20 D
10.1.2.2 3c8c-400d-867a 1 Tunnel1 20 D
10.1.2.11 0cda-41b5-cf89 1 0 20 D
20.1.1.12 0001-0001-0001 2 Tunnel2 19 D
(2) 验证边界网关设备Router B
# 查看Router B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[RouterB] 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
# 查看Router B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[RouterB] 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 : -
Drop Unknown : Disabled
Flooding : Enabled
Service Class : -
Statistics : Disabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 Up Manual Disabled Enabled
# 查看Router B上VSI的ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[RouterB] display arp
Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address SVLAN/VSI Interface/Link ID Aging Type
12.1.1.4 0000-fc00-00ab -- GE2/0 14 D
25.1.1.5 4431-9234-24bb -- GE1/0 17 D
10.1.1.1 0001-0001-0001 0 Tunnel2 17 D
10.1.1.11 0001-0001-0001 0 Tunnel2 20 D
10.1.2.1 0002-0002-0002 1 Tunnel2 17 D
10.1.2.11 0002-0002-0002 1 Tunnel2 20 D
20.1.1.1 0001-0001-0001 2 Tunnel3 17 D
20.1.1.12 0001-0001-0001 2 Tunnel3 20 D
# 查看Router B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[RouterB] display fib 10.1.1.11
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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
[RouterB] display fib 20.1.1.12
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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 Vsi3 Null
(3) 验证主机和广域网互访
虚拟机VM 1、VM 2、VM 3之间可以互访;VM 1、VM 2和VM 3可以与Router E上接口GigabitEthernet1/0的地址25.1.1.5之间互访。
Router A、Router C为分布式VXLAN IP网关设备,Router B为与广域网连接的边界网关设备,Router E为广域网内的三层设备。虚拟机VM 1属于VXLAN 10,VM 2属于VXLAN 20。通过分布式VXLAN IP网关实现不同VXLAN网络的三层互联,并通过边界网关实现与广域网的三层互联。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图3-12 分布式VXLAN IP网关连接IPv6网络配置组网图
(1) 配置IPv6地址和单播路由协议
# 在VM 1和VM 2上分别指定网关地址为1::1、4::1,具体配置过程略。
# 配置各接口的地址;在IP核心网络内配置OSPF协议,确保路由器之间路由可达;配置Router B和Router E发布1::/64、4::/64和3::/64网段的路由,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 20
[RouterA-vsi-vpnb-vxlan-20] quit
[RouterA-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1。
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1。
¡ 指定隧道的目的端地址为Router B上接口Loopback0的地址2.2.2.2。
[RouterA] interface tunnel 1 mode vxlan
[RouterA-Tunnel1] source 1.1.1.1
[RouterA-Tunnel1] destination 2.2.2.2
[RouterA-Tunnel1] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterA] interface tunnel 2 mode vxlan
[RouterA-Tunnel2] source 1.1.1.1
[RouterA-Tunnel2] destination 3.3.3.3
[RouterA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10
[RouterA-vsi-vpna-vxlan-10] tunnel 1
[RouterA-vsi-vpna-vxlan-10] tunnel 2
[RouterA-vsi-vpna-vxlan-10] quit
[RouterA-vsi-vpna] quit
# 配置Tunnel1和Tunnel2与VXLAN 20关联。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 20
[RouterA-vsi-vpnb-vxlan-20] tunnel 1
[RouterA-vsi-vpnb-vxlan-20] tunnel 2
[RouterA-vsi-vpnb-vxlan-20] quit
[RouterA-vsi-vpnb] quit
# 配置接入VM 1的接口GigabitEthernet1/0关联VSI实例vpna。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] xconnect vsi vpna
[RouterA-GigabitEthernet1/0] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6任播地址,其中1::1/64地址作为VXLAN 10内虚拟机的网关地址、4::1/64作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地ND代理功能。
[RouterA] interface vsi-interface 1
[RouterA-Vsi-interface1] ipv6 address 1::1/64 anycast
[RouterA-Vsi-interface1] ipv6 address 4::1/64 anycast
[RouterA-Vsi-interface1] distributed-gateway local
[RouterA-Vsi-interface1] local-proxy-nd enable
[RouterA-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为1::1/64。
[RouterA] vsi vpna
[RouterA-vsi-vpna] gateway vsi-interface 1
[RouterA-vsi-vpna] gateway subnet 1::1 64
[RouterA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为4::1/64。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] gateway vsi-interface 1
[RouterA-vsi-vpnb] gateway subnet 4::1 64
[RouterA-vsi-vpnb] quit
# 配置静态路由,指定到达网络3::/64网络的路由下一跳为Router B的IPv6地址1::2。
[RouterA] ipv6 route-static 3:: 64 1::2
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 20
[RouterB-vsi-vpnb-vxlan-20] quit
[RouterB-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道。
[RouterB] interface tunnel 2 mode vxlan
[RouterB-Tunnel2] source 2.2.2.2
[RouterB-Tunnel2] destination 1.1.1.1
[RouterB-Tunnel2] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterB] interface tunnel 3 mode vxlan
[RouterB-Tunnel3] source 2.2.2.2
[RouterB-Tunnel3] destination 3.3.3.3
[RouterB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10
[RouterB-vsi-vpna-vxlan-10] tunnel 2
[RouterB-vsi-vpna-vxlan-10] tunnel 3
[RouterB-vsi-vpna-vxlan-10] quit
[RouterB-vsi-vpna] quit
# 配置Tunnel2和Tunnel3与VXLAN20关联。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 20
[RouterB-vsi-vpnb-vxlan-20] tunnel 2
[RouterB-vsi-vpnb-vxlan-20] tunnel 3
[RouterB-vsi-vpnb-vxlan-20] quit
[RouterB-vsi-vpnb] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6地址。
[RouterB] interface vsi-interface 1
[RouterB-Vsi-interface1] ipv6 address 1::2/64
[RouterB-Vsi-interface1] ipv6 address 4::2/64
[RouterB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[RouterB] vsi vpna
[RouterB-vsi-vpna] gateway vsi-interface 1
[RouterB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] gateway vsi-interface 1
[RouterB-vsi-vpnb] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 20。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 20
[RouterC-vsi-vpnb-vxlan-20] quit
[RouterC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 1 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 1.1.1.1
[RouterC-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 3 mode vxlan
[RouterC-Tunnel3] source 3.3.3.3
[RouterC-Tunnel3] destination 2.2.2.2
[RouterC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10
[RouterC-vsi-vpna-vxlan-10] tunnel 1
[RouterC-vsi-vpna-vxlan-10] tunnel 3
[RouterC-vsi-vpna-vxlan-10] quit
[RouterC-vsi-vpna] quit
# 配置Tunnel1和Tunnel3与VXLAN 20关联。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 20
[RouterC-vsi-vpnb-vxlan-20] tunnel 1
[RouterC-vsi-vpnb-vxlan-20] tunnel 3
[RouterC-vsi-vpnb-vxlan-20] quit
[RouterC-vsi-vpnb] quit
# 配置接入VM 2的接口GigabitEthernet1/0关联VSI实例vpnb。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] xconnect vsi vpnb
[RouterC-GigabitEthernet1/0] quit
# 创建VSI虚接口VSI-interface1,并为其配置IPv6地址,其中1::1/64地址作为VXLAN 10内虚拟机的网关地址,4::1/64地址作为VXLAN 20内虚拟机的网关地址,指定该VSI虚接口为分布式本地网关接口,并开启本地ND代理功能。
[RouterC] interface vsi-interface 1
[RouterC-Vsi-interface1] ipv6 address 1::1/64 anycast
[RouterC-Vsi-interface1] ipv6 address 4::1/64 anycast
[RouterC-Vsi-interface1] distributed-gateway local
[RouterC-Vsi-interface1] local-proxy-nd enable
[RouterC-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为1::1/64。
[RouterC] vsi vpna
[RouterC-vsi-vpna] gateway vsi-interface 1
[RouterC-vsi-vpna] gateway subnet 1::1 64
[RouterC-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联,并配置该VSI实例的子网网段为4::1/64。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] gateway vsi-interface 1
[RouterC-vsi-vpnb] gateway subnet 4::1 64
[RouterC-vsi-vpnb] quit
# 配置静态路由,指定到达网络3::/64网络的路由下一跳为Router B的IPv6地址4::2。
[RouterC] ipv6 route-static 3:: 64 4::2
(1) 验证分布式VXLAN IP网关设备Router A
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[RouterA] 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 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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[RouterA] display l2vpn vsi 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 : -
Drop Unknown : Disabled
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
ACs:
AC Link ID State
GE1/0 0 Up
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
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Gateway Interface : VSI-interface 1
VXLAN ID : 20
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
# 查看Router A上IPv6 neighbors表项信息,可以看到已经建立的邻居信息。
[RouterA] 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 3c8c-400d-867a 0 Tunnel1 STALE D 7
1::100 0001-0000-0047 0 0 STALE D 22
4::400 0002-0000-0047 1 Tunnel2 REACH D 5
FE80::201:FF:FE00:47 0001-0000-0047 0 Tunnel1 REACH D 30
FE80::202:FF:FE00:0 0002-0000-0000 1 Tunnel2 REACH D 27
FE80::202:FF:FE00:47 0002-0000-0047 0 0 DELAY D 5
# 查看Router A上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[RouterA] display ipv6 fib 4::400
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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 : Tunnel2 Token: Invalid
[RouterA] display ipv6 fib 3::300
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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 : Tunnel1 Token: Invalid
(2) 验证VXLAN IP边界网关设备Router B
# 查看Router B上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterB] display interface tunnel 2
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router B上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[RouterB] 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 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
# 查看Router B上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[RouterB] 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 : -
Drop Unknown : Disabled
Flooding : Enabled
Service Class : -
Statistics : Disabled
Gateway interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
# 查看Router B上IPv6 neighbors表项信息,可以看到已经建立的邻居信息。
[RouterB] 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 GE1/0 DELAY D 3
FE80::203:FF:FE00:47 0003-0000-0047 N/A GE1/0 STALE D 222
1::100 0001-0000-0047 0 Tunnel2 STALE D 232
4::400 0002-0000-0047 1 Tunnel3 REACH D 3
FE80::201:FF:FE00:0 0001-0000-0000 0 Tunnel2 STALE D 237
FE80::201:FF:FE00:47 0001-0000-0047 N/A GE1/0 STALE D 222
FE80::202:FF:FE00:0 0002-0000-0000 1 Tunnel3 STALE D 345
# 查看Router B上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[RouterB] display ipv6 fib 1::100
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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 : Tunnel2 Token: Invalid
[RouterB] display ipv6 fib 4::400
Destination count: 1 FIB entry count: 1
Flag:
U:Usable 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 : Tunnel3 Token: Invalid
(3) 验证主机和广域网互访
虚拟机VM 1、VM 2之间可以互访,VM 1、VM 2和Router E上接口GigabitEthernet1/0的地址3::300之间可以互访。
在VXLAN网络中,ENDP(Enhanced Neighbor Discovery Protocol,增强的邻居发现协议)用来自动发现VXLAN网络中的VTEP,并在各VTEP之间自动创建VXLAN隧道。
ENDP可以划分为多个实例,ENDP实例通过Network ID来标识。只有属于同一个ENDP实例的VTEP之间可以互相发现。
ENDP协议定义了如下两个角色:
· ENDS(Enhanced Neighbor Discovery Server,增强的邻居发现服务器):用来维护同一个ENDP实例中的所有邻居信息(IP地址等)。
· ENDC(Enhanced Neighbor Discovery Client,增强的邻居发现客户端):通过ENDS完成邻居的学习,并与邻居建立VXLAN隧道。
ENDP协议的基本工作原理为:ENDS通过接收ENDC的注册请求报文来学习ENDC的信息,同时通过注册应答报文向ENDC发布同一个ENDP实例中所有ENDC的信息。ENDC收到应答报文后,与同一个ENDP实例中的其他ENDC建立VXLAN隧道。
ENDS同时也会作为一个ENDC,与其他ENDC建立VXLAN隧道。
ENDP协议中用到了3个定时器:探测定时器、注册定时器、老化定时器。
· 探测定时器
ENDC请求加入VXLAN网络时会启用探测定时器,该定时器以5秒的时间间隔定时向ENDS发送注册报文,收到ENDS应答报文后会停止探测定时器。
· 注册定时器
ENDC加入VXLAN网络后,为了通告自己工作正常,会定时向ENDS发送注册报文,该定时器的默认时间间隔为15秒,用户可以根据实际需要来调整该时间间隔。
如果ENDC连续发送5个注册报文,都未能收到ENDS的应答报文,则认为网络故障,此时需要清除之前学到的邻居信息,同时重新启用探测定时器。
· 老化定时器
ENDC向ENDS发送的注册报文中携带注册时间间隔,ENDS会记录该时间间隔。ENDC加入VXLAN网络后,如果ENDS在5倍的注册时间内未收到ENDC的注册报文,则认为ENDC出现故障,把ENDC对应的VTEP从VXLAN网络中删除。
为了提高安全性,可以配置ENDP认证功能来防止恶意的节点注册到VXLAN网络。只有本端与对端设备上都未配置ENDP认证功能,或者都配置了认证功能且认证密码相同,才能在二者之间成功建立VXLAN隧道。
使能ENDP认证功能后,发送ENDP报文的设备会使用配置的密码和MD5算法对报文进行摘要运算,然后把运算结果放到报文的认证字段。对端设备收到ENDP报文后,利用本端配置的密码和MD5算法对报文进行摘要运算,然后比较运算结果与报文认证字段携带的信息是否一致,如果一致则认为报文合法,如果不一致则认为报文非法。
(1) 进入系统视图。
system-view
(2) 创建模式为NVE隧道的Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode nve
关于本命令的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。
(3) 配置隧道的Network ID。
network-id network-id
缺省情况下,未配置隧道的Network ID。
(4) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source ipv4-address
¡ 指定隧道的源接口,该接口的主IP地址将作为隧道的源端地址。
source interface-type interface-number
缺省情况下,未设置NVE隧道的源端地址。
源端地址应配置为本端VTEP的接口地址,该地址将作为本地ENDC的地址注册到ENDS。
(5) 开启接口的ENDS功能。
vxlan neighbor-discovery server enable
缺省情况下,ENDS功能处于关闭状态。
开启接口的ENDS功能时,会同时开启该接口的ENDC功能(该ENDC对应的ENDS地址为该接口的源地址)。
(6) (可选)开启ENDP认证功能。
vxlan neighbor-discovery authentication { cipher | simple } string
缺省情况下,ENDP认证功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 创建模式为NVE隧道的Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode nve
(3) 配置隧道的Network ID。
network-id network-id
缺省情况下,未配置隧道的Network ID。
(4) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source ipv4-address
¡ 指定隧道的源接口,该接口的主IP地址将作为隧道的源端地址。
source interface-type interface-number
缺省情况下,未设置NVE隧道的源端地址。
源端地址应配置为本端VTEP的接口地址,该地址将作为本地ENDC的地址注册到ENDS。
(5) 开启接口的ENDC功能,并指定ENDS的地址。
vxlan neighbor-discovery client enable server-ip
缺省情况下,ENDC功能处于关闭状态。
(6) (可选)开启ENDP认证功能。
vxlan neighbor-discovery authentication { cipher | simple } string
缺省情况下,ENDP认证功能处于关闭状态。
(7) (可选)配置ENDC向ENDS注册的时间间隔。
vxlan neighbor-discovery client register-interval interval
缺省情况下,ENDC向ENDS注册的时间间隔为15秒。
在完成上述配置后,在任意视图下执行display命令可以显示配置后ENDP的运行情况,通过查看显示信息验证配置的效果。
表4-1 ENDP显示和维护
操作 |
命令 |
在ENDC上显示ENDC学到的邻居信息 |
display vxlan neighbor-discovery client member [ interface tunnel interface-number | local local-ip | remote client-ip | server server-ip ] |
在ENDC上显示ENDC的统计信息 |
display vxlan neighbor-discovery client statistics interface tunnel interface-number |
在ENDC上显示ENDC的运行信息 |
display vxlan neighbor-discovery client summary |
在ENDS上显示ENDS学到的成员信息 |
display vxlan neighbor-discovery server member [ interface tunnel interface-number | local local-ip | remote client-ip ] |
在ENDS上显示ENDS的统计信息 |
display vxlan neighbor-discovery server statistics interface tunnel interface-number |
在ENDS上显示ENDS的运行信息 |
display vxlan neighbor-discovery server summary |
Router A、Router B、Router C为与服务器连接的VTEP设备。VM 1和VM 5属于VXLAN 10000、VLAN 2;VM 2和VM 6属于VXLAN 10001、VLAN 3;VM 3和VM 7属于VXLAN 10002、VLAN 4;VM 4和VM 8属于VXLAN 10003、VLAN 5。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 不同VTEP之间自动建立VXLAN隧道。
· 通过VXLAN IS-IS发布VXLAN ID,以自动关联VXLAN和VXLAN隧道。
· 通过VXLAN IS-IS发布本地MAC地址信息。
· 发送和接收VXLAN IS-IS报文的VXLAN(预留VXLAN)为11111。
· 站点之间的泛洪流量采用头端复制的方式转发。
图4-1 VXLAN邻居自动发现组网图
(1) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterA] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10000
[RouterA-vsi-vpna-vxlan-10000] quit
[RouterA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 10001
[RouterA-vsi-vpnb-vxlan-10001] quit
[RouterA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 10002。
[RouterA] vsi vpnc
[RouterA-vsi-vpnc] vxlan 10002
[RouterA-vsi-vpnc-vxlan-10002] quit
[RouterA-vsi-vpnc] quit
# 创建VSI实例vpnd和VXLAN 10003。
[RouterA] vsi vpnd
[RouterA-vsi-vpnd] vxlan 10003
[RouterA-vsi-vpnd-vxlan-10003] quit
[RouterA-vsi-vpnd] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为1.1.1.1,Network ID为1,并开启ENDS功能。
[RouterA] interface tunnel 0 mode nve
[RouterA-Tunnel0] source 1.1.1.1
[RouterA-Tunnel0] network-id 1
[RouterA-Tunnel0] vxlan neighbor-discovery server enable
[RouterA-Tunnel0] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 2的数据帧,并将其与VSI实例vpna关联。
[RouterA] interface gigabitethernet 1/0.1
[RouterA-GigabitEthernet1/0.1] vlan-type dot1q vid 2
[RouterA-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterA-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[RouterA] interface gigabitethernet 1/0.2
[RouterA-GigabitEthernet1/0.2] vlan-type dot1q vid 3
[RouterA-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterA-GigabitEthernet1/0.2] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.3,该子接口用来处理VLAN 4的数据帧,并将其与VSI实例vpnc关联。
[RouterA] interface gigabitethernet 1/0.3
[RouterA-GigabitEthernet1/0.3] vlan-type dot1q vid 4
[RouterA-GigabitEthernet1/0.3] xconnect vsi vpnc
[RouterA-GigabitEthernet1/0.3] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.4,该子接口用来处理VLAN 5的数据帧,并将其与VSI实例vpnd关联。
[RouterA] interface gigabitethernet 1/0.4
[RouterA-GigabitEthernet1/0.4] vlan-type dot1q vid 5
[RouterA-GigabitEthernet1/0.4] xconnect vsi vpnd
[RouterA-GigabitEthernet1/0.4] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterA] vxlan-isis
[RouterA-vxlan-isis] negotiate-vni enable
[RouterA-vxlan-isis] mac-synchronization enable
[RouterA-vxlan-isis] quit
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterB] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10000
[RouterB-vsi-vpna-vxlan-10000] quit
[RouterB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 10001
[RouterB-vsi-vpnb-vxlan-10001] quit
[RouterB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为2.2.2.2,Network ID为1,并开启ENDC功能,指定ENDS为1.1.1.1。
[RouterB] interface tunnel 0 mode nve
[RouterB-Tunnel0] source 2.2.2.2
[RouterB-Tunnel0] network-id 1
[RouterB-Tunnel0] vxlan neighbor-discovery client enable 1.1.1.1
[RouterB-Tunnel0] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 2的数据帧,并将其与VSI实例vpna关联。
[RouterB] interface gigabitethernet 1/0.1
[RouterB-GigabitEthernet1/0.1] vlan-type dot1q vid 2
[RouterB-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterB-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[RouterB] interface gigabitethernet 1/0.2
[RouterB-GigabitEthernet1/0.2] vlan-type dot1q vid 3
[RouterB-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterB-GigabitEthernet1/0.2] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterB] vxlan-isis
[RouterB-vxlan-isis] negotiate-vni enable
[RouterB-vxlan-isis] mac-synchronization enable
[RouterB-vxlan-isis] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterC] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10002。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10002
[RouterC-vsi-vpna-vxlan-10002] quit
[RouterC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10003。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 10003
[RouterC-vsi-vpnb-vxlan-10003] quit
[RouterC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为3.3.3.3,Network ID为1,并开启ENDC功能,指定ENDS为1.1.1.1。
[RouterC] interface tunnel 0 mode nve
[RouterC-Tunnel0] source 3.3.3.3
[RouterC-Tunnel0] network-id 1
[RouterC-Tunnel0] vxlan neighbor-discovery client enable 1.1.1.1
[RouterC-Tunnel0] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 4的数据帧,并将其与VSI实例vpna关联。
[RouterC] interface gigabitethernet 1/0.1
[RouterC-GigabitEthernet1/0.1] vlan-type dot1q vid 4
[RouterC-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterC-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 5的数据帧,并将其与VSI实例vpnb关联。
[RouterC] interface gigabitethernet 1/0.2
[RouterC-GigabitEthernet1/0.2] vlan-type dot1q vid 5
[RouterC-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterC-GigabitEthernet1/0.2] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterC] vxlan-isis
[RouterC-vxlan-isis] negotiate-vni enable
[RouterC-vxlan-isis] mac-synchronization enable
[RouterC-vxlan-isis] quit
(1) 验证VTEP设备(下文以Router A为例,其它设备验证方法与此类似)
# 查看Router A上的ENDS信息,可以看到邻居个数和详细信息。
[RouterA] display vxlan neighbor-discovery server summary
Interface Local Address Network ID Auth Members
Tunnel0 1.1.1.1 1 disabled 3
[RouterA] display vxlan neighbor-discovery server member
Interface: Tunnel0 Network ID: 1
IP Address: 1.1.1.1
Client Address System ID Expire Created Time
1.1.1.1 0001-0000-0000 72 2014/08/01 03:34:22
2.2.2.2 0002-0000-0000 66 2014/08/01 03:39:24
3.3.3.3 0003-0000-0000 72 2014/08/01 03:42:34
# 查看Router A上的ENDC信息,可以看到邻居状态为Up。
[RouterA] display vxlan neighbor-discovery client member
Interface: Tunnel0 Network ID: 1
Local Address: 1.1.1.1
Server Address: 1.1.1.1
Neighbor System ID Created Time Expire Status
2.2.2.2 0002-0000-0000 2014/08/01 03:39:38 71 Up
3.3.3.3 0003-0000-0000 2014/08/01 03:42:38 71 Up
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel
Tunnel 1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
Tunnel 2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[RouterA] display l2vpn vsi 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 : -
Drop Unknown : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10000
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.1 0 Up
VSI Name: vpnb
VSI Index : 1
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10001
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.2 0 Up
VSI Name: vpnc
VSI Index : 2
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10002
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.3 0 Up
VSI Name: vpnd
VSI Index : 3
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10003
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.4 0 Up
# 查看Router A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[RouterA] display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
0001-0000-001c Dynamic vpna 0x0 Aging
0002-0000-0009 Static vpna Tunnel1 NotAging
0001-0000-001c Dynamic vpnb 0x0 Aging
0002-0000-0009 Static vpnb Tunnel1 NotAging
0001-0000-001c Dynamic vpnc 0x0 Aging
0003-0000-0009 Dynamic vpnc Tunnel2 Aging
--- 6 mac address(es) found ---
# 查看Router A上邻居状态信息,可以看到已经和Router B、Router C建立邻居。
[RouterA] display vxlan isis peer
System ID: 0002.0000.0000
Link interface: Tunnel1
Circuit ID: 0002.0000.0000.0001
State: Up
Hold time: 8s
Neighbour DED priority: 64
Uptime: 03:17:51
System ID: 0003.0000.0000
Link interface: Tunnel2
Circuit ID: 0003.0000.0000.0001
State: Up
Hold time: 6s
Neighbour DED priority: 64
Uptime: 03:13:25
# 查看Router A上链路状态信息,可以看到链路状态正常。
[RouterA] display vxlan isis lsdb
Link state database information for VXLAN ISIS (Tunnel 1)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
0001.0000.0000.0000-00* 0x00000003 0xba21 1043 67 0
0002.0000.0000.0000-00 0x00000004 0x1441 1122 59 0
0002.0000.0000.0001-00 0x00000001 0x1670 874 57 0
Link state database information for VXLAN ISIS (Tunnel 2)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
0001.0000.0000.0000-00* 0x00000003 0xc614 1043 67 0
0003.0000.0000.0000-00 0x00000002 0x770b 1010 89 0
0003.0000.0000.0001-00 0x00000001 0x1d67 1010 57 0
Flags: *-Self LSP, +-Self LSP(Extended)
# 查看Router A上VXLAN IS-IS的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[RouterA] display vxlan isis remote-mac
MAC Flags: A-MAC has been received by an active tunnel interface
C-MAC conflict with local dynamic MAC
F-MAC has been flushed to the remote MAC address table
VXLAN ID: 10002
MAC address: 0003-0000-0009
Interface: Tunnel2
Flags: AF
VXLAN ID: 10003
MAC address: 0003-0000-0009
Interface: Tunnel2
Flags: AF
# 查看Router A上VXLAN IS-IS的远端VXLAN信息,可以看到已学习到的VXLAN信息。
[RouterA] display vxlan isis remote-vxlan
VXLAN Flags: S-VXLAN supported at the local end
F-Association between VXLAN and Tunnels has been flushed to L2VPN
VXLAN ID: 10000
Flags: FS
Tunnel: 1
VXLAN ID: 10001
Flags: FS
Tunnel: 1
VXLAN ID: 10002
Flags: FS
Tunnel: 2
VXLAN ID: 10003
Flags: FS
Tunnel: 2
(2) 验证主机
VM 1和VM 5、VM 2和VM 6、VM 3和VM 7、VM 4和VM 8可以互访,其他VM之间不能互访。
VXLAN IS-IS协议主要有自动关联VXLAN隧道和VXLAN、VXLAN MAC地址同步、VXLAN主机路由信息(即ARP信息和ND信息)同步功能。VXLAN IS-IS可以用来简化配置,并能更好地控制VXLAN数据业务的转发。
VXLAN IS-IS配置任务如下:
(2) 配置隧道自动关联、MAC地址和主机路由自动同步功能
建议不要同时开启MAC地址信息同步功能和主机路由信息同步功能。
(3) (可选)调整和优化VXLAN IS-IS
保留VXLAN用来接收和发送VXLAN IS-IS报文。VTEP上只有配置保留VXLAN后,才能够收发VXLAN IS-IS报文。
属于同一个VXLAN的VTEP上必须配置相同的保留VXLAN。
只能在系统视图下配置一个全局保留VXLAN,该VXLAN不能与VSI下创建的VXLAN相同。
(1) 进入系统视图。
system-view
(2) 配置IS-IS协议使用的保留VXLAN。
reserved vxlan vxlan-id
缺省情况下,未指定IS-IS协议使用的保留VXLAN。
执行本配置后,VTEP在所有VXLAN隧道上通过VXLAN IS-IS将本地存在的VXLAN的ID通告给远端VTEP。远端VTEP将其与本地的VXLAN进行比较,如果存在相同的VXLAN,则将该VXLAN与接收该信息的VXLAN隧道关联。
(1) 进入系统视图。
system-view
(2) 创建VXLAN IS-IS进程,并进入VXLAN IS-IS视图。
vxlan-isis
(3) 开启VXLAN IS-IS的VXLAN自动协商功能。
negotiate-vni enable
缺省情况下,VXLAN IS-IS的VXLAN自动协商功能处于关闭状态。
执行本配置后,VTEP可以通过VXLAN IS-IS协议发布本地的MAC地址信息,并能够接收其他VTEP发布的远端MAC地址信息。
(1) 进入系统视图。
system-view
(2) 创建VXLAN IS-IS进程,并进入VXLAN IS-IS视图。
vxlan-isis
(3) 开启VXLAN IS-IS的MAC地址同步功能。
mac-synchronization enable
缺省情况下,VXLAN IS-IS的MAC地址同步功能处于关闭状态。
执行本配置后,VTEP可以通过VXLAN IS-IS协议发布本地的主机路由信息,并能够接收其他VTEP发布的远端路由信息。
(1) 进入系统视图。
system-view
(2) 创建VXLAN IS-IS进程,并进入VXLAN IS-IS视图。
vxlan-isis
(3) 开启VXLAN IS-IS的主机路由信息同步功能。
host-synchronization enable
缺省情况下,VXLAN IS-IS的主机路由信息同步功能处于关闭状态。
开启本功能后,VXLAN IS-IS会将需要发布的主机路由信息中的MAC地址替换成VSI虚接口的MAC地址。在对端VTEP上,多个IP地址将对应同一个MAC地址,从而减少占用对端VTEP设备的MAC地址资源。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 开启本地主机路由信息的代理功能。
local-host proxy enable
缺省情况下,本地主机路由信息的代理功能处于关闭状态。
如果开启了本功能,则设备接收到主机路由信息后,会将其中携带的MAC地址学习到MAC地址表项中。
为了避免重复学习MAC地址,建议不要同时开启本功能和MAC地址同步功能。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 开启主机路由中携带的MAC地址的学习功能。
host-mac-learning enable
缺省情况下,主机路由中携带的MAC地址的学习功能处于关闭状态。
VXLAN模式和NVE模式的Tunnel接口下均可以配置VXLAN IS-IS参数。
· 在VXLAN模式Tunnel接口下配置VXLAN IS-IS参数后,该VXLAN隧道将根据配置的参数发送VXLAN IS-IS报文。
· 通过NVE模式Tunnel接口自动发现远端VTEP并建立VXLAN隧道后,自动建立的VXLAN隧道将采用NVE模式Tunnel接口下配置的VXLAN IS-IS参数。
VTEP之间通过在VXLAN隧道上发送VXLAN IS-IS Hello报文来建立/维持邻接关系、进行DED的选举。VTEP通过VXLAN IS-IS Hello报文将邻接关系保持时间通知给远端VTEP。如果远端VTEP在邻接关系保持时间内未收到来自当前VTEP的VXLAN IS-IS Hello报文,将宣告邻接关系失效。
邻接关系保持时间的计算方法为:
· 没有使能GR能力时,为VXLAN IS-IS Hello报文失效数目与VXLAN IS-IS Hello报文发送时间间隔的乘积。
· 使能GR能力时,取以下二者间的较大值:VXLAN IS-IS Hello报文失效数目与VXLAN IS-IS Hello报文发送时间间隔的乘积(如果是DED,该乘积还要除以3)、GR重启间隔时间。
邻接关系保持时间最大不能超过65535秒,超过65535秒时,算作65535秒。
DED发送VXLAN IS-IS Hello报文的时间间隔是overlay isis timer hello命令设置的时间间隔的1/3。
(1) 进入系统视图。
system-view
(2) 进入模式为NVE或VXLAN隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode { nve | vxlan } ]
(3) 配置VXLAN IS-IS Hello报文的发送时间间隔。
overlay isis timer hello interval
缺省情况下,VXLAN IS-IS Hello报文的发送时间间隔为10秒。
(4) 配置VXLAN IS-IS Hello报文失效数目。
overlay isis timer holding-multiplier value
缺省情况下,VXLAN IS-IS Hello报文失效数目为3。
每个VXLAN隧道两端的VTEP设备通过交互VXLAN IS-IS Hello报文选举出一个DED(Designated Edge Device,指定边缘设备)。选举出的DED周期性发布CSNP报文来进行LSDB同步。
DED优先级数值高的设备被选为DED;如果两台设备的DED优先级相同,则MAC地址较大的设备会被选中。
(1) 进入系统视图。
system-view
(2) 进入模式为NVE或VXLAN隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode { nve | vxlan } ]
(3) 配置Tunnel接口的DED优先级。
overlay isis ded-priority priority
缺省情况下,Tunnel接口的DED优先级为64。
(4) 配置DED发送CSNP报文的时间间隔。
overlay isis timer csnp interval
缺省情况下,DED发送CSNP报文的时间间隔为10秒。
只有在被选举为DED的设备上进行本配置才有效。
LSP相关定时器包括:
· LSP报文发送时间间隔:用来对LSP报文的最小发送时间间隔以及一次可以最多发送的LSP报文数目进行调节。
· LSP最大生存时间:每个LSP都有一个最大生存时间,随着时间的推移LSP的生存时间将逐渐减小,当LSP的生存时间为0时,VXLAN IS-IS将清除该LSP。用户可根据网络的实际情况调整LSP的最大生存时间。
· LSP刷新周期:设备以该周期定时刷新自己生成的LSP,以防止LSP的生存时间减小为0。另外,通过定时刷新LSP可以使整个区域中的LSP保持同步。用户可对LSP的刷新周期进行配置,提高LSP的刷新频率可以加快网络收敛速度,但是将占用更多的带宽。
LSP刷新周期必须小于LSP最大生存时间,以保证在LSP失效前进行刷新。
(1) 进入系统视图。
system-view
(2) 进入模式为NVE或VXLAN隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode { nve | vxlan } ]
(3) 配置接口发送LSP报文的最小时间间隔以及一次最多可以发送的LSP报文数目。
overlay isis timer lsp interval [ count count ]
缺省情况下,发送LSP报文的最小时间间隔为100毫秒,一次最多可以发送的LSP报文数目为5。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 配置本地VTEP生成的LSP在LSDB里的最大生存时间。
timer lsp-max-age seconds
缺省情况下,本地VTEP生成的LSP在LSDB里的最大生存时间为1200秒。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 配置LSP刷新周期。
timer lsp-refresh seconds
缺省情况下,LSP刷新周期为900秒。
打开邻接状态变化的输出开关后,VXLAN IS-IS邻接状态变化时会生成日志信息发送到设备的信息中心,通过设置信息中心的参数,最终决定日志信息的输出规则(即是否允许输出以及输出方向)。有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 打开邻接状态变化的输出开关。
log-peer-change enable
缺省情况下,邻接状态变化的输出开关处于打开状态。
GR(Graceful Restart,平滑重启)是一种在协议重启或主备倒换时保证转发业务不中断的机制。需要协议重启或主备倒换的设备将重启状态通知给邻居,允许邻居重新建立邻接关系而不终止连接。
GR有两个角色:
· GR Restarter:发生协议重启或主备倒换事件且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。
对于VXLAN IS-IS的GR,需要在VTEP间交互GR相关的VXLAN IS-IS报文:带有Restart TLV的Hello报文、CSNP报文和LSP报文。
使能VXLAN IS-IS的GR能力后,邻居间的邻接关系保持时间将取以下二者间的较大值:VXLAN IS-IS Hello报文失效数目与VXLAN IS-IS Hello报文发送时间间隔的乘积(如果是DED,该乘积还要除以3)、GR重启间隔时间。
作为GR Restarter和GR Helper的设备上均需要进行本配置。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 使能VXLAN IS-IS的GR能力。
graceful-restart
缺省情况下,VXLAN IS-IS的GR能力处于关闭状态。
(4) (可选)配置VXLAN IS-IS协议的GR重启间隔时间。
graceful-restart interval interval
缺省情况下,VXLAN IS-IS协议的GR重启间隔时间为300秒。
通过VXLAN IS-IS发布本地MAC地址信息时,一个LSP报文中携带了本地所有的MAC地址信息。如果LSP报文的长度超过1400字节,LSP报文需要分片后发送。这些LSP分片构成一个LSP分片集,每个LSP分片集最多有256个LSP分片,所能携带的最大MAC地址数为55×210。当本地MAC地址数超过55×210时,可以创建VXLAN IS-IS虚拟系统来扩展LSP的分片数量,以增加系统所能发布的MAC地址数量。
系统(包括原始系统和虚拟系统)通过系统ID来标识。原始系统的系统ID采用设备的桥MAC地址。每个系统所能发布的最大MAC地址数量均为55×210。如果创建了N个虚拟系统,则能发布的最大MAC地址数量为(N+1)×55×210。用户可以根据本地MAC地址表的规模,来决定创建的虚拟系统的个数。
创建虚拟系统时,用户需要保证所配置的虚拟系统的系统ID在网络中是唯一的。
(1) 进入系统视图。
system-view
(2) 进入VXLAN IS-IS视图。
vxlan-isis
(3) 创建一个VXLAN IS-IS虚拟系统。
virtual-system system-id
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN IS-IS的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN IS-IS的相关信息。
表5-1 VXLAN IS-IS显示和维护
操作 |
命令 |
显示VXLAN IS-IS进程的摘要信息 |
display vxlan isis brief |
显示VXLAN IS-IS协议的GR状态 |
display vxlan isis graceful-restart status |
显示VXLAN IS-IS的本地主机路由信息 |
display vxlan isis local-host [ ipv6 ] [ vxlan-id vxlan-id ] [ count ] |
显示VXLAN IS-IS的本地MAC地址信息 |
display vxlan isis local-mac dynamic [ [ vxlan vxlan-id ] [ count ] ] |
显示VXLAN IS-IS的链路状态数据库 |
display vxlan isis lsdb [ local | lsp-id lsp-id | verbose ] * [ tunnel tunnel-number ] |
显示VXLAN IS-IS的邻居信息 |
display vxlan isis peer |
显示通过VXLAN IS-IS学习到的远端主机路由信息 |
display vxlan isis remote-host [ ipv6 ] [vxlan-id vxlan-id ] [count ] |
显示通过VXLAN IS-IS学习到的远端MAC地址信息 |
display vxlan isis remote-mac [ [ vxlan vxlan-id ] [ count ] ] |
显示通过VXLAN IS-IS学习到的远端VXLAN信息 |
display vxlan isis remote-vxlan [ vxlan-id | count ] |
显示Tunnel接口的VXLAN IS-IS信息 |
display vxlan isis tunnel [ tunnel-number ] |
清除VXLAN IS-IS进程下所有的动态数据 |
reset vxlan isis |
Router A、Router B、Router C为与服务器连接的VTEP设备。VM 1和VM 5属于VXLAN 10000、VLAN 2;VM 2和VM 6属于VXLAN 10001、VLAN 3;VM 3和VM 7属于VXLAN 10002、VLAN 4;VM 4和VM 8属于VXLAN 10003、VLAN 5。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 不同VTEP之间手工建立VXLAN隧道。
· 通过VXLAN IS-IS发布VXLAN ID,以自动关联VXLAN和VXLAN隧道。
· 通过VXLAN IS-IS发布本地MAC地址信息。
· 发送和接收VXLAN IS-IS报文的VXLAN(预留VXLAN)为11111。
· 站点之间的泛洪流量采用头端复制的方式转发。
图5-1 VXLAN动态协商、头端复制组网图
(1) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterA] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[RouterA] vsi vpna
[RouterA-vsi-vpna] vxlan 10000
[RouterA-vsi-vpna-vxlan-10000] quit
[RouterA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[RouterA] vsi vpnb
[RouterA-vsi-vpnb] vxlan 10001
[RouterA-vsi-vpnb-vxlan-10001] quit
[RouterA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 10002。
[RouterA] vsi vpnc
[RouterA-vsi-vpnc] vxlan 10002
[RouterA-vsi-vpnc-vxlan-10002] quit
[RouterA-vsi-vpnc] quit
# 创建VSI实例vpnd和VXLAN 10003。
[RouterA] vsi vpnd
[RouterA-vsi-vpnd] vxlan 10003
[RouterA-vsi-vpnd-vxlan-10003] quit
[RouterA-vsi-vpnd] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterA] interface loopback 0
[RouterA-Loopback0] ip address 1.1.1.1 255.255.255.255
[RouterA-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1
¡ 指定隧道的目的端地址为Router B上接口Loopback0的地址2.2.2.2。
[RouterA] interface tunnel 1 mode vxlan
[RouterA-Tunnel1] source 1.1.1.1
[RouterA-Tunnel1] destination 2.2.2.2
[RouterA-Tunnel1] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterA] interface tunnel 2 mode vxlan
[RouterA-Tunnel2] source 1.1.1.1
[RouterA-Tunnel2] destination 3.3.3.3
[RouterA-Tunnel2] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 2的数据帧,并将其与VSI实例vpna关联。
[RouterA] interface gigabitethernet 1/0.1
[RouterA-GigabitEthernet1/0.1] vlan-type dot1q vid 2
[RouterA-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterA-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[RouterA] interface gigabitethernet 1/0.2
[RouterA-GigabitEthernet1/0.2] vlan-type dot1q vid 3
[RouterA-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterA-GigabitEthernet1/0.2] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.3,该子接口用来处理VLAN 4的数据帧,并将其与VSI实例vpnc关联。
[RouterA] interface gigabitethernet 1/0.3
[RouterA-GigabitEthernet1/0.3] vlan-type dot1q vid 4
[RouterA-GigabitEthernet1/0.3] xconnect vsi vpnc
[RouterA-GigabitEthernet1/0.3] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.4,该子接口用来处理VLAN 5的数据帧,并将其与VSI实例vpnd关联。
[RouterA] interface gigabitethernet 1/0.4
[RouterA-GigabitEthernet1/0.4] vlan-type dot1q vid 5
[RouterA-GigabitEthernet1/0.4] xconnect vsi vpnd
[RouterA-GigabitEthernet1/0.4] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterA] vxlan-isis
[RouterA-vxlan-isis] negotiate-vni enable
[RouterA-vxlan-isis] mac-synchronization enable
[RouterA-vxlan-isis] quit
(3) 配置Router B
# 开启L2VPN能力。
<RouterB> system-view
[RouterB] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterB] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[RouterB] vsi vpna
[RouterB-vsi-vpna] vxlan 10000
[RouterB-vsi-vpna-vxlan-10000] quit
[RouterB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[RouterB] vsi vpnb
[RouterB-vsi-vpnb] vxlan 10001
[RouterB-vsi-vpnb-vxlan-10001] quit
[RouterB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterB] interface loopback 0
[RouterB-Loopback0] ip address 2.2.2.2 255.255.255.255
[RouterB-Loopback0] quit
# 在Router A和Router B之间建立VXLAN隧道。
[RouterB] interface tunnel 1 mode vxlan
[RouterB-Tunnel1] source 2.2.2.2
[RouterB-Tunnel1] destination 1.1.1.1
[RouterB-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterB] interface tunnel 3 mode vxlan
[RouterB-Tunnel3] source 2.2.2.2
[RouterB-Tunnel3] destination 3.3.3.3
[RouterB-Tunnel3] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 2的数据帧,并将其与VSI实例vpna关联。
[RouterB] interface gigabitethernet 1/0.1
[RouterB-GigabitEthernet1/0.1] vlan-type dot1q vid 2
[RouterB-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterB-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[RouterB] interface gigabitethernet 1/0.2
[RouterB-GigabitEthernet1/0.2] vlan-type dot1q vid 3
[RouterB-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterB-GigabitEthernet1/0.2] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterB] vxlan-isis
[RouterB-vxlan-isis] negotiate-vni enable
[RouterB-vxlan-isis] mac-synchronization enable
[RouterB-vxlan-isis] quit
(4) 配置Router C
# 开启L2VPN能力。
<RouterC> system-view
[RouterC] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[RouterC] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10002。
[RouterC] vsi vpna
[RouterC-vsi-vpna] vxlan 10002
[RouterC-vsi-vpna-vxlan-10002] quit
[RouterC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10003。
[RouterC] vsi vpnb
[RouterC-vsi-vpnb] vxlan 10003
[RouterC-vsi-vpnb-vxlan-10003] quit
[RouterC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[RouterC] interface loopback 0
[RouterC-Loopback0] ip address 3.3.3.3 255.255.255.255
[RouterC-Loopback0] quit
# 在Router A和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 2 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 1.1.1.1
[RouterC-Tunnel1] quit
# 在Router B和Router C之间建立VXLAN隧道。
[RouterC] interface tunnel 3 mode vxlan
[RouterC-Tunnel1] source 3.3.3.3
[RouterC-Tunnel1] destination 2.2.2.2
[RouterC-Tunnel1] quit
# 在接入服务器的接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.1,该子接口用来处理VLAN 4的数据帧,并将其与VSI实例vpna关联。
[RouterC] interface gigabitethernet 1/0.1
[RouterC-GigabitEthernet1/0.1] vlan-type dot1q vid 4
[RouterC-GigabitEthernet1/0.1] xconnect vsi vpna
[RouterC-GigabitEthernet1/0.1] quit
# 在接口GigabitEthernet1/0上创建子接口GigabitEthernet1/0.2,该子接口用来处理VLAN 5的数据帧,并将其与VSI实例vpnb关联。
[RouterC] interface gigabitethernet 1/0.2
[RouterC-GigabitEthernet1/0.2] vlan-type dot1q vid 5
[RouterC-GigabitEthernet1/0.2] xconnect vsi vpnb
[RouterC-GigabitEthernet1/0.2] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[RouterC] vxlan-isis
[RouterC-vxlan-isis] negotiate-vni enable
[RouterC-vxlan-isis] mac-synchronization enable
[RouterC-vxlan-isis] quit
(1) 验证VTEP设备(下文以Router A为例,其它设备验证方法与此类似)
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[RouterA] display l2vpn vsi 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 : -
Drop Unknown : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10000
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.1 0 Up
VSI Name: vpnb
VSI Index : 1
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10001
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.2 0 Up
VSI Name: vpnc
VSI Index : 2
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10002
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.3 0 Up
VSI Name: vpnd
VSI Index : 3
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
VXLAN ID : 10003
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel2 0x5000002 UP Auto Disabled Enabled
ACs:
AC Link ID State
GE1/0.4 0 Up
# 查看Router A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[RouterA] display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
0001-0000-001c Dynamic vpna 0x0 Aging
0002-0000-0009 Static vpna Tunnel1 NotAging
0001-0000-001c Dynamic vpnb 0x0 Aging
0002-0000-0009 Static vpnb Tunnel1 NotAging
0001-0000-001c Dynamic vpnc 0x0 Aging
0003-0000-0009 Static vpnc Tunnel2 NotAging
0001-0000-001c Dynamic vpnd 0x0 Aging
0003-0000-0009 Static vpnd Tunnel2 NotAging
--- 8 mac address(es) found ---
# 查看Router A上邻居状态信息,可以看到已经和Router B、Router C建立邻居。
[RouterA] display vxlan isis peer
System ID: 0002.0000.0000
Link interface: Tunnel1
Circuit ID: 0002.0000.0000.0001
State: Up
Hold time: 6s
Neighbour DED priority: 64
Uptime: 00:27:44
System ID: 0003.0000.0000
Link interface: Tunnel2
Circuit ID: 0003.0000.0000.0001
State: Up
Hold time: 6s
Neighbour DED priority: 64
Uptime: 00:20:33
# 查看Router A上链路状态信息,可以看到链路状态正常。
[RouterA] display vxlan isis lsdb
Link state database information for VXLAN ISIS (Tunnel 1)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
0001.0000.0000.0000-00* 0x00000006 0x9556 899 97 0
0002.0000.0000.0000-00 0x00000004 0xd3b8 983 89 0
0002.0000.0000.0001-00 0x00000002 0x1471 456 57 0
Link state database information for VXLAN ISIS (Tunnel 2)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
0001.0000.0000.0000-00* 0x00000006 0x8462 886 97 0
0003.0000.0000.0000-00 0x00000004 0x730d 1066 89 0
0003.0000.0000.0001-00 0x00000002 0x1b68 809 57 0
Flags: *-Self LSP, +-Self LSP(Extended)
# 查看Router A上VXLAN IS-IS的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[RouterA] display vxlan isis remote-mac
MAC Flags: A-MAC has been received by an active tunnel interface
C-MAC conflict with local dynamic MAC
F-MAC has been flushed to the remote MAC address table
VXLAN ID: 10000
MAC address: 0002-0000-0009
Interface: Tunnel1
Flags: AF
VXLAN ID: 10001
MAC address: 0002-0000-0009
Interface: Tunnel1
Flags: AF
VXLAN ID: 10002
MAC address: 0003-0000-0009
Interface: Tunnel2
Flags: AF
VXLAN ID: 10003
MAC address: 0003-0000-0009
Interface: Tunnel2
Flags: AF
# 查看Router A上VXLAN IS-IS的远端VXLAN信息,可以看到已学习到的VXLAN信息。
[RouterA] display vxlan isis remote-vxlan
VXLAN Flags: S-VXLAN supported at the local end
F-Association between VXLAN and Tunnels has been flushed to L2VPN
VXLAN ID: 10000
Flags: FS
Tunnel: 1
VXLAN ID: 10001
Flags: FS
Tunnel: 1
VXLAN ID: 10002
Flags: FS
Tunnel: 2
VXLAN ID: 10003
Flags: FS
Tunnel: 2
(2) 验证主机
VM 1和VM 5、VM 2和VM 6、VM 3和VM 7、VM 4和VM 8可以互访,其他VM之间不能互访。
OVSDB(Open vSwitch Database,开源虚拟交换机数据库)控制协议用来实现NVC(Network Virtualization Controller,网络虚拟化控制器)对网络中VTEP设备的管理和部署。
如图6-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设备上进行如下配置:
(1) 与控制器建立OVSDB连接
(2) 开启OVSDB服务器
(3) 开启OVSDB VTEP服务
(4) 配置VXLAN隧道的全局源地址
(5) 指定用户侧的接入端口
(6) 开启组播隧道泛洪代理功能
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须执行本配置。
在进行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 ]
缺省情况下,不会与控制器建立被动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 | ipv6 ipv6-address }
缺省情况下,未配置VXLAN隧道的全局源地址。
为了在控制器上显示VTEP上的端口并对其进行控制,必须在VTEP上将该端口配置为用户侧的接入端口。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 指定当前接口为用户侧的接入端口。
vtep access port
缺省情况下,当前接口不是用户侧的接入端口。
开启组播隧道泛洪代理功能后,系统会将控制器下发的组播隧道转换为具有泛洪代理功能的隧道。VXLAN内的广播、组播和未知单播流量将通过具有泛洪代理功能的隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP。
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须开启该功能。
(1) 进入系统视图。
system-view
(2) 开启组播隧道泛洪代理功能。
vxlan tunnel flooding-proxy
缺省情况下,组播隧道泛洪代理功能处于关闭状态。
Router A、Router B、Router C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 通过控制器下发配置,在不同VTEP之间建立VXLAN隧道。
· 站点之间的泛洪流量采用头端复制的方式转发。
图6-2 OVSDB-VTEP头端复制组网图
(1) 配置IP地址、单播路由协议、控制器
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Router A
# 开启L2VPN能力。
<RouterA> system-view
[RouterA] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterA] ovsdb server tcp ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterA] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterA] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterA] interface loopback 0
[RouterA-LoopBack0] ip address 1.1.1.1 255.255.255.255
[RouterA-LoopBack0] quit
[RouterA] tunnel global source-address 1.1.1.1
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] vtep access port
[RouterA-GigabitEthernet1/0] quit
(3) 配置Router B
# 开启L2VPN功能。
<RouterB> system-view
[RouterB] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterB] ovsdb server tcp 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterB] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterB] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterB] interface loopback 0
[RouterB-LoopBack0] ip address 2.2.2.2 255.255.255.255
[RouterB-LoopBack0] quit
[RouterB] tunnel global source-address 2.2.2.2
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterB] interface gigabitethernet 1/0
[RouterB-GigabitEthernet1/0] vtep access port
[RouterB-GigabitEthernet1/0] quit
(4) 配置Router C
# 开启L2VPN功能。
<RouterC> system-view
[RouterC] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterC] ovsdb server tcp ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterC] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterC] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterC] interface loopback 0
[RouterC-LoopBack0] ip address 3.3.3.3 255.255.255.255
[RouterC-LoopBack0] quit
[RouterC] tunnel global source-address 3.3.3.3
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] vtep access port
[RouterC-GigabitEthernet1/0] quit
(5) 控制器上进行VXLAN配置(略)
(1) 验证VTEP设备(下文以Router A为例,其它设备验证方法与此类似)
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息。
[RouterA] display l2vpn vsi verbose
VSI Name: evpn2014
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Statistics : Disabled
VXLAN ID : 10
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
ACs:
AC Link ID State
GE1/0 0 Up
# 查看Router A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<RouterA> 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之间可以互访。
Router A、Router B、Router C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
具体需求为:
· 通过控制器下发配置,在不同VTEP之间建立VXLAN隧道。
· 站点之间的泛洪流量采用泛洪代理(服务器复制)的方式转发。
· VTEP采用控制器下发的MAC地址表项进行流量转发。
图6-3 OVSDB-VTEP泛洪代理组网图
(1) 配置IP地址、单播路由协议、控制器和服务器
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Router A
# 开启L2VPN功能。
<RouterA> system-view
[RouterA] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterA] ovsdb server tcp ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterA] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterA] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterA] interface loopback 0
[RouterA-LoopBack0] ip address 1.1.1.1 255.255.255.255
[RouterA-LoopBack0] quit
[RouterA] tunnel global source-address 1.1.1.1
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterA] interface gigabitethernet 1/0
[RouterA-GigabitEthernet1/0] vtep access port
[RouterA-GigabitEthernet1/0] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[RouterA] interface gigabitethernet 2/0
[RouterA-GigabitEthernet2/0] undo mac-address static source-check enable
[RouterA-GigabitEthernet2/0] quit
# 关闭远端MAC地址自动学习功能。
[RouterA] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[RouterA] vxlan tunnel flooding-proxy
(3) 配置Router B
# 开启L2VPN功能。
<RouterB> system-view
[RouterB] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterB] ovsdb server tcp ip 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterB] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterB] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterB] interface loopback 0
[RouterB-LoopBack0] ip address 2.2.2.2 255.255.255.255
[RouterB-LoopBack0] quit
[RouterB] tunnel global source-address 2.2.2.2
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterB] interface gigabitethernet 1/0
[RouterB-GigabitEthernet1/0] vtep access port
[RouterB-GigabitEthernet1/0] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[RouterB] interface gigabitethernet 2/0
[RouterB-GigabitEthernet2/0] undo mac-address static source-check enable
[RouterB-GigabitEthernet2/0] quit
# 关闭远端MAC地址自动学习功能。
[RouterB] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[RouterB] vxlan tunnel flooding-proxy
(4) 配置Router C
# 开启L2VPN功能。
<RouterC> system-view
[RouterC] l2vpn enable
# 配置与控制器建立主动TCP连接,TCP连接使用的PKI域为a,连接的目的地址为10.0.2.15(控制器的地址),目的端口号为6632。
[RouterC] ovsdb server tcp 10.0.2.15 port 6632
# 开启OVSDB服务器。
[RouterC] ovsdb server enable
# 开启OVSDB VTEP服务。
[RouterC] vtep enable
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[RouterC] interface loopback 0
[RouterC-LoopBack0] ip address 3.3.3.3 255.255.255.255
[RouterC-LoopBack0] quit
[RouterC] tunnel global source-address 3.3.3.3
# 指定接入服务器的接口GigabitEthernet1/0为用户侧的接入端口。
[RouterC] interface gigabitethernet 1/0
[RouterC-GigabitEthernet1/0] vtep access port
[RouterC-GigabitEthernet1/0] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[RouterC] interface gigabitethernet 2/0
[RouterC-GigabitEthernet2/0] undo mac-address static source-check enable
[RouterC-GigabitEthernet2/0] quit
# 关闭远端MAC地址自动学习功能。
[RouterC] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[RouterC] vxlan tunnel flooding-proxy
(5) 控制器上进行VXLAN配置(略)
(1) 验证VTEP设备(下文以Router A为例,其它设备验证方法与此类似)
# 查看Router A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[RouterA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64kbps
Maximum transmission unit: 1464
Internet protocol processing: disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
# 查看Router A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息,其中Tunnel1和Tunnel2为去往RouterB、RouterC的隧道,Tunnel3为去往代理服务器的隧道。
[RouterA] display l2vpn vsi verbose
VSI Name: evpn2014
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 : -
PW Redundancy : Slave
Flooding : Enabled
Service Class : -
Statistics : Disabled
VXLAN ID : 10
Tunnel Statistics : Disabled
Tunnels:
Tunnel Name Link ID State Type Flood Proxy Split horizon
Tunnel1 0x5000001 Up Manual Disabled Enabled
Tunnel2 0x5000002 Up Manual Disabled Enabled
Tunnel3 0x5000003 Up Manual Enabled Enabled
ACs:
AC Link ID State
GE1/0 0 Up
# 查看Router A上VSI的MAC地址表项信息,可以看到控制器下发的MAC地址信息。
<RouterA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb OVSDB evpn2014 Tunnel1 NotAging
cc3e-5f9c-23dc OVSDB evpn2014 Tunnel2 NotAging
--- 2 mac address(es) found ---
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!