一、MVRP协议:

A、介绍:

MRP(多属性注册协议)作为一个属性注册协议的载体,可以用来传递属性信息。MVRP(多VLAN注册协议)是MRP的一种应用,用于在设备间发布并学习VLAN配置信息。当设备启动了MVRP之后,设备将本地的VLAN配置信息向其他设备发送,同时还能够接收来自其他设备的VLAN配置信息,并动态更新本地的VLAN配置信息,从而使所有设备的VLAN信息都达成一致,极大减少了网络管理员的VLAN配置工作。在网络拓扑发生变化后,MVRP还能根据新的拓扑重新发布及学习VLAN配置信息,做到VLAN配置信息实时与网络拓扑同步更新。

B、实现机制:

设备上每一个参与协议的端口都可以视为一个应用实体。当MRP应用(如MVRP)在端口上启动之后,该端口就可视为一个MRP应用实体(以下简称MRP实体,同样的,MVRP应用实体简称MVRP实体)。

如图示,MRP实体通过发送声明类或回收声明类消息(以下简称声明和回收声明),来通知其他MRP实体注册或注销自己的属性信息,并根据其他MRP实体发来的声明或回收声明来注册或注销对方的属性信息。通过MRP机制,一个MRP实体上的配置信息会迅速传遍整个局域网。

Untitled

通过上述的声明类消息,MVRP协议可以实现 VLAN属性的自动注册和注销:

  • VLAN的注册:端口加入 VLAN。

  • VLAN的注销:端口退出 VLAN。MVRP协议通过发送声明和回收声明类消息实现 VLAN属性的注册和注销:

  • 当端口接收到一个 VLAN属性声明时,该端口将注册该声明中包含的 VLAN信息(端口加入 VLAN)。

  • 当端口接收到一个 VLAN属性的回收声明时,该端口将注销该声明中包含的 VLAN信息(端 口退出 VLAN)。

MVRP协议的属性注册和注销仅仅是对于接收到 MVRP协议报文的端口而言的。

C、MVRP消息封装结构

MRP消息通过 MRP协议报文传递,MRP协议报文以特定组播 MAC地址为目的 MAC,如 MVRP 的目的 MAC 地址为 01-80-C2-00-00-21,Type 为 88F5。当设备在收到 MRP 应用实体的报文后, 会根据其目的 MAC地址分发给不同的 MRP应用进行处理。MRP协议报文采用 IEEE 802.3 Ethernet封装格式,如下图所示:

Untitled

Untitled

D、MVRP消息类型

MRP消息主要包括 Join 消息、New 消息、Leave 消息和 LeaveAll 消息,它们通过互相配合来实现信息的注册或注销。其中,Join 消息和 New 消息属于声明,Leave 消息和 LeaveAll 消息属于回收声明

1、Join 消息:

当一个 MRP 实体配置了某些属性,需要对端实体来注册自己的属性信息时,它会向对端实体发送 Join 消息。

当一个 MRP 实体收到来自对端实体的Join消息时,它会注册该 Join 消息中的属性,并向本设备的其他实体传播该 Join 消息,其他实体收到传播的 Join 消息后,向其对端实体发送 Join 消息。

MRP 实体间发送的 Join 消息又分为 JoinEmpty 和 JoinIn 两种(对于同一设备的实体间传播的 Join 消息则不做区分),二者的区别如下:

  • JoinEmpty:用于声明 MRP 实体的非注册属性。比如一个 MRP 实体加入了某静态 VLAN(我们将本地手工创建的 VLAN 称为静态 VLAN,通过 MRP 消息学习并创建的 VLAN 称为动态 VLAN ),此时若该实体还没有通过MRP消息注册该VLAN,这时该实体向对端实体发送的Join消息就为JoinEmpty消息。

  • JoinIn:用于声明MRP实体的注册属性。比如MRP实体加入了某静态VLAN且通过MRP消息注册了该VLAN,或该实体收到本设备其他实体传播的某VLAN的Join信息且通过MRP消息注册了该VLAN,这时该实体向对端实体发送的Join消息就为JoinIn消息。

2、New 消息:

New 消息的作用和 Join 消息比较类似,都是用于对属性的声明。不同的是,New 消息主要用于 MSTP(Multiple Spanning Tree Protocol,多生成树协议)拓扑变化的情况。

  • 当 MSTP 拓扑变化时,MRP 实体需要向对端实体发送 New 消息声明拓扑变化。

  • 当一个 MRP 实体收到来自对端实体的 New 消息时,它会注册该 New 消息中的属性,并向本设备其他实体传播该 New 消息,其他实体收到传播的 New 消息后,向其对端实体发送该 New 消息。

3、Leave 消息:

当一个MRP实体注销了某些属性,需要对端实体进行同步注销时,它会向对端实体发送Leave消息。

当一个MRP实体收到来自对端实体的Leave消息时,它会注销该Leave消息中的属性,并向本设备的其他实体传播该Leave消息,其他实体收到传播的Leave消息后,根据该 Leave 消息中的属性在本设备上的状态,决定是否向其对端实体发送该 Leave 消息(比如该 Leave 消息中的属性为某 VLAN,若该 VLAN 为动态 VLAN,且本设备上无实体注册该 VLAN,则在设备上删除该 VLAN,并向对端实体发送该 Leave 消息;若该 VLAN 为静态 VLAN,则不向对端实体发送该 Leave 消息)。

4、LeaveAll 消息:

每个MRP实体启动时都会启动各自的 LeaveAll 定时器,当该定时器超时后,MRP 实体就会向对端实体发送 LeaveAll 消息。

当一个 MRP 实体收发 LeaveAll 消息时,它会启动 Leave 定时器,同时根据自身的属性状态决定是否发送 Join 消息要求对端实体重新注册某属性。该实体在 Leave 定时器超时前,重新注册收到的来自对端实体的 Join 消息中的属性;在 Leave 定时器超时后,注销所有未重新注册的属性信息,从而周期性地清除网络中的垃圾属性。

E、MVRP定时器

MVRP 定义了四种定时器,用于控制各种 MVRP 消息的发送。

1、Periodic定时器

每个 MRP 实体启动时都会启动各自的 Periodic 定时器,来控制 MRP 消息的周期发送。该定时器超时前,实体收集需要发送的 MRP消息,在该定时器超时后,将所有待发送的 MRP消息封装成尽可能少的报文发送出去,这样减少了报文发送数量。随后再重新启动 Periodic 定时器,开始新一轮的循环。

说明:Periodic定时器允许用户通过命令行开启或关闭。如果关闭 Periodic 定时器,则 MRP 实体不再周 期发送 MRP 消息,仅在 LeaveAll 定时器超时或收到来自对端实体的 LeaveAll 消息的情况下会发送 MRP 消息。

2、Join定时器

Join 定时器用来控制 Join 消息的发送。为了保证消息能够可靠地发送到对端实体,MRP 实体在发送 Join 消息时,将启动 Join 定时器。如果在该定时器超时前收到了来自对端实体的 JoinIn 消息, 且该 JoinIn 消息中的属性与发出的 Join 消息中的属性一致,便不再重发该 Join 消息,否则在该定时器超时后,当 Periodic 定时器也超时,它将重发一次该 Join 消息。

3、Leave定时器

Leave定时器用来控制属性的注销。当 MRP 实体收到来自对端实体的 Leave 消息(或收发 LeaveAll 消息)时,将启动 Leave 定时器。如果在该定时器超时前,收到来自对端实体的 Join 消息,且该 Join 消息中的属性与收到的 Leave 消息中的属性一致(或与收发的 LeaveAll 消息中的某些属性一致), 则这些属性不会在本实体被注销,其他属性则会在该定时器超时后被注销。

4、LeaveAll定时器

每个 MRP 实体启动时都会启动各自的 LeaveAll 定时器,当该定时器超时后,该实体就会向对端实体发送 LeaveAll 消息,随后再重新启动 LeaveAll 定时器,开始新一轮的循环,对端实体在收到 LeaveAll 消息后也重新启动 LeaveAll 定时器。

说明:LeaveAll 定时器具有抑制机制,即当某个 MRP 实体的 LeaveAll 定时器超时后,会向对端实体发送 LeaveAll 消息,对端实体在收到 LeaveAll 消息时,重启本实体的 LeaveAll 定时器,从而有效抑制 网络中的 LeaveAll 消息数。为了防止每次都是同一实体的 LeaveAll 定时超时,每次 LeaveAll 定时 器重启时,LeaveAll 定时器的值都将在一定范围内随机变动。