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