在为网络中的所有设备都配置某些 VLAN时,需要网络管理员在每台设备上分别进行手工添加。如 图 1所示,Device A上有 VLAN 2,Device B和 Device C上只有 VLAN 1,三台设备通过 Trunk 链路连接在一起。为了使 Device A上 VLAN 2的报文可以传到 Device C,网络管理员必须在 Device B和 Device C上分别手工添加 VLAN 2。
图1 MVRP应用组网
对于上面的组网环境,手工添加VLAN很简单,但是当实际组网复杂或整个网络的VLAN 太多时, 网络管理员无法短时间内完全了解网络的拓扑结构,并且工作量会非常大,而且非常容易配置错误。在这种情况下,用户可以通过 MVRP的 VLAN自动注册功能完成 VLAN的配置。
MRP(Multiple Registration Protocol,多属性注册协议)作为一个属性注册协议的载体,可以用来传递属性信息。MVRP(Multiple VLAN Registration Protocol,多 VLAN注册协议)是MRP的一 种应用,用于在设备间发布并学习VLAN 配置信息。通过 MVRP,局域网中的设备可以自动同步VLAN信息,极大地减少了网络管理员的VLAN配置工作。
设备上每一个参与 MRP 协议的端口都可以视为一个应用实体。当MRP应用(如 MVRP)在端口上启动之后,该端口就可视为一个MRP应用实体(以下简称MRP实体,同样的,MVRP应用实体简称MVRP实体)。
MVRP协议可以实现 VLAN属性的自动注册和注销:
MVRP协议的属性注册和注销仅仅是对于接收到 MVRP协议报文的端口而言的。
图2 VLAN的注册和注销
MRP消息通过 MRP协议报文传递,MRP协议报文以特定组播 MAC地址为目的 MAC,如 MVRP 的目的 MAC 地址为 01-80-C2-00-00-21,Type 为 88F5。当设备在收到 MRP 应用实体的报文后, 会根据其目的 MAC地址分发给不同的 MRP应用进行处理。MRP协议报文采用 IEEE 802.3 Ethernet封装格式,如图 3所示
图3 MRP协议报文封装格式
主要字段的说明如表 1所示。
表1 MRP协议报文主要字段说明
MRP消息主要包括 Join消息、New消息、Leave消息和 LeaveAll消息,它们通过互相配合来实现 信息的注册或注销。其中,Join 消息和 New 消息属于声明,Leave 消息和 LeaveAll 消息属于回收声明。
Join消息
当一个 MRP 实体配置了某些属性,需要对端实体来注册自己的属性信息时,它会向对端实体发送 Join消息。当一个 MRP实体收到来自对端实体的 Join消息时,它会注册该 Join消息中的属性,并向本设备的 其他实体传播该 Join消息,其他实体收到传播的 Join消息后,向其对端实体发送 Join消息。MRP实体间发送的 Join消息又分为 JoinEmpty和 JoinIn两种(对于同一设备的实体间传播的 Join 消息则不做区分),二者的区别如下:
New消息
New消息的作用和Join消息比较类似,都是用于对属性的声明。不同的是,New消息主要用于MSTP (Multiple Spanning Tree Protocol,多生成树协议)拓扑变化的情况。
Leave消息
当一个MRP实体注销了某些属性,需要对端实体进行同步注销时,它会向对端实体发送 Leave消息。当一个 MRP实体收到来自对端实体的 Leave消息时,它会注销该 Leave消息中的属性,并向本设备的其他实体传播该 Leave 消息,其他实体收到传播的 Leave 消息后,根据该 Leave 消息中的属性在本设备上的状态,决定是否向其对端实体发送该 Leave消息(比如该 Leave消息中的属性为某 VLAN,若该 VLAN为动态 VLAN,且本设备上无实体注册该 VLAN,则在设备上删除该 VLAN,并向对端实体发送该 Leave消息;若该 VLAN为静态 VLAN,则不向对端实体发送该 Leave消息)。
LeaveAll消息
每个 MRP 实体启动时都会启动各自的 LeaveAll 定时器,当该定时器超时后,MRP 实体就会向对 端实体发送 LeaveAll消息。当一个 MRP实体收发 LeaveAll消息时,它会启动 Leave定时器,同时根据自身的属性状态决定是 否发送 Join 消息要求对端实体重新注册某属性。该实体在 Leave 定时器超时前,重新注册收到的 来自对端实体的 Join 消息中的属性;在 Leave 定时器超时后,注销所有未重新注册的属性信息, 从而周期性地清除网络中的垃圾属性。
MRP定义了四种定时器,用于控制各种 MRP消息的发送。
Periodic定时器
每个 MRP 实体启动时都会启动各自的 Periodic 定时器,来控制 MRP 消息的周期发送。该定时器超时前,实体收集需要发送的 MRP消息,在该定时器超时后,将所有待发送的 MRP消息封装成尽可能少的报文发送出去,这样减少了报文发送数量。随后再重新启动 Periodic定时器,开始新一轮的循环。
说明:Periodic定时器允许用户通过命令行开启或关闭。如果关闭 Periodic定时器,则 MRP实体不再周 期发送 MRP消息,仅在 LeaveAll定时器超时或收到来自对端实体的 LeaveAll消息的情况下会发送 MRP消息。
Join定时器
Join 定时器用来控制 Join 消息的发送。为了保证消息能够可靠地发送到对端实体,MRP 实体在发送 Join 消息时,将启动 Join 定时器。如果在该定时器超时前收到了来自对端实体的 JoinIn 消息, 且该 JoinIn 消息中的属性与发出的 Join 消息中的属性一致,便不再重发该 Join 消息,否则在该定时器超时后,当 Periodic定时器也超时,它将重发一次该 Join消息。
Leave定时器
Leave定时器用来控制属性的注销。当MRP实体收到来自对端实体的Leave消息(或收发LeaveAll 消息)时,将启动 Leave定时器。如果在该定时器超时前,收到来自对端实体的 Join消息,且该 Join 消息中的属性与收到的 Leave 消息中的属性一致(或与收发的 LeaveAll 消息中的某些属性一致), 则这些属性不会在本实体被注销,其他属性则会在该定时器超时后被注销。
LeaveAll定时器
每个 MRP实体启动时都会启动各自的 LeaveAll定时器,当该定时器超时后,该实体就会向对端实体发送 LeaveAll 消息,随后再重新启动 LeaveAll 定时器,开始新一轮的循环,对端实体在收到 LeaveAll消息后也重新启动LeaveAll定时器。
说明:LeaveAll定时器具有抑制机制,即当某个MRP实体的LeaveAll定时器超时后,会向对端实体发送 LeaveAll消息,对端实体在收到 LeaveAll消息时,重启本实体的 LeaveAll定时器,从而有效抑制 网络中的 LeaveAll消息数。为了防止每次都是同一实体的 LeaveAll定时超时,每次 LeaveAll定时 器重启时,LeaveAll定时器的值都将在一定范围内随机变动。
MVRP 传递的 VLAN 配置信息既包括本地手工配置的静态信息,也包括来自其他设备的动态信息。MVRP有三种注册模式,不同注册模式对动态 VLAN的处理方式有所不同。
下面通过一个简单的例子来介绍一下 MVRP 的工作过程。该例子分四个阶段描述了一个 VLAN 属 性在网络中是如何被注册和注销的。
1.VLAN属性的单向注册机制
图4 VLAN属性的单向注册示意图
在 Device A上创建静态 VLAN 2,通过 VLAN属性的单向注册,将 Device B和 Device C的相应端 口自动加入 VLAN 2:
图5 VLAN属性的双向注册示意图
通过上述 VLAN属性的单向注册过程,端口 Port 1、Port 2、Port 4已经加入 VLAN 2,但是 Port 3 还没有加入 VLAN 2(只有收到 JoinEmpty 消息或 JoinIn 消息的端口才能加入动态 VLAN)。为使 VLAN 2流量可以双向互通,需要进行 Device C到 Device A方向的VLAN属性的注册过程:
图6 VLAN属性的单向注销示意图
当设备上不再需要 VLAN 2时,可以通过 VLAN属性的注销过程将 VLAN 2从设备上删除:
图7 VLAN属性的双向注销示意图
当需要彻底删除所有设备上的 VLAN 2时,可以进行VLAN属性的双向注销:
使用 MVRP功能时,需要注意:
MVRP使不同设备上的 VLAN信息可以由协议动态维护和更新,用户只需要对少数设备进行 VLAN 配置即可应用到整个交换网络,无需耗费大量时间进行拓扑分析和配置管理。图 8 中所有设备都开启 MVRP 功能,设备之间相连的端口均为 Trunk 端口,并允许所有 VLAN 通 过。只需在 Device A和 Device G上分别手工配置静态 VLAN 100~VLAN 1000,那么,设备 Device B~Device F就可以通过 MVRP协议学习到这些 VLAN,最后各设备上都存在 VLAN 100~VLAN 1000。
图8 典型组网应用