一种站点漫游时互联网组管理协议窥探处理的方法和系统
技术领域
本发明涉及无线局域网(WLAN,Wireless Local Area Networks)技术领域,尤其涉及一种站点(STA)漫游时互联网组管理协议窥探(IGMP snooping,Internet GroupManagement Protocol snooping)处理的方法和系统。
背景技术
IGMP Snooping是运行在二层设备上的组播约束机制,用于管理和控制组播组。运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。具体地,当二层设备没有运行IGMPSnooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
IGMP snooping是为了有线局域网中的固定网络设备开发的,因此没有考虑到无线局域网中网络设备移动的特性。IGMP snooping路由端口表的更新是通过IGMP Sever的IGMP查询报文实现的,IGMP Snooping转发表的更新是通过IGMP成员关系报告报文实现的,而IGMP查询报文的发送周期通常默认为60秒。当处在接收组播报文的STA从一台接入点(AP,Access Point)漫游到另一台AP时,由于通过IGMP snooping方法建立端口映射的上联口交换机无法及时获得漫游动作,导致组播报文在短时间内无法正确的发送到新AP上,有可能在IGMP查询报文的发送周期60秒内,处于漫游状态下的STA无法接收到组播报文,严重影响了使用组播服务的用户体验。
为了解决这个问题,目前的做法如下:
1.关闭上联交换机的IGMP snooping功能。但是,这会导致交换机需要转发的组播报文增多,增加网络负担。
2.STA在漫游前,主动发送IGMP leave报文,然后在漫游后再通过IGMP协议加入。但是,这种做法需要STA主动介入,不是透明的解决方法。
3.更改IGMP查询报文的发送周期,使得IGMP查询报文的发送周期更短。但是,这种做法不能根本性的解决问题,例如把IGMP查询报文的发送周期改到10ms以内,势必会导致IGMP server和网络中的交换机(Switch)负担大幅度加重。
因此,亟需一种在WLAN场景下,STA漫游时IGMP snooping处理的解决方案。
发明内容
有鉴于此,本发明提供了一种STA漫游时IGMP snooping处理的方法和系统,实现在漫游场景下将组播报文快速准确地转发到已进行漫游动作的STA上。
本发明提供了一种STA漫游时IGMP snooping处理的方法,包括:当STA从AP漫游到第二AP时,第二AP获取STA的MAC地址;如果在AC中查询到所述STA的MAC地址,则第二AP从AC中获取所述STA的MAC地址对应的组播MAC地址,构造包括所述STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文,并向IGMP服务器发送所述IGMP成员关系报文;若交换机监听到所述IGMP成员关系报文,获取组播MAC地址;根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目并添加到IGMP snooping路由端口表中。
进一步地,所述方法还包括:STA和第一AP关联;如果STA加入一组播组,所述第一AP获取STA的MAC地址和组播MAC地址并向AC登记。
进一步地,所述第一AP获取STA的MAC地址和组播MAC地址并向AC登记,具体为:STA和第一AP关联,第一AP获取所述STA的MAC地址;STA向IGMP服务器发送IGMP成员关系报文,所述IGMP成员关系报文包括STA要加入的组播MAC地址;第一AP截获所述IGMP成员关系报文,获取组播MAC地址,形成<STA的MAC地址,组播MAC地址>地址对,并将所述<STA的MAC地址,组播MAC地址>地址对发送给AC。
进一步地,所述方法还包括:如果STA在漫游前加入过多个组播组,AC将所述STA的MAC地址对应的所有的组播地址发送给第二AP;第二AP基于不同组播组分别构造IGMP成员关系报文,并向IGMP服务器发送。
进一步地,所述方法还包括:根据交换机上接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目;查找交换机的IGMP snooping转发表,如果IGMP snooping转发表中不包含所述<组播地址,接收IGMP成员关系报文端口>条目,则将所述<组播地址,接收IGMP成员关系报文端口>条目加入IGMP snooping转发表中。
进一步地,所述根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目并添加到IGMP snooping路由端口表中,具体为:将组播报文的发送端口作为接收IGMP查询报文的端口,根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目;查找交换机的IGMP snooping路由端口表,如果IGMP snooping路由端口表中不包含所述<组播地址,接收IGMP查询报文的端口>条目,则将所述<组播地址,接收IGMP查询报文的端口>条目添加到IGMP snooping路由端口表中。
本发明还提供了一种用于STA漫游时IGMP snooping处理的系统,包括:第一AP,用于和STA关联;第二AP,用于当STA从第一AP漫游到第二AP时,获取STA的MAC地址;如果在接入控制器AC中查询到所述STA的MAC地址,则从AC中获取所述STA的MAC地址对应的组播MAC地址,构造包括所述STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文,并向IGMP服务器发送所述IGMP成员关系报文;交换机,用于若监听到所述IGMP成员关系报文,获取组播MAC地址;根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目并添加到IGMP snooping路由端口表中。
进一步地,所述第一AP,还用于:当STA和第一AP关联时,获取所述STA的MAC地址;当STA向IGMP服务器发送包含STA要加入的组播MAC地址的IGMP成员关系报文时,截获所述IGMP成员关系报文,获取组播MAC地址,形成<STA的MAC地址,组播MAC地址>地址对,并将所述<STA的MAC地址,组播MAC地址>地址对发送给AC。
进一步地,所述第二AP,还用于:如果STA在漫游前加入过多个组播组,接收来自AC的所述STA的MAC地址对应的所有的组播地址,第二AP基于不同组播组分别构造IGMP成员关系报文,并向IGMP服务器发送。
进一步地,所述交换机用于:根据接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目;查找交换机的IGMP snooping转发表,如果IGMPsnooping转发表中不包含所述<组播地址,接收IGMP成员关系报文端口>条目,则将所述<组播地址,接收IGMP成员关系报文端口>条目加入IGMP snooping转发表中;将组播报文的发送端口作为接收IGMP查询报文的端口,根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目;查找交换机的IGMP snooping路由端口表,如果IGMPsnooping路由端口表中不包含所述<组播地址,接收IGMP查询报文的端口>条目,则将所述<组播地址,接收IGMP查询报文的端口>条目添加到IGMP snooping路由端口表中。
和现有技术相比,本发明的有益效果在于:在STA漫游时,STA无需介入,漫游到的AP主动构造包含该STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文发送给IGMPServer;交换机监听到IGMP成员关系报文后,将<组播地址,接收IGMP成员关系报文的端口>条目更新到IGMP snooping转发表或路由端口表中,从而使交换机能够及时获得漫游动作,在漫游场景下实现将组播报文快速准确转发到已进行漫游动作的STA上,提高了使用组播服务的用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本发明所公开的STA漫游时IGMP snooping处理的方法的流程示意图。
图2为本发明所公开的漫游前AP在AC上的登记过程示意图。
图3为本发明所公开的AP对STA漫游的组播处理示意图。
具体实施方式
为了使本申请所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为本发明所公开的STA漫游时IGMP snooping处理的方法的流程示意图。参照图1,本发明的方法包括:
步骤101,站点(STA)和第一接入点(AP)关联,如果STA加入一组播组,第一AP获取STA的MAC地址和组播MAC地址并向接入控制器(AC)登记。
本步骤的具体流程如图2所示:
201,STA和第一AP关联,第一AP获取该STA的MAC地址;
202,如果STA想要加入一组播组,STA向IGMP服务器(IGMP Sever)发送IGMP成员关系报文,该IGMP成员关系报文包括STA要加入的组播MAC地址;
203,第一AP截获IGMP成员关系报文,获取组播MAC地址,并形成<STA的MAC地址,组播MAC地址>地址对;
204,第一AP将<STA的MAC地址,组播MAC地址>地址对发送给AC,AC保存在自身的缓存中。
通过本步骤,完成了STA加入一组播组的登记,如果STA加入多个组播组,则基于不同的组播组分别执行本步骤流程。
步骤102,当STA从第一AP漫游到第二AP时,第二AP获取STA的MAC地址;如果在AC中查询到该STA的MAC地址,则第二AP从AC中获取该STA的MAC地址对应的组播MAC地址;第二AP构造包括该STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文,并向IGMP Server发送。
本步骤的具体流程如图3所示:
301,STA从第一AP漫游到第二AP;
302,第二AP获取该STA的MAC地址;
303,第二AP将该STA的MAC地址发送给AC;
304,AC在缓存中查找该STA的MAC地址;
如果STA在漫游到第二AP前加入过组播组,则AC在自身的缓存中有登记过包括该STA的地址对<STA的MAC地址,组播MAC地址>。
305,如果查找到,AC将该STA的MAC地址对应的组播MAC地址发送给第二AP;
如果STA加入过多个(大于等于2个)组播组,AC会将该STA的MAC地址对应的所有的组播地址都发给第二AP。
306,第二AP构造并向IGMP Server发送IGMP成员关系报文,该IGMP成员关系报文包括STA的MAC地址和对应的组播MAC地址。
如果STA在漫游到第二AP之前加入不止一个组播组,则第二AP基于不同组播组分别构造IGMP成员关系报文,并向IGMP Server发送不同组播组的IGMP成员关系报文,例如如果STA加入了10个组播组,则第二AP构造10个IGMP成员关系报文并发送给IGMP Server。
在现有技术中,IGMP成员关系报文由STA发送,如果STA从第一AP漫游到第二AP,在漫游前STA主动向第一AP发送IGMP leave报文,在漫游后再通过IGMP协议加入,如此需要STA主动介入,不是透明的解决方案。
在本发明中,STA从第一AP漫游到第二AP,如果第二AP获取到STA的MAC地址并在AC中查找该STA的MAC地址,则从AC获取该STA的MAC地址对应的组播MAC地址,并构造包含该STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文发送给IGMP Server。如此,在从第一AP漫游到第二AP的过程中,STA无需介入,是透明的解决方案。
步骤103,若广播域上的交换机监听到IGMP成员关系报文,从IGMP成员关系报文中获取组播MAC地址;根据交换机上接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目并添加到IGMP snooping转发表中;根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目并添加到IGMP snooping路由端口表中。
广播域上所有的交换机监听IGMP协议报文,如果监听到IGMP成员关系报文,从IGMP成员关系报文中获取组播地址,该组播地址可以是组播MAC地址。
根据交换机上接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目。查找交换机的IGMP snooping转发表,如果IGMP snooping转发表已包含<组播地址,接收IGMP成员关系报文端口>条目,则不做任何动作;否则把<组播地址,接收IGMP成员关系报文端口>条目加入IGMP snooping转发表中。
根据交换机上接收IGMP查询报文的端口,形成<组播地址,接收IGMP查询报文的端口>条目。查找交换机的IGMP snooping路由端口表,该路由端口指交换机上朝向组播路由器的端口,交换机从路由端口接收组播报文或IGMP查询报文等。将组播报文的发送端口作为接收IGMP查询报文的端口进行查询,如果IGMP snooping路由端口表已包含<组播地址,接收IGMP查询报文的端口>条目,则不做任何动作,否则把<组播地址,接收IGMP查询报文的端口>条目加入IGMP snooping路由端口表中。
相较于现有技术中IGMP snooping只在接收到IGMP查询报文时,才把<组播地址,接收IGMP查询报文的端口>条目更新到IGMP snooping路由端口表,本发明在监听到IGMP成员关系报文时,如果IGMP snooping路由端口表中不包含<组播地址,接收IGMP查询报文的端口>条目,则将该条目更新到IGMP snooping路由端口表中,从而实现了STA漫游时快速准确的转发组播报文。
如图2和图3所示的用于STA漫游时IGMP snooping处理的系统,包括:
第一AP,用于当STA和第一AP关联时,获取所述STA的MAC地址;当STA向IGMP服务器发送包含STA要加入的组播MAC地址的IGMP成员关系报文时,截获所述IGMP成员关系报文,获取组播MAC地址,形成<STA的MAC地址,组播MAC地址>地址对,并将所述<STA的MAC地址,组播MAC地址>地址对发送给AC;
第二AP,用于当STA从第一AP漫游到第二AP时,获取STA的MAC地址;如果在AC中查询到该STA的MAC地址,则从AC中获取该STA的MAC地址对应的组播MAC地址;构造包括该STA的MAC地址和对应的组播MAC地址的IGMP成员关系报文,并向IGMP Server发送;
交换机,用于若监听到IGMP成员关系报文,从IGMP成员关系报文中获取组播地址;根据交换机上接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目并添加到IGMP snooping转发表中;根据交换机上接收IGMP成员关系报文的端口,形成<组播地址,接收IGMP成员关系报文的端口>条目并添加到IGMP snooping路由端口表中。
本发明的用于STA漫游时IGMP snooping处理的系统的相关技术细节和前述的STA漫游时IGMP snooping处理的方法类似,故在此不赘述。
所属技术领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,并被通讯设备内部的处理器执行,前述的程序在被执行时处理器可以执行包括上述方法实施例的全部或者部分步骤。其中,所述处理器可以作为一个或多个处理器芯片实施,或者可以为一个或多个专用集成电路(Application Specific Integrated Circuit,ASIC)的一部分;而前述的存储介质可以包括但不限于以下类型的存储介质:闪存(Flash Memory)、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。