01-VXLAN配置
本章节下载: 01-VXLAN配置 (519.22 KB)
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于IP网络、采用“MAC in UDP”封装形式的二层VPN技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN主要应用于数据中心网络和园区接入网络。
目前,设备只支持基于IPv4网络的VXLAN技术,不支持基于IPv6网络的VXLAN技术。
VXLAN具有如下优点:
· 支持大量的租户:使用24位的标识符,最多可支持2的24次方(16777216)个VXLAN,使支持的租户数目大规模增加,解决了传统二层网络VLAN资源不足的问题。
· 易于维护:基于IP网络组建大二层网络,使得网络部署和维护更加容易,并且可以充分地利用现有的IP网络技术,例如利用等价路由进行负载分担等;只有IP核心网络的边缘设备需要进行VXLAN处理,网络中间设备只需根据IP头转发报文,降低了网络部署的难度和费用。
VXLAN技术将已有的三层物理网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在一个局域网中。
图1-1 VXLAN网络模型示意图
如图1-1所示,VXLAN的典型网络模型中包括如下几部分:
· 用户终端(Terminal):用户终端设备可以是PC机、无线终端设备、服务器上创建的VM(Virtual Machine,虚拟机)等。不同的用户终端可以属于不同的VXLAN。属于相同VXLAN的用户终端处于同一个逻辑二层网络,彼此之间二层互通;属于不同VXLAN的用户终端之间二层隔离。VXLAN通过VXLAN ID来标识,VXLAN ID又称VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度为24比特。
本文档中如无特殊说明,均以VM为例介绍VXLAN工作机制。采用其他类型用户终端时,VXLAN工作机制与VM相同,不再赘述。
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):VXLAN的边缘设备。VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。
· VXLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头和IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
· 核心设备:IP核心网络中的设备(如图1-1中的P设备)。核心设备不参与VXLAN处理,仅需要根据封装后报文的目的IP地址对报文进行三层转发。
· VSI(Virtual Switch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源MAC地址学习、MAC地址老化、泛洪等。VSI与VXLAN一一对应。
· AC(Attachment Circuit,接入电路):VTEP连接本地站点的物理电路或虚拟电路。在VTEP上,与VSI关联的以太网服务实例(service instance)称为AC。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。
如图1-2所示,VXLAN报文的封装格式为:在原始二层数据帧外添加8字节VXLAN头、8字节UDP头和20字节IP头。其中,UDP头的目的端口号为VXLAN UDP端口号(缺省为4789)。VXLAN头主要包括两部分:
· 标记位:“I”位为1时,表示VXLAN头中的VXLAN ID有效;为0,表示VXLAN ID无效。其他位保留未用,设置为0。
· VXLAN ID:用来标识一个VXLAN网络,长度为24比特。
图1-2 VXLAN报文封装示意图
VXLAN运行机制可以概括为:
(1) 发现远端VTEP,在VTEP之间建立VXLAN隧道,并将VXLAN隧道与VXLAN关联。
(2) 识别接收到的报文所属的VXLAN,以便将报文的源MAC地址学习到VXLAN对应的VSI,并在该VSI内转发该报文。
(3) 学习虚拟机的MAC地址。
(4) 根据学习到的MAC地址表项转发报文。
为了将VXLAN报文传递到远端VTEP,需要创建VXLAN隧道,并将VXLAN隧道与VXLAN关联。
VXLAN隧道的建立方式有如下两种:
· 手工方式:手工配置Tunnel接口,并指定隧道的源和目的IP地址分别为本端和远端VTEP的IP地址。
· 自动方式:通过EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)发现远端VTEP后,自动在本端和远端VTEP之间建立VXLAN隧道。EVPN的详细介绍请参见“EVPN配置指导”。
VXLAN隧道与VXLAN关联的方式有如下两种:
· 手工方式:手工将VXLAN隧道与VXLAN关联。
· 自动方式:通过EVPN协议自动关联VXLAN隧道与VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
以太网服务实例定义了一系列匹配规则,如匹配指定VLAN的报文、匹配接口接收到的所有报文等。从二层以太网接口上接收到的、与规则匹配的数据帧均属于指定的VSI/VXLAN。
VTEP从以太网服务实例接收到数据帧后,根据关联方式判断报文所属的VXLAN。
如图1-3所示,VM 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到VM 1发送的数据帧后,可以判定该数据帧属于VXLAN 10。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
MAC地址学习分为本地MAC地址学习和远端MAC地址学习两部分:
· 本地MAC地址学习
是指VTEP对本地站点内虚拟机MAC地址的学习。本地MAC地址的学习方式有如下几种:
¡ 静态配置:手工指定本地MAC地址所属的VSI(VXLAN),及其对应的以太网服务实例(即AC)。
¡ 通过报文中的源MAC地址动态学习:VTEP接收到本地虚拟机发送的数据帧后,判断该数据帧所属的VSI,并将数据帧中的源MAC地址(本地虚拟机的MAC地址)添加到该VSI的MAC地址表中,该MAC地址对应的接口为接收到数据帧的接口。
· 远端MAC地址学习
是指VTEP对远端站点内虚拟机MAC地址的学习。远端MAC地址的学习方式有如下几种:
¡ 静态配置:手工指定远端MAC地址所属的VSI(VXLAN),及其对应的VXLAN隧道接口。
¡ 通过报文中的源MAC地址动态学习:VTEP从VXLAN隧道上接收到远端VTEP发送的VXLAN报文后,根据VXLAN ID判断报文所属的VXLAN,对报文进行解封装,还原二层数据帧,并将数据帧中的源MAC地址(远端虚拟机的MAC地址)添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为VXLAN隧道接口。
¡ 通过BGP EVPN学习:在VTEP上运行BGP EVPN,通过BGP EVPN将本地MAC地址及其所属的VXLAN信息通告给远端VTEP。远端VTEP接收到该信息后,在VXLAN对应VSI的MAC地址表中添加MAC地址表项。EVPN的详细介绍请参见“EVPN配置指导”。
¡ 通过OpenFlow下发:OpenFlow控制器以流表的形式向VTEP设备下发远端MAC地址表项。OpenFlow的详细介绍请参见“OpenFlow配置指导”。
通过不同方式学习到的远端MAC地址优先级由高到低依次为:
a. 静态配置、OpenFlow下发的MAC地址优先级相同,且优先级最高。
b. 通过BGP EVPN学习的MAC地址优先级次之。
c. 动态学习的MAC地址优先级最低。
完成本地和远端MAC地址学习后,VTEP在VXLAN内转发单播流量的过程如下所述。
对于站点内流量,VTEP判断出报文所属的VSI后,根据目的MAC地址查找该VSI的MAC地址表,从相应的本地接口转发给目的VM。
如图1-4所示,VM 1(MAC地址为MAC 1)发送以太网帧到VM 4(MAC地址为MAC 4)时,VTEP 1从接口Interface A收到该以太网帧后,判断该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 4的出接口为Interface B,所在VLAN为VLAN 10,则将以太网帧从接口Interface B的VLAN 10内发送给VM 4。
如图1-5所示,以VM 1(MAC地址为MAC 1)发送以太网帧给VM 7(MAC地址为MAC 7)为例,站点间单播流量的转发过程为:
(1) VM 1发送以太网数据帧给VM 7,数据帧的源MAC地址为MAC 1,目的MAC为MAC 7,VLAN ID为2。
(2) VTEP 1从接口Interface A(所在VLAN为VLAN 2)收到该数据帧后,判断该数据帧属于VSI A(VXLAN 10),查找VSI A的MAC地址表,得到MAC 7的出端口为Tunnel1。
(3) VTEP 1为数据帧封装VXLAN头、UDP头和IP头后,将封装好的报文通过VXLAN隧道Tunnel1、经由P设备发送给VTEP 2。
(4) VTEP 2接收到报文后,根据报文中的VXLAN ID判断该报文属于VXLAN 10,并剥离VXLAN头、UDP头和IP头,还原出原始的数据帧。
(5) VTEP 2查找与VXLAN 10对应的VSI A的MAC地址表,得到MAC 7的出端口为Interface A(所在VLAN为VLAN 20)。
(6) VTEP 2从接口Interface A的VLAN 20内将数据帧发送给VM 7。
VTEP从本地站点接收到泛洪流量(组播、广播和未知单播流量)后,将其转发给除接收接口外的所有本地接口和VXLAN隧道。为了避免环路,VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道,只会转发给所有本地接口。
根据复制方式的不同,流量泛洪方式分为单播路由方式(头端复制)和泛洪代理方式(服务器复制)。
如图1-6所示,VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用泛洪代理方式可以在没有组播协议参与的情况下,节省泛洪流量对核心网络带宽资源的占用。
如图1-7所示,在泛洪代理方式下,同一个VXLAN内的所有VTEP都通过手工方式与代理服务器建立隧道。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会将其发送到代理服务器,由代理服务器转发到其他远端VTEP。
目前泛洪代理方式主要用于SDN网络,使用虚拟服务器作为泛洪代理服务器。采用泛洪代理方式时,需要在VTEP上进行如下配置:
· 使用vxlan tunnel mac-learning disable命令关闭远端MAC地址自动学习功能,采用SDN控制器下发的MAC地址表项进行流量转发。
· 在网络侧接口上使用undo mac-address static source-check enable命令关闭报文入接口与静态MAC地址表项匹配检查功能。
接入模式分为VLAN接入模式和Ethernet接入模式两种。
在该模式下,从本地站点接收到的和发送给本地站点的以太网帧必须带有VLAN Tag。
· VTEP从本地站点接收到以太网帧后,删除该帧的所有VLAN Tag,再转发该数据帧;
· VTEP发送以太网帧到本地站点时,为其添加本地站点的VLAN Tag。
采用该模式时,VTEP不会传递VLAN Tag信息,不同站点可以独立地规划自己的VLAN,不同站点的不同VLAN之间可以互通。
在该模式下,从本地站点接收到的和发送给本地站点的以太网帧可以携带VLAN Tag,也可以不携带VLAN Tag。
· VTEP从本地站点接收到以太网帧后,保持该帧的VLAN Tag信息不变,转发该数据帧;
· VTEP发送以太网帧到本地站点时,不会为其添加VLAN Tag。
采用该模式时,VTEP会在不同站点间传递VLAN Tag信息,不同站点的VLAN需要统一规划,否则无法互通。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP从本地站点或VXLAN隧道接收到ARP请求和ARP应答报文后,根据该报文在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-8 ARP泛洪抑制示意图
如图1-8所示,ARP泛洪抑制的处理过程如下:
(1) 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-8以单播路由泛洪方式为例)。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立VM 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。
(4) VM 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立VM 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立VM 7的ARP泛洪抑制表项,之后将ARP应答报文发送给VM 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,虚拟机VM 4发送ARP请求,获取VM 1或VM 7的MAC地址。
(8) VTEP 1接收到ARP请求后,建立VM 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 在VTEP 3上建立ARP泛洪抑制表项后,虚拟机VM 10发送ARP请求,获取VM 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立VM 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
VXLAN可以为分散的物理站点提供二层互联。如果要为VXLAN站点内的虚拟机提供三层业务,则需要在网络中部署VXLAN IP网关,以便站点内的虚拟机通过VXLAN IP网关与外界网络或其他VXLAN网络内的虚拟机进行三层通信。
VXLAN IP网关的详细介绍,请参见“VXLAN配置指导”中的“VXLAN IP网关”。
与VXLAN相关的协议规范有:
RFC 7348:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
本设备上的接口,缺省情况下工作在三层模式,配置以太网服务实例相关配置时需要先将接口切换到二层模式。
VXLAN组网中,需要在VTEP上进行如下配置:
(1) 配置VXLAN隧道工作模式
(2) 创建VSI和VXLAN
(3) 配置VXLAN隧道
(5) 建立数据帧与VSI的关联
(6) (可选)管理本地和远端MAC地址
(7) (可选)配置VXLAN报文相关功能
(8) (可选)减少发送到核心网的泛洪流量
(9) (可选)配置VXLAN流量统计
(10) (可选)检测VXLAN隧道的连通性
在VXLAN组网中,IP核心网络中的设备上需要配置路由协议,确保VTEP之间路由可达。
VXLAN隧道支持如下两种工作模式:
· 三层转发模式:VTEP设备通过查找ARP表项(IPv4网络)对流量进行转发。
· 二层转发模式:VTEP通过查找MAC地址表项对流量进行转发。
当设备作为VTEP时,需要配置VXLAN隧道工作在二层转发模式;当设备作为VXLAN IP网关时,需要配置VXLAN隧道工作在三层转发模式。有关VXLAN IP网关的详细介绍请参见“VXLAN配置指导”中的“VXLAN IP网关”。
如果VXLAN隧道工作在三层转发模式,则设备将VXLAN封装后的报文转发给下一跳时是否携带VLAN tag,由vxlan ip-forwarding命令中的tagged、untagged参数决定,而不是由报文的出接口类型决定。请根据实际情况选择tagged、untagged参数:
· 设备通过Access端口、Trunk或Hybrid端口的PVID连接下一跳时,需要指定untagged参数。
· 设备通过Trunk或Hybrid端口的非PVID连接下一跳时,需要指定tagged参数。
重复执行vxlan ip-forwarding命令切换二层、三层转发模式前,必须先删除设备上的所有VSI、VSI虚接口和VXLAN隧道,否则将配置失败。因此,配置VXLAN前,用户需要先做好VXLAN网络规划,确定设备使用的VXLAN隧道工作模式,完成本配置后,再进行其他配置。
重复执行vxlan ip-forwarding命令修改tagged和untagged参数前,必须先删除设备上所有的VXLAN隧道。
(1) 进入系统视图。
system-view
(2) 配置VXLAN隧道工作模式。
¡ 配置VXLAN隧道工作在二层转发模式。
undo vxlan ip-forwarding
¡ 配置VXLAN隧道工作在三层转发模式。
vxlan ip-forwarding [ tagged | untagged ]
缺省情况下,VXLAN隧道工作在三层转发模式。
(1) 进入系统视图。
system-view
(2) 开启L2VPN功能。
l2vpn enable
缺省情况下,L2VPN功能处于关闭状态。
(3) 创建VSI,并进入VSI视图。
vsi vsi-name
(4) (可选)配置VSI的描述信息。
description text
缺省情况下,未配置VSI的描述信息。
(5) 开启VSI。
undo shutdown
缺省情况下,VSI处于开启状态。
(6) 创建VXLAN,并进入VXLAN视图。
vxlan vxlan-id
在一个VSI下只能创建一个VXLAN。
不同VSI下创建的VXLAN,其VXLAN ID不能相同。
手工创建VXLAN隧道时,隧道的源端地址和目的端地址需要分别手工指定为本地和远端VTEP的接口地址。
在同一台设备上,VXLAN隧道模式的不同Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
如果设备上配置了通过EVPN自动建立并关联VXLAN隧道,则隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。EVPN的详细介绍请参见“EVPN配置指导”。
关于隧道的详细介绍及Tunnel接口下的更多配置命令,请参见“接口管理配置指导”中的“隧道接口”。
(1) 进入系统视图。
system-view
(2) (可选)配置VXLAN隧道的全局源地址。
tunnel global source-address ip-address
缺省情况下,未配置VXLAN隧道的全局源地址。
如果隧道下未配置源地址或源接口,则隧道会使用全局源地址作为隧道的源地址。
(3) 创建模式为VXLAN隧道的Tunnel接口,并进入Tunnel接口视图。
interface tunnel tunnel-number mode vxlan
在隧道的两端应配置相同的隧道模式,否则会造成报文传输失败。
(4) 配置隧道的源端地址。请选择其中一项进行配置。
¡ 直接指定隧道的源端地址。
source ipv4-address
指定的地址将作为封装后VXLAN报文的源IP地址。
¡ 指定隧道的源接口。
source interface-type interface-number
指定接口的主IP地址将作为封装后VXLAN报文的源IP地址。
缺省情况下,未设置VXLAN隧道的源端地址。
(5) 配置隧道的目的端地址。
destination ipv4-address
缺省情况下,未指定隧道的目的端地址。
隧道的目的端地址是对端设备上接口的IP地址,该地址将作为封装后VXLAN报文的目的地址。
一个VXLAN可以关联多条VXLAN隧道。一条VXLAN隧道可以关联多个VXLAN,这些VXLAN共用该VXLAN隧道,VTEP根据VXLAN报文中的VXLAN ID来识别隧道传递的报文所属的VXLAN。VTEP接收到某个VXLAN的泛洪流量后,如果采用单播路由泛洪方式,则VTEP将在与该VXLAN关联的所有VXLAN隧道上发送该流量,以便将流量转发给所有的远端VTEP;如果采用泛洪代理方式,则VTEP通过与该VXLAN关联、通过flooding-proxy参数开启了泛洪代理功能的VXLAN隧道将泛洪流量发送给泛洪代理服务器。
VTEP必须与相同VXLAN内的其它VTEP建立VXLAN隧道,并将该隧道与VXLAN关联。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VXLAN视图。
vxlan vxlan-id
(4) 配置VXLAN与VXLAN隧道关联。
tunnel { tunnel-number [ backup-tunnel tunnel-number | flooding-proxy ] | all }
缺省情况下,VXLAN未关联VXLAN隧道。
参数 |
说明 |
backup-tunnel tunnel-number |
本参数指定的隧道作为备用VXLAN隧道,为主用VXLAN隧道提供保护。当主用VXLAN隧道down时,VXLAN将启用备用VXLAN隧道 |
flooding-proxy |
如果指定了本参数,则VXLAN内的广播、组播和未知单播流量将通过该隧道发送到泛洪代理服务器,由代理服务器进行复制并转发到其他远端VTEP |
手工创建以太网服务实例,并将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。
本配置与以太网链路聚合功能互斥。二层以太网接口加入聚合组后,不能再将该接口上的以太网服务实例与VSI关联;反之亦然。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 手工创建以太网服务实例,并进入以太网服务实例视图。
service-instance instance-id
(4) 配置以太网服务实例的报文匹配规则。请选择其中一项进行配置。
¡ 匹配报文的外层VLAN tag。
encapsulation s-vid vlan-id-list [ only-tagged ]
¡ 同时匹配报文的外层和内层VLAN tag。
encapsulation s-vid vlan-id-list c-vid vlan-id
¡ 匹配不携带VLAN tag的所有报文。
encapsulation untagged
¡ 匹配未匹配到接口上其他以太网服务实例的所有报文。
encapsulation default
同一个接口上最多只能有一个服务实例的报文匹配规则为encapsulation default。
如果接口上只存在一个配置了encapsulation default规则的以太网服务实例,则该接口上的所有报文都匹配该以太网服务实例。
缺省情况下,未配置报文匹配规则。
(5) (可选)配置入方向报文的处理规则。
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 ]
缺省情况下,不对入方向报文进行处理。
(6) (可选)配置出方向报文的处理规则。
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 ] } }
缺省情况下,不对出方向报文进行处理。
(7) 将以太网服务实例与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ]
缺省情况下,以太网服务实例未关联VSI。
本地MAC地址可以静态添加,也可以通过报文中的源MAC地址动态学习。在动态添加、删除本地MAC地址时,可以记录日志信息。
远端MAC地址表项的产生方法包括静态添加、根据接收到的VXLAN报文内封装的源MAC地址自动学习等。
请不要为EVPN动态创建的隧道配置静态远端MAC地址表项,避免出现如下问题:
· 如果公网侧接口down,设备将删除已创建的隧道,同时删除为该隧道配置的静态远端MAC地址表项,公网侧接口重新up后会自动重新建立隧道,但是无法恢复静态远端MAC地址表项;
· 如果执行了配置回滚操作,设备会重新创建隧道,新创建的隧道编号可能发生变化,造成配置回滚失败。
有关EVPN的介绍请参见“EVPN配置指导”。
(1) 进入系统视图。
system-view
(2) 添加静态本地MAC地址表项。
mac-address static mac-address interface interface-type interface-number service-instance instance-id vsi vsi-name
本命令中指定的以太网服务实例必须与指定的VSI关联,否则配置将失败
(3) 添加静态远端MAC地址表项。
mac-address static mac-address interface tunnel tunnel-number vsi vsi-name
interface tunnel interface-number参数指定的隧道接口必须与vsi vsi-name参数指定的VSI对应的VXLAN关联,否则配置将失败。
如果网络中存在攻击,为了避免学习到错误的远端MAC地址,可以手工关闭远端MAC地址自动学习功能,手动添加静态的远端MAC地址。
(1) 进入系统视图。
system-view
(2) 关闭远端MAC地址自动学习功能。
vxlan tunnel mac-learning disable
缺省情况下,远端MAC地址自动学习功能处于开启状态。
开启本地MAC地址的日志记录功能后,VXLAN会立即根据已经学习到的本地MAC地址表项生成日志信息,之后在增加或删除本地MAC地址时也将产生日志信息。生成的日志信息将被发送到设备的信息中心,通过设置信息中心的参数,决定日志信息的输出规则(即是否允许输出以及输出方向)。
(1) 进入系统视图。
system-view
(2) 开启本地MAC地址的日志记录功能。
vxlan local-mac report
缺省情况下,本地MAC地址的日志记录功能处于关闭状态。
若配置了匹配VXLAN报文的ACL规则,则在修改VXLAN报文的目的UDP端口号后,需要删除该ACL规则并重新配置,该ACL规则才会生效。
system-view
(2) 配置VXLAN报文的目的UDP端口号。
vxlan udp-port port-number
缺省情况下,VXLAN报文的目的UDP端口号为4789。
属于同一个VXLAN的VTEP设备上需要配置相同的UDP端口号。
通过本配置可以实现对接收到的VXLAN报文的UDP校验和、内层封装的以太网数据帧是否携带VLAN Tag进行检查:
· UDP校验和检查:VTEP接收到VXLAN报文后,检查该报文的UDP校验和是否为0。若UDP校验和为0,则接收该报文;若UDP校验和不为0,则检查UDP检验和是否正确,正确则接收该报文;否则,丢弃该报文。
· VLAN Tag检查:VTEP接收到VXLAN报文并对其解封装后,若内层以太网数据帧带有VLAN Tag,则丢弃该VXLAN报文。
远端VTEP上通过xconnect vsi命令的access-mode参数配置接入模式为ethernet时,VXLAN报文可能携带VLAN Tag。这种情况下建议不要在本端VTEP上执行vxlan invalid-vlan-tag discard命令,以免错误地丢弃报文。
(1) 进入系统视图。
system-view
(2) 配置丢弃UDP校验和检查失败的VXLAN报文。
vxlan invalid-udp-checksum discard
缺省情况下,不会检查VXLAN报文的UDP校验和。
(3) 配置丢弃内层数据帧含有VLAN Tag的VXLAN报文。
vxlan invalid-vlan-tag discard
缺省情况下,不会检查VXLAN报文内层封装的以太网数据帧是否携带VLAN Tag。
缺省情况下,VTEP从本地站点内接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点;VTEP从VXLAN隧道接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内的所有本地接口上泛洪该数据帧。通过本配置可以手工禁止某类数据帧在VXLAN内泛洪,以减少网络中的泛洪流量。
禁止通过VXLAN隧道向远端站点泛洪后,为了将某些单播或组播MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 关闭VSI的泛洪功能。
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * }
缺省情况下,VSI泛洪功能处于开启状态。
(4) (可选)配置VSI选择性泛洪的MAC地址。
selective-flooding mac-address mac-address
如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
如果配置了vxlan tunnel arp-learning disable命令,则设备从VXLAN隧道上接收到ARP请求报文后,不会采用匹配的ARP泛洪抑制表项对其进行应答。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启ARP泛洪抑制功能。
arp suppression enable
缺省情况下,ARP泛洪抑制功能处于关闭状态。
本配置用来开启VSI的报文统计功能,用户可以使用display l2vpn vsi verbose命令查看VSI的报文统计信息,使用reset l2vpn statistics vsi命令清除VSI的报文统计信息。
(1) 进入系统视图。
system-view
(2) 配置报文的统计模式为VSI模式。
statistic mode vsi
缺省情况下,报文统计模式为VSI模式。
(3) 进入VXLAN所在VSI视图。
vsi vsi-name
(4) 开启VSI的报文统计功能。
statistics enable
缺省情况下,VSI的报文统计功能处于关闭状态。
只有为以太网服务实例配置了报文匹配方式并绑定了VSI实例,以太网服务实例的报文统计功能才会生效。如果在报文统计过程中修改报文匹配方式或绑定的VSI实例,则报文统计重新开始。
(1) 进入系统视图。
system-view
(2) 配置报文的统计模式为AC模式。
statistic mode ac
缺省情况下,报文统计模式为VSI模式。
(3) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(4) 进入以太网服务实例视图。
service-instance instance-id
(5) 开启以太网服务实例的报文统计功能。
statistics enable
缺省情况下,以太网服务实例的报文统计功能处于关闭状态。
在隧道源节点上检测VXLAN隧道的连通性前,需要在VXLAN隧道的尾节点上执行本配置,否则隧道尾节点无法正常识别检测报文,导致检测失败。
如果隧道源节点执行ping vxlan/tracert vxlan命令时指定-r reply-mode参数为3,则还需要在隧道源节点上执行本命令。
(1) 进入系统视图。
system-view
(2) 开启VXLAN隧道的连通性检测功能。
overlay oam enable
缺省情况下,VXLAN隧道的连通性检测功能处于关闭状态。
在VXLAN组网中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能检测VTEP设备间VXLAN隧道的连通性。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装。
(2) 远端VTEP设备收到VXLAN Echo Request报文后,回复VXLAN Echo Reply报文。
(3) 本端设备根据是否收到VXLAN Echo Reply报文、收到VXLAN Echo Reply报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历检测。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
指定vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ]参数后,每个源UDP端口号对应VXLAN Echo Request报文的发送数目由-c count参数决定。
通过本功能检测VXLAN隧道的连通性时,需要在VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测VXLAN隧道的连通性。
ping vxlan [ -a inner-src-address | -c count | -m interval | -r reply-mode | -t timeout | -tos tos-value ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ] | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
在VXLAN中,VTEP之间通过VXLAN隧道传输数据报文。当VTEP间出现丢包或断流现象时,可以通过本功能查看VXLAN隧道所经过的路径,并根据应答信息对错误点进行定位。具体检测过程为:
(1) 本端VTEP设备通过tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向远端VTEP发送VXLAN Echo Request报文,该报文采用VXLAN封装且IPv4报文头部的TTL字段取值设置为1。
(2) 下一个节点收到报文后,TTL字段的值变成0,会向首节点(即本端VTEP)发送ICMP的TTL超时报文。
(3) 本端VTEP收到ICMP报文后,将TTL字段的取值加1(此时设置为2)继续发送VXLAN Echo Request报文。
(4) 下游节点收到报文后,依次将TTL减1,直到TTL为0,该节点会向首节点发送ICMP报文;若为目的节点则向首节点发送VXLAN Echo Reply报文。
(5) 本端VTEP依次重复上述过程,直至TTL达到最大值或收到远端VTEP发送的应答报文。
(6) 本端VTEP设备根据是否收到应答报文、收到应答报文的信息,判断该VXLAN隧道的连通性,并输出相应的统计信息。
VTEP基于VXLAN Echo Request报文的源UDP端口号进行负载分担。当两个VTEP之间的VXLAN隧道对应多条路径时,为了保证检测结果的准确性,可以通过配置负载分担参数实现对多条路径的遍历。可以通过如下两种方式指定VXLAN Echo Request报文的源UDP端口号:
· 直接指定源UDP端口号的起始值和结束值,使设备发出的VXLAN Echo Request报文中的UDP端口号从起始值开始,依次+1,直到递增到结束值。
· 通过指定不同的MAC地址、IP地址以及协议类型参数动态计算VXLAN的源UDP号。
配置本功能时,指定负载分担参数仅改变VXLAN Echo Request报文的源UDP端口号并不会改变设备发送的VXLAN Echo Request报文的其他信息。
通过本命令检测VXLAN隧道的连通性时,需要在VXLAN隧道的对端VTEP上配置overlay oam enable命令。
可在任意视图下执行本命令,检测VXLAN隧道的连通性。
tracert vxlan [ -a inner-src-address | -h ttl-value | -r reply-mode | -t timeout ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
可在任意视图下执行以下命令:
· 显示Tunnel接口信息。
display interface [ tunnel [ number ] ] [ brief [ description | down ] ]
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· 显示VXLAN关联的VXLAN隧道信息。
display vxlan tunnel [ vxlan-id vxlan-id ]
本命令的详细介绍,请参见“接口管理命令参考”中的“隧道接口”。
可在任意视图下执行以下命令,显示以太网服务实例的信息。
display l2vpn service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ verbose ]
可在任意视图下执行以下命令:
· 显示VSI的信息。
display l2vpn vsi [ name vsi-name ] [ verbose ]
可在任意视图下执行以下命令,显示VSI的MAC地址表信息。
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count | verbose ]
请在用户视图下执行以下命令,清除VSI动态学习的MAC地址表项。
reset l2vpn mac-address [ vsi vsi-name ]
可在任意视图下执行以下命令,显示VSI的ARP泛洪抑制表项信息。
display arp suppression vsi [ name vsi-name ] [ slot slot-number [ cpu cpu-number ] ] [ count ]
请在任意视图下执行以下命令,清除VSI的ARP泛洪抑制表项。
reset arp suppression vsi [ name vsi-name ]
请在用户视图下执行以下命令,清除VSI的报文统计信息。
reset l2vpn statistics vsi [ name vsi-name ]
可在任意视图下执行以下命令,显示L2VPN的AC转发信息。
display l2vpn forwarding ac [ vsi vsi-name ] [ slot slot-number [ cpu cpu-number ] ] [ verbose ]
请在用户视图下执行以下命令,清除AC的报文统计信息。
reset l2vpn statistics ac [ interface interface-type interface-number service-instance instance-id ]
可在任意视图下执行以下命令,显示设备当前生效的报文统计模式。
display statistic mode
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头端复制组网图
· 缺省情况下,本设备的接口处于ADM(Administratively Down)状态,请根据实际需要在对应接口视图下使用undo shutdown命令开启接口。
· 本举例中以太网服务实例所在的物理接口需要工作在二层模式。缺省情况下,本设备的物理接口处于三层模式,请根据实际需要在对应接口视图下使用port link-mode命令切换接口的工作模式。
(1) 配置IP地址和单播路由协议
配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchA] undo vxlan ip-forwarding
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
¡ 创建模式为VXLAN的隧道接口Tunnel1
¡ 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1
¡ 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface hundredgige 1/0/1
[SwitchA-HundredGigE1/0/1] service-instance 1000
[SwitchA-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchA-HundredGigE1/0/1-srv1000] quit
[SwitchA-HundredGigE1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchB] undo vxlan ip-forwarding
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface hundredgige 1/0/1
[SwitchB-HundredGigE1/0/1] service-instance 1000
[SwitchB-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchB-HundredGigE1/0/1-srv1000] quit
[SwitchB-HundredGigE1/0/1] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchC] undo vxlan ip-forwarding
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在接入服务器的接口HundredGigE1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface hundredgige 1/0/1
[SwitchC-HundredGigE1/0/1] service-instance 1000
[SwitchC-HundredGigE1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-HundredGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchC-HundredGigE1/0/1-srv1000] quit
[SwitchC-HundredGigE1/0/1] quit
(1) 验证VTEP设备(下文以Switch A为例,其它设备验证方法与此类似)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 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 : -
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : -
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
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
HGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。
<SwitchA> display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
cc3e-5f9c-6cdb Dynamic vpna Tunnel1 Aging
cc3e-5f9c-23dc Dynamic vpna Tunnel2 Aging
--- 2 mac address(es) found ---
(2) 验证主机
虚拟机VM 1、VM 2、VM 3之间可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!