利用组播pim协议报文获得设备端口信息的方法

文档序号:7592536阅读:462来源:国知局
专利名称:利用组播pim协议报文获得设备端口信息的方法
技术领域
本发明一般涉及网络通信技术,特别涉及一种利用“窃听”组播PIM协议中的Hello报文的方法在网络设备内部的不同的软件模块之间传递信息的技术。
背景技术
传统的互联网应用都是用点对点的IP传输(单播技术),而点对多点的IP传输(广播技术)只限于局域网内部应用,组播技术则是在广域网内实现点到多点的IP传输技术。
20世纪80年代,斯坦福大学的博士生Steve Deering开始了三层组播技术的研究并与1991年12月发表了其博士论文——《在一种数据报网络里的组播》,在该论文中描述了组播组管理IGMP协议和组播路由DVMRP协议的基础,成功的把组播技术推进的IP层。关于IP组播技术的探索一直在进行,在Deering博士的基础上,人们陆续完成了PIM(协议无关组播协议)等组播路由协议,从而将组播协议推向整个互联网。组播路由技术的基本思想是在离接收者最近的地方才复制组播数据,所以可以大大节省大量重复数据传输时的网络带宽,因而越来越多的人相信,在今后的宽带互联网应用中,组播技术将成为多媒体数据通信的主要路由协议之一。
PIM协议是目前应用较为广泛的组播路由协议,支持PIM协议的路由设备通过发送Hello报文(它是PIM协议中的一种协议报文,用于建立和维护PIM路由设备之间的邻居关系)来将自己的基本情况告知其他路由设备,同时也通过接收其他路由设备的Hello报文来了解邻居的情况,每个PIM设备都通过这种方式维护一张自己的邻居关系表。Hello报文的发送是周期性的,协议缺省一般是30秒钟一次,如果路由设备多次无法收到来自邻居的Hello报文,就会将该邻居从自己的邻居关系表中删除,并且更新一切与该邻居相关的组播路由表项。为了实现对邻居信息的管理,路由设备一般会把邻居与接口对应起来,因为路由设备的端口和接口是唯一对应的,所以不需要维护端口和组播邻居的对应关系。但是,对于支持多端口Vlan(虚拟局域网)技术的三层交换机来说,由于其一个接口可以对应于多个端口,所以它也必须支持这种依靠端口与邻居的关系信息来指导组播数据转发的功能。否则,就只能在接口内所有端口上进行组播数据的广播,从而导致大量不必要的数据流并导致转发性能低下。
图1是路由软件层次的结构示意图。如图1所示,在路由设备的软件处理中,各项功能分为一定的层次,协议处理部分位于应用层,它需要依靠IP层模块提供的功能来完成数据的收发功能,对于应用层协议来讲,它可以处理Hello报文来维护PIM邻居关系,但由于物理端口通过IP层的时候已经转换为逻辑接口,因而应用层协议无法把端口和PIM邻居对应起来,所以如果要维护邻居与端口之间的关系,就必须设法把端口信息传递到应用协议层。
在现有技术中,提供端口信息主要通过增加函数接口来完成,其主要方法有如下几种1.IP层在把组播协议报文通告应用协议层的同时,通过函数中的一个参数把收到报文的端口信息带给应用协议层;2.应用协议层在处理Hello协议报文建立新邻居关系的时候,调用IP层提供的函数完成端口信息的查询;在数据通信设备中,采用平台技术的居多,如华为公司的VRP平台和Cisco公司的IOS平台等。在这种情况下,现有的这两种方法都存在共同的问题,即,它们都需要修改原来流程的接口,增加接口参数。而这样的修改会增加程序的复杂程度,使软件维护困难,模块接口不清晰,模块间耦合度提高,从而使引入问题的可能性提高。

发明内容
因此,本发明的主要目的就是实现在不改动原接口的基础上完成路由设备上接收组播协议报文的物理端口信息的获得,进而利用获得的端口信息实现端口与邻居对应关系的维护。
为了实现上述目的,本发明提供了一种利用组播PIM协议报文获得设备端口的方法,该方法包括以下步骤1)当支持PIM组播协议的路由设备的IP协议模块接收到PIM协议报文时,将端口信息直接添加到该报文当中,并将添加有端口信息的报文上报给PIM协议处理模块处理;2)PIM协议处理模块接收到所述带有端口信息的报文之后,从报文当中取出所述端口信息;3)PIM协议处理模块利用取出的所述端口信息建立端口与邻居的对应关系;以及4)PIM协议处理模块根据所述端口与邻居的对应关系来实现组播数据的转发。
在上述方法中,所述PIM协议报文为Hello报文。
在本发明的一个实施例中,所述端口信息被添加在Hello报文源地址结构中的保留字段当中。
在本发明的另一个实施例中,所述端口信息被添加在Hello报文的最后。
本发明所述方法的有益效果在于,其实现简单扩展性兼容性好,不需要修改原模块间的接口,使软件易于平台化,且其中不同模块之间的耦合度减少,提高软件的健壮性和可维护性。同时利用对Hello报文特殊处理获得的端口信息,可以有效地维护组播邻居和端口的对应关系,使组播数据只向下面有PIM邻居的端口转发,因此提高了系统效率并且减少了网络中不必要的数据流。


下面将参考本发明的具体实施例并结合附图对本发明所述的方法进行详细说明。通过这些说明和图示,本发明的上述目的、优点和特征将变得更加清楚。在以下的附图中图1是路由软件层次的结构示意图;图2是根据本发明第一个实施例所述的端口信息携带方法的流程示意图;图3是根据本发明第二个实施例所述的端口信息携带方法的流程示意图;图4是图3所示方法中的报文格式图。
具体实施例方式
实施例一当IP协议模块把PIM组播协议Hello协议报文交给PIM协议处理模块的时候,必然会把协议报文的源地址带给PIM协议处理部分,报文的源地址是标准的IP V4地址,其结构如下typedef struct sockaddr_in{unsigned char sin_len;unsigned char sin_family;unsigned short sin_port;struct in_addr sin_addr;char sin_zero[8];}sockaddr_in;在上述结构中,字段char sin_zero[8]在标准中没有定义具体内容,故本发明第一个实施例的基本思想就是借助这个字段来传递接收报文的端口信息。
图2是根据本发明第一个实施例所述的端口信息携带方法的流程示意图。如图2所示,当IP模块接收到组播PIM协议报文之后,IP模块将把协议报文的端口信息添加到报文源IP地址结构的保留字段当中,并将协议报文上送给PIM协议处理模块。之后,当PIM协议处理模块接收到PIM协议的Hello报文后,它将从上述保留字段中取出端口信息,并利用该端口信息来维护端口与邻居的对应关系,进而指导多端口Vlan下的组播数据转发。
实施例二图3是根据本发明第二个实施例所述的端口信息携带方法的流程示意图。如图3所示,在本实施例中,为了解决邻居与端口之间的对应关系问题,故对组播Hello报文做出了一些改动,即,在IP层向应用协议层上送协议报文时,将端口信息添加到原协议报文的最后。这样就形成了如图4所示的一种新的组播协议报文。如果报文类型是Hello报文,处于应用协议层中的组播PIM协议模块将从该报文中取出端口信息,并利用此端口信息来维护端口与组播邻居的对应关系,进而实现组播数据的转发。如果不是Hello报文,则PIM协议模块将忽略和丢弃这些端口信息。顺便一提,其他协议报文也可以携带端口信息,但是如果需要维护一个完整端口和邻居的关系,只有对hello报文的处理能达到这个目的。其他协议报文不一定会在两台相邻组播路由器之间产生,但相邻的组播路由器之间一定会有相互的hello协议报文发送。这儿判断两种不同情况主要是处理上的一个问题,当收到一个组播协议报文的时候,IP层并不能知道这个报文是什么报文,所以不管什么报文,IP层都把端口信息添加到报文后面上送到应用协议层,然后应用协议层再对报文的分析,如果是Hello报文,就处理其后端口信息,如果不是Hello协议报文,就把其后的端口信息丢弃,然后对报文进行正常的处理。注意,即使是Hello报文,也要在获得端口信息后,把IP层添加的信息去掉,才能进一步完成报文的协议处理。
应该注意的是,虽然以上对本发明的说明是参考其具体实施例进行的。但是,本发明领域的普通技术人员可以理解,在不背离本发明的精神和范围的情况下,可以对其做出各种修改和变换。而这些修改和变换都涵盖于由附带权利要求所定义的本发明的保护范围之内。
权利要求
1.一种利用组播PIM协议报文获得设备端口信息的方法,包括以下步骤1)当支持PIM组播协议的路由设备接收到PIM协议报文时,将本路由器收到该报文的物理端口信息直接添加到该报文当中,并将添加有端口信息的报文上报给PIM协议处理模块处理;2)PIM协议处理模块接收到所述带有端口信息的报文之后,从报文当中取出所述端口信息;3)PIM协议处理模块利用取出的所述端口信息建立端口与邻居的对应关系;以及4)PIM协议处理模块根据所述端口与邻居的对应关系来实现组播数据的转发。
2.根据权利要求1所述的方法,其特征在于,所述PIM协议报文为Hello报文。
3.根据权利要求2所述的方法,其特征在于,所述端口信息被添加在Hello报文的最后。
4.根据权利要求2所述的方法,其特征在于,所述端口信息被添加在Hello报文的源地址当中。
5.根据权利要求4所述的方法,其特征在于,所述端口信息被添加在Hello报文的源地址的保留字段当中。
全文摘要
本发明公开了一种利用组播PIM协议报文获得设备端口信息的方法,该方法包括以下步骤1)当支持PIM组播协议的路由设备的IP协议模块接收到PIM协议报文时,将接收该报文的物理端口信息直接添加到该报文当中,并将添加有端口信息的报文上报给PIM协议处理模块处理;2)PIM协议处理模块接收到带有端口信息的报文之后,从报文当中取出所述端口信息;3)PIM协议处理模块利用取出的端口信息建立端口与邻居的对应关系;以及4)PIM协议处理模块根据端口与邻居的对应关系来实现组播数据的转发。本发明的方法实现简单、扩展性兼容性好、无需修改原模块间的接口,从而使软件易于平台化,而且其中不同模块之间的耦合度减少,进而提高了软件的健壮性和可维护性。
文档编号H04Q3/545GK1567920SQ0313747
公开日2005年1月19日 申请日期2003年6月25日 优先权日2003年6月25日
发明者赵文鹏, 赵辉, 陈克华, 于勇, 顾新 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1