CN103384265B - Gvrp协议的应用层实现方法及系统 - Google Patents
Gvrp协议的应用层实现方法及系统 Download PDFInfo
- Publication number
- CN103384265B CN103384265B CN201310193497.9A CN201310193497A CN103384265B CN 103384265 B CN103384265 B CN 103384265B CN 201310193497 A CN201310193497 A CN 201310193497A CN 103384265 B CN103384265 B CN 103384265B
- Authority
- CN
- China
- Prior art keywords
- timer
- message
- vlan
- unit
- gvrp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种GVRP协议的应用层实现方法及系统。该GVRP协议的应用层实现方法包括以下步骤:S1、程序初始化;S2、在有套接字为可读状态时执行步骤S3,在有定时器超时时执行步骤S4,在接收到信号时执行步骤S5,在其余情况下休眠;S3、执行对应的处理函数,返回步骤S2;S4、执行定时器处理函数,返回步骤S2;S5、在接收到的信号不为结束信号时、执行对应的信号处理函数、返回步骤S2,在接收到结束信号时、执行清理操作并终止流程。本发明的GVRP协议的应用层实现方法及系统,通过对定时器和收发包的合理处理,使进程最大限度处于休眠状态,从而具有较强的实时性,且降低了占用的系统资源和处理器功耗。
Description
技术领域
本发明涉及一种GVRP协议的应用层实现方法及系统。
背景技术
在传统的静态VLAN(虚拟局域网)模式下,若要在整个交换网络中增加或者删除某条VLAN,需要对每台交换机都进行配置。相对于静态VLAN,动态VLAN更加灵活,减小了配置错误的概率,也减小了工作量。GVRP(GenericVLANRegistrationProtocol),即通用虚拟局域网注册协议,是一种动态VLAN注册协议,可用于协助同一个交换网络内的交换成员之间分发、传播和注册VLAN信息。GVRP是GARP,GARP(GenericAttributeRegistrationProtocol),即通用属性注册协议,GARP建立了一种局域网内的属性扩散机制,它是一种用于交换网内属性扩散的通用机制,而GVRP则是GARP的一种具体应用
GVRP协议的行为则由IEEE组织(美国电气和电子工程师协会)规定。IEEE制定的标准IEEEStd802.1D和IEEEStd802.1Q分别定义了GARP和GVRP协议的具体内容,其中包括协议的原理、状态机以及代码的架构。在IEEEStd802.1D和IEEEStd802.1Q中,分别给出了GARP和GVRP的软件代码的架构,但并未给出更为具体的实现。
在Linux(一种自由和开放源代码的类UNIX操作系统)内核中,可以找到与GVRP相关的内核代码,但是内核的实现方式并不适合于应用层实现。在应用程序中,要实现精确定时、还要能够及时处理数据包的收发以及信号的处理并不容易。现有的实现定时的方法一般采用轮询或者定时器中断。但是采用轮询的实时性不好且占用资源太高,采用定时中断的话则会破坏程序的顺序性。
发明内容
本发明要解决的技术问题是为了克服现有技术中的GVRP相关的内核代码不适用于应用层实现,采用轮询会占用较多资源且实时性不好,采用定时中断会破坏程序的顺序性的缺陷,提出一种GVRP协议的应用层实现方法及系统。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种GVRP协议的应用层实现方法,其特点在于,包括以下步骤:
S1、程序初始化;
S2、在有套接字为可读状态时执行步骤S3,在有定时器超时时执行步骤S4,在接收到信号时执行步骤S5,在其余情况下休眠;
S3、执行和可读状态的套接字对应的处理函数,然后返回步骤S2;
S4、执行定时器处理函数,然后返回步骤S2;
S5、在接收到的信号不为结束信号时、执行和接收到的信号对应的信号处理函数、然后返回步骤S2,在接收到的信号为结束信号时、执行清理操作并终止流程。
在上述应用层实现方法中,进程在时间上可以最大限度地处于休眠状态,在休眠状态下占用的中央处理器的资源较少,能够有效降低中央处理器的功耗。
较佳地,该步骤S3包括以下步骤:
S301、读取套接字事件列表;
S302、判断套接字事件的类型,在类型为gvrp报文的情况下执行步骤S303,在类型为ctrl报文的情况下执行步骤S313;
S303、判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下执行步骤S304,在Leave报文的情况下执行步骤S305,在Leaveall报文的情况下执行步骤S306;
S304、注册并转发该Join报文,并返回步骤S2;
S305、启动Leave定时器,如果在Leave定时器超时前收到该Join报文则转发该Join报文,如果在Leave定时器超时前未收到该Join报文则清除该gvrp报文中的VLAN属性,并返回步骤S2;
S306、重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性并启动该Leave定时器,执行步骤S307;
S307、在Leave定时器超时后,检查所有动态的VLAN属性、如未收到该Join报文则清除该gvrp报文中的VLAN属性,返回步骤S2;
S313、判断ctrl报文的命令类型,若命令类型为添加VLAN命令则执行步骤S314,若命令类型为删除VLAN命令则执行步骤S315,若命令类型为添加端口命令则执行步骤S316,若命令类型为删除端口命令则执行步骤S317;
S314、创建VLAN并返回步骤S2;
S315、删除VLAN并返回步骤S2;
S316、创建gvrp端口实例并返回步骤S2;
S317、删除gvrp端口实例并返回步骤S2。
其中,gvrp报文、Join报文、Leave报文、Leaveall报文、Leave定时器、Leaveall定时器均在标准IEEE802.1D中有明确定义,在此不再赘述。
本领域技术人员应当理解,网络中的每台设备都会有静态的VLAN属性,静态的VLAN属性也就是对于本设备来说需要维护的属性。为了让网络中的其他设备也注册本设备的静态的VLAN属性,就需要将本设备的VLAN属性广播出去,一台设备注册的其它设备的静态的VLAN属性就是动态VLAN属性。该gvrp报文中就包含了VLAN的属性,通过报文在网络中的传输达到在网络中的各个设备间进行VLAN的属性的转发和注册的目的。
若网络中有一台设备删除了某个VLAN,则该设备会发送Leave报文通知网络中的其它设备,其它设备收到该Leave报文后不能马上删除该VLAN,因为可能网络中还有设备也维护着该VLAN。维护着该VLAN的设备收到该Leave报文后,应及时发送Join报文以证明自己还维护着该VLAN。收到该Leave报文并且不维护该VLAN的设备要启动Leave定时器,若在Leave定时器超时后都没有其他设备发送Join报文来表明自己维护着该VLAN的话,其它设备就确认网络中已经没有设备维护该VLAN了,则删除该VLAN。另外,Leaveall定时器超时后也会启动Leave定时器。本领域技术人员应当理解,该步骤S307中,如果收到该Join报文,那么在所有动态的VLAN属性中必然有该Join报文的属性,因此可通过检查所有动态的VLAN属性来判断是否收到该Join报文。
若网络中有设备突然断电或者网络拓扑发生变化时,可能会使得某些设备已经不在网络中,那么其它设备也无需再保留这些设备所维护的VLAN。但是因为这些设备离开网络时并没有对外发送Leave报文,所以需要有个同步机制来定期地清理网络中的无用属性,这就需要设置Leaveall定时器。Leaveall定时器超时后启动Leave定时器,并且对外广播Leaveall报文,收到Leaveall报文的设备也会启动Leave定时器,同时立即对外发送Join报文来证明自己维护着的VLAN。所有设备若在Leave定时器超时后还没有收到维护着某些VLAN的报文,则确定这些VLAN属性都是无用属性,然后删除这些无用的VLAN属性。若在Leave定时器超时前收到该属性则保留该属性。
较佳地,该步骤S4包括以下步骤:
S401、判断超时的定时器类型,在定时器类型为Leave定时器时执行步骤S402,在定时器类型为Leaveall定时器时执行步骤S412,在定时器类型为Join定时器时执行步骤S422;
S402、查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性,并返回步骤S2;
S412、广播Leaveall报文,然后广播静态的VLAN属性,启动Leave定时器,并返回步骤S2;
S422、判断是否在Join定时器超时前收到过Joinin报文,在判断结果为是的情况下返回步骤S2,在判断结果为否的情况下执行步骤S423;
S423、广播发送静态的VLAN属性,并返回步骤S2。
其中Joinin报文属于Join报文中的一种,另一种为Joinempty报文,这些在标准IEEE802.1D中有定义。每台设备都有一属性注册表,其中包含静态的VLAN属性和动态的VLAN属性。静态的VLAN属性是手动配置的,只能通过手动删除,动态的VLAN属性是从其它设备获得的,一定时间没有重新注册就会被删除。也就是说,动态的VLAN属性是从gvrp报文中获取的。步骤S402中的动态属性注册表中仅包括动态的VLAN属性,在定时器超时后,需要检查所有的动态的VLAN属性,若有动态的VLAN属性没有被及时的重新注册,则删除该动态的VLAN属性。
较佳地,该步骤S1包括以下步骤:
S101、读取配置文件;
S102、初始化eloop_data数据结构;
S103、初始化garp模块,并注册Leaveall定时器;
S104、初始化gvrp模块;
S105、初始化ctrl接口;
S106、注册处理函数。
本领域技术人员应当理解eloop_data数据结构是一个全局的数据结构,用于记录程序在运行过程中的所有数据。该步骤S106、中的处理函数的注册,包括了定时器处理函数、套接字处理函数。在初始化过程中注册的处理函数可在之后的进程中直接使用,举例来说,初始化过程中注册的定时器处理函数可在该步骤S4中直接执行。上述ctrl接口是根据标准的TCP/IP协议(传输控制协议/因特网互联协议)数据包进行了封装而成的。该garp模块和该gvrp模块是本领域技术人员可通过标准IEEEStd802.1D和IEEEStd802.1Q确定的。
本发明还提供了一种GVRP协议的应用层实现系统,其特点在于,包括:
一初始化模块,用于执行初始化;
一指令模块,用于在有套接字为可读状态时启用一套接字模块、在有定时器超时时启用一定时器模块、在接收到信号时启用一信号模块;
该套接字模块,用于执行和可读状态的套接字对应的处理函数;
该定时器模块,用于执行定时器处理函数;
该信号模块,用于在接收到的信号为结束信号时执行清理操作、在接收到的信号不为结束信号时执行和接收到的信号对应的信号处理函数。
较佳地,该套接字模块包括:
一套接字列表单元,用于读取套接字事件列表,并判断套接字事件的类型,在类型为gvrp报文的情况下启用一gvrp单元、在类型为ctrl报文的情况下启用一ctrl单元;
该gvrp单元,用于判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下启用一套接字Join单元、在Leave报文的情况下启用一套接字Leave单元、在Leaveall报文的情况下启用一套接字Leaveall单元;
该套接字Join单元,用于注册并转发该Join报文;
该套接字Leave单元,用于启动Leave定时器,在Leave定时器超时前收到该Join报文的情况下转发该Join报文,在Leave定时器超时前未收到该Join报文的情况下清除该gvrp报文中的VLAN属性;
该套接字Leaveall单元,用于重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性、启动该Leave定时器、并启用一套接字动态检查单元;
该套接字动态检查单元,用于在Leave定时器超时后,检查所有动态的VLAN属性,如未收到该Join报文则清除该gvrp报文中的VLAN属性;
该ctrl单元,用于判断ctrl报文的命令类型,并在命令类型为添加VLAN命令时创建VLAN、在命令类型为删除VLAN命令时删除VLAN、在命令类型为添加端口命令时创建gvrp端口实例、在命令类型为删除端口命令时删除gvrp端口实例。
较佳地,该定时器模块包括:
一定时器判断单元,用于判断超时的定时器类型,在定时器类型为Leave定时器时启用一定时器动态检查单元、在定时器类型为Leaveall定时器时启用一定时器Leaveall单元、在定时器类型为Join定时器时启用一定时器Join单元;
该定时器动态检查单元,用于查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性;
该定时器Leaveall单元用于广播Leaveall报文,然后广播静态的VLAN属性并启动Leave定时器;
该定时器Join单元,用于在Join定时器超时前未收到过Joinin报文的情况下,广播发送静态的VLAN属性。
较佳地,该初始化模块包括:
一配置读取单元,用于读取配置文件;
一数据初始化单元,用于初始化eloop_data数据结构;
一garp初始化单元,用于初始化garp模块、并注册Leaveall定时器;
一gvrp单元,用于初始化gvrp模块;
一接口初始化单元,用于初始化ctrl接口;
一函数注册单元,用于注册处理函数。
较佳地,该应用层实现系统架构于交换机中。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明的GVRP协议的应用层实现方法,通过对定时器和收发包的合理处理,使进程在时间上最大限度处于休眠状态,从而在实现了较强的实时性的同时减少了占用的系统资源、降低了中央处理器的功耗。
附图说明
图1为本发明一较佳实施例的GVRP协议的应用层实现方法的流程图。
图2为本发明一较佳实施例的GVRP协议的应用层实现系统的示意图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案,但并不因此将本发明限制在所述的实施例范围之中。
如图1所示,本发明一较佳实施例的GVRP协议的应用层实现方法包括以下步骤:
S1、程序初始化;
S2、在有套接字为可读状态时执行步骤S3,在有定时器超时时执行步骤S4,在接收到信号时执行步骤S5,在其余情况下休眠;
S3、执行和可读状态的套接字对应的处理函数,然后返回步骤S2;
S4、执行定时器处理函数,然后返回步骤S2;
S5、在接收到的信号不为结束信号时、执行和接收到的信号对应的信号处理函数、然后返回步骤S2,在接收到的信号为结束信号时、执行清理操作并终止流程。
在上述应用层实现方法中,进程在时间上可以最大限度地处于休眠状态,在休眠状态下占用的中央处理器的资源较少,能够有效降低中央处理器的功耗。
在一优选实施例中,该步骤S3包括以下步骤:
S301、读取套接字事件列表;
S302、判断套接字事件的类型,在类型为gvrp报文的情况下执行步骤S303,在类型为ctrl报文的情况下执行步骤S313;
S303、判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下执行步骤S304,在Leave报文的情况下执行步骤S305,在Leaveall报文的情况下执行步骤S306;
S304、注册并转发该Join报文,并返回步骤S2;
S305、启动Leave定时器,如果在Leave定时器超时前收到该Join报文则转发该Join报文,如果在Leave定时器超时前未收到该Join报文则清除该gvrp报文中的VLAN属性,并返回步骤S2;
S306、重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性并启动该Leave定时器,执行步骤S307;
S307、在Leave定时器超时后,检查所有动态的VLAN属性、如未收到该Join报文则清除该gvrp报文中的VLAN属性,返回步骤S2;
S313、判断ctrl报文的命令类型,若命令类型为添加VLAN命令则执行步骤S314,若命令类型为删除VLAN命令则执行步骤S315,若命令类型为添加端口命令则执行步骤S316,若命令类型为删除端口命令则执行步骤S317;
S314、创建VLAN并返回步骤S2;
S315、删除VLAN并返回步骤S2;
S316、创建gvrp端口实例并返回步骤S2;
S317、删除gvrp端口实例并返回步骤S2。
其中,Join报文、Leave报文、Leaveall报文、Leave定时器、Leaveall定时器均在标准IEEE802.1D中有明确定义,在此不再赘述。
若网络中有一台设备删除了某个VLAN,则该设备会发送Leave报文通知网络中的其它设备,其它设备收到该Leave报文后不能马上删除该VLAN,因为可能网络中还有设备也维护着该VLAN。维护着该VLAN的设备收到该Leave报文后,应及时发送Join报文以证明自己还维护着该VLAN。收到该Leave报文并且不维护该VLAN的设备要启动Leave定时器,若在Leave定时器超时后都没有其他设备发送Join报文来表明自己维护着该VLAN的话,其它设备就确认网络中已经没有设备维护该VLAN了,则删除该VLAN。另外,Leaveall定时器超时后也会启动Leave定时器。
若网络中有设备突然断电或者网络拓扑发生变化时,可能会使得某些设备已经不在网络中,那么其它设备也无需再保留这些设备所维护的VLAN。但是因为这些设备离开网络时并没有对外发送Leave报文,所以需要有个同步机制来定期地清理网络中的无用属性,这就需要设置Leaveall定时器。Leaveall定时器超时后启动Leave定时器,并且对外广播Leaveall报文,收到Leaveall报文的设备也会启动Leave定时器,同时立即对外发送Join报文来证明自己维护着的VLAN。所有设备若在Leave定时器超时后还没有收到维护着某些VLAN的报文,则确定这些VLAN属性都是无用属性,然后删除这些无用的VLAN属性。若在Leave定时器超时前收到该属性则保留该属性。
优选地,该步骤S4包括以下步骤:
S401、判断超时的定时器类型,在定时器类型为Leave定时器时执行步骤S402,在定时器类型为Leaveall定时器时执行步骤S412,在定时器类型为Join定时器时执行步骤S422;
S402、查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性,并返回步骤S2;
S412、广播Leaveall报文,然后广播静态的VLAN属性,启动Leave定时器,并返回步骤S2;
S422、判断是否在Join定时器超时前收到过Joinin报文,在判断结果为是的情况下返回步骤S2,在判断结果为否的情况下执行步骤S423;
S423、广播发送静态的VLAN属性,并返回步骤S2。
优选地,该步骤S1包括以下步骤:
S101、读取配置文件;
S102、初始化eloop_data数据结构;
S103、初始化garp模块,并注册Leaveall定时器;
S104、初始化gvrp模块;
S105、初始化ctrl接口;
S106、注册处理函数。
本领域技术人员应当理解eloop_data数据结构是一个全局的数据结构,用于记录程序在运行过程中的所有数据。该步骤S106、中的处理函数的注册,包括了定时器处理函数、套接字处理函数。在初始化过程中注册的处理函数可在之后的进程中直接使用。
举例来说eloop_data数据结构可以如下所示:
其中,max_sock记录了注册的套接字的最大值。readers,登记了可读套接字,其中包括gvrp数据包的接收套接字和本地进程间通信的接收套接字。writers,登记了可写套接字,其中包括gvrp数据包的发送套接字和本地进程间通信的发送套接字。exceptions,登记了异常出错的套接字。timeout,登记了所有的定时器,其中包括Leaveall定时器,Leave定时器,Join定时器。signal_count,记录了待处理的信号的个数。signals,记录了待处理信号类型,以及其对应的信号处理函数。
如图2所示,本发明一较佳实施例的GVRP协议的应用层实现系统1包括:
一初始化模块11,用于执行初始化;
一指令模块12,用于在有套接字为可读状态时启用一套接字模块13、在有定时器超时时启用一定时器模块14、在接收到信号时启用一信号模块15;
该套接字模块13,用于执行和可读状态的套接字对应的处理函数;
该定时器模块14,用于执行定时器处理函数;
该信号模块15,用于在接收到的信号为结束信号时执行清理操作、在接收到的信号不为结束信号时执行和接收到的信号对应的信号处理函数。
优选地,该套接字模块13可包括:
一套接字列表单元,用于读取套接字事件列表,并判断套接字事件的类型,在类型为gvrp报文的情况下启用一gvrp单元、在类型为ctrl报文的情况下启用一ctrl单元;
该gvrp单元,用于判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下启用一套接字Join单元、在Leave报文的情况下启用一套接字Leave单元、在Leaveall报文的情况下启用一套接字Leaveall单元;
该套接字Join单元,用于注册并转发该Join报文;
该套接字Leave单元,用于启动Leave定时器,在Leave定时器超时前收到该Join报文的情况下转发该Join报文,在Leave定时器超时前未收到该Join报文的情况下清除该gvrp报文中的VLAN属性;
该套接字Leaveall单元,用于重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性、启动该Leave定时器、并启用一套接字动态检查单元;
该套接字动态检查单元,用于在Leave定时器超时后,检查所有动态的VLAN属性,如未收到该Join报文则清除该gvrp报文中的VLAN属性;
该ctrl单元,用于判断ctrl报文的命令类型,并在命令类型为添加VLAN命令时创建VLAN、在命令类型为删除VLAN命令时删除VLAN、在命令类型为添加端口命令时创建gvrp端口实例、在命令类型为删除端口命令时删除gvrp端口实例。
优选地,该定时器模块14包括:
一定时器判断单元,用于判断超时的定时器类型,在定时器类型为Leave定时器时启用一定时器动态检查单元、在定时器类型为Leaveall定时器时启用一定时器Leaveall单元、在定时器类型为Join定时器时启用一定时器Join单元;
该定时器动态检查单元,用于查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性;
该定时器Leaveall单元用于广播Leaveall报文,然后广播静态的VLAN属性并启动Leave定时器;
该定时器Join单元,用于在Join定时器超时前未收到过Joinin报文的情况下,广播发送静态的VLAN属性。
优选地,该初始化模块11包括:
一配置读取单元,用于读取配置文件;
一数据初始化单元,用于初始化eloop_data数据结构;
一garp初始化单元,用于初始化garp模块、并注册Leaveall定时器;
一gvrp单元,用于初始化gvrp模块;
一接口初始化单元,用于初始化ctrl接口;
一函数注册单元,用于注册处理函数。
优选地,该应用层实现系统架构于交换机中。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (7)
1.一种GVRP协议的应用层实现方法,其特征在于,网络中的多台设备均执行以下步骤:
S1、程序初始化;
S2、在有套接字为可读状态时执行步骤S3,在有定时器超时时执行步骤S4,在接收到信号时执行步骤S5,在其余情况下休眠;
S3、执行和可读状态的套接字对应的处理函数,然后返回步骤S2;
S4、执行定时器处理函数,然后返回步骤S2;
S5、在接收到的信号不为结束信号时、执行和接收到的信号对应的信号处理函数、然后返回步骤S2,在接收到的信号为结束信号时、执行清理操作并终止流程;
其中步骤S3包括以下步骤:
S301、读取套接字事件列表;
S302、判断套接字事件的类型,在类型为gvrp报文的情况下执行步骤S303,在类型为ctrl报文的情况下执行步骤S313;
S303、判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下执行步骤S304,在Leave报文的情况下执行步骤S305,在Leaveall报文的情况下执行步骤S306;
S304、注册并转发该Join报文,并返回步骤S2;
S305、启动Leave定时器,如果在Leave定时器超时前收到该Join报文则转发该Join报文,如果在Leave定时器超时前未收到该Join报文则清除该gvrp报文中的VLAN属性,并返回步骤S2;
S306、重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性并启动该Leave定时器,执行步骤S307;
S307、在Leave定时器超时后,检查所有动态的VLAN属性,如未收到该Join报文则清除该gvrp报文中的VLAN属性,返回步骤S2;
S313、判断ctrl报文的命令类型,若命令类型为添加VLAN命令则执行步骤S314,若命令类型为删除VLAN命令则执行步骤S315,若命令类型为添加端口命令则执行步骤S316,若命令类型为删除端口命令则执行步骤S317;
S314、创建VLAN并返回步骤S2;
S315、删除VLAN并返回步骤S2;
S316、创建gvrp端口实例并返回步骤S2;
S317、删除gvrp端口实例并返回步骤S2。
2.如权利要求1所述的应用层实现方法,其特征在于,该步骤S4包括以下步骤:
S401、判断超时的定时器类型,在定时器类型为Leave定时器时执行步骤S402,在定时器类型为Leaveall定时器时执行步骤S412,在定时器类型为Join定时器时执行步骤S422;
S402、查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性,并返回步骤S2;
S412、广播Leaveall报文,然后广播静态的VLAN属性,启动Leave定时器,并返回步骤S2;
S422、判断是否在Join定时器超时前收到过Joinin报文,在判断结果为是的情况下返回步骤S2,在判断结果为否的情况下执行步骤S423;
S423、广播发送静态的VLAN属性,并返回步骤S2。
3.如权利要求1所述的应用层实现方法,其特征在于,该步骤S1包括以下步骤:
S101、读取配置文件;
S102、初始化eloop_data数据结构;
S103、初始化garp模块,并注册Leaveall定时器;
S104、初始化gvrp模块;
S105、初始化ctrl接口;
S106、注册处理函数。
4.一种GVRP协议的应用层实现系统,其特征在于,包括:
一初始化模块,用于执行初始化;
一指令模块,用于在有套接字为可读状态时启用一套接字模块、在有定时器超时时启用一定时器模块、在接收到信号时启用一信号模块;
该套接字模块,用于执行和可读状态的套接字对应的处理函数;
该定时器模块,用于执行定时器处理函数;
该信号模块,用于在接收到的信号为结束信号时执行清理操作、在接收到的信号不为结束信号时执行和接收到的信号对应的信号处理函数;
所述套接字模块包括:
一套接字列表单元,用于读取套接字事件列表,并判断套接字事件的类型,在类型为gvrp报文的情况下启用一gvrp单元、在类型为ctrl报文的情况下启用一ctrl单元;
该gvrp单元,用于判断gvrp报文属于Join报文、Leave报文还是Leaveall报文,在Join报文的情况下启用一套接字Join单元、在Leave报文的情况下启用一套接字Leave单元、在Leaveall报文的情况下启用一套接字Leaveall单元;
该套接字Join单元,用于注册并转发该Join报文;
该套接字Leave单元,用于启动Leave定时器,在Leave定时器超时前收到该Join报文的情况下转发该Join报文,在Leave定时器超时前未收到该Join报文的情况下清除该gvrp报文中的VLAN属性;
该套接字Leaveall单元,用于重启Leaveall定时器、转发Leaveall报文、广播静态的VLAN属性、启动该Leave定时器、并启用一套接字动态检查单元;
该套接字动态检查单元,用于在Leave定时器超时后,检查所有动态的VLAN属性,如未收到该Join报文则清除该gvrp报文中的VLAN属性;
该ctrl单元,用于判断ctrl报文的命令类型,并在命令类型为添加VLAN命令时创建VLAN、在命令类型为删除VLAN命令时删除VLAN、在命令类型为添加端口命令时创建gvrp端口实例、在命令类型为删除端口命令时删除gvrp端口实例。
5.如权利要求4所述的应用层实现系统,其特征在于,该定时器模块包括:
一定时器判断单元,用于判断超时的定时器类型,在定时器类型为Leave定时器时启用一定时器动态检查单元、在定时器类型为Leaveall定时器时启用一定时器Leaveall单元、在定时器类型为Join定时器时启用一定时器Join单元;
该定时器动态检查单元,用于查看动态属性注册表,清除表中所有未被重新注册过的动态的VLAN属性,保留其余动态的VLAN属性;
该定时器Leaveall单元用于广播Leaveall报文,然后广播静态的VLAN属性并启动Leave定时器;
该定时器Join单元,用于在Join定时器超时前未收到过Joinin报文的情况下,广播发送静态的VLAN属性。
6.如权利要求4所述的应用层实现系统,其特征在于,该初始化模块包括:
一配置读取单元,用于读取配置文件;
一数据初始化单元,用于初始化eloop_data数据结构;
一garp初始化单元,用于初始化garp模块、并注册Leaveall定时器;
一gvrp单元,用于初始化gvrp模块;
一接口初始化单元,用于初始化ctrl接口;
一函数注册单元,用于注册处理函数。
7.如权利要求4-6中任意一项所述的应用层实现系统,其特征在于,该应用层实现系统架构于交换机中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310193497.9A CN103384265B (zh) | 2013-05-23 | 2013-05-23 | Gvrp协议的应用层实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310193497.9A CN103384265B (zh) | 2013-05-23 | 2013-05-23 | Gvrp协议的应用层实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103384265A CN103384265A (zh) | 2013-11-06 |
CN103384265B true CN103384265B (zh) | 2016-04-06 |
Family
ID=49491956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310193497.9A Active CN103384265B (zh) | 2013-05-23 | 2013-05-23 | Gvrp协议的应用层实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103384265B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092616A (zh) * | 2014-07-24 | 2014-10-08 | 上海斐讯数据通信技术有限公司 | 一种用于实现gmrp协议的方法 |
CN104486345A (zh) * | 2014-12-22 | 2015-04-01 | 上海斐讯数据通信技术有限公司 | 一种gvrp系统的定时器控制方法 |
CN105389221A (zh) * | 2015-11-11 | 2016-03-09 | 上海斐讯数据通信技术有限公司 | 一种信号处理方法及系统 |
CN113517987B (zh) * | 2021-07-05 | 2023-07-14 | 深圳市共进电子股份有限公司 | 休眠方法、休眠装置、网关设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005032063A2 (en) * | 2003-09-25 | 2005-04-07 | Cisco Technology, Inc. | System and method for registering and unregistering membership in virtual local area networks |
CN101123566A (zh) * | 2006-08-09 | 2008-02-13 | 中兴通讯股份有限公司 | 使用gvrp的vlan的端口处理方法 |
CN101202704A (zh) * | 2007-09-07 | 2008-06-18 | 深圳市同洲电子股份有限公司 | 一种数据的传输方法及系统 |
CN101247300A (zh) * | 2007-12-11 | 2008-08-20 | 中兴通讯股份有限公司 | 运行gvrp的堆叠系统及其分布式处理方法 |
CN101483573A (zh) * | 2009-02-09 | 2009-07-15 | 杭州华三通信技术有限公司 | 一种gvrp动态学习的方法和网络节点 |
-
2013
- 2013-05-23 CN CN201310193497.9A patent/CN103384265B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005032063A2 (en) * | 2003-09-25 | 2005-04-07 | Cisco Technology, Inc. | System and method for registering and unregistering membership in virtual local area networks |
CN101123566A (zh) * | 2006-08-09 | 2008-02-13 | 中兴通讯股份有限公司 | 使用gvrp的vlan的端口处理方法 |
CN101202704A (zh) * | 2007-09-07 | 2008-06-18 | 深圳市同洲电子股份有限公司 | 一种数据的传输方法及系统 |
CN101247300A (zh) * | 2007-12-11 | 2008-08-20 | 中兴通讯股份有限公司 | 运行gvrp的堆叠系统及其分布式处理方法 |
CN101483573A (zh) * | 2009-02-09 | 2009-07-15 | 杭州华三通信技术有限公司 | 一种gvrp动态学习的方法和网络节点 |
Non-Patent Citations (1)
Title |
---|
《机箱式三层交换机中GVRP协议的研究与实现》;何爽;《中国优秀硕士学位论文全文数据库信息科技辑》;20070531(第5期);第38-47页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103384265A (zh) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150106637A1 (en) | Data Processing Method, Modem, and Terminal | |
CN103384265B (zh) | Gvrp协议的应用层实现方法及系统 | |
US20100039971A1 (en) | Power Management Method and Communication System | |
JP6226348B2 (ja) | ハートビートメッセージを送信するための方法、及び携帯端末 | |
US20140143591A1 (en) | Performing Failover in a Redundancy Group | |
CN103931144B (zh) | 一种在虚拟域中通信的方法、设备和系统 | |
CN103974380A (zh) | 一种终端接入位置保活的方法及装置 | |
CN106797370B (zh) | 一种sas系统及sas系统的遍历方法、装置 | |
CN103475751A (zh) | 一种ip地址切换的方法及装置 | |
US8457030B2 (en) | Mobile phone and method for receiving calls | |
CN104967608A (zh) | 播放多媒体文件的方法、移动终端及固定终端 | |
US20200288403A1 (en) | Smart power saving method for terminal, terminal, and device having memory function | |
CN105281919A (zh) | 远程唤醒的方法、服务器及客户终端 | |
CN106656521A (zh) | 一种开机方法及装置 | |
CN112738865B (zh) | 业务处理方法、装置及电子设备 | |
CN102983984B (zh) | 解决组播表项老化的方法及系统 | |
Park et al. | Energy efficient multi-function home gateway in always-on home environment | |
CN104579428A (zh) | 一种plc设备自动配对方法 | |
CN111176809A (zh) | 安卓平台下含长连接通讯进程的应用保活处理方法及系统 | |
CN109104353B (zh) | 一种数据传输的方法及装置 | |
CN106230658A (zh) | 一种监控网络设备的方法和装置 | |
CN110032472A (zh) | 一种应用程序的重启方法和装置 | |
CN105338195A (zh) | 一种终端节电的方法及终端 | |
US20190253971A1 (en) | Method and apparatus for remotely waking up a device connected to a network | |
CN109618021A (zh) | 修改ip地址的方法和刀箱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180313 Granted publication date: 20160406 |
|
PD01 | Discharge of preservation of patent | ||
PD01 | Discharge of preservation of patent |
Date of cancellation: 20210313 Granted publication date: 20160406 |
|
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20210313 Granted publication date: 20160406 |