发明内容
本发明提供一种基于链路状态的流量控制方法和设备,以减少点对点链路中无效的流量,节省链路带宽。
为了达到上述目的,本发明提供一种基于链路状态的流量控制方法,应用于包括发送端和接收端的系统中,所述发送端的第一端口与所述接收端的第二端口之间为点对点链路,该方法包括以下步骤:
所述发送端将所述第一端口对应的实例或VLAN上的转发状态封装到LLDP报文,并将所述LLDP报文发送给所述接收端;所述接收端从所述LLDP报文中获取所述第一端口的转发状态,并通过所述第一端口的转发状态以及所述第二端口在所述实例或VLAN上的转发状态,确定所述第二端口在所述实例或VLAN上的流量控制策略。
所述第一端口对应的实例或VLAN为一个实例或VLAN,或者,多个实例或VLAN;所述发送端将所述第一端口对应的实例或VLAN上的转发状态封装到LLDP报文,具体包括:当所述第一端口对应的实例或VLAN为一个实例或VLAN时,所述发送端将所述第一端口对应的一个实例或VLAN上的转发状态封装到LLDP报文;当所述第一端口对应的实例或VLAN为多个实例或VLAN时,所述发送端将所述第一端口对应的多个实例或VLAN上的转发状态一起封装到LLDP报文,其中,每个实例或VLAN对应有一个转发状态。
所述发送端将所述第一端口对应的实例或VLAN上的转发状态封装到LLDP报文,具体包括:所述发送端确定所述第一端口在所述实例或VLAN上的转发状态,并将所述第一端口的转发状态封装到TLV字段中;所述发送端将所述TLV字段封装到LLDPDU中,并将所述LLDPDU封装到LLDP报文。
所述发送端将所述第一端口对应的实例或VLAN上的转发状态封装到LLDP报文,并将所述LLDP报文发送给所述接收端,具体包括:当所述第一端口在所述实例或VLAN上的转发状态发生变化时,所述发送端将所述第一端口的转发状态封装到LLDP报文,并将所述LLDP报文发送给所述接收端;或者,当所述第一端口对应的LLDP定时器超时后,所述发送端将所述第一端口的转发状态封装到LLDP报文,并将所述LLDP报文发送给所述接收端。
所述接收端通过所述第一端口的转发状态以及所述第二端口在所述实例或VLAN上的转发状态,确定所述第二端口在所述实例或VLAN上的流量控制策略,具体包括:当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为发送状态时,所述接收端确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为阻塞状态时,所述接收端确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述接收端通过所述第一端口的转发状态以及所述第二端口在所述实例或VLAN上的转发状态,确定所述第二端口在所述实例或VLAN上的流量控制策略,具体包括:所述接收端为所述第二端口在所述实例或VLAN上维护active标记或inactive标记;当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为active标记时,所述接收端确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为inactive标记时,所述接收端确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述active标记或inactive标记的维护过程,进一步包括:当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为发送状态,或者,所述第二端口的转发状态为阻塞状态,所述第一端口的转发状态为发送状态,如果所述第二端口在所述实例或VLAN上为inactive标记,所述接收端将所述inactive标记修改为active标记;否则,所述接收端保持所述第二端口在所述实例或VLAN上为active标记;当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为阻塞状态时,如果所述第二端口在所述实例或VLAN上为active标记,所述接收端将所述active标记修改为inactive标记;否则,所述接收端保持所述第二端口在所述实例或VLAN上为inactive标记。
一种基于链路状态的流量控制设备,应用于包括发送端和接收端的系统中,所述发送端的第一端口与所述接收端的第二端口之间为点对点链路,所述流量控制设备为所述发送端或者接收端,且所述流量控制设备包括:处理模块、发送模块,接收模块,获取模块、确定模块;
当所述流量控制设备为所述发送端时,所述处理模块,用于确定所述第一端口对应的实例或VLAN上的转发状态,并将所述第一端口的转发状态封装到LLDP报文;所述发送模块,用于将所述LLDP报文发送给所述接收端;
当所述流量控制设备为所述接收端时,所述接收模块,用于接收来自所述发送端的所述LLDP报文;所述获取模块,用于从所述LLDP报文中获取所述第一端口的转发状态;所述确定模块,用于通过所述第一端口的转发状态以及所述第二端口在所述实例或VLAN上的转发状态,确定所述第二端口在所述实例或VLAN上的流量控制策略。
所述第一端口对应的实例或VLAN为一个实例或VLAN,或者,多个实例或VLAN;所述处理模块,用于当所述第一端口对应的实例或VLAN为一个实例或VLAN时,将所述第一端口对应的一个实例或VLAN上的转发状态封装到LLDP报文;当所述第一端口对应的实例或VLAN为多个实例或VLAN时,将所述第一端口对应的多个实例或VLAN上的转发状态一起封装到LLDP报文,其中,每个实例或VLAN对应有一个转发状态。
所述处理模块,具体用于确定所述第一端口在所述实例或VLAN上的转发状态,并将所述第一端口的转发状态封装到TLV字段中;将所述TLV字段封装到LLDPDU中,并将所述LLDPDU封装到LLDP报文。
所述发送模块,具体用于当所述第一端口在所述实例或VLAN上的转发状态发生变化时,将所述LLDP报文发送给所述接收端;或者,当所述第一端口对应的LLDP定时器超时后,将所述LLDP报文发送给所述接收端。
所述确定模块,具体用于当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为发送状态时,确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为阻塞状态时,确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述确定模块,具体用于为所述第二端口在所述实例或VLAN上维护active标记或inactive标记;当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为active标记时,确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为inactive标记时,确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述active标记或inactive标记的维护过程,具体为:当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为发送状态,或者,所述第二端口的转发状态为阻塞状态,所述第一端口的转发状态为发送状态,如果所述第二端口在所述实例或VLAN上为inactive标记,将所述inactive标记修改为active标记;否则,保持所述第二端口在所述实例或VLAN上为active标记;当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为阻塞状态时,如果所述第二端口在所述实例或VLAN上为active标记,将所述active标记修改为inactive标记;否则,保持所述第二端口在所述实例或VLAN上为inactive标记。
与现有技术相比,本发明至少具有以下优点:
通过获得点对点链路对端的端口状态,可减少点对点链路中无效的流量,避免无效的流量占用带宽,可以降低链路拥塞的发生的可能性;而且可以使得设备对广播报文、组播报文和未知单播报文进行有效的复制转发,过滤掉无效的广播报文、组播报文和未知单播报文,大大减轻了设备的处理负担,提高设备的转发性能。
具体实施方式
本发明提出一种基于链路状态的流量控制方法,该方法应用于包括发送端和接收端的系统中,且发送端的第一端口与接收端的第二端口之间为点对点链路。其中,发送端和接收端是相对的,以图2为本发明参考网络模型示意图,则当交换机A为发送端时,端口1为第一端口,交换机B为接收端,端口2为第二端口;当交换机B为发送端时,端口2为第一端口,交换机A为接收端,端口1为第二端口。
如图3所示,该基于链路状态的流量控制方法包括以下步骤:
步骤301,发送端将第一端口对应的实例或VLAN上的转发状态封装到LLDP报文,并将LLDP报文发送给接收端。
需要注意的是,第一端口可对应有一个实例或一个VLAN,此时发送端将第一端口对应的一个实例或VLAN上的转发状态封装到LLDP报文。
第一端口还可对应有多个实例或多个VLAN,此时发送端需要将多个实例或多个VLAN上的转发状态一起封装到LLDP报文,其中,每个实例或VLAN对应有一个转发状态。例如,第一端口对应有实例1、实例2,第一端口需要将实例1的转发状态和实例2的转发状态封装到LLDP报文。又例如,第一端口对应有VLAN1、VLAN2,第一端口需要将VLAN1的转发状态和VLAN2的转发状态封装到LLDP报文。
在发送端将第一端口在实例或VLAN上的转发状态封装到LLDP报文的过程中,发送端需确定第一端口在实例或VLAN上的转发状态,将转发状态封装到TLV(type-length-value,类型-长度-值)字段中,并将TLV字段封装到LLDPDU中,将LLDPDU封装到LLDP报文。
本步骤中,该发送过程可分为以下方式。
方式一:当第一端口在实例或VLAN上的转发状态发生变化时,发送端将第一端口的转发状态封装到LLDP报文,并将LLDP报文发送给接收端。其中,当第一端口对应有多个实例或多个VLAN时,任一实例或VLAN上的转发状态发生变化时,发送端将各实例或VLAN的转发状态封装到LLDP报文,并将LLDP报文发送给接收端。
方式二:当第一端口对应的LLDP定时器超时后,发送端将第一端口的转发状态封装到LLDP报文,并将LLDP报文发送给接收端。其中,可为各端口设置LLDP定时器,该LLDP定时器用于发送LLDP报文,当LLDP定时器超时后,则发送端将该端口对应的转发状态封装到LLDP报文,并将LLDP报文发送给接收端。
步骤302,接收端从LLDP报文中获取第一端口的转发状态。
针对发送端将第一端口的转发状态封装到LLDP报文的过程,接收端可从LLDP报文中解析出LLDPDU,并从LLDPDU中解析出TLV字段,之后从TLV字段中解析出第一端口的转发状态。
步骤303,接收端通过第一端口的转发状态以及第二端口在该实例或VLAN上的转发状态确定第二端口在该实例或VLAN上的流量控制策略。
具体的,当第二端口的转发状态为发送状态(即可以发送报文,也可以接收报文),且第一端口的转发状态为发送状态时,接收端确定流量控制策略为:第二端口在该实例或VLAN上发送和/或接收流量;当第二端口的转发状态为发送状态,且第一端口的转发状态为阻塞状态(即不能发送报文,且不能接收报文)时,接收端确定流量控制策略为:第二端口在该实例或VLAN上只接收流量。
进一步的,接收端还可以为第二端口在该实例或VLAN上维护active(活动)标记或inactive(非活动)标记;当第二端口的转发状态为发送状态,且第二端口在该实例或VLAN上为active标记时,接收端确定流量控制策略为:第二端口在该实例或VLAN上发送和/或接收流量(即可以正常接收,也可以发送报文)。
当第二端口的转发状态为发送状态,且第二端口在该实例或VLAN上为inactive标记时,接收端确定流量控制策略为:第二端口在该实例或VLAN上只接收流量(即不能发送属于该实例或该VLAN的广播报文、组播报文和未知单播报文,只可以正常接收报文);通过该策略,可以避免无效流量在链路中的传输,减轻设备的转发负担和减少链路拥塞的可能性。
本发明中,可为端口在各个实例或各个VLAN上的转发状态引入一个变量标记来达到优化转发策略目的。该变量标记有两种取值,分别为active标记(如通过标识1表示)和inactive(如通过标识0表示)标记,在默认初始化时,端口在所有实例或所有允许通过的VLAN上均是active标记。
active标记或inactive标记的维护过程,进一步包括:当第二端口的转发状态为发送状态,第一端口的转发状态为发送状态,或者,第二端口的转发状态为阻塞状态,第一端口的转发状态为发送状态时,如果第二端口在该实例或VLAN上为inactive标记,接收端将inactive标记修改为active标记;否则,接收端保持第二端口在实例或VLAN上为active标记(即不进行任何改变);当第二端口的转发状态为发送状态,第一端口的转发状态为阻塞状态时,如果第二端口在该实例或VLAN上为active标记,接收端将active标记修改为inactive标记;否则,接收端保持第二端口在实例或VLAN上为inactive标记(即不进行任何改变)。
需要说明的是,针对端口所对应的实例的处理过程、与针对端口所对应的VLAN的处理过程类似。
综上所述,本发明中,通过将端口在各实例(或各VLAN)上的转发状态封装到LLDP报文中发送到点对点链路对端,接收端从LLDP报文中获取链路对端的转发状态后,可优化接收端的流量转发策略,从而有效减少链路中无效的流量,降低链路拥塞发生的可能性,并可减轻设备报文转发的负担。
需要说明的是,本发明适用的协议包括但不限于以下的一种或几种:STP协议、RSTP协议、MSTP协议、PVST协议、Smart Link协议、RRPP协议。即该方法适用的范围不仅包括可以使得端口按照不同实例或者按照不同VLAN进行流量转发的协议(如MSTP、PVST、Smart Link、RRPP等),也包括不区分实例的STP和RSTP协议。
为了更加清楚的阐述本发明提供的技术方案,以下结合图1的应用场景、以及图4所示的设备结构,对本发明进行进一步的说明。在图4中,以支持MSTP协议、RRPP协议和Smart Link协议为例,MSTP协议由MSTP模块实现,RRPP协议由RRPP模块实现,Smart Link协议由Smart Link模块实现。
基于上述情况,本发明提供的方法中,发送端将端口在各实例(或各VLAN)上的转发状态封装到LLDP报文中发送给接收端,接收端从LLDP报文中获取发送端的端口的转发状态,并基于该转发状态优化接收端的流量转发策略。
以下通过对MSTP(即确定端口的角色为MSTP)的处理为例详细说明本发明提供的技术方案。发送端将端口在实例(以实例的处理为例进行说明,对于VLAN的处理与实例相同,本发明中不再赘述)上的转发状态封装到LLDP报文,并将LLDP报文发送给接收端的过程中,包括以下步骤:
步骤1、计算出端口在各个实例上的MSTP角色。
步骤2、MSTP模块计算出端口在各个实例上的转发状态。假设Switch B上的端口Port1和Port 2在MSTP的各个实例上的转发状态如表1所示。
表1
MSTID |
Port |
Role |
STP State |
Protection |
0 |
Port 1 |
ALTE |
DISCARDING |
NONE |
0 |
Port 2 |
ROOT |
FORWARDING |
NONE |
1 |
Port 1 |
ROOT |
FORWARDING |
NONE |
1 |
Port 2 |
ALTE |
DISCARDING |
NONE |
2 |
Port 1 |
DESI |
FORWARDING |
NONE |
2 |
Port 2 |
DESI |
FORWARDING |
NONE |
步骤3、MSTP模块将端口的转发状态通知给LLDP模块。例如,如表2所示,Switch B的MSTP模块将端口Port 1在每个MSTP实例上的转发状态通知给LLDP模块。
表2
端口号 |
MSTI ID |
转发状态 |
Port 1 |
0 |
Discarding |
Port 1 |
1 |
Forwarding |
Port 1 |
2 |
Forwarding |
步骤4、LLDP模块将端口的转发状态封装到LLDP报文中。
具体的,LLDP模块将端口在每个MSTP实例上的转发状态分别封装到一个TLV字段中,其中TLV字段含义如下:
TLV type:取值127,表示用户自定义;
TLV information string length:取值14,表示后一字段TLV information string的值长度为14bits;
TLV information string:由两部分构成,前12bits表示MSTI ID,即MSTP的实例ID,可以表示的范围为0~4095;后2bits表示转发状态,具体取值含义如下:00:表示Forwarding、01:表示Discarding、10:表示Learning、11:保留。
例如,Switch B的LLDP模块将端口Port 1在每个MSTP实例上的转发状态分别封装到如表3所示的TLV字段中。
表3
步骤5、LLDP模块将LLDP报文发送给接收端。
将携带转发状态的LLDP报文发送到链路对端的过程,包括:当端口在任一实例上的转发状态发生变化时,端口发送携带该端口在各实例上转发状态的LLDP报文;或者,当LLDP定时器超时后,端口发送携带该端口在各实例上转发状态的LLDP报文。
例如,当Switch B的端口Port1在实例0的转发状态由Discarding变成Forwarding时,Port 1发送LLDP报文;LLDP定时器超时后,Switch B将携带了端口Port1在各个MSTP实例上转发状态的LLDP报文从Port1发送出去。
本发明中,接收端从LLDP报文中获取转发状态,并利用该转发状态优化流量转发策略的过程中,包括以下步骤:
步骤6、接收端的端口接收到携带链路对端转发状态的LLDP报文。
例如,Switch A的端口Port 1接收到链路对端Switch B的端口Port1的LLDP报文;该过程与上述步骤5的过程相对应。
步骤7、LLDP模块解析出LLDP报文中携带的链路对端转发状态的信息。
例如,SwitchA的端口Port 1将接收到的LLDP报文交给LLDP模块进行解析,由LLDP模块解析出链路对端转发状态的信息,该过程与上述的步骤4相对应,为其逆过程。
步骤8、LLDP模块将解析到的转发状态信息通知给MSTP模块。
例如,Switch A的LLDP模块将端口Port 1的对端转发状态通知给MSTP模块。该过程与上述的步骤3相对应。
步骤9、MSTP模块利用该转发状态信息优化流量转发策略。
(1)将链路对端在各个MSTP实例上的转发状态与本端口进行比较。需要说明的是,如果链路两端的实例数目不一致或实例配置不对称,则不相同的实例不进行比较,即忽略无法比较的实例。
例如,Switch A端口Port 1和链路对端Switch B端口Port 1在各个MSTP实例上的转发状态进行比较情况如表4所示。
表4
MSTI ID |
Switch A端口Port 1 |
Switch B端口Port 1 |
0 |
Forwarding(发送状态) |
Discarding(阻塞状态) |
1 |
Forwarding |
Forwarding |
2 |
Discarding |
Forwarding |
(2)基于不同的比较结果确定相应的操作,如表4所示,为比较结果与相应的操作的情况。
表5
操作1为:如果本端在某实例(或某VLAN)上有inactive标记,则清除该标记(即将inactive标记修改为active标记);否则(即在某实例上有active标记),不进行任何改变(即保持active标记)。
操作2为:如果本端在某实例(或某VLAN)上没有标记为inactive,则设置inactive标记(即将active标记修改为inactive标记);否则(即在某实例上有inactive标记),不进行任何改变(即保持inactive标记)。
(3)根据相应的操作维护active标记和inactive标记,并利用active标记和inactive标记优化转发策略。
本发明中,通过为端口在各个实例上的转发状态引入一个变量标记来达到优化转发策略目的。该变量标记有两种取值,分别为active标记(如通过标识1表示)和inactive(如通过标识0表示)标记,在默认初始化时,端口在所有实例或所有允许通过的VLAN上均是active标记。
基于该active标记和inactive标记,则优化转发策略的规则如下:(1)如果端口在某实例上(或某VLAN)上是Forwarding状态(发送状态),且标记为active,则该端口在该实例(或该VLAN)上可以正常接收和发送报文。(2)如果端口在某实例上(或某VLAN)上是Forwarding状态,且标记为inactive,则该端口在该实例(或该VLAN)上不能发送报文,即不能发送属于该实例(或该VLAN)的广播报文、组播报文和未知单播报文,但是可以正常接收报文。其中,通过规则(2),可以避免无效流量在链路中的传输,减轻设备的转发负担和减少链路拥塞的可能性。
此外,针对表4和表5所示的转发状态,进行如下说明:MSTP中定义了两种由Discarding状态迁移到Forwarding的方式,即慢速迁移和快速迁移。
慢速迁移是Discarding先等待一个Forward Delay的时间迁移到Learning状态,然后由Learning状态等待一个Forward Delay的时间迁移到Forwarding。因此,当感知到对端是Learning状态时,由于对端将变成Forwarding状态,则需要清除inactive标记。
快速迁移是端口通过P/A机制完成Discarding迁移到Forwarding,而无需等待两倍的Forward Delay的时间。但是在P/A机制完成前,请求快速迁移的端口仍然是Learning状态,因此感知到对端是Learning状态时,需要清除inactive标记。
需要说明的是,上述对慢速迁移和快速迁移的说明主要是考虑到本方案对端口转发状态变化时,是否会有丢包的问题;本方案中,无论是慢速迁移还是快速迁移,从Learning状态对应的操作来看,均不会产生丢包问题,即不会出现对端已经从Discarding迁移到Forwarding,而本端仍然还是inactive标记的现象。
例如:Switch A端口Port 1和链路对端Switch B端口Port 1通过上述步骤的比较后,Switch A进行如下操作(假设Switch A端口Port 1在实例0~2上均没有inactive标记):
Switch A端口Port 1在实例0上,标记为inactive;Switch A端口Port 1在实例1上,不进行任何操作;Switch A端口Port 1在实例2上,不进行任何操作。
当网络相关配置发生变化后,Switch A端口Port 1和链路对端Switch B端口Port 1有表6所示的转发状态。
表6
MSTI ID |
Switch A端口Port 1 |
Switch B端口Port 1 |
0 |
Forwarding |
Forwarding |
1 |
Forwarding |
Discarding |
2 |
Discarding |
Forwarding |
此时,Switch A进行如下操作:Switch A端口Port 1在实例0上,取消inactive标记;Switch A端口Port 1在实例1上,标记inactive;Switch A端口Port 1在实例2上,不进行任何操作。
综上所述,本发明中,当设备需要在端口上向外转发广播报文、组播报文或未知单播报文时,如果该端口在对应实例(或对应VLAN)上是Forwarding状态,但是被设置为inactive标记,则该设备在转发该实例对应的报文时,将跳过该端口,不再向该端口上转发该报文(由于链路对端在相同实例上是Discarding状态),从而达到了避免无效流量在链路中浪费带宽的问题。
需要说明的是,上述过程是针对MSTP协议的描述,针对RRPP和Smart Link的应用,处理与MSTP类似。由RRPP模块实现RRPP协议的处理,由Smart Link模块实现对Smart Link协议的处理。
RRPP与MSTP的相似点是:端口在不同的实例上有不同的转发状态,RRPP通过使用MSTI(Multiple Spanning Tree Instance,多生成树实例)来实现不同VLAN的负载分担。RRPP与MSTP的区别在于:
(1)转发状态,配置成RRPP的设备,端口上只有两种转发状态,分别为Forwarding(发送状态)和Blocked(阻塞状态),因此在RRPP配置下,可以通过对应转换,将RRPP的Forwarding和Blocked等价于MSTP的Forwarding和Discarding等两种状态。
(2)状态转换,在MSTP中,当端口在任一实例上的转发状态发生变化时,发送LLDP报文。对于RRPP来说,当RRPP设备的端口在任一实例上从Forwarding切换到Blocked、或从Blocked切换到Forwarding,均要发送LLDP报文。
RRPP的其他过程与MSTP相同的,在此不再重复赘述。
Smart Link与MSTP的相似点是:可以将Smart Link看成是简化版本的MSTP,每个Smart Link组的保护VLAN是通过引用MSTI来实现的。Smart Link与MSTP的区别在于:
(1)转发状态,配置成Smart Link的设备,端口上只有两种转发状态,分别为ACTVIE(发送状态)和STANDBY(阻塞状态),因此在Smart Link配置下,可以通过对应转换,将Smart Link的ACTVIE和STANDBY等价于MSTP的Forwarding和Discarding等两种状态。
(2)状态转换,在MSTP中,当端口在任一实例上的转发状态发生变化时,发送LLDP报文。对于Smart Link来说,当Smart Link设备的端口在任一实例上从STANDBY切换到ACTVIE、或从ACTVIE切换到STANDBY,均要发送LLDP报文。
Smart Link的其他过程与MSTP相同的,在此不再重复赘述。
综上所述,针对图4所示的设备结构图,可由MSTP/RRPP/Smart Link等模块、LLDP模块、控制模块和底层驱动转发模块组成。MSTP/RRPP/Smart Link等模块通过控制模块与LLDP模块共同配合来完成携带端口转发状态的LLDP报文的封装和解析,而设置active和inactive标记命令则由MSTP/RRPP/SmartLink等模块通知底层驱动转发模块来完成。
基于与上述方法同样的发明构思,本发明还提出了一种基于链路状态的流量控制设备,应用于包括发送端和接收端的系统中,所述发送端的第一端口与所述接收端的第二端口之间为点对点链路,所述流量控制设备为所述发送端或者接收端,如图5所示,所述流量控制设备包括:处理模块11、发送模块12,接收模块13,获取模块14、确定模块15。
当所述流量控制设备为所述发送端时,
所述处理模块11,用于确定所述第一端口对应的实例或VLAN上的转发状态,并将所述第一端口的转发状态封装到LLDP报文;
所述发送模块12,用于将所述LLDP报文发送给所述接收端;
当所述流量控制设备为所述接收端时,
所述接收模块13,用于接收来自所述发送端的所述LLDP报文;
所述获取模块14,用于从所述LLDP报文中获取所述第一端口的转发状态;
所述确定模块15,用于通过所述第一端口的转发状态以及所述第二端口在所述实例或VLAN上的转发状态,确定所述第二端口在所述实例或VLAN上的流量控制策略。
所述第一端口对应的实例或VLAN为一个实例或VLAN,或者,多个实例或VLAN;
所述处理模块11,用于当所述第一端口对应的实例或VLAN为一个实例或VLAN时,将所述第一端口对应的一个实例或VLAN上的转发状态封装到LLDP报文;
当所述第一端口对应的实例或VLAN为多个实例或VLAN时,将所述第一端口对应的多个实例或VLAN上的转发状态一起封装到LLDP报文,其中,每个实例或VLAN对应有一个转发状态。
所述处理模块11,具体用于确定所述第一端口在所述实例或VLAN上的转发状态,并将所述第一端口的转发状态封装到TLV字段中;
将所述TLV字段封装到LLDPDU中,并将所述LLDPDU封装到LLDP报文。
所述发送模块12,具体用于当所述第一端口在所述实例或VLAN上的转发状态发生变化时,将所述LLDP报文发送给所述接收端;或者,
当所述第一端口对应的LLDP定时器超时后,将所述LLDP报文发送给所述接收端。
所述确定模块15,具体用于当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为发送状态时,确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;
当所述第二端口的转发状态为发送状态,且所述第一端口的转发状态为阻塞状态时,确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述确定模块15,具体用于为所述第二端口在所述实例或VLAN上维护active标记或inactive标记;
当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为active标记时,确定流量控制策略为:所述第二端口在所述实例或VLAN上发送和/或接收流量;
当所述第二端口的转发状态为发送状态,且所述第二端口在所述实例或VLAN上为inactive标记时,确定流量控制策略为:所述第二端口在所述实例或VLAN上只接收流量。
所述active标记或inactive标记的维护过程,具体为:
当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为发送状态,或者,所述第二端口的转发状态为阻塞状态,所述第一端口的转发状态为发送状态,如果所述第二端口在所述实例或VLAN上为inactive标记,将所述inactive标记修改为active标记;否则,保持所述第二端口在所述实例或VLAN上为active标记;
当所述第二端口的转发状态为发送状态,所述第一端口的转发状态为阻塞状态时,如果所述第二端口在所述实例或VLAN上为active标记,将所述active标记修改为inactive标记;否则,保持所述第二端口在所述实例或VLAN上为inactive标记。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。