组播服务代理的实现方法及系统和节点发现方法转让专利

申请号 : CN200610154111.3

文献号 : CN101141488B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 管红光

申请人 : 华为技术有限公司

摘要 :

本发明提供了一种组播服务代理的实现方法以及实现系统,并提供一种使用该组播服务代理实现的节点发现方法。本发明为使用组播服务代理的节点提供了代理机制,使得欲发送组播信息的节点只需要向组播服务代理申请代理即可,不再需要构建以节点为根的组播组,其应用范围包括服务发现、广播通知等;本发明所提供的节点发现方法,实现了在本地站点范围内的节点发现;同时,该节点发现方法可以准确、高效的获得目的节点信息或者发送信息给目的节点。

权利要求 :

1.一种组播服务代理的实现方法,其特征在于,

在网络中指定或者增加至少一个节点作为组播服务代理,并为其分配组播地址;

在网络路由器或者动态主机配置协议服务器上配置组播服务代理信息;

节点A加入到以所述组播服务代理为根的组播组中,获得组播服务代理的单播地址;

节点A依据所述组播服务代理的单播地址向组播服务代理发送获取组播组中节点信息请求,若组播服务代理上存储有所述欲获取的节点信息,则组播服务代理直接将所述欲获取的节点信息发送给节点A,若组播服务代理上没有所述欲获取的节点信息,则组播服务代理向组播组中所有节点发送节点A的获取信息请求,目的节点根据获取信息请求的内容响应节点A;或者,节点A依据所述组播服务代理的单播地址向组播服务代理发送发布信息请求,则组播服务代理向组播组中所有节点发送节点A的发布信息请求。

2.根据权利要求1所述的方法,其特征在于,在互联网协议版本4网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给第一个组播服务代理的组播地址和组播服务代理的数量。

3.根据权利要求2所述的方法,其特征在于,节点A加入到以所述组播服务代理为根的组播组中,包括:节点A通过网络路由器公告或者使用动态主机配置协议消息获得第一个MSA组播地址和组播服务代理的数量;

节点A根据所述获得的第一个MSA组播地址和组播服务代理数量得到组播服务代理的组播地址集合;

节点A以可以聚合的自身节点内容或者目的节点内容为参数用哈希Hash算法从所述组播地址集合中选择出欲加入的组播地址,节点A依据该组播地址加入到组播组中。

4.根据权利要求1所述的方法,其特征在于,在互联网协议版本4或版本6的网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址的集合。

5.根据权利要求4所述的方法,其特征在于,节点A加入到以所述组播服务代理为根的组播组中,包括:节点A通过网络路由器公告或者使用动态主机配置协议消息获得组播地址集合;

节点A以可以聚合的自身节点内容或者目的节点内容为参数用Hash算法从所述组播地址集合中选择出欲加入的组播地址,节点A依据该组播地址加入到组播组中。

6.根据权利要求1所述的方法,其特征在于,在互联网协议版本6网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量。

7.根据权利要求6所述的方法,其特征在于,节点A加入到以所述组播服务代理为根的组播组中,包括:节点A通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量;

节点A以可以聚合的自身节点内容或者目的节点内容为参数用Hash算法计算出欲加入的组播组号,并以所述组播前缀和该组播组号形成组播地址,节点A依据该组播地址加入到组播组中。

8.根据权利要求1或者3、5、7所述的方法,其特征在于,节点A加入到以所述组播服务代理为根的组播组中后,在端口侦听,从收到的组播报文中获得组播服务代理的单播地址。

9.根据权利要求1所述的方法,其特征在于,在节点A要求目的节点响应节点A发送的请求消息时,节点A启动定时器,在定时器超时时,若节点A没有收到目的节点响应消息,则节点A重新发送请求消息。

10.根据权利要求1所述的方法,其特征在于,在目的节点响应节点A的请求消息时,目的节点的响应消息中包含用于节点A识别目的节点身份的信息,目的节点直接发送响应消息给节点A、或者目的节点通过组播服务代理转发响应消息给节点A。

11.根据权利要求10所述的方法,其特征在于,在节点A要求目的节点响应节点A发送的请求消息、并通过组播服务代理转发响应消息时,组播服务代理启动定时器,在定时器超时时,若组播服务代理没有收到目的节点响应消息,则组播服务代理重新向组播组中所有节点发送节点A的请求消息。

12.一种组播服务代理的实现系统,其特征在于,该系统包括:指定或者增加的具有周期性发送组播报文的功能的作为组播服务代理的节点、以及以该组播服务代理为根的组播组中所有的节点;

所述组播服务代理上配置有组播地址,节点A加入到以所述组播服务代理为根的组播组中,获得组播服务代理的单播地址;

节点A依据所述组播服务代理的单播地址向组播服务代理发送获取组播组中节点信息请求,若组播服务代理上存储有所述欲获取的节点信息,则组播服务代理直接将所述欲获取的节点信息发送给节点A,若组播服务代理上没有所述欲获取的节点信息,则组播服务代理向组播组中所有节点发送节点A的获取信息请求,目的节点根据获取信息请求的内容响应节点A;或者,节点A依据所述组播服务代理的单播地址向组播服务代理发送发布信息请求,则组播服务代理向组播组中所有节点发送节点A的发布信息请求。

13.根据权利要求12所述的系统,其特征在于,组播服务代理记录有经过该组播服务代理转发的信息。

14.根据权利要求12所述的系统,其特征在于,组播服务代理将发送给同一节点的多个响应信息进行封装后发送。

15.一种节点发现方法,其特征在于,包括:

目的节点加入到其自身所在的以组播服务代理为根的组播组中,源节点加入所述的组播组,获得组播服务代理的单播地址;

源节点向组播服务代理发送节点发现请求;

若组播服务代理上存储有目的节点的信息,则组播服务代理直接将目的节点的信息发送给源节点;若组播服务代理上没有目的节点的信息,则组播服务代理向其组播组中所有节点发送所述节点发现请求,目的节点根据所述节点发现请求消息的内容响应源节点。

16.根据权利要求15所述的方法,其特征在于,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:在互联网协议版本4网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得第一个组播服务代理的组播地址和组播服务代理数量,据此可得到一个组播服务代理的组播地址集合,目的节点以可以聚合的自身节点内容为参数用Hash算法选择出自身所在的以组播服务代理为根的组播组对应的组播地址,目的节点依据该组播地址加入到所述组播组中。

17.根据权利要求15所述的方法,其特征在于,源节点加入到所述组播组中,包括:

在互联网协议版本4网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得第一个组播服务代理的组播地址和组播服务代理数量,据此得到一个组播服务代理的组播地址集合,源节点以可以聚合的目的节点内容为参数用Hash算法选择出目的节点所在组播组对应的组播地址,源节点依据该组播地址加入到所述组播组中。

18.根据权利要求16或者17所述的方法,其特征在于,所述路由器公告或者使用动态主机配置协议消息中包括分配给第一个组播服务代理的组播地址和组播服务代理的数量。

19.根据权利要求15所述的方法,其特征在于,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:在互联网协议版本4或版本6的网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播地址集合,目的节点以可以聚合的自身节点内容为参数用Hash算法从所述组播地址集合中选择出目的节点所在的以组播服务代理为根的组播组对应的组播地址,目的节点依据该组播地址加入到所述组播组中。

20.根据权利要求15所述的方法,其特征在于,源节点加入到所述组播组中,包括:

在互联网协议版本4或版本6的网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播地址集合,源节点以可以聚合的目的节点内容为参数用Hash算法从所述组播地址集合中选择源节点所在组播组对应的出组播地址,源节点依据该组播地址加入到所述的组播组中。

21.根据权利要求19或者20所述的方法,其特征在于,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址的集合。

22.根据权利要求15所述的方法,其特征在于,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:在互联网协议版本6网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量;

目的节点以可以聚合的自身的内容为参数用Hash算法计算出自身所在的组播组号,并以组播前缀和该组播组号形成目的节点所在的以组播服务代理为根的组播地址,目的节点依据该组播地址加入到所述组播组中。

23.根据权利要求15所述的方法,其特征在于,源节点加入到所述组播组中,包括:

在互联网协议版本6网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量;

源节点以可以聚合的目的节点内容为参数用Hash算法计算出欲加入的目的节点所在的组播组号,并以所述组播前缀和该组播组号形成组播地址,源节点依据该组播地址加入到所述组播组中。

24.根据权利要求22或者23所述的方法,其特征在于,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量。

25.根据权利要求15所述的方法,其特征在于,源节点加入到所述组播组后,在端口侦听,从收到的组播报文中获得组播服务代理的单播地址。

26.根据权利要求15所述的方法,其特征在于,所述源节点通过组播服务代理发送节点发现请求时,请求方式包括:源节点向组播组中所有节点通告自己消息,消息中不指定目的节点信息,不需要目的节点进行响应;源节点在请求消息中包含目的节点消息,只有目的节点才会响应该节点发现请求。

27.根据权利要求15所述的方法,其特征在于,所述目的节点响应节点发现请求,该响应信息中包含用于源节点识别目的节点身份的信息。

28.根据权利要求15或者27所述的方法,其特征在于,所述目的节点响应节点发现请求,包括:目的节点直接发送响应消息给源节点、目的节点通过组播服务代理转发响应消息给源节点。

说明书 :

技术领域

本发明涉及互联网通信技术领域,尤其涉及一种组播服务代理的实现方法及实现系统和一种节点发现的方法。

背景技术

所谓节点发现是指某节点通过某种手段获取另外一个或者多个节点信息、或者某节点主动将自己的信息通知其它一个或者多个节点的过程。互联网中的域名解析可以看成是节点发现的一种特例。
互联网中,若节点A需要与节点B通信,则节点A首先要向域名系统查询节点B的IP地址,只有节点A知道了节点B的IP地址,节点A才能与节点B进行通信。但是,当互联网中没有域名系统服务或者域名系统失效时,该如何实现节点发现,现有技术中有两种主要的实现方案:
现有技术1
互联网草案draft-mutaf-ipv6humid-00中提出了一种利用用户姓名来生成节点接口标识符的方法,并利用这种机制发现目的节点,其基本思想是把用户姓名和用户节点IP地址关联起来,在查找节点IP地址时只需要将节点对应的姓名做Hash映射即可,具体过程为:
节点A和节点B在启动时,以各自用户姓名为参数通过Hash函数生成节点A、节点B对应的唯一的接口标识符,以此来实现节点的IP地址和节点对应的用户姓名之间的映射;
其中,每次生成接口标识符时,必须通过重复地址检测机制来确保该接口标识符地址的唯一性;
当节点A需要与节点B通信时,节点A以节点B的用户姓名为参数通过Hash函数生成节点B的接口标识符;之后,节点A通过路由器公告、自己保存的节点B可能存在的地址前缀列表、或者Google等查询服务来获得节点B当前可能使用的地址前缀列表;
节点A以节点B当前可能使用的地址前缀列表和节点B接口标识符形成节点B的IP地址列表;
节点A用节点B的IP地址列表依次与节点B建立会话,在建立会话过程中,当节点A发现IP地址对应的节点不是节点B时,断开连接,用节点B的IP地址列表中下一个地址继续建立会话,直到找到节点B为止。
此方案中,存在以下技术缺陷:
1、生成IP地址的效率低:由于用户姓名重复性很高,且每次生成接口标识符后都要进行重复地址检测,所以生成唯一接口标识符的效率很低;
2、获得前缀列表的准确性低:由节点A获得节点B的前缀列表方式可知,获得节点B前缀列表的准确性没有保障。
现有技术2
在互联网草案draft-ietf-dnsext-mdns-46中,提出了一种以组播方式发送信息,以此来实现域名解析的问题,具体是:
在本地链路范围内,源节点以组播方式向本地链路组播地址发送查询请求,目的节点接收到查询请求后,以单播方式响应源节点。其中,如果有多个目的节点同时响应一个查询请求,则源节点以收到的第一个到达的有效响应消息为准。
此方案,以组播的方式解决了本地链路范围内实现域名解析的机制,但是,对于本地链路范围以外的站点范围,则无能为力,因为,若以此方案的实现机制来实现本地站点范围内的域名解析,则要求每一个源节点都要以自身为根来构建组播组,其实现的过程复杂、成本高,在现实应用中不适用。
由以上两个技术方案可见,如果有一种组播服务代理机制,那么,就可以实现任意节点欲发送组播信息时,该节点只需要向组播服务代理申请即可,而不再需要构建以该节点为根的组播组。但是,现有技术中没有相关技术方案的涉及。

发明内容

本发明所要解决的技术问题是:提供一种组播服务代理的实现方法以及实现系统,并提供一种使用该组播服务代理实现的节点发现方法,以此实现在本地站点范围内、准确、高效地实现节点发现。
为此,本发明提供了一种组播服务代理的实现方法,包括:
在网络中指定或者增加至少一个节点作为组播服务代理,并为其分配组播地址;
在网络路由器或者动态主机配置协议服务器上配置组播服务代理信息;
节点A加入到以所述组播服务代理为根的组播组中,获得组播服务代理的单播地址;
节点A依据所述组播服务代理的单播地址向组播服务代理发送获取组播组中节点信息请求,若组播服务代理上存储有所述欲获取的节点信息,则组播服务代理直接将所述欲获取的节点信息发送给节点A,若组播服务代理上没有所述欲获取的节点信息,则组播服务代理向组播组中所有节点发送节点A的获取信息请求,目的节点根据获取信息请求的内容响应节点A;或者,节点A依据所述组播服务代理的单播地址向组播服务代理发送对发布信息请求,则组播服务代理向组播组中所有节点发送节点A的发布信息请求。
其中,在互联网协议版本4网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给第一个组播服务代理的组播地址和组播服务代理的数量。
其中,节点A加入到以所述组播服务代理为根的组播组中,包括:
节点A通过网络路由器公告或者使用动态主机配置协议消息接获得第一个MSA组播地址和组播服务代理的数量。
节点A根据上述信息得到组播服务代理的组播地址集合。
节点A以可以聚合的自身节点内容或者目的节点内容为参数用Hash算法从所述组播地址集合中选择出欲加入的组播地址,节点A依据该组播地址加入到组播组中。
其中,在互联网协议版本4或版本6的网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址的集合。
其中,节点A加入到以所述组播服务代理为根的组播组中,包括:
节点A通过网络路由器公告或者使用动态主机配置协议消息获得组播地址集合;
节点A以可以聚合的自身节点内容或者目的节点内容为参数用Hash算法从所述组播地址集合中选择出欲加入的组播地址,节点A依据该组播地址加入到组播组中。
其中,在互联网协议版本6网络中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量。
其中,节点A加入到以所述组播服务代理为根的组播组中,包括:
节点A通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量。
节点A以可以聚合的自身节点内容或者目的节点内容为参数用Hash算法计算出欲加入的自身所在的组播组号,并以所述组播前缀和该组播组号形成组播地址,节点A依据该组播地址加入到组播组中。
其中,节点A加入到以所述组播服务代理为根的组播组中后,在端口侦听,从收到的组播报文中获得组播服务代理的单播地址。
其中,在节点A要求目的节点响应节点A发送的请求消息时,节点A启动定时器,在定时器超时时,若节点A没有收到目的节点响应消息,则节点A重新发送请求消息。
其中,在目的节点响应节点A的请求消息时,目的节点的响应消息中包含用于节A点识别目的节点身份的信息,目的节点直接发送响应消息给节点A、或者目的节点通过组播服务代理转发响应消息给节点A。
其中,在节点A要求目的节点响应节点A发送的请求消息、并通过组播服务代理转发响应消息时,组播服务代理启动定时器,在定时器超时时,若组播服务代理没有收到目的节点响应消息,则组播服务代理重新向组播组中所有节点发送节点A的请求消息。
本发明还提供了一种组播服务代理的实现系统,该系统包括:指定或者增加的具有周期性发送组播报文的功能的作为组播服务代理的节点、以及以该组播服务代理为根的组播组中所有的节点;
所述组播服务代理上配置有组播地址,节点A加入到以所述组播服务代理为根的组播组中,获得组播服务代理的单播地址;节点A依据所述组播服务代理的单播地址向组播服务代理发送获取组播组中节点信息请求,若组播服务代理上存储有所述欲获取的节点信息,则组播服务代理直接将所述欲获取的节点信息发送给节点A,若组播服务代理上没有所述欲获取的节点信息,则组播服务代理向组播组中所有节点发送节点A的获取信息请求,目的节点根据获取信息请求的内容响应节点A;或者,节点A依据所述组播服务代理的单播地址向组播服务代理发送发布信息请求,则组播服务代理向组播组中所有节点发送节点A的发布信息请求。
其中,组播服务代理记录有经过该组播服务代理转发的信息。
其中,组播服务代理将发送给同一节点的多个响应信息进行封装后发送。
本发明还提供了一种节点发现方法,包括:
目的节点加入到其自身所在的以组播服务代理为根的组播组中,源节点加入所述的组播组,获得组播服务代理的单播地址;
源节点向组播服务代理发送节点发现请求;
若组播服务代理上存储有目的节点的信息,则组播服务代理直接将目的节点的信息发送给源节点;若组播服务代理上没有目的节点的信息,则组播服务代理向其组播组中所有节点发送所述节点发现请求,目的节点根据所述节点发现请求消息的内容响应源节点。
其中,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:
在互联网协议版本4网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得第一个组播服务代理的组播地址和组播服务代理数量,据此可得到一个组播服务代理的组播地址集合,目的节点以可以聚合的自身节点内容为参数用Hash算法选择出自身所在的以组播服务代理为根的组播组对应的组播地址,目的节点依据该组播地址加入到所述组播组中。
其中,源节点加入到所述组播组中,包括:
在互联网协议版本4网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得第一个组播服务代理的组播地址和组播服务代理数量,据此得到一个组播服务代理的组播地址集合,源节点以可以聚合的目的节点内容为参数用Ha sh算法选择出目的节点所在组播组对应的组播地址,源节点依据该组播地址加入到所述组播组中。
其中,所述路由器公告或者使用动态主机配置协议消息中包括分配给第一个组播服务代理的组播地址和组播服务代理的数量。
其中,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:
在互联网协议版本4或版本6的网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播地址集合,目的节点以可以聚合的自身节点内容为参数用Ha sh算法从所述组播地址集合中选择出目的节点所在的以组播服务代理为根的组播组对应的组播地址,目的节点依据该组播地址加入到所述组播组中。
其中,源节点加入到所述组播组中,包括:
在互联网协议版本4或版本6的网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得组播服务代理的组播地址集合,源节点以可以聚合的目的节点内容为参数用Hash算法从所述组播地址集合中选择源节点所在组播组对应的出组播地址,源节点依据该组播地址加入到所述的组播组中。
其中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址的集合。
其中,所述目的节点加入到其自身所在的以组播服务代理为根的组播组中,包括:
在互联网协议版本6网络中,目的节点通过路由器公告或者使用动态主机配置协议消息获得组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量;
目的节点以可以聚合的自身的内容为参数用Hash算法计算出自身所在的组播组号,并以组播前缀和该组播组号形成目的节点所在的以组播服务代理为根的组播地址,目的节点依据该组播地址加入到所述组播组中。
其中,源节点加入到所述组播组中,包括:
在互联网协议版本6网络中,源节点通过路由器公告或者使用动态主机配置协议消息获得组播前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量;
源节点以可以聚合的目的节点内容为参数用Hash算法计算出欲加入的目的节点所在的组播组号,并以所述组播前缀和该组播组号形成组播地址,源节点依据该组播地址加入到所述组播组中。
其中,所述网络路由器或者动态主机配置协议服务器上配置的组播服务代理信息包括分配给组播服务代理的组播地址、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量。
其中,源节点加入到所述组播组后,在端口侦听,从收到的组播报文中获得组播服务代理的单播地址。
其中,所述源节点通过组播服务代理发送节点发现请求时,请求方式包括:源节点向组播组中所有节点通告自己消息,消息中不指定目的节点信息,不需要目的节点进行响应;源节点在请求消息中包含目的节点消息,只有目的节点才会响应该节点发现请求。
其中,所述目的节点响应节点发现请求,该响应信息中包含用于源节点识别目的节点身份的信息。
其中,所述目的节点响应节点发现请求,包括:目的节点直接发送响应消息给源节点、目的节点通过组播服务代理转发响应消息给源节点。
本发明提供了一种组播服务代理的实现方法及其实现系统,为使用组播服务代理的节点提供代理机制,使得欲发送或者接收组播信息的节点只需要向组播服务代理申请代理即可,不再需要构建以节点为根的组播组,其应用范围包括服务发现、广播通知等;
本发明还提供了一种使用所述组播服务代理实现的节点发现方法,由于使用了组播服务代理机制,其应用范围克服了背景技术中现有技术2仅限于本地链路的范围,实现了在本地站点范围内的节点发现;同时,该节点发现方法由于使用了组播服务代理机制,源节点只需要加入到目的节点所在的组播组中,即可以准确、高效的获得目的节点信息或者发送信息给目的节点;进一步,源节点在加入到目的节点所在组播组的过程中,以可以聚合的目的节点内容为参数利用Hash算法计算出组播地址,克服了背景技术中现有技术1中所述的生成节点B(目的节点)IP地址的低效性和不准确性。

附图说明

图1为组播服务代理实现方法及系统的工作原理示意图;
图2为组播服务代理实现方法中节点A加入到自身所在组播组中的过程信令流程图;
图3为组播服务代理的实现系统示意图;
图4为节点发现方法的实施例1信令流程图;
图5为节点发现方法的实施例2信令流程图;
图6为节点发现方法的实施例3信令流程图;
图7为节点发现方法的实施例4信令流程图;
图8为实现组播服务代理协议的节点协议栈。

具体实施方式

下面,结合附图对本发明进行详细描述。
在网络中指定或者增加至少一个节点作为以组播服务代理MSA,并为其分配组播地址,在网络路由器或者动态主机配置协议(DHCP)服务器上配置MSA信息:
在互联网协议版本4(IPv4)网络中,配置在网络路由器或者DHCP服务器上的MSA信息包括:分配给第一个MSA的组播地址和网络中MSA的数量;
在IPv4或IPv6的网络中,配置在网络路由器或者DHCP服务器上的MSA信息包括:分配给MSA的组播地址集合;
在IPv6网络中,配置在网络路由器或者DHCP服务器上的MSA信息包括:分配给MSA的组播前缀、分配给第一个MSA组播地址的起始偏移值、和网络中MSA的数量;
如图1所示,网络中以MSA为根的组播组中包括节点N1、N2、N3,还可以包括其它节点,例如N4、N5、Nn等,不影响本发明的实施;
如图2所示,节点A欲加入到组播组中,必须要先知道组播组的组播地址,为此,节点A首先要获得MSA的组播地址:
在IPv4网络中,节点A从路由器公告或者DHCP消息中获得第一个MSA的组播地址和组播服务代理的数量,根据上述信息得到组播服务代理的连续的组播地址集合,并以可以聚合的自身节点内容或者目的节点内容为参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,利用Hash算法从所述组播地址集合中选择出欲加入的组播地址;
在IPv4或IPv6的网络中,节点A从路由器公告或者DHCP消息中获得MSA的组播地址集合,并以可以聚合的自身节点内容或者目的节点内容为参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,利用Hash算法从组播地址集合中选择出欲加入的组播地址;
在IPv6网络中,节点A从路由器公告或者DHCP消息中获得组播地址前缀,并以自身可以聚合的参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,通过Hash算法计算出节点A自己所在的MSA的组播组号,并根据组播前缀形成组播地址,
以IPv6网络为例,具体计算过程举例如下:
MGrpID=iPos+(Len(姓名)+I)mod N
或者MGrpID=iPos+(Len(电子邮件域名)+I)mod N
其中,iPos为路由器或者DHCP上配置消息的第一个MSA组播地址起始偏移值;N为MSA个数,I为从0开始的递增值,主要是考虑假如计算出的MSA因某种原因不再充当组播服务代理时,可以将相应的节点转移到其它的组播服务代理上,MGrpID为十六进制数的组播组号,Len为取长度操作,mod为取模操作;
组播地址=组播前缀+MGrpID;
当节点A在尝试加入所述组播组中时,利用上述算法计算组播地址,如果第一次没有成功,将I累加后重复计算组播组号,重复尝试的次数可以配置。例如,假设组播前缀为FF05:00DA:EFEF::/124,iPos为9,N为3,用户姓名为Jason,那么计算出的MGrpID为B,对应的组播地址为FF05:00DA:EFEF::B;如果加入此地址不成功,将I累加后计算出的组播地址为FF05:00DA:EFEF::9。
当节点A在尝试加入组播组的具体过程如图2所示,在站点范围内,路由器加入到MSA1a、MSA2a组播组中,接收到MSA1a、MSA2a的MSA声明消息;
节点A向路由器发送路由器请求,路由器将路由器公告发送给节点A,节点A获得组播地址前缀,并依据上述的Hash算法得出组播地址,尝试加入MSA1a组播组,若加入MSA1a组播组失败,则累计I值,重复计算组播地址后,尝试加入MSA2a组播组,若加入MSA2a组播组成功,节点A通过路由器获得MSA2a发送的声明消息;于是,节点A加入到了MSA2a所在的组播组中,可以与MSA2a相互通信;
其中,当节点和路由器间可能还存在其他中间设备时,节点加入组播组和接收组播报文的操作通过中间设备完成,这种方式不影响本发明的实施,在本发明的保护范围内;
其中,在节点启动、节点对应的用户身份发生变化或者MSA变成无效(包括节点接收到MSA功能激活位为0的MSA声明消息,或者节点在一定时间内没有收到任何MSA声明消息等情况)时,节点都会根据Hash算法重新计算新的组播地址,并尝试加入新的组播组;
至此,节点A获得了MSA的组播地址,以此加入到MSA所在的组播组中,并在UDP端口(在组播服务代理协议MSAP上定义所有节点包括MSA都在UDP端口上发送和接收MSAP报文)上侦听,节点A从MSA周期性发送的组播报文中获得MSA单播地址,此时,若节点A想通过MSA发送消息,则向MSA发送单播请求消息,MSA接收到该请求消息后,以组播方式向组播组中所有节点发送节点A的请求消息,节点A接收到MSA组播发送的消息后,能够判断出是由自己发起的,会抑制对该消息的响应,节点N1、N2、N3获得节点A的请求消息后,若节点N3需要响应节点A的请求,则节点N3的响应消息可以直接响应消息发送给节点A或者将间接响应消息发送给MSA,由MSA发送代理响应消息给节点A;
其中,MSA组播发送的消息格式可以改变,不影响本发明的实施;
其中,若节点A想通过MSA广播消息,不需要组播组中节点的响应,则组播组中的节点对所述请求消息不响应;
若节点A想通过MSA接收消息,则在UDP端口侦听,即可以接收到由MSA发送的所有组播消息;
若节点A想通过MSA获取组播组中节点N3的信息,则节点A向MSA发送的请求消息中包含节点N3的信息,例如用户姓名、电子邮件地址等,若MSA中存储有节点N3的信息,则MSA直接将节点N3的信息发送给节点A,若MSA中没有节点N3的信息,则MSA将节点A的请求消息以组播的方式发送给所有的节点,节点N3会根据节点A的请求方式(在组播服务代理协议MSAP中对响应方式有所定义)来决定是直接对节点A发送响应消息还是通过MSA转发响应消息,不论节点N3采取何种响应方式,节点N 3的响应消息中都包含用于节点A能够识别其身份的信息;
其中,在采用通过MSA转发响应信息的过程中,MSA可以选择是否保留该转发的信息。
其中,在节点A中可以设置定时器,在节点A要求节点N3响应节点A的请求消息时,在节点A发送请求消息的同时,节点A启动定时器,在定时器超时时,若节点A没有收到节点N3的响应消息,则节点A重新发送请求消息给MSA;
作为可选,在MSA中也可以设置有定时器,在节点A要求节点N3响应节点A的请求消息,并通过MSA转发响应消息时,在MSA发送组播消息的同时,MSA启动定时器,在定时器超时时,若MSA没有收到节点N3的响应消息,则MSA重新发送请求消息给组播组中所有节点。
其中,定时器的时间为动态可调;
如图3所示,为MSA的实现系统图,该系统包括:至少一个指定或者增加的作为MSA的节点1,以MSA节点1为根的组播组中的所有节点,本实施例中列举3个节点,分别为第一节点10、第二节点11、第三节点12;
在MSA节点1上配置有组播地址,在网络路由器或者DHCP服务器上配置有与MSA节点1相关的信息,MSA节点1用于请求节点以MSA的组播地址加入到以MSA节点1为根的组播组中,所述请求节点能够通过MSA节点1发送组播信息给第一节点10、第二节点11、第三节点12,第一节点10、第二节点11、和/或第三节点12能够通过MSA节点1发送消息给所述请求节点,MSA节点1能够周期性地发送组播报文;
MSA节点1记录有经过该节点转发的信息;
MSA节点1能够将发送给同一节点的多个响应信息进行封装后发送。
节点发现方法实施例1
在组网规划时,在一个本地站点范围内指定或者增加至少一个MSA,当互联网中没有域名系统服务或者域名系统失效时,启用利用MSA机制的节点发现功能,来完成节点与节点间的通信。
如图4所示,本实施例中,假设节点A欲通过直接响应方式找节点B,则过程如下:
首先,节点B要从路由器公告或者DHCP消息中获得上述信息,并以自身可以聚合的参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,通过Hash算法计算出节点B自己所在的MSA的组播组号,并根据组播前缀形成组播地址,或者通过Hash算法选择自己所在的MSA的组播地址,节点B以此组播地址加入到其自身所在的组播组中;
然后,节点A来实现找节点B的过程如下:
在IPv4网络中,节点A从路由器公告或者DHCP消息中获得第一个MSA的组播地址和组播服务代理的数量,根据上述信息得到组播服务代理的组播地址集合,以可以聚合的节点B的内容为参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,利用Hash算法选择出节点B所在的组播地址;
在IPv4或IPv6网络中,节点A从路由器公告或者DHCP消息中获得MSA的组播地址集合,以可以聚合的节点B的内容为参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,利用Hash算法从组播地址集合中选择出节点B所在的组播地址;
在IPv6网络中,节点A从路由器公告或者DHCP消息中获得组播地址前缀、分配给第一个组播服务代理的组播地址起始偏移值和组播服务代理的数量,并以目的节点B可以聚合的参数,例如用户姓名、电子邮件域名、单位名称、毕业学校名称、毕业时间等为内容,通过Hash算法计算出节点B所在的MSA的组播组号,并根据组播前缀形成组播地址;
其中,节点A在加入到目的节点B所在组播组中时,利用Hash算法计算节点B所在的MSA的组播组号或组播地址时,与节点A加入自身所在组播组时的计算方法相同,在此不再重复;
节点A以节点B的组播地址加入到节点B所在MSAb组播组中,路由器将周期性收到的来自MSAb的MSA声明消息发送给节点A,节点A通过在UDP端口侦听时获得的单播地址,以单播方式向MSAb发送节点发现请求,MSAb将该节点发现请求以组播方式发送给MSAb组播组中所有节点,包括节点B、节点C,此时,MSA组播发送的消息格式可以改变,不影响本发明的实施;
节点发现请求消息中包含目的节点B的信息,以及需要节点B响应的方式(直接响应),因此,节点B直接发送响应消息给节点A,该响应消息中包含用于节点A对节点B进行身份识别的信息,节点A验证节点B的身份信息;
作为可选,节点A与节点B的身份验证,可以使用其他的安全机制来进行,不影响本发明的实施;
对于节点C,由于节点发现请求消息中没有包含节点C的信息,因此,节点C对该节点发现请求进行忽略;
至此,节点A找到了节点B,节点A可以与节点B进行通信,此时,节点A可以退出节点B所在的组播组,也可以保留在组播组中。
节点发现方法实施例2
如图5所示,本实施例中,与节点发现方法实施例1不同之处在于,节点A的节点发现请求消息中包含的目的节点B的响应方式为间接响应方式,所以,节点B以单播方式将间接响应消息发送给MSAb,通过MSAb以单播方式发送代理响应消息给节点A;
其余过程与节点发现方法实施例1相同,在此不再重复描述。
节点发现方法实施例3
如图6所示,节点A欲将自己的信息通知给组播组中所有节点,具体实现过程如下:
节点A依据节点发现方法实施例1中所述方法获得组播地址,节点A加入到MSAa组播组后,路由器将周期性收到的来自MSAa的MSA声明消息发送给节点A,节点A通过在UDP端口侦听时获得的单播地址,以单播方式向MSAa发送发布信息请求,MSAa以组播方式将该发布信息请求发送给MSAa组播组中所有节点,包括节点B、节点C,此时,MSA组播发送的消息格式可以改变,不影响本发明的实施;
此时,组播组中所有节点都接收到发布的信息。
节点发现方法实施例4
如图7所示,节点A加入到自己所在的组播组中,等待其他节点来发现自己,具体实现过程如下:
节点A依据节点发现方法实施例1中所述方法获得组播地址,节点A加入到MSAa组播组后,路由器将周期性收到的来自MSAa的MSA声明消息发送给节点A,节点A在UDP端口侦听,等待其它节点来发现自己。
在本发明中,需要使用组播服务代理协议MSAP,在该协议中定义所有节点,包括组播组中的节点和MSA,都在UDP端口发送和接收报文。实现MSAP协议节点的协议栈如图8所示,其上层为MSAP协议,中间为UDP协议,下层为IP协议。
在实现节点发现时,MSAP协议所定义的消息具体如下:
1、MSA声明消息:
MSA周期性组播发送的公告消息,消息中包括以下内容:
消息类型(0x00);
MSA功能激活位(表示节点是否是有效的MSA);MSA可以发送激活位为0的报文表示自己不再担任MSA;接收到这样的报文后,已加入到该组播组的节点应该使用Hash算法重新计算和加入组播地址;
MSA的单播地址列表,考虑到最大传输单元(MTU)的限制,最多允许16个IP地址。
2、节点发现请求消息:
由源节点发送给MSA的单播报文,消息中包括以下内容:
消息类型(0x01);
查询消息ID:由源节点采用伪随机算法生成,用来匹配响应消息和请求消息;
目的节点数:表示此请求消息中包含的目的节点信息数目,最大16个;响应方式:指目的节点响应源节点请求消息的方式,0表示不响应,此时目的节点数应该为0;1表示直接响应方式,2表示间接响应方式,3保留;源节点单播地址:目的节点直接响应源节点请求消息时所用的地址,也用于源节点对接收到的MSA查询消息进行响应抑制;
源节点身份信息TLV:提供给目的节点用于判别源节点身份的信息,比如源节点对应用户的姓名、电子邮件地址、身份证号码等;
目的节点信息TLV:标明源节点查询的对象,比如使用目的节点对应用户姓名、电子邮件地址、身份证号码等;
其中,TLV为类型长度值。
3、MSA查询消息:
MSA接收到节点发现请求后,通过组播方式发送给组播组成员的消息,消息中包括以下内容:
消息类型(0x02);
源节点个数:本次执行查询操作的源节点的个数,实际上就是源节点查询消息TLV的个数;
源节点查询信息TLV:包含和每个源节点相关的查询信息,包括节点发现请求消息中除了消息类型外的其他部分;
4、直接响应消息:
目的节点直接发送给源节点的响应消息,消息中包括以下内容:
消息类型(0x03);
消息ID:直接来自MSA查询消息中相关源节点查询信息TLV的消息ID;
目的地址个数:源节点可以用来和目的节点通信的地址数,最多16个;
目的地址列表:目的节点提供的地址;
目的节点身份信息TLV:格式同源节点身份信息TLV;
5、间接响应消息:
目的节点接收到MSA查询消息后发送给MSA的响应消息,当MSA查询消息中包含多个源节点的信息时,目的节点只对和自己相关的部分进行响应。消息中包括以下内容:
消息类型(0x04);
消息ID:同直接响应消息中对应字段;
目的地址个数:同直接响应消息中对应字段;
目的地址列表:同直接响应消息中对应字段;
目的节点身份信息TLV:格式同源节点身份信息TLV;
6、代理响应消息:
MSA接收到目的节点发送的间接响应消息后,发送给源节点的响应消息;消息中包括以下内容:
消息类型(0x05);
消息ID:同直接响应消息中对应字段;
目的节点个数:消息中包含的目的节点个数;
每个目的节点的地址个数:和消息中每个目的节点相关的地址个数;
每个目的节点的地址列表;
每个目的节点的身份信息;
其中,MSA可以根据情况(比如消息ID相同)将对应同一个源节点的多个目的节点的信息组合到同一消息中向源节点返回。
其中,以上所有消息的长度应该不超过MTU,否则节点和MSA必须进行分段和重组操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。