工作过程
下面通过一个简单的例子来介绍一下GVRP的工作过程。该例子分四个阶段描述了一个VLAN属性在网络中是如何被注册和注销的。
VLAN属性的单向注册
在SwitchA上创建静态VLAN2后,Port1启动Join定时器和Hold定时器,等待Hold定时器超时后,SwitchA向SwitchB发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,再等待Hold定时器超时后,发送第二个JoinEmpty消息。
SwitchB上接收到第一个JoinEmpty后创建动态VLAN2,并把接收到JoinEmpty消息的Port2加入到动态VLAN2中,同时告知Port3启动Join定时器和Hold定时器,等待Hold定时器超时后向SwitchC发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinEmpty消息。SwitchB上收到第二个JoinEmpty后,因为Port2已经加入动态VLAN2,所以不作处理。
SwitchC上接收到第一个JoinEmpty后创建动态VLAN2,并把接收到JoinEmpty消息的Port4加入到动态VLAN2中。SwitchC上收到第二个JoinEmpty后,因为Port4已经加入动态VLAN2,所以不作处理。
此后,每当LeaveAll定时器超时或收到LeaveAll消息,设备会重新启动LeaveAll定时器、Join定时器、Hold定时器和Leave定时器。SwitchA的Port1在Hold定时器超时之后发送第一个JoinEmpty消息,Join定时器超时后再次启动Hold定时器,再等待Hold定时器超时后,发送第二个JoinEmpty消息,SwitchB向SwitchC发送JoinEmpty消息的过程也是如此。
VLAN属性的双向注册
VLAN属性的单向注册完成后,在SwitchC上创建静态VLAN2(将动态VLAN转换成静态VLAN),Port4启动Join定时器和Hold定时器,等待Hold定时器超时后,SwitchC向SwitchB发送第一个JoinIn消息(因为Port4已经注册了VLAN2,所以发送JoinIn消息),Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinIn消息。
SwitchB上接收到第一个JoinIn后,把接收到JoinIn消息的Port3加入到动态VLAN2中,同时告知Port2启动Join定时器和Hold定时器,等待Hold定时器超时后,向SwitchA发送第一个JoinIn消息,Join定时器超时后再次启动Hold定时器,Hold定时器超时之后,发送第二个JoinIn消息;SwitchB上收到第二个JoinIn后,因为Port3已经加入动态VLAN2,所以不作处理。
SwitchA上接收到JoinIn之后,停止向SwitchB发送JoinEmpty消息。此后,当LeaveAll定时器超时或收到LeaveAll消息,设备重新启动LeaveAll定时器、Join定时器、Hold定时器和Leave定时器。SwitchA的Port1在Hold定时器超时之后就开始发送JoinIn消息。
SwitchB向SwitchC发送JoinIn消息。
SwitchC收到JoinIn消息后,由于本身已经创建了静态VLAN2,所以不会再创建动态VLAN2。
VLAN属性的单向注销
在SwitchA上删除静态VLAN2,Port1启动Hold定时器,等待Hold定时器超时后,SwitchA向SwitchB发送LeaveEmpty消息。LeaveEmpty消息只需发送一次。
SwitchB上接收到LeaveEmpty,Port2启动Leave定时器,等待Leave定时器超时之后Port2注销VLAN2,将Port2从动态VLAN2中删除(由于此时VLAN2中还存在端口Port3,所以不会删除VLAN2),同时告知Port3 启动Hold定时器和Leave定时器,等待Hold定时器超时后,向SwitchC发送LeaveIn消息。由于SwitchC的静态VLAN2还没有删除,Port3在Leave定时器超时之前仍然能够收到Port4发送的JoinIn消息,所以SwitchA和SwitchB上仍然能够学习到动态的VLAN2。
SwitchC上接收到LeaveIn后,由于SwitchC上存在静态VLAN2,所以Port4不会从VLAN2中删除。
VLAN属性的双向注销
在SwitchC上删除静态VLAN2,Port4启动Hold定时器,等待Hold定时器超时后,SwitchC向SwitchB发送LeaveEmpty消息。
SwitchB接收到LeaveEmpty消息后,Port3启动Leave定时器,等待Leave定时器超时之后Port3注销VLAN2,将Port3从动态VLAN2中删除并删除动态VLAN2,同时告知Port2启动Hold定时器,等待Hold定时器超时后,向SwitchA发送LeaveEmpty消息。
SwitchA接收到LeaveEmpty消息后,Port1启动Leave定时器,等待Leave定时器超时之后Port1注销VLAN2,将Port1从动态VLAN2中删除并删除动态VLAN2。