电话
0571-87993259
GMRP(garp multicast registration protocol,garp 组播注册协议)是基于 GARP(Generic Attribute Registration Protocol,通用属性注册协议)的一个组播注册协议, 用于注册和注销组播属性。
GMRP 协议是一个动态二层组播注册协议,所有支持 GMRP 的交换机都能够接收来自其他交换机的组播注册信息,并动态更新本地的组播注册信息,同时也能将本地的组播注册信息向其他交换机传播。这种信息交换机制,确保了同一交换网内所有支持 GMRP 的设备维护的组播信息的一致性。
当一台主机想要加入某个组播组时,它将发出 GMRP 加入消息。交换机将接到 GMRP 加入消息的端口加入到该组播组中,并在接收端口所在的 VLAN 中广播该 GMRP 加入消息,VLAN中的组播源就可以知晓组播成员的存在。当组播源向组播组发送组播报文时,交换机就只把组播报文转发给与该组播组成员相连的端口,从而实现了在 vlan 内的二层组播。
交换机会周期性发送 GMRP 查询,如果主机想留在组播组中,它就会响应 GMRP 查询, 在该情况下,交换机没有任何操作;如果主机不想留在组播组中,它既可以发送一个 leave 信息也可以不响应周期性 GMRP 查询。一旦交换机在计时器(leave all timer)设定期间收到主机 leave 信息或没有收到响应信息,它便从组播组中删除该主机。
那么为什么需要二层组播协议呢?与 IGMP 协议一样,如果我们在自己的局域网内成立一个组播组,可能我们的局域网包含了很多交换机。如果这些交换机没有实现二层组播协议的话,那么某个组员给其他组员发送数据包时,交换机就会将该数据包向所有的端口广播。因为交换机不知道哪个端口有人加入了该组播组,唯一的解决办法就是管理员配置交换机,只有这样才能将这种广播转发数据包的发送方式限制住。而组播本身是动态的,所以通过这种靠管理员的配置来实现组播的方式是不现实的。因此,就需要有一个二层组播协议来动态管理组员。
1.Join 消息
当一个 GMRP 应用实体希望其它设备注册自己的属性信息时,它将对外发送 Join 消息; 当收到其它实体的 Join 消息或本设备静态配置了某些属性,需要其它 GMRP 应用实体进行注册时,它也会向外发送 Join 消息。
2.Leave 消息
当一个 GMRP 应用实体希望其它设备注销自己的属性信息时,它将对外发送 Leave 消息; 当收到其它实体的 Leave 消息注销某些属性或静态注销了某些属性后,它也会向外发送Leave 消息。
3.LeaveAll 消息
每个应用实体启动后,将同时启动 LeaveAll 定时器,当该定时器超时后应用实体将对外发送 LeaveAll 消息。
LeaveAll 消息用来注销所有的属性,以使其它应用实体重新注册本实体上所有的属性信息,以此来周期性地清除网络中的垃圾属性(例如某个属性已经被删除,但由于设备突然断电,并没有发送 Leave 消息来通知其他实体注销此属性)。
1.Join 定时器
Join 定时器是用来控制 Join 消息的发送的。
为了保证 Join 消息能够可靠的传输到其它应用实体,发送第一个 Join 消息后将等待一个 Join 定时器的时间间隔,如果在一个 Join 定时器时间内收到 JoinIn 消息,则不发送第二个 Join 消息;如果没收到,则再发送一个 Join 消息。
2.Hold 定时器
Hold 定时器是用来控制 Join 消息和 Leave 消息的发送的。
当在应用实体上配置属性或应用实体接收到消息时不会立刻将该消息传播到其它设备,而是在等待一个 Hold 定时器后再发送消息,设备将此 Hold 定时器时间段内接收到的消息尽可能封装成最少数量的报文,这样可以减少报文的发送量。如果没有 Hold 定时器的话,每来一个消息就发送一个,造成网络上报文量太大,既不利于网络的稳定,也不利于充分利用每个报文的数据容量。Hold 定时器的值要小于等于 Join 定时器值的一半。
3.Leave 定时器
Leave 定时器是用来控制属性注销的。
每个应用实体接收到 Leave 或 LeaveAll 消息后会启动 Leave 定时器,如果在 Leave 定时器超时之前没有接收到该属性的 Join 消息,属性才会被注销。这是因为网络中如果有一个实体因为不存在某个属性而发送了 Leave 消息,并不代表所有的实体都不存在该属性了, 因此不能立刻注销属性,而是要等待其他实体的消息。例如,某个属性在网络中有两个源, 分别在应用实体 A 和 B 上,其他应用实体通过协议注册了该属性。当把此属性从应用实体A 上删除的时候,实体 A 发送 Leave 消息,由于实体 B 上还存在该属性源,在接收到 Leave 消息之后,会发送 Join 消息,以表示它还有该属性。其他应用实体如果收到了应用实体 B 发送的 Join 消息,则该属性仍然被保留,不会被注销。只有当其它应用实体等待两个 Join 定时器以上仍没有收到该属性的 Join 消息时,才能认为网络中确实没有该属性了,所以这就要求 Leave 定时器的值大于 2 倍 Join 定时器的值。
4.LeaveAll 定时器
每个 GMRP 应用实体启动后,将同时启动 LeaveAll 定时器,当该定时器超时后 GMRP 应用实体将对外发送 LeaveAll 消息,随后再启动 LeaveAll 定时器,开始新的一轮循环。
接收到 LeaveAll 消息的实体将重新启动所有的定时器,包括 LeaveAll 定时器。在自己的 LeaveAll 定时器重新超时之后才会再次发送 LeaveAll 消息,这样就避免了短时间内发送多个 LeaveAll 消息。
一次 LeaveAll 事件相当于全网所有属性的一次 Leave。由于 LeaveAll 影响范围很广, 所以建议 LeaveAll 定时器的值不能太小,至少应该大于 Leave 定时器的值。
每个设备只在全局维护一个 LeaveAll 定时器。
1.在导航栏中选择[GMRP/GMRP 配置],进入 GMRP 配置界面。
2.在[GMRP 全局设置]界面中可以查看 GMRP 的全局配置,如下图所示。
3.如需修改 GMRP 的全局配置,在 GMRP 全局配置框中修改相应配置,然后单击<应用>。
[GMRP 全局设置]的相关界面的配置项说明。
配置项 | 说明 |
管理状态 | GMRP全局使能开关。 使能:使能GMRP功能; 禁止:关闭GMRP功能。注意:默认关闭。 |
Hold Time | Hold 定时器周期,范围为100-32760(ms),默认值为100ms; 注意 hold time*2 <= join time。 |
Join Time | Join 定时器周期,范围为100-32760(ms),默认值为200ms; 注意 join time*2<=leave time。 |
Leave Time | Leave 定时器周期,范围为100-32760(ms),默认值为600ms; 注意 leave time<=leaveall time |
Leaveall Time | Leaveall 定时器周期,范围为100-32760(ms),默认值为10000ms; 注意 leaveall time>=leave time |
1.在导航栏中选择[GMRP/GMRP 配置],进入 GMRP 配置界面。
2.在[GMRP 端口设置]界面中可以查看 GMRP 的端口配置,如下图所示。
3.如需修改 GMRP 的端口配置,单击指定端口后面的修改按钮,进入 GMRP 端口配置修改界面,如下图所示,,配置好后,然后单击<应用>。
GMRP[端口配置]的相关界面的配置项说明。
配置项 | 说明 |
端口 | 端口名称信息。 |
VLAN 模式 | 端口的 GMRP 模式,默认为 Forbidden。 |