01-VXLAN配置
本章节下载: 01-VXLAN配置 (746.72 KB)
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN主要应用于数据中心网络。
VXLAN具有如下特点:
· 支持大量的租户:使用24位的标识符,最多可支持2的24次方(16777216)个VXLAN,支持的租户数目大规模增加,解决了传统二层网络VLAN资源不足的问题。
· 易于维护:基于IP网络组建大二层网络,使得网络部署和维护更加容易,并且可以充分地利用现有的IP网络技术,例如利用等价路由进行负载分担等;只有IP核心网络的边缘设备需要进行VXLAN处理,网络中间设备只需根据IP头转发报文,降低了网络部署的难度和费用。
目前,设备只支持基于IPv4网络的VXLAN技术,不支持基于IPv6网络的VXLAN技术。
图1-1 VXLAN网络模型示意图
· 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 Switching 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地址表项转发报文。
为了将VXLAN报文传递到远端VTEP,需要创建VXLAN隧道,并将VXLAN隧道与VXLAN关联。
VXLAN隧道的建立方式有如下两种:
· 手工方式:手工配置Tunnel接口,并指定隧道的源和目的IP地址分别为本端和远端VTEP的IP地址。
· 自动方式:通过ENDP(Enhanced Neighbor Discovery Protocol,增强的邻居发现协议)发现远端VTEP后,自动在本端和远端VTEP之间建立VXLAN隧道。ENDP协议的详细介绍,请参见“3 ENDP”。
VXLAN隧道与VXLAN关联的方式有如下两种:
· 手工方式:手工将VXLAN隧道与VXLAN关联。
· 自动方式:VXLAN扩展了IS-IS协议来发布VXLAN ID信息。VTEP在所有VXLAN隧道上通过VXLAN IS-IS将本地存在的VXLAN的ID通告给远端VTEP。远端VTEP将其与本地的VXLAN进行比较,如果存在相同的VXLAN,则将该VXLAN与接收该信息的VXLAN隧道关联。
VTEP将连接本地站点的以太网服务实例(Service Instance)与VSI关联。VTEP从以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。
在VXLAN中,与VSI关联的以太网服务实例统称为AC(Attachment Circuit,接入电路)。其中,以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。
如图1-3所示,VM 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到VM 1发送的数据帧后,可以判定该数据帧属于VXLAN 10。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
MAC地址学习分为本地MAC地址学习和远端MAC地址学习两部分。
是指VTEP对本地站点内虚拟机MAC地址的学习。VTEP接收到本地虚拟机发送的数据帧后,判断该数据帧所属的VSI,并将数据帧中的源MAC地址(本地虚拟机的MAC地址)添加到该VSI的MAC地址表中,该MAC地址对应的接口为接收到数据帧的接口。
VXLAN不支持静态配置本地MAC地址。
是指VTEP对远端站点内虚拟机MAC地址的学习。远端MAC地址的学习方式有如下几种:
· 静态配置:手工指定远端MAC地址所属的VSI(VXLAN),及其对应的VXLAN隧道接口。
· 通过报文中的源MAC地址动态学习:VTEP从VXLAN隧道上接收到远端VTEP发送的VXLAN报文后,根据VXLAN ID判断报文所属的VXLAN,对报文进行解封装,还原二层数据帧,并将数据帧中的源MAC地址(远端虚拟机的MAC地址)添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为VXLAN隧道接口。
· 通过IS-IS协议学习:VXLAN扩展了IS-IS协议来发布远端MAC地址信息。在VTEP上运行VXLAN IS-IS协议,通过VXLAN隧道将本地MAC地址及其所属的VXLAN信息通告给远端VTEP。远端VTEP接收到该信息后,将其添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为接收该信息的VXLAN隧道接口。
静态配置的远端MAC地址表项优先级高于源MAC地址动态学习和通过IS-IS协议学习的表项。源MAC地址动态学习和通过IS-IS协议学习的表项优先级相同,后生成的表项可以覆盖已经存在的表项。
· VLAN接入模式:从本地站点接收到的、发送给本地站点的以太网帧必须带有VLAN tag。VTEP从本地站点接收到以太网帧后,删除该帧的所有VLAN tag,再转发该数据帧;VTEP发送以太网帧到本地站点时,为其添加VLAN tag。采用该模式时,VTEP不会传递VLAN tag信息,不同站点可以独立地规划自己的VLAN,不同站点的不同VLAN之间可以互通。
· Ethernet接入模式:从本地站点接收到的、发送给本地站点的以太网帧可以携带VLAN tag,也可以不携带VLAN tag。VTEP从本地站点接收到以太网帧后,保持该帧的VLAN tag信息不变,转发该数据帧;VTEP发送以太网帧到本地站点时,不会为其添加VLAN tag。采用该模式时,VTEP会在不同站点间传递VLAN tag信息,不同站点的VLAN需要统一规划,否则无法互通。
缺省情况下,接入模式为VLAN模式。下文对于流量转发过程的介绍均以VLAN模式为例。
完成本地和远端MAC地址学习后,VTEP在VXLAN内转发单播流量的过程如下所述。
对于站点内流量,VTEP判断出报文所属的VSI后,根据目的MAC地址查找该VSI的MAC地址表,从相应的本地接口转发给目的VM。
如图1-4所示,VM 1(MAC地址为MAC 1)发送以太网帧到VM 4(MAC地址为MAC 4)时,VTEP 1从接口FortyGigE1/1/1收到该以太网帧后,判断该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 4的出接口为FortyGigE1/1/2,所在VLAN为VLAN 10,则将以太网帧从接口FortyGigE1/1/2的VLAN 10内发送给VM 4。
如图1-5所示,以VM 1(MAC地址为MAC 1)发送以太网帧给VM 7(MAC地址为MAC 7)为例,站点间单播流量的转发过程为:
(1) VM 1发送以太网数据帧给VM 7,数据帧的源MAC地址为MAC 1,目的MAC为MAC 7,VLAN tag为2。
(2) VTEP 1从接口FortyGigE1/1/1收到该数据帧后,判断该数据帧属于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的出端口为FortyGigE1/1/1,所在VLAN为VLAN 20。
(6) VTEP 2从接口FortyGigE1/1/1的VLAN 20内将数据帧发送给VM 7。
泛洪流量包括组播、广播和未知单播流量。根据复制方式的不同,流量泛洪方式分为单播路由方式(头端复制)、组播路由方式(核心复制)和泛洪代理方式(服务器复制)三种。
在单播路由方式下,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
(1) VTEP 1接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。
(2) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用组播路由方式可以节省泛洪流量对核心网络带宽资源的占用。
在组播路由方式下,同一个VXLAN内的所有VTEP都加入同一个组播组,利用组播路由协议(如PIM)在IP核心网上为该组播组建立组播转发表项。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会为其封装组播目的IP地址,封装后的报文根据已建立的组播转发表项转发到远端VTEP。
(1) VTEP 1接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,不仅通过该VXLAN内除接收接口外的所有本地接口将数据帧转发到本地站点,还会为其封装VXLAN头、UDP头和IP头(目的IP地址为组播地址)通过组播转发表项将其发送到远端VTEP。
(2) 在IP核心网内,P设备根据已经建立的组播转发表项复制并转发该组播报文。
(3) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用泛洪代理方式可以在没有组播协议参与的情况下,节省泛洪流量对核心网络带宽资源的占用。
在泛洪代理方式下,同一个VXLAN内的所有VTEP通过手工方式都与代理服务器建立隧道。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会将其发送到代理服务器,由代理服务器转发到其他远端VTEP。
(1) VTEP 1接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,不仅通过该VXLAN内除接收接口外的所有本地接口将数据帧转发到本地站点,还会为其封装VXLAN头、UDP头和IP头(目的IP地址为泛洪代理服务器地址)通过指定的隧道将其发送到泛洪代理服务器。
(2) 泛洪代理服务器收到报文后,修改报文的IP头,源地址为服务器本身,目的IP为其余VTEP地址,从不同的隧道发送到远端VTEP。
(3) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
目前泛洪代理方式主要用于SDN网络,使用虚拟服务器作为泛洪代理服务器。此时需要在VTEP设备上使用vxlan tunnel mac-learning disable命令关闭远端MAC地址自动学习功能,并配置与VXLAN对应的Openflow实例,采用SDN控制器下发的MAC地址表项进行流量转发。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP从本地站点、VXLAN隧道接收到ARP请求和ARP应答报文后,根据该报文在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-9 ARP泛洪抑制示意图
(1) 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-9以单播路由泛洪方式为例)。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立VM 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。
(4) VM 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立VM 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立VM 7的ARP泛洪抑制表项,之后将ARP应答报文发送给VM 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,虚拟机VM 4发送ARP请求,获取VM 1或VM 7的MAC地址。
(8) VTEP 1接收到ARP请求后,建立VM 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 在VTEP 3上建立ARP泛洪抑制表项后,虚拟机VM 10发送ARP请求,获取VM 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立VM 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
与VXLAN相关的协议规范有:
· RFC 7047:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
在VXLAN组网中,IP核心网络中的设备只需要配置路由协议,确保VTEP之间路由可达。VXLAN相关配置都在VTEP上进行。
表2-1 VXLAN配置任务简介
创建VSI和VXLAN |
||
配置VXLAN隧道 |
||
关联VXLAN与VXLAN隧道 |
||
配置AC与VSI关联 |
||
配置VXLAN组播路由泛洪方式 |
||
配置VSI泛洪抑制 |
||
配置VXLAN报文的目的UDP端口号 |
||
配置VXLAN报文检查功能 |
||
配置ARP泛洪抑制 |
||
配置VTEP保护组的成员地址列表 |
可选 |
|
配置VXLAN流量统计 |
表2-2 创建VSI和VXLAN
使能L2VPN功能 |
缺省情况下,L2VPN功能处于关闭状态 |
|
创建VSI,并进入VSI视图 |
vsi vsi-name |
|
(可选)设置VSI的描述信息 |
缺省情况下,未配置VSI的描述信息 |
|
缺省情况下,VSI处于开启状态 |
||
创建VXLAN,并进入VXLAN视图 |
在一个VSI下只能创建一个VXLAN 不同VSI下创建的VXLAN,其VXLAN ID不能相同 |
用户可以手工创建VXLAN隧道,也可以通过ENDP发现远端VTEP后自动创建VXLAN隧道。ENDP的详细介绍和配置方法,请参见“3 ENDP”。
手工创建VXLAN隧道时,隧道的源端地址和目的端地址需要分别手工指定为本地和远端VTEP的接口地址。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。关于interface tunnel、source和destination命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
配置VXLAN隧道的全局源地址 |
缺省情况下,没有配置VXLAN隧道的全局源地址 如果VXLAN隧道Tunnel接口下没有指定源端地址或源接口,则使用全局源地址 |
|
创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图 |
||
缺省情况下,没有设置VXLAN隧道的源端地址和源接口 如果设置的是隧道的源端地址,则该地址将作为封装后VXLAN报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后VXLAN报文的源IP地址 采用VXLAN组播路由泛洪方式时,VXLAN隧道的源接口不能是Loopback接口、源端地址不能是Loopback接口的地址 |
||
隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后VXLAN报文的目的地址 |
||
(可选)开启隧道的BFD检测功能,并设置BFD报文的目的MAC地址 |
tunnel bfd enable destination-mac mac-address |
缺省情况下,隧道的BFD检测功能处于关闭状态 开启隧道的BFD检测功能后,VTEP将自动建立单跳控制报文方式的BFD会话对VXLAN隧道的状态进行检测。检测方式为:隧道两端的VTEP设备均周期性地向配置的目的MAC地址发送BFD控制报文,并对报文进行VXLAN隧道封装,如果在5秒内没有接收到对端发送的BFD控制报文,则将隧道状态置为Defect,隧道接口状态仍为Up。当VXLAN隧道恢复正常后,隧道状态可自动恢复Up 执行本命令的同时,需要在系统视图下执行reserved vxlan命令配置保留VXLAN。否则,BFD会话无法up |
一个VXLAN可以关联多条VXLAN隧道。一条VXLAN隧道可以关联多个VXLAN,这些VXLAN共用该VXLAN隧道,VTEP根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。VTEP接收到某个VXLAN的泛洪流量后,如果采用单播路由泛洪方式,则VTEP将在与该VXLAN关联的所有VXLAN隧道上发送该流量,以便将流量转发给所有的远端VTEP。
用户可以手工关联VXLAN与VXLAN隧道,也可以通过VXLAN IS-IS自动关联VXLAN与VXLAN隧道。VXLAN IS-IS的详细介绍和配置方法,请参见“4 VXLAN IS-IS协议”。
表2-4 手工关联VXLAN与VXLAN隧道
进入VSI视图 |
vsi vsi-name |
|
进入VXLAN视图 |
||
配置VXLAN与VXLAN隧道关联 |
缺省情况下,VXLAN没有与任何VXLAN隧道关联 VTEP必须与相同VXLAN内的其它VTEP建立VXLAN隧道,并将该隧道与VXLAN关联 配置VXLAN与带flooding-proxy属性的隧道关联后,VXLAN内的广播、组播和未知单播流量将通过该隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP |
将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。
匹配携带任意VLAN标签或不携带VLAN标签的报文 |
|||
匹配携带指定外层VLAN标签的报文 |
|||
缺省情况下,以太网服务实例没有与VSI关联 如果通过encapsulation命令配置的匹配规则为default、tagged或untagged,则本命令指定的接入模式不会生效,均按照Ethernet接入模式处理报文 |
· 不要在同一接口上同时创建以太网服务实例和使能EVB功能,否则二者均将无法正常工作。有关EVB功能的详细介绍请参见“EVB配置指导”。
· 以太网服务实例所匹配的VLAN,不能是设备上开启EVB功能的接口允许通过的VLAN。
· 不要在同一接口上同时创建用于VXLAN的以太网服务实例和用于MPLS L2VPN、VPLS的以太网服务实例,否则VXLAN将无法正常工作。有关MPLS L2VPN、VPLS功能的详细介绍请参见“MPLS配置指导”。
· 在接口上创建以太网服务实例匹配当前接口接收的部分VLAN的报文后,以太网服务实例未匹配的其它VLAN内的组播流量将无法正常转发,请注意避免在上述情况下使用组播业务。
本地MAC地址只能动态学习,不能静态配置。在动态添加、删除本地MAC地址时,可以记录日志信息。
远端MAC地址表项可以静态添加,也可以根据接收到的VXLAN报文内封装的源MAC地址自动学习,或通过VXLAN IS-IS协议学习。通过VXLAN IS-IS协议学习的配置方法,请参见“4 VXLAN IS-IS协议”。
执行本配置后,VXLAN添加、删除本地MAC地址时,将产生日志信息。生成的日志信息将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
表2-6 配置本端MAC地址添加/删除的日志功能
开启VXLAN本地MAC地址添加/删除的日志功能 |
缺省情况下,VXLAN添加/删除本地MAC地址时不会记录日志信息 |
添加静态远端MAC地址表项 |
mac-address static mac-address interface tunnel tunnel-number vsi vsi-name |
interface tunnel interface-number参数指定的隧道接口必须与vsi vsi-name参数指定的VSI对应的VXLAN关联,且该VXLAN必须已经创建,否则配置将失败 |
缺省情况下,设备可以自动学习远端MAC地址。如果网络中存在攻击,为了避免学习到错误的远端MAC地址,也可以手工关闭远端MAC地址自动学习功能。
表2-8 开启远端MAC地址自动学习功能
开启远端MAC地址自动学习功能 |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
配置VXLAN采用组播路由方式转发泛洪流量后,如果组播路由隧道down掉,即使还存在单播路由隧道,泛洪流量也不会沿单播路由隧道转发。
配置VXLAN组播路由泛洪方式时,需要完成以下配置任务:
· 在VTEP和核心设备上启动三层组播路由功能。
· 在核心设备上配置IGMP和组播路由协议。由于VTEP同时作为组播源和组播接收者,因此推荐使用双向PIM作为组播路由协议。
表2-9 配置VXLAN组播路由泛洪方式
进入VSI视图 |
vsi vsi-name |
|
进入VXLAN视图 |
||
配置VXLAN泛洪的组播地址和组播报文的源IP地址 |
缺省情况下,未指定VXLAN泛洪的组播地址和组播报文的源IP地址,VXLAN采用单播路由方式泛洪 执行本命令后,VTEP将加入指定的组播组。同一VXLAN的所有VTEP都要加入相同的组播组 为确保组播报文转发正常,VXLAN组播报文的源IP地址(source-address)应指定为一个已创建且处于up状态的VXLAN隧道的源端地址 |
|
进入组播报文源IP地址所在接口的接口视图 |
组播报文源IP地址是指通过group命令中的source参数指定的地址 |
|
在接口上使能IGMP协议的主机功能 |
缺省情况下,接口上IGMP协议的主机功能处于关闭状态 执行本命令后,当前接口将作为IGMP主机,即从该接口收到IGMP查询报文后,通过该接口发送组播组的报告报文,以便接收该组播组的报文 只有通过multicast routing命令使能IP组播路由后,本命令才会生效 |
缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。
禁止泛洪功能后,为了将某些MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
表2-10 配置VSI泛洪抑制
|
|||
|
|||
进入VSI视图 |
vsi vsi-name |
||
关闭VSI的泛洪功能 |
缺省情况下,VSI泛洪功能处于开启状态 |
|
|
配置VSI选择性泛洪的MAC地址 |
selective-flooding mac-addres mac-address |
缺省情况下,设备上不存在任何VSI选择性泛洪MAC地址 如果用户只希望某些目的MAC地址的报文可以泛洪到其它站点,可以先通过flooding disable命令关闭泛洪功能,再通过本命令配置选择性泛洪的MAC地址 |
|
属于同一个VXLAN的VTEP设备上需要配置相同的UDP端口号。
表2-11 配置VXLAN报文的目的UDP端口号
配置VXLAN报文的目的UDP端口号 |
缺省情况下,VXLAN报文的目的UDP端口号为4789 |
通过本配置可以实现对接收到的VXLAN报文的UDP校验和、内层封装的以太网数据帧是否携带VLAN tag进行检查:
· UDP校验和检查:VTEP接收到VXLAN报文后,检查该报文的UDP校验和是否为0。若UDP校验和为0,则接收该报文;若UDP校验和不为0,则检查UDP检验和是否正确,正确则接收该报文;否则,丢弃该报文。
· VLAN Tag检查:VTEP接收到VXLAN报文并对其解封装后,若内层以太网数据帧带有VLAN tag,则丢弃该VXLAN报文。
需要注意的是:通过xconnect vsi命令的access-mode参数配置接入模式为ethernet时,VXLAN报文可能携带VLAN tag,在这种情况下建议不要执行vxlan invalid-vlan-tag discard命令,以免错误地丢弃报文。
表2-12 配置VXLAN报文检查功能
配置丢弃UDP校验和检查失败的VXLAN报文 |
缺省情况下,不会检查VXLAN报文的UDP校验和 |
|
配置丢弃内层数据帧含有VLAN tag的VXLAN报文 |
缺省情况下,不会检查VXLAN报文内层封装的以太网数据帧是否携带VLAN tag |
配置ARP泛洪抑制时需要注意:如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
采用组播路由(核心复制)方式转发泛洪流量时:
· 若需要使用ARP泛洪抑制功能,必须保证所有VTEP设备均开启ARP泛洪抑制功能;
· 当需要和其它厂商的VTEP设备互通时,不能使用ARP泛洪抑制功能。
表2-13 配置ARP泛洪抑制
|
|||
|
|||
进入VSI视图 |
|||
开启ARP泛洪抑制功能 |
缺省情况下,ARP泛洪抑制功能处于关闭状态 |
|
VTEP保护组由多台VTEP设备作为成员组成,对外提供保护组组IP地址用于VXLAN数据转发,同时各成员之间使用成员IP地址进行协议通信和表项同步。
使用VTEP保护组做为集中式VXLAN IP网关的组网中,接入层VTEP设备需要指定保护组组IP地址作为网关地址,同时需要指定保护组成员地址列表,配合保护组实现网关备份功能。
本系列设备仅支持用做接入层VTEP设备,不支持用做网关,有关VTEP保护组的详细介绍请参考网关设备配套资料。
表2-14 配置VTEP保护组的成员地址列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VTEP保护组的成员地址列表 |
vtep group group-ip member remote member-ip&<1-8> |
缺省情况下,设备上没有配置VTEP保护组的成员地址列表 |
开启以太网服务实例的报文统计功能 |
有关本命令的详细介绍请参见“MPLS命令参考”中的“VPLS” |
||
reset l2vpn statistics ac [ interface interface-type interface-number service-instance instance-id ] |
有关本命令的详细介绍请参见“MPLS命令参考”中的“VPLS” |
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN的相关信息。
显示VSI的ARP泛洪抑制表项信息 |
display arp suppression vsi [ name vsi-name ] [ slot slot-number ] [ count ] |
显示VSI的MAC地址表信息 |
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count ] |
显示VSI的信息 |
|
显示IGMP执行主机行为的所有组播组信息 |
display igmp host group [ group-address | interface interface-type interface-number ] [ verbose ] |
显示Tunnel接口信息 |
|
显示VXLAN关联的VXLAN隧道信息 |
|
清除VSI的ARP泛洪抑制表项 |
|
清除VSI动态学习的MAC地址表项 |
|
reset l2vpn statistics ac [ interface interface-type interface-number service-instance instance-id ] |
· display interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· reset l2vpn statistics ac命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
· 不同VTEP之间手工建立VXLAN隧道。
· 手工关联VXLAN和VXLAN隧道。
· 通过源MAC地址动态学习远端MAC地址表项。
图2-1 VXLAN头端复制组网图
(1) 配置IP地址和单播路由协议
请按照图2-1配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN能力。
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[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] vxlan 10
[SwitchA-vsi-vpna-vxlan10] tunnel 1
[SwitchA-vsi-vpna-vxlan10] tunnel 2
[SwitchA-vsi-vpna-vxlan10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] service-instance 1000
[SwitchA-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchA-FortyGigE1/1/1-srv1000] quit
[SwitchA-FortyGigE1/1/1] quit
# 开启L2VPN能力。
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[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] vxlan 10
[SwitchB-vsi-vpna-vxlan10] tunnel 2
[SwitchB-vsi-vpna-vxlan10] tunnel 3
[SwitchB-vsi-vpna-vxlan10] quit
[SwitchB-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] service-instance 1000
[SwitchB-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchB-FortyGigE1/1/1-srv1000] quit
[SwitchB-FortyGigE1/1/1] quit
# 开启L2VPN能力。
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[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] vxlan 10
[SwitchC-vsi-vpna-vxlan10] tunnel 1
[SwitchC-vsi-vpna-vxlan10] tunnel 3
[SwitchC-vsi-vpna-vxlan10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] service-instance 1000
[SwitchC-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchC-FortyGigE1/1/1-srv1000] quit
[SwitchC-FortyGigE1/1/1] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 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
# 查看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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
ACs:
AC Link ID State
FGE1/1/1 srv1000 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic vpna Tunnel1 Aging
cc3e-5f9c-23dc Dynamic vpna Tunnel2 Aging
--- 2 mac address(es) found ---
虚拟机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地址 |
||||
|
|
||||
|
|
||||
|
|||||
|
|
|
|
(1) 配置IP地址和单播路由协议
请按照图2-2配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN能力。
[SwitchA] l2vpn enable
# 使能IP组播路由。
[SwitchA-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan10] 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] vxlan 10
[SwitchA-vsi-vpna-vxlan10] tunnel 1
[SwitchA-vsi-vpna-vxlan10] tunnel 2
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为11.1.1.1。
[SwitchA-vsi-vpna-vxlan10] group 225.1.1.1 source 11.1.1.1
[SwitchA-vsi-vpna-vxlan10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] service-instance 1000
[SwitchA-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchA-FortyGigE1/1/1-srv1000] quit
[SwitchA-FortyGigE1/1/1] quit
# 开启L2VPN能力。
[SwitchB] l2vpn enable
# 使能IP组播路由。
[SwitchB-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan10] 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] vxlan 10
[SwitchB-vsi-vpna-vxlan10] tunnel 2
[SwitchB-vsi-vpna-vxlan10] tunnel 3
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为12.1.1.2。
[SwitchB-vsi-vpna-vxlan10] group 225.1.1.1 source 12.1.1.2
[SwitchB-vsi-vpna-vxlan10] quit
[SwitchB-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] service-instance 1000
[SwitchB-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchB-FortyGigE1/1/1-srv1000] quit
[SwitchB-FortyGigE1/1/1] quit
# 开启L2VPN能力。
[SwitchC] l2vpn enable
# 使能IP组播路由。
[SwitchC-mrib] quit
# 创建VSI实例vpna和VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan10] 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] vxlan 10
[SwitchC-vsi-vpna-vxlan10] tunnel 1
[SwitchC-vsi-vpna-vxlan10] tunnel 3
# 配置VXLAN泛洪的组播地址为225.1.1.1,组播报文的源IP地址为13.1.1.3。
[SwitchC-vsi-vpna-vxlan10] group 225.1.1.1 source 13.1.1.3
[SwitchC-vsi-vpna-vxlan10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] service-instance 1000
[SwitchC-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchC-FortyGigE1/1/1-srv1000] quit
[SwitchC-FortyGigE1/1/1] quit
(5) 配置Switch D
# 使能IP组播路由。
[SwitchD] multicast routing
[SwitchD-mrib] quit
# 在接口Vlan-interface11上使能IGMP。
[SwitchD] interface vlan-interface 11
[SwitchD-Vlan-interface11] igmp enable
[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] bidir-pim enable
[SwitchD-pim] quit
(6) 配置Switch E
# 使能IP组播路由。
[SwitchE] multicast routing
[SwitchE-mrib] quit
# 在接口Vlan-interface13上使能IGMP。
[SwitchE] interface vlan-interface 13
[SwitchE-Vlan-interface13] igmp enable
[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] bidir-pim enable
[SwitchE-pim] quit
(7) 配置Switch F
# 使能IP组播路由。
[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
# 使能双向PIM。
[SwitchF-pim] bidir-pim enable
# 将接口Vlan-interface22配置为C-BSR,并将接口Loopback0配置为服务于双向PIM的C-RP。
[SwitchF-pim] c-rp 6.6.6.6 bidir
[SwitchF-pim] quit
(8) 配置Switch G
# 使能IP组播路由。
[SwitchG] multicast routing
[SwitchG-mrib] quit
# 在接口Vlan-interface12上使能IGMP。
[SwitchG] interface vlan-interface 12
[SwitchG-Vlan-interface12] igmp enable
[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] bidir-pim enable
[SwitchG-pim] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 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
# 查看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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
MTunnel0 0x6000000 Up Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv1000 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic vpna Tunnel1 Aging
cc3e-5f9c-23dc Dynamic vpna Tunnel2 Aging
--- 2 mac address(es) found ---
# 查看Switch A上IGMP执行主机行为的所有组播组信息,可以看到接口Vlan-interface11下存在组播组225.1.1.1的信息。
<SwitchA> display igmp host group
IGMP host groups in total: 1
Vlan-interface11(11.1.1.1):
IGMP host groups in total: 1
Group address Member state Expires
225.1.1.1 Idle Off
虚拟机VM 1、VM 2、VM 3之间可以互访。
在VXLAN网络中,ENDP(Enhanced Neighbor Discovery Protocol,增强的邻居发现协议)用来自动发现VXLAN网络中的VTEP,并在各VTEP之间自动创建VXLAN隧道。
ENDP可以划分为多个实例,ENDP实例通过Network ID来标识。只有属于同一个ENDP实例的VTEP之间可以互相发现。
ENDP协议定义了如下两个角色:
· ENDS(Enhanced Neighbor Discovery Server,增强的邻居发现服务器):用来维护同一个ENDP实例中的所有邻居信息(IP地址等)。
· ENDC(Enhanced Neighbor Discovery Client,增强的邻居发现客户端):通过ENDS完成邻居的学习,并与邻居建立VXLAN隧道。
ENDP协议的基本工作原理为:ENDS通过接收ENDC的注册请求报文来学习ENDC的信息,同时通过注册应答报文向ENDC发布同一个ENDP实例中所有ENDC的信息。ENDC收到应答报文后,与同一个ENDP实例中的其他ENDC建立VXLAN隧道。
ENDS同时也会作为一个ENDC,与其他ENDC建立VXLAN隧道。
ENDP协议中用到了3个定时器:探测定时器、注册定时器、老化定时器。
ENDC请求加入VXLAN网络时会启用探测定时器,该定时器以5秒的时间间隔定时向ENDS发送注册报文,收到ENDS应答报文后会停止探测定时器。
ENDC加入VXLAN网络后,为了通告自己工作正常,会定时向ENDS发送注册报文,该定时器的默认时间间隔为15秒,用户可以根据实际需要来调整该时间间隔。
如果ENDC连续发送5个注册报文,都未能收到ENDS的应答报文,则认为网络故障,此时需要清除之前学到的邻居信息,同时重新启用探测定时器。
ENDC向ENDS发送的注册报文中携带注册时间间隔,ENDS会记录该时间间隔。ENDC加入VXLAN网络后,如果ENDS在5倍的注册时间内未收到ENDC的注册报文,则认为ENDC出现故障,把ENDC对应的VTEP从VXLAN网络中删除。
为了提高安全性,可以配置ENDP认证功能来防止恶意的节点注册到VXLAN网络。只有本端与对端设备上都没有配置ENDP认证功能,或者都配置了认证功能且认证密码相同,才能在二者之间成功建立VXLAN隧道。
使能ENDP认证功能后,发送ENDP报文的设备会使用配置的密码和MD5算法对报文进行摘要运算,然后把运算结果放到报文的认证字段。对端设备收到ENDP报文后,利用本端配置的密码和MD5算法对报文进行摘要运算,然后比较运算结果与报文认证字段携带的信息是否一致,如果一致则认为报文合法,如果不一致则认为报文非法。
配置ENDP时,需要在ENDS和ENDC上创建NVE模式的Tunnel接口,指定隧道的源端地址为本端VTEP的接口地址,并在该接口上使能ENDS或ENDC功能,以便在该接口上运行ENDP协议。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。关于interface tunnel、source命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
创建模式为NVE隧道的Tunnel接口,并进入Tunnel接口视图 |
||
缺省情况下,没有配置隧道的Network ID |
||
缺省情况下,没有设置VXLAN隧道的源端地址和源接口 NVE隧道的源端地址作为本地ENDC的地址注册到ENDS 如果设置的是隧道的源接口,则隧道的源端地址为该接口的主IP地址 |
||
缺省情况下,ENDS功能处于关闭状态 开启接口的ENDS功能时,会同时开启该接口的ENDC功能(该ENDC对应的ENDS地址为该接口的源地址) |
||
(可选)开启ENDP认证功能 |
vxlan neighbor-discovery authentication { cipher | simple } password |
缺省情况下,ENDP认证功能处于关闭状态 |
创建模式为NVE隧道的Tunnel接口,并进入Tunnel接口视图 |
||
缺省情况下,没有配置隧道的Network ID |
||
缺省情况下,没有设置VXLAN隧道的源端地址和源接口 NVE隧道的源端地址作为本地ENDC的地址注册到ENDS 如果设置的是隧道的源接口,则隧道的源端地址为该接口的主IP地址 |
||
开启接口的ENDC功能,并指定ENDS的地址 |
缺省情况下,ENDC功能处于关闭状态 |
|
(可选)开启ENDP认证功能 |
vxlan neighbor-discovery authentication { cipher | simple } password |
缺省情况下,ENDP认证功能处于关闭状态 |
配置ENDC向ENDS注册的时间间隔 |
vxlan neighbor-discovery client register-interval time-value |
缺省情况下,ENDC向ENDS注册的时间间隔为15秒 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后ENDP的运行情况,通过查看显示信息验证配置的效果。
表3-3 ENDP显示和维护
在ENDC上显示ENDC学到的邻居信息 |
display vxlan neighbor-discovery client member [ interface tunnel interface-number | local local-ip | remote client-ip | server server-ip ] |
在ENDC上显示ENDC的统计信息 |
display vxlan neighbor-discovery client statistics interface tunnel interface-number |
在ENDC上显示ENDC的运行信息 |
|
在ENDS上显示ENDS学到的成员信息 |
|
在ENDS上显示ENDS的统计信息 |
display vxlan neighbor-discovery server statistics interface tunnel interface-number |
在ENDS上显示ENDS的运行信息 |
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。VM 1和VM 5属于VXLAN 10000、VLAN 2;VM 2和VM 6属于VXLAN 10001、VLAN 3;VM 3和VM 7属于VXLAN 10002、VLAN 4;VM 4和VM 8属于VXLAN 10003、VLAN 5。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
· 不同VTEP之间自动建立VXLAN隧道。
· 通过VXLAN IS-IS发布VXLAN ID,以自动关联VXLAN和VXLAN隧道。
· 通过VXLAN IS-IS发布本地MAC地址信息。
· 发送和接收VXLAN IS-IS报文的VXLAN(预留VXLAN)为11111。
图3-1 VXLAN邻居自动发现组网图
(1) 配置IP地址和单播路由协议
请按照图3-1配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN能力。
[SwitchA] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchA] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[SwitchA-vsi-vpna] vxlan 10000
[SwitchA-vsi-vpna-vxlan10000] quit
[SwitchA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[SwitchA-vsi-vpnb] vxlan 10001
[SwitchA-vsi-vpnb-vxlan10001] quit
[SwitchA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 10002。
[SwitchA-vsi-vpnc] vxlan 10002
[SwitchA-vsi-vpnc-vxlan10002] quit
[SwitchA-vsi-vpnc] quit
# 创建VSI实例vpnd和VXLAN 10003。
[SwitchA-vsi-vpnd] vxlan 10003
[SwitchA-vsi-vpnd-vxlan10003] quit
[SwitchA-vsi-vpnd] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为1.1.1.1,Network ID为1,并开启ENDS功能。
[SwitchA] interface tunnel 0 mode nve
[SwitchA-Tunnel0] source 1.1.1.1
[SwitchA-Tunnel0] network-id 1
[SwitchA-Tunnel0] vxlan neighbor-discovery server enable
[SwitchA-Tunnel0] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧,并将其与VSI实例vpna关联。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] service-instance 1000
[SwitchA-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
[SwitchA-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchA-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[SwitchA-FortyGigE1/1/1] service-instance 2000
[SwitchA-FortyGigE1/1/1-srv2000] encapsulation s-vid 3
[SwitchA-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchA-FortyGigE1/1/1-srv2000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例3000,该实例用来匹配VLAN 4的数据帧,并将其与VSI实例vpnc关联。
[SwitchA-FortyGigE1/1/1] service-instance 3000
[SwitchA-FortyGigE1/1/1-srv3000] encapsulation s-vid 4
[SwitchA-FortyGigE1/1/1-srv3000] xconnect vsi vpnc
[SwitchA-FortyGigE1/1/1-srv3000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例4000,该实例用来匹配VLAN 5的数据帧,并将其与VSI实例vpnd关联。
[SwitchA-FortyGigE1/1/1] service-instance 4000
[SwitchA-FortyGigE1/1/1-srv4000] encapsulation s-vid 5
[SwitchA-FortyGigE1/1/1-srv4000] xconnect vsi vpnd
[SwitchA-FortyGigE1/1/1-srv4000] quit
[SwitchA-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchA-vxlan-isis] negotiate-vni enable
[SwitchA-vxlan-isis] mac-synchronization enable
[SwitchA-vxlan-isis] quit
# 开启L2VPN能力。
[SwitchB] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchB] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[SwitchB-vsi-vpna] vxlan 10000
[SwitchB-vsi-vpna-vxlan10000] quit
[SwitchB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[SwitchB-vsi-vpnb] vxlan 10001
[SwitchB-vsi-vpnb-vxlan10001] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为2.2.2.2,Network ID为1,并开启ENDC功能,指定ENDS为1.1.1.1。
[SwitchB] interface tunnel 0 mode nve
[SwitchB-Tunnel0] source 2.2.2.2
[SwitchB-Tunnel0] network-id 1
[SwitchB-Tunnel0] vxlan neighbor-discovery client enable 1.1.1.1
[SwitchB-Tunnel0] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧,并将其与VSI实例vpna关联。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] service-instance 1000
[SwitchB-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
[SwitchB-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchB-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[SwitchB-FortyGigE1/1/1] service-instance 2000
[SwitchB-FortyGigE1/1/1-srv2000] encapsulation s-vid 3
[SwitchB-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchB-FortyGigE1/1/1-srv2000] quit
[SwitchB-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchB-vxlan-isis] negotiate-vni enable
[SwitchB-vxlan-isis] mac-synchronization enable
[SwitchB-vxlan-isis] quit
# 开启L2VPN能力。
[SwitchC] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchC] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10002。
[SwitchC-vsi-vpna] vxlan 10002
[SwitchC-vsi-vpna-vxlan10002] quit
[SwitchC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10003。
[SwitchC-vsi-vpnb] vxlan 10003
[SwitchC-vsi-vpnb-vxlan10003] quit
[SwitchC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 创建模式为NVE的隧道接口Tunnel0,指定源端地址为3.3.3.3,Network ID为1,并开启ENDC功能,指定ENDS为1.1.1.1。
[SwitchC] interface tunnel 0 mode nve
[SwitchC-Tunnel0] source 3.3.3.3
[SwitchC-Tunnel0] network-id 1
[SwitchC-Tunnel0] vxlan neighbor-discovery client enable 1.1.1.1
[SwitchC-Tunnel0] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧,并将其与VSI实例vpna关联。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] service-instance 1000
[SwitchC-FortyGigE1/1/1-srv1000] encapsulation s-vid 4
[SwitchC-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchC-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 5的数据帧,并将其与VSI实例vpnb关联。
[SwitchC-FortyGigE1/1/1] service-instance 2000
[SwitchC-FortyGigE1/1/1-srv2000] encapsulation s-vid 5
[SwitchC-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchC-FortyGigE1/1/1-srv2000] quit
[SwitchC-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchC-vxlan-isis] negotiate-vni enable
[SwitchC-vxlan-isis] mac-synchronization enable
[SwitchC-vxlan-isis] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的ENDS信息,可以看到邻居个数和详细信息。
[SwitchA] display vxlan neighbor-discovery server summary
Interface Local Address Network ID Auth Members
Tunnel0 1.1.1.1 1 enabled 3
[SwitchA] display vxlan neighbor-discovery server member
Interface: Tunnel0 Network ID: 1
IP Address: 1.1.1.1
Client Address System ID Expire Created Time
1.1.1.1 000F-0001-0001 25 2011/11/11 00:00:30
2.2.2.2 000F-0001-0002 25 2011/11/11 00:00:43
3.3.3.3 000F-0001-0003 24 2011/11/11 01:00:46
# 查看Switch A上的ENDC信息,可以看到邻居状态为Up。
[SwitchA] display vxlan neighbor-discovery client member
Interface: Tunnel0 Network ID: 1
Local Address: 1.1.1.1
Server Address: 1.1.1.1
Neighbor System ID Created Time Expire Status
2.2.2.2 000F-0001-0002 2014/01/11 12:12:12 13 Up
3.3.3.3 000F-0001-0003 2014/01/11 12:12:12 12 Up
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel
Tunnel 1
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 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Tunnel 2
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
# 查看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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10000
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv1000 0 Up
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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10001
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv2000 0 Up
VSI Name: vpnc
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10002
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel2 0x5000002 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv3000 0 Up
VSI Name: vpnd
VSI Index : 3
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10003
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel2 0x5000002 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv4000 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[SwitchA] display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb IS-IS vpna Tunnel1 Aging
cc3e-5f9c-23dc IS-IS vpnc Tunnel2 Aging
--- 1 mac address(es) found ---
# 查看Switch A上邻居状态信息,可以看到已经和Switch B、Switch C建立邻居。
[SwitchA] display vxlan isis peer
System ID: 4431.9234.2602
Link interface: Tunnel1
Circuit ID: 4431.9234.2602.0001
State: Up
Hold time: 8s
Neighbour DED priority: 64
Uptime: 47:48:34
System ID: 4431.9234.1f68
Link interface: Tunnel2
Circuit ID: 4431.9234.1f68.0000
State: Up
Hold time: 27s
Neighbour DED priority: 64
Uptime: 47:50:30
# 查看Switch A上链路状态信息,可以看到链路状态正常。
[SwitchA] display vxlan isis lsdb
Link state database information for VXLAN ISIS (Tunnel 1)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
4431.9234.1f68.0000-00 0x000000c2 0xdc02 656 59 0
4431.9234.2602.0000-00* 0x000000c3 0xd136 326 70 0
4431.9234.2602.0001-00* 0x000000c1 0x73ca 658 57 0
Link state database information for VXLAN ISIS (Tunnel 2)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
4431.9234.1f68.0000-00 0x000000c2 0xdc02 656 59 0
4431.9234.2613.0000-00* 0x000000c3 0xd136 326 70 0
4431.9234.2613.0002-00* 0x000000c1 0x73ca 658 57 0
Flags: *-Self LSP, +-Self LSP(Extended)
# 查看Switch A上VXLAN IS-IS的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[SwitchA] display vxlan isis remote-mac
MAC Flags: D-MAC conflict with local dynamic MAC.
F-MAC has been issued to the remote MAC address table.
S-MAC conflict with local static or selective-flooding MAC.
A-Tunnel interface can forward traffic to the MAC.
VXLAN ID: 10000
MAC address: cc3e-5f9c-6cdb
Interface: Tunnel1
Flags: AF
VXLAN ID: 10002
MAC address: cc3e-5f9c-23dc
Interface: Tunnel2
Flags: AF
# 查看Switch A上VXLAN IS-IS的远端VXLAN信息,可以看到已学习到的VXLAN信息。
[SwitchA] display vxlan isis remote-vxlan
VXLAN Flags: S-VXLAN supported at the local end
F-Association between VXLAN and Tunnels has been flushed to L2VPN
VXLAN ID: 10000
Flags: FS
Tunnel: 1
VXLAN ID: 10001
Flags: FS
Tunnel: 1
VXLAN ID: 10002
Flags: FS
Tunnel: 2
VXLAN ID: 10003
Flags: FS
Tunnel: 2
VM 1和VM 5、VM 2和VM 6、VM 3和VM 7、VM 4和VM 8可以互访,其他VM之间不能互访。
VXLAN IS-IS协议主要有自动关联VXLAN隧道和VXLAN、VXLAN MAC地址同步两个功能。VXLAN IS-IS可以用来简化配置,并能更好地控制VXLAN数据业务的转发。
表4-1 VXLAN IS-IS配置任务简介
为VXLAN IS-IS指定预留VXLAN |
||
自动关联VXLAN与VXLAN隧道 |
||
配置通过VXLAN IS-IS同步MAC地址 |
||
表4-2 为VXLAN IS-IS指定预留VXLAN
配置IS-IS协议使用的保留VXLAN |
缺省情况下,没有指定IS-IS协议使用的保留VXLAN |
执行本配置后,VTEP将在所有VXLAN隧道上通过VXLAN IS-IS发布VXLAN ID信息,以便将VXLAN与VXLAN隧道关联。
表4-3 自动关联VXLAN与VXLAN隧道
创建VXLAN IS-IS进程,并进入VXLAN IS-IS视图 |
||
开启VXLAN IS-IS的VXLAN自动协商功能 |
缺省情况下,VXLAN IS-IS不会在VTEP之间交互VXLAN ID |
执行本配置后,VTEP可以通过VXLAN IS-IS协议发布本地的MAC地址信息,并能够接收其他VTEP发布的远端MAC地址信息。
表4-4 配置通过VXLAN IS-IS同步MAC地址
创建VXLAN IS-IS进程,并进入VXLAN IS-IS视图 |
||
开启VXLAN IS-IS的MAC地址同步功能 |
缺省情况下,VXLAN IS-IS不会在VTEP之间同步MAC地址信息 |
VXLAN模式和NVE模式的Tunnel接口下均可以配置VXLAN IS-IS参数。
· 在VXLAN模式Tunnel接口下配置VXLAN IS-IS参数后,该VXLAN隧道将根据配置的参数发送VXLAN IS-IS报文。
· 通过NVE模式Tunnel接口自动发现远端VTEP并建立VXLAN隧道后,自动建立的VXLAN隧道将采用NVE模式Tunnel接口下配置的VXLAN IS-IS参数。
当前VTEP可以将邻接关系保持时间(即VXLAN IS-IS Hello报文失效数目与VXLAN IS-IS Hello报文发送时间间隔的乘积)通过VXLAN IS-IS Hello报文通知远端VTEP。如果远端VTEP在邻接关系保持时间内没有收到来自当前VTEP的VXLAN IS-IS Hello报文,将宣告邻接关系失效。通过设置VXLAN IS-IS Hello报文失效数目和VXLAN IS-IS Hello报文的发送时间间隔,可以调整邻接关系保持时间。
· 邻接关系保持时间最大不能超过65535秒,超过65535秒时,算作65535秒。
· DED发送VXLAN IS-IS Hello报文的时间间隔是overlay isis timer hello命令设置的时间间隔的1/3。
进入模式为NVE或VXLAN隧道的Tunnel接口视图 |
||
配置VXLAN IS-IS Hello报文的发送时间间隔 |
缺省情况下,VXLAN IS-IS Hello报文的发送时间间隔为10秒 |
|
配置VXLAN IS-IS Hello报文失效数目 |
缺省情况下,VXLAN IS-IS Hello报文失效数目为3 |
每个VXLAN隧道两端的VTEP设备通过交互VXLAN IS-IS Hello报文选举出一个DED(Designated Edge Device,指定边缘设备)。选举出的DED周期性发布CSNP报文来进行LSDB同步。
DED优先级数值越高,被选中的可能性就越大;如果两台设备的DED优先级相同,则MAC地址较大的设备会被选中。
表4-6 配置DED的优先级和CSNP报文发送时间间隔
进入模式为NVE或VXLAN隧道的Tunnel接口视图 |
||
配置Tunnel接口的DED优先级 |
overlay isis ded-priority value |
缺省情况下,Tunnel接口的DED优先级为64 |
配置DED发送CSNP报文的时间间隔 |
缺省情况下,DED发送CSNP报文的时间间隔为10秒 只有在被选举为DED的设备上进行本配置才有效 |
当LSDB的内容发生变化时,VXLAN IS-IS将把发生变化的LSP扩散出去。用户可以对LSP的最小发送时间间隔以及一次可以最多发送的LSP的数目进行调节。
表4-8 配置LSP发送时间间隔
进入模式为NVE或VXLAN隧道的Tunnel接口视图 |
||
配置接口发送LSP的最小时间间隔以及一次最多可以发送的LSP数目 |
缺省情况下,发送LSP的最小时间间隔为100毫秒,一次最多可以发送的LSP数目为5 |
每个LSP都有一个最大生存时间,随着时间的推移LSP的生存时间将逐渐减小,当LSP的生存时间为0时,VXLAN IS-IS将清除该LSP。用户可根据网络的实际情况调整LSP的最大生存时间。
表4-9 配置LSP最大生存时间
配置当前VTEP生成的LSP在LSDB里的最大生存时间 |
timer lsp-max-age seconds |
缺省情况下,当前VTEP生成的LSP在LSDB里的最大生存时间为1200秒 |
LSP刷新周期必须小于LSP最大生存时间,以保证在LSP失效前进行刷新。
表4-10 配置LSP刷新周期
配置LSP刷新周期 |
timer lsp-refresh seconds |
缺省情况下,LSP刷新周期为900秒 |
打开邻接状态变化的输出开关后,VXLAN IS-IS邻接状态变化时会生成日志信息发送到设备的信息中心,通过设置信息中心的参数,最终决定日志信息的输出规则(即是否允许输出以及输出方向)。有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。
缺省情况下,邻接状态变化的输出开关处于打开状态 |
GR(Graceful Restart,平滑重启)是一种在协议重启或主备倒换时保证转发业务不中断的机制。需要协议重启或主备倒换的设备将重启状态通知给邻居,允许邻居重新建立邻接关系而不终止连接。
GR有两个角色:
· GR Restarter:发生协议重启或主备倒换事件且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。
对于VXLAN IS-IS的GR,需要在VTEP间交互GR相关的VXLAN IS-IS报文:带有Restart TLV的Hello报文、CSNP报文和LSP报文。
使能VXLAN IS-IS的GR能力后,邻居间的邻接关系保持时间将取以下二者间的较大值:VXLAN IS-IS Hello报文失效数目与VXLAN IS-IS Hello报文发送时间间隔的乘积(如果是DED,该乘积还要除以3)、GR重启间隔时间。
分别在作为GR Restarter和GR Helper的设备上进行以下配置。
使能VXLAN IS-IS的GR能力 |
缺省情况下,VXLAN IS-IS的GR能力处于关闭状态 |
|
配置VXLAN IS-IS协议的GR重启间隔时间 |
graceful-restart interval interval-value |
缺省情况下,VXLAN IS-IS协议的GR重启间隔时间为300秒 |
通过VXLAN IS-IS发布本地MAC地址信息时,一个LSP报文中携带了本地所有的MAC地址信息。如果LSP报文的长度超过1400字节,LSP报文需要分片后发送。这些LSP分片构成一个LSP分片集,每个LSP分片集最多有256个LSP分片,所能携带的最大MAC地址数为55×210。当本地MAC地址数超过55×210时,可以创建VXLAN IS-IS虚拟系统来扩展LSP的分片数量,以增加系统所能发布的MAC地址数量。
系统(包括原始系统和虚拟系统)通过系统ID来标识。原始系统的系统ID采用设备的桥MAC地址。每个系统所能发布的最大MAC地址数量均为55×210。如果创建了N个虚拟系统,则能发布的最大MAC地址数量为(N+1)×55×210。用户可以根据本地MAC地址表的规模,来决定创建的虚拟系统的个数。
创建虚拟系统时,用户需要保证所配置的虚拟系统的系统ID在网络中是唯一的。
创建一个VXLAN IS-IS虚拟系统 |
virtual-system system-id |
在完成上述配置后,在任意视图下执行display命令可以显示配置后VXLAN IS-IS的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除VXLAN IS-IS的相关信息。
表4-14 VXLAN IS-IS显示和维护
显示VXLAN IS-IS进程的摘要信息 |
|
显示VXLAN IS-IS协议的GR状态 |
|
显示VXLAN IS-IS的本地MAC地址信息 |
display vxlan isis local-mac dynamic [ [ vxlan vxlan-id ] [ count ] ] |
显示VXLAN IS-IS的链路状态数据库 |
display vxlan isis lsdb [ local | lsp-id lsp-id | verbose ] * [ tunnel tunnel-number ] |
显示VXLAN IS-IS的邻居信息 |
|
显示通过VXLAN IS-IS学习到的远端MAC地址信息 |
display vxlan isis remote-mac [ [ vxlan vxlan-id ] [ count ] ] |
显示通过VXLAN IS-IS学习到的远端VXLAN信息 |
|
显示Tunnel接口的VXLAN IS-IS信息 |
|
清除VXLAN IS-IS进程下所有的动态数据 |
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。VM 1和VM 5属于VXLAN 10000、VLAN 2;VM 2和VM 6属于VXLAN 10001、VLAN 3;VM 3和VM 7属于VXLAN 10002、VLAN 4;VM 4和VM 8属于VXLAN 10003、VLAN 5。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
· 不同VTEP之间手工建立VXLAN隧道。
· 通过VXLAN IS-IS发布VXLAN ID,以自动关联VXLAN和VXLAN隧道。
· 通过VXLAN IS-IS发布本地MAC地址信息。
· 发送和接收VXLAN IS-IS报文的VXLAN(预留VXLAN)为11111。
图4-1 VXLAN动态协商、头端复制组网图
(1) 配置IP地址和单播路由协议
请按照图4-1配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN能力。
[SwitchA] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchA] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[SwitchA-vsi-vpna] vxlan 10000
[SwitchA-vsi-vpna-vxlan10000] quit
[SwitchA-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[SwitchA-vsi-vpnb] vxlan 10001
[SwitchA-vsi-vpnb-vxlan10001] quit
[SwitchA-vsi-vpnb] quit
# 创建VSI实例vpnc和VXLAN 10002。
[SwitchA-vsi-vpnc] vxlan 10002
[SwitchA-vsi-vpnc-vxlan10002] quit
[SwitchA-vsi-vpnc] quit
# 创建VSI实例vpnd和VXLAN 10003。
[SwitchA-vsi-vpnd] vxlan 10003
[SwitchA-vsi-vpnd-vxlan10003] quit
[SwitchA-vsi-vpnd] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[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
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧,并将其与VSI实例vpna关联。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] service-instance 1000
[SwitchA-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
[SwitchA-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchA-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[SwitchA-FortyGigE1/1/1] service-instance 2000
[SwitchA-FortyGigE1/1/1-srv2000] encapsulation s-vid 3
[SwitchA-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchA-FortyGigE1/1/1-srv2000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例3000,该实例用来匹配VLAN 4的数据帧,并将其与VSI实例vpnc关联。
[SwitchA-FortyGigE1/1/1] service-instance 3000
[SwitchA-FortyGigE1/1/1-srv3000] encapsulation s-vid 4
[SwitchA-FortyGigE1/1/1-srv3000] xconnect vsi vpnc
[SwitchA-FortyGigE1/1/1-srv3000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例4000,该实例用来匹配VLAN 5的数据帧,并将其与VSI实例vpnd关联。
[SwitchA-FortyGigE1/1/1] service-instance 4000
[SwitchA-FortyGigE1/1/1-srv4000] encapsulation s-vid 5
[SwitchA-FortyGigE1/1/1-srv4000] xconnect vsi vpnd
[SwitchA-FortyGigE1/1/1-srv4000] quit
[SwitchA-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchA-vxlan-isis] negotiate-vni enable
[SwitchA-vxlan-isis] mac-synchronization enable
[SwitchA-vxlan-isis] quit
# 开启L2VPN能力。
[SwitchB] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchB] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10000。
[SwitchB-vsi-vpna] vxlan 10000
[SwitchB-vsi-vpna-vxlan10000] quit
[SwitchB-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10001。
[SwitchB-vsi-vpnb] vxlan 10001
[SwitchB-vsi-vpnb-vxlan10001] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[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 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
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧,并将其与VSI实例vpna关联。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] service-instance 1000
[SwitchB-FortyGigE1/1/1-srv1000] encapsulation s-vid 2
[SwitchB-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchB-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧,并将其与VSI实例vpnb关联。
[SwitchB-FortyGigE1/1/1] service-instance 2000
[SwitchB-FortyGigE1/1/1-srv2000] encapsulation s-vid 3
[SwitchB-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchB-FortyGigE1/1/1-srv2000] quit
[SwitchB-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchB-vxlan-isis] negotiate-vni enable
[SwitchB-vxlan-isis] mac-synchronization enable
[SwitchB-vxlan-isis] quit
# 开启L2VPN能力。
[SwitchC] l2vpn enable
# 配置预留VXLAN为VXLAN 11111。
[SwitchC] reserved vxlan 11111
# 创建VSI实例vpna和VXLAN 10002。
[SwitchC-vsi-vpna] vxlan 10002
[SwitchC-vsi-vpna-vxlan10002] quit
[SwitchC-vsi-vpna] quit
# 创建VSI实例vpnb和VXLAN 10003。
[SwitchC-vsi-vpnb] vxlan 10003
[SwitchC-vsi-vpnb-vxlan10003] quit
[SwitchC-vsi-vpnb] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 2 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-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 2.2.2.2
[SwitchC-Tunnel1] quit
# 在接入服务器的接口FortyGigE1/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧,并将其与VSI实例vpna关联。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] service-instance 1000
[SwitchC-FortyGigE1/1/1-srv1000] encapsulation s-vid 4
[SwitchC-FortyGigE1/1/1-srv1000] xconnect vsi vpna
[SwitchC-FortyGigE1/1/1-srv1000] quit
# 在接口FortyGigE1/1/1上创建以太网服务实例2000,该实例用来匹配VLAN 5的数据帧,并将其与VSI实例vpnb关联。
[SwitchC-FortyGigE1/1/1] service-instance 2000
[SwitchC-FortyGigE1/1/1-srv2000] encapsulation s-vid 5
[SwitchC-FortyGigE1/1/1-srv2000] xconnect vsi vpnb
[SwitchC-FortyGigE1/1/1-srv2000] quit
[SwitchC-FortyGigE1/1/1] quit
# 启动VXLAN IS-IS进程,开启VXLAN IS-IS的VXLAN隧道自动协商和MAC地址同步功能。
[SwitchC-vxlan-isis] negotiate-vni enable
[SwitchC-vxlan-isis] mac-synchronization enable
[SwitchC-vxlan-isis] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel
Tunnel 1
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 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Tunnel 2
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
# 查看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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10000
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv1000 0 Up
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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10001
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv2000 0 Up
VSI Name: vpnc
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10002
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel2 0x5000002 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv3000 0 Up
VSI Name: vpnd
VSI Index : 3
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10003
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel2 0x5000002 UP Auto Disabled
ACs:
AC Link ID State
FGE1/1/1 srv4000 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[SwitchA] display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb IS-IS vpna Tunnel1 Aging
cc3e-5f9c-23dc IS-IS vpnc Tunnel2 Aging
--- 1 mac address(es) found ---
# 查看Switch A上邻居状态信息,可以看到已经和Switch B、Switch C建立邻居。
[SwitchA] display vxlan isis peer
System ID: 4431.9234.2602
Link interface: Tunnel1
Circuit ID: 4431.9234.2602.0001
State: Up
Hold time: 8s
Neighbour DED priority: 64
Uptime: 47:48:34
System ID: 4431.9234.1f68
Link interface: Tunnel2
Circuit ID: 4431.9234.1f68.0000
State: Up
Hold time: 27s
Neighbour DED priority: 64
Uptime: 47:50:30
# 查看Switch A上链路状态信息,可以看到链路状态正常。
[SwitchA] display vxlan isis lsdb
Link state database information for VXLAN ISIS (Tunnel 1)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
4431.9234.1f68.0000-00 0x000000c2 0xdc02 656 59 0
4431.9234.2602.0000-00* 0x000000c3 0xd136 326 70 0
4431.9234.2602.0001-00* 0x000000c1 0x73ca 658 57 0
Link state database information for VXLAN ISIS (Tunnel 2)
LSP ID Seq num Checksum Holdtime Length Overload
-----------------------------------------------------------------------------
4431.9234.1f68.0000-00 0x000000c2 0xdc02 656 59 0
4431.9234.2613.0000-00* 0x000000c3 0xd136 326 70 0
4431.9234.2613.0002-00* 0x000000c1 0x73ca 658 57 0
Flags: *-Self LSP, +-Self LSP(Extended)
# 查看Switch A上VXLAN IS-IS的MAC地址表项信息,可以看到已学习到的MAC地址信息。
[SwitchA] display vxlan isis remote-mac
MAC Flags: D-MAC conflict with local dynamic MAC.
F-MAC has been issued to the remote MAC address table.
S-MAC conflict with local static or selective-flooding MAC.
A-Tunnel interface can forward traffic to the MAC.
VXLAN ID: 10000
MAC address: cc3e-5f9c-6cdb
Interface: Tunnel1
Flags: AF
VXLAN ID: 10002
MAC address: cc3e-5f9c-23dc
Interface: Tunnel2
Flags: AF
# 查看Switch A上VXLAN IS-IS的远端VXLAN信息,可以看到已学习到的VXLAN信息。
[SwitchA] display vxlan isis remote-vxlan
VXLAN Flags: S-VXLAN supported at the local end
F-Association between VXLAN and Tunnels has been flushed to L2VPN
VXLAN ID: 10000
Flags: FS
Tunnel: 1
VXLAN ID: 10001
Flags: FS
Tunnel: 1
VXLAN ID: 10002
Flags: FS
Tunnel: 2
VXLAN ID: 10003
Flags: FS
Tunnel: 2
VM 1和VM 5、VM 2和VM 6、VM 3和VM 7、VM 4和VM 8可以互访,其他VM之间不能互访。
在数据中心网络,通过NVC(Network Virtualization Controller,网络虚拟化控制器),使用OVSDB控制协议(Open vSwitch Database management protocol)可以方便地对VTEP设备进行部署和变更。
与OVSDB相关的协议规范有:
· RFC 7047:The Open vSwitch Database Management Protocol
要实现控制器对VTEP设备的控制,需要首先在VTEP设备上完成表5-1所示配置。
表5-1 OVSDB-VTEP配置任务简介
启动OVSDB服务 |
|||
开启VTEP功能 |
|||
配置VXLAN隧道的全局源地址 |
|||
关闭报文入接口与静态MAC地址表项匹配检查功能 |
|||
关闭远端MAC地址自动学习功能 |
|||
在进行OVSDB-VTEP相关配置前,需要首先使能L2VPN功能,有关l2vpn enable命令的详细介绍请参见“MPLS命令参考”中的“MPLS L2VPN”。
设备和控制器之间可以建立多种类型的OVSDB连接,设备支持的OVSDB连接类型包括:
· 主动SSL连接:设备主动向控制器发起SSL连接。该连接方式必须指定SSL通信的密钥文件、证书文件和CA证书文件。设备最多可以同时与8个控制器建立主动SSL连接
· 被动SSL连接:设备监听并接收来自控制器的SSL连接请求。该连接方式必须指定SSL通信的密钥文件、证书文件和CA证书文件。设备只能监听1个端口的SSL连接请求。
· 主动TCP连接:设备主动向控制器发起TCP连接。设备最多可以同时与8个控制器建立主动TCP连接。
· 被动TCP连接:设备监听并接收来自控制器的TCP连接请求。设备只能监听1个端口的TCP连接请求。
所有SSL连接,包括主动SSL连接和被动SSL连接,使用相同的密钥文件、证书文件和CA证书文件。
设置SSL通信中的密钥文件 |
缺省情况下,没有设置SSL通信中的密钥文件 |
|
设置SSL通信中的证书文件 |
缺省情况下,没有设置SSL通信中的证书文件 |
|
设置SSL通信中的CA证书文件 |
缺省情况下,没有设置SSL通信中的CA证书文件 |
|
设置SSL通信中的密钥文件 |
缺省情况下,没有设置SSL通信中的密钥文件 |
|
设置SSL通信中的证书文件 |
缺省情况下,没有设置SSL通信中的证书文件 |
|
设置SSL通信中的CA证书文件 |
缺省情况下,没有设置SSL通信中的CA证书文件 |
|
开启SSL监听服务 |
缺省情况下,没有开启SSL监听服务 |
开启TCP监听服务 |
缺省情况下,没有开启TCP监听服务 |
在启动OVSDB服务之前设备必须首先与至少一个控制器建立OVSDB连接。
启动OVSDB服务 |
缺省情况下,OVSDB服务处于关闭状态 |
设备只有开启VTEP功能后,才能与控制器交互OVSDB-VTEP相关配置信息。
开启VTEP功能 |
缺省情况下,VTEP功能处于关闭状态 |
用户需要在VTEP设备上配置VXLAN隧道的全局源地址,该地址会通过OVSDB协议上报给控制器,用于控制器对VTEP设备进行部署和控制。
采用OVSDB对VTEP设备进行部署和控制时,用户不能在VXLAN隧道的Tunnel接口下手工指定源地址,否则会影响控制器对VTEP设备的管理。
表5-8 配置VXLAN隧道的全局源地址
配置VXLAN隧道的全局源地址 |
缺省情况下,没有配置VXLAN隧道的全局源地址 |
只有将接口配置为接入侧端口后,控制器上才能够显示该端口并对其进行控制。
将接口配置为接入侧端口后,建议不要在该接口下进行手工配置,避免影响控制器对接入侧端口的管理。
缺省情况下,报文入接口与静态MAC地址表项匹配检查功能处于开启状态。此时,设备会将接收到的报文的源MAC地址与静态MAC地址表项进行匹配。如果存在MAC地址与报文的源MAC相同的表项,但表项的出接口不是接收报文的端口,设备会丢弃该报文。
关闭报文入接口与静态MAC地址表项匹配检查功能后,设备不进行上述检查,即使存在上述类型的静态MAC地址表项,也会转发报文。
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
当VTEP设备为IRF设备时,成员设备间互连的IRF端口上也需要关闭报文入接口与静态MAC地址表项匹配检查功能。
表5-10 关闭报文入接口与静态MAC地址表项匹配检查功能
进入三层以太网接口/子接口视图 |
interface interface-type { interface-number | interface-number.subnumber } |
||
进入三层聚合接口/子接口视图 |
interface route-aggregation { interface-number | interface-number.subnumber } |
||
关闭报文入接口与静态MAC地址表项匹配检查功能 |
缺省情况下,报文入接口与静态MAC地址表项匹配检查功能处于开启状态 有关该命令的详细介绍请参见“二层技术-以太网交换命令参考”中的“MAC地址表” |
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,需要在VTEP设备上关闭远端MAC地址自动学习功能,采用控制器下发的MAC地址表项进行流量转发。
表5-11 关闭远端MAC地址自动学习功能
关闭远端MAC地址自动学习功能 |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
开启组播隧道泛洪代理功能后,系统会将控制器下发的组播隧道转换为具有flooding-proxy属性的隧道。VXLAN内的广播、组播和未知单播流量将通过具有flooding-proxy属性的隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP。
采用泛洪代理(服务器复制)方式转发站点间的泛洪流量时,必须开启该功能。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
· 不同VTEP之间通过控制器下发配置建立VXLAN隧道。
图5-1 OVSDB-VTEP头端复制组网图
(1) 配置IP地址、单播路由协议、控制器
请按照图5-1配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN能力。
[SwitchA] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchA] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchA] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchA] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchA] ovsdb server ssl 10.0.2.15 port 6632
[SwitchA] ovsdb server enable
# 开启VTEP功能。
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchA-LoopBack0] ip address 1.1.1.1 255.255.255.255
[SwitchA-LoopBack0] quit
[SwitchA] tunnel global source-address 1.1.1.1
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] vtep access port
[SwitchA-FortyGigE1/1/1] quit
# 开启L2VPN功能。
[SwitchB] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchB] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchB] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchB] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchB] ovsdb server ssl 10.0.2.15 port 6632
[SwitchB] ovsdb server enable
# 开启VTEP功能。
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchB-LoopBack0] ip address 2.2.2.2 255.255.255.255
[SwitchB-LoopBack0] quit
[SwitchB] tunnel global source-address 2.2.2.2
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] vtep access port
[SwitchB-FortyGigE1/1/1] quit
# 开启L2VPN功能。
[SwitchC] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchC] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchC] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchC] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchC] ovsdb server ssl 10.0.2.15 port 6632
[SwitchC] ovsdb server enable
# 开启VTEP功能。
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchC-LoopBack0] ip address 3.3.3.3 255.255.255.255
[SwitchC-LoopBack0] quit
[SwitchC] tunnel global source-address 3.3.3.3
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] vtep access port
[SwitchC-FortyGigE1/1/1] quit
(5) 控制器上进行VXLAN配置(略)
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 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
# 查看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 : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
ACs:
AC Link ID State
FGE1/1/1 srv2 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic evpn2014 Tunnel1 Aging
cc3e-5f9c-23dc Dynamic evpn2014 Tunnel2 Aging
--- 2 mac address(es) found ---
虚拟机VM 1、VM 2、VM 3之间可以互访。
Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断。
· 不同VTEP之间通过控制器下发配置建立VXLAN隧道。
· 站点之间的泛洪流量采用泛洪代理(服务器复制)的方式转发。
· VTEP采用控制器下发的MAC地址表项进行流量转发。
图5-2 OVSDB-VTEP泛洪代理组网图
(1) 配置IP地址、单播路由协议、控制器和服务器
请按照图5-2 配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
# 开启L2VPN功能。
[SwitchA] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchA] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchA] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchA] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchA] ovsdb server ssl 10.0.2.15 port 6632
[SwitchA] ovsdb server enable
# 开启VTEP功能。
# 配置接口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
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchA] interface fortygige 1/1/1
[SwitchA-FortyGigE1/1/1] vtep access port
[SwitchA-FortyGigE1/1/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchA] interface fortygige 1/1/2
[SwitchA-FortyGigE1/1/2] undo mac-address static source-check enable
[SwitchA-FortyGigE1/1/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchA] vxlan tunnel service node
# 开启L2VPN功能。
[SwitchB] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchB] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchB] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchB] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchB] ovsdb server ssl 10.0.2.15 port 6632
[SwitchB] ovsdb server enable
# 开启VTEP功能。
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchB-LoopBack0] ip address 2.2.2.2 255.255.255.255
[SwitchB-LoopBack0] quit
[SwitchB] tunnel global source-address 2.2.2.2
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchB] interface fortygige 1/1/1
[SwitchB-FortyGigE1/1/1] vtep access port
[SwitchB-FortyGigE1/1/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchB] interface fortygige 1/1/2
[SwitchB-FortyGigE1/1/2] undo mac-address static source-check enable
[SwitchB-FortyGigE1/1/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchB] vxlan tunnel service node
# 开启L2VPN功能。
[SwitchC] l2vpn enable
# 与控制器建立连接并开启OVSDB服务。
[SwitchC] ovsdb server private-key flash:/ovsclient-privkey.pem
[SwitchC] ovsdb server certificate flash:/ovsclient-cert.pem
[SwitchC] ovsdb server ca-certificate flash:/vswitchd.cacert bootstrap
[SwitchC] ovsdb server ssl 10.0.2.15 port 6632
[SwitchC] ovsdb server enable
# 开启VTEP功能。
# 配置接口Loopback0的IP地址,作为VXLAN隧道的全局源地址。
[SwitchC-LoopBack0] ip address 3.3.3.3 255.255.255.255
[SwitchC-LoopBack0] quit
[SwitchC] tunnel global source-address 3.3.3.3
# 在接入服务器的接口FortyGigE1/1/1上指定其为接入侧端口。
[SwitchC] interface fortygige 1/1/1
[SwitchC-FortyGigE1/1/1] vtep access port
[SwitchC-FortyGigE1/1/1] quit
# 在网络侧接口上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchC] interface fortygige 1/1/2
[SwitchC-FortyGigE1/1/2] undo mac-address static source-check enable
[SwitchC-FortyGigE1/1/2] quit
# 关闭远端MAC地址自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
# 开启组播隧道泛洪代理功能。
[SwitchC] vxlan tunnel service node
(5) 控制器上进行VXLAN配置(略)
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 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
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的以太网服务实例等信息,其中Tunnel1和Tunnel2为去往SwitchB、SwitchC的隧道,Tunnel3为去往代理服务器的隧道。
[SwitchA] display l2vpn vsi verbose
VSI Name: evpn2014
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
Drop Unknown : -
Flooding : Enabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flooding proxy
Tunnel1 0x5000001 Up Manual Disabled
Tunnel2 0x5000002 Up Manual Disabled
Tunnel3 0x5000003 Up Manual Enabled
ACs:
AC Link ID State
FGE1/1/1 srv2 0 Up
# 查看Switch A上VSI的MAC地址表项信息,可以看到控制器下发的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Static evpn2014 Tunnel1 NotAging
cc3e-5f9c-23dc Static evpn2014 Tunnel2 NotAging
--- 2 mac address(es) found ---
虚拟机VM 1、VM 2、VM 3之间可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!