专利名称:隧道组播方法
技术领域:
本发明涉及的是一种网络数据广播方法,尤其涉及的是一种隧道组播方法,属于计算机通信领域。
背景技术:
基于因特网(INTERNET)的多媒体数据广播应用被认为大有发展前景,经文献检索,作者为Lars Tvede et.Al,机械工业出版社2002年出版的《数据广播》P36-37,提出实现有选择的网络数据广播,需要建立多条点对点连接,每条连接针对一个用户,发送相同的数据报,这带来了服务器资源的极大浪费,其结果是对可支持的并发用户数量的减少,同时应用程序开发极其复杂。网际协议(IP)组播技术的出现为网络数据广播带来了新的解决方案,但目前因特网无法支持全网范围的网际协议组播,尽管部分路由器具备支持网际协议组播的能力,但在全网范围内实现组播涉及到非常多的问题,不但有技术方面,也涉及到对组播地址有效分配这样的管理问题等等。目前看来,很难在中短期内使因特网提供全网范围内的组播支持,而目前已出现许多基于网际协议组播技术的应用产品,其结果是这些产品只能应用于局域环境,无法扩展到广域网上。
发明内容
和
具体实施例方式
本发明针对现有技术的不足和缺陷,提供一种隧道组播方法,使其在现有因特网上实现大容量数据组播应用,可以在不支持网际协议组播的网络环境中模拟实现网际协议组播功能,并且有效回避了操作系统对于大量并发用户数据报协议(UDP)连接支持的瓶颈,使用这种方法可以最大限度发挥网络的带宽资源,使得开发因特网数据广播业务变得十分容易,并且可以实现基于网际协议组播的应用从局域环境到广域环境的平稳扩展。本发明的技术方案是通过以下途径实现的,本发明方法分为两个部分应用数据流程和用户信息流程,这两个流程异步执行,用户信息流程为应用数据流程服务,具体如下(1)用户信息流程●用户信息接收模块通过传输控制协议(TCP)或用户数据报协议(UDP)接收用户加入或退出某个组播组的请求,并交给用户信息管理模块处理;●用户信息管理模块根据用户的网际协议地址利用地址解析协议(ARP),利用套接口输入输出(IO)操作等方式获得该用户对应的以太网地址(MAC)地址,并将这些信息组成用户信息数据报,其中包括用户网际协议地址、UDP接收端口号、MAC地址以及相应的组播地址;●用户信息管理模块通过绑定到特定端口A的UDP套接字向下发送用户信息数据报,该数据报最终以以太帧的形式到达网卡驱动模块;● 网卡驱动模块根据端口A(对应以太帧中网际协议分组中的UDP头的源端口)判别该数据帧为用户信息数据帧,将其中信息更新用户信息表。
网卡驱动模块中用户信息表结构如下<用户网际协议地址、用户UDP接收端口号、用户MAC地址、组播地址>。
(2)应用数据流程●业务数据接收模块通过TCP连接接收属于某个组播组的业务数据报即组播数据报,并交给业务数据转发模块;●业务数据转发模块将接收到的组播数据报通过绑定到特定端口B的UDP套接字向下传送,该数据报最终以以太帧的形式到达网卡驱动模块;●网卡驱动模块根据端口B判别该数据帧属于某个组播组即组播数据帧,通过该方法可以将组播数据帧和常规数据帧(不需要被发送到多个用户的以太帧)区分开来,使得网卡驱动模块可以支持常规的网络功能;●网卡驱动模块依照用户信息表并通过中断调用向属于该组播组的各个用户重复发送该组播数据帧,具体方法是,当一个组播数据帧到达驱动时,先发送它,然后在网卡发送操作完毕产生的中断中,根据用户信息表中的信息,重置该数据帧,再通过网卡向下一个用户发送出去。
由于以太帧允许的最大长度远远小于网际协议分组的最大长度,为了提高网卡驱动中以太帧数据重置的效率,要求发送过来的业务数据报最大长度必须小于以太帧最大长度减去以太帧头长度、网际协议分组头长度以及UDP数据报头长度,如果业务数据报的长度超过该限制,则可以通过应用层的分拆和重组来实现。
以下对本发明方法作进一步的描述
●物理层数据重发传统的数据广播方式是由应用层负责将同样内容的应用数据报重发给各个客户,而本发明将数据重发任务从应用层移到了物理层,重发对象由应用数据报变成了以太帧,通过修改操作系统内核级的网卡驱动程序来实现这一目的,需要重发的单份数据从应用层到达网卡驱动层后,由网卡负责向各个目的地址的用户重发数据,就好象从应用层到物理层建立了一条高速通道一样(隧道),这样可以充分利用网络带宽,减少大量数据复制带来的操作系统处理开销,以及减少数据经过协议栈的开销,显著地提高数据重复发送的效能。
●中断调用数据重发为了实现高效的网卡数据重发功能,采用在中断中重发数据的方法,网卡每发送完一个以太帧时,会产生网卡中断并且调用中断处理程序,此时可以在该中断处理程序中完成重发任务。
●无缝数据修改为了实现无缝的UDP数据报重发目的还需要根据用户信息来更改重发的以太帧中的部分字段,包括以太帧头的目标地址字段、以太帧中封装的网际协议分组头的目标地址字段和校验和字段、以太帧中封装的网际协议分组中的UDP头的目标端口字段和校验和字段,设置方法如下■以太帧头目标地址字段对应用户信息表中的MAC地址;■网际协议数据报报头目标地址字段对应用户信息表中的网际协议地址;■UDP头目标端口字段对应用户信息表中的UDP接收端口。
●网际协议、UDP校验和快速重算法由于被重发的以太帧中的内容数据是一样的,根据标准的校验和算法,可以快速地计算需要重新设置的二个校验和,实现方法如下原有校验和反码,加上需要修改的新数据的反码,需要修改的新数据包括网际协议数据报报头目标地址字段、UDP头目标端口字段,减去该新数据对应的原数据的反码,再将所得值求反码,表示式如下C1=~(~C+~D1-~D)C1为新校验和,C为原校验和,D1为修改的新数据,D为对应的原数据,~代表反码操作,根据UDP标准协议,若计算得到的UDP校验和为0则实际取0xFFFF。
●网际协议组播数据报隧道发送技术该技术的设计目的是将基于网际协议组播的应用从局域网环境扩展到广域网上。应用服务程序采用网际协议组播技术发送应用数据,客户端同样采用网际协议组播技术接收来自服务器的数据,在局域网环境中这样的应用模式没有问题,但到了广域网上,由于目前INTERNET不支持网际协议组播,这样的通信模式便无法正常工作了。
网际协议组播数据报隧道发送技术专门用于解决这样的问题,包括服务器端组播数据截获模块和客户端驱动模块,服务端程序和应用服务程序位于同一台计算机或局域网内的各个计算机上,服务端程序捕获应用服务程序发送的组播数据报,经过封装通过TCP连接送到采用隧道组播技术构建的专用数据发送服务器即隧道组播服务器;客户端驱动程序接收该服务器发来的单播UDP数据报,经过处理后恢复成原始形式的组播数据报,并以相应的组播地址和端口通过本地回路127.0.0.1发送该数据,这样原有应用客户端程序就可以接收到数据了。该方法就好象在广域网上通过专门的隧道来传送组播数据报。
本发明具有实质性特点和显著进步,本发明将基于网际协议组播的应用扩展到广域网上,并实现高效的UDP数据报广播,以支持超大容量的并发用户,采用本发明后可以实现以下二个主要优势功能网络带宽利用率接近100%,支持超大容量的并发用户,其数目完全由可用网络带宽资源决定,可以用以下公式近似计算最大并发用户数=服务器全部可用网络带宽/单用户数据发送量;可以将网际协议组播数据报通过INTERNET透明地传送到终端用户,并被客户应用程序无缝地接收,通过和微软的流媒体服务器配合使用,实现了广域范围内的流媒体广播。
结合本发明的内容提供以下实施例隧道组播技术和现有的流媒体系统配合使用,可以实现广域范围的流媒体广播,并且可以支持大容量的并发用户。隧道组播服务器是采用隧道组播技术实现的专用数据组播设备,视频服务器采用微软的流媒体服务器,节目内容可以为视频文件、直播节目等多种形式。
组播数据报截获程序(可以运行于隧道组播服务器上也可以运行于视频服务器上)截获发自流媒体服务器的媒体业务数据报,经过分片处理后发送到隧道组播服务器,隧道组播服务器通过隧道组播技术以UDP单播数据报的形式将媒体数据发送到属于该组播组的全部用户。用户端的接收驱动程序将接收到UDP数据报恢复成标准的原始业务数据包并以组播的方式通过本地回路127.0.0.1向上发送,该过程实现了网际协议组播数据报的透明传送。
多台隧道组播服务器完成大并发量的数据分发,按照500Kbps的视频节目带宽速率计算,通过隧道组播技术,单台4端口100M网卡的隧道组播服务器可支持约800个并发用户,而传统的服务器工作方式单台(PIII-1G处理器)可以支持的这样带宽的视频业务并发容量小于70个。
权利要求
1.一种隧道组播方法,其特征在于分为两个部分应用数据流程和用户信息流程,这两个流程异步执行,用户信息流程为应用数据流程服务,具体如下(1)用户信息流程●用户信息接收模块通过传输控制协议或用户数据报协议接收用户加入或退出某个组播组的请求,并交给用户信息管理模块处理;●用户信息管理模块根据用户的网际协议地址利用地址解析协议获得该用户对应的以太网地址,并将这些信息组成用户信息数据报,其中包括用户网际协议地址、接收端口号、以太网地址以及相应的组播地址;●用户信息管理模块通过绑定到特定端口A的用户数据报套接字向下发送用户信息数据报,该数据报最终以以太帧的形式到达网卡驱动模块;●网卡驱动模块根据端口A,对应以太帧中网际协议分组中的用户数据报报头的源端口,判别该数据帧为用户信息数据帧,将其中信息更新用户信息表;(2)应用数据流程●业务数据接收模块通过连接控制协议接收属于某个组播组的业务数据报即组播数据报,并交给业务数据转发模块;●业务数据转发模块将接收到的组播数据报通过绑定到特定端口B的用户数据报套接字向下传送,该数据报最终以以太帧的形式到达网卡驱动模块;●网卡驱动模块根据端口B判别该数据帧属于某个组播组即组播数据帧,通过该方法将组播数据帧和常规数据帧区分开来;●网卡驱动模块依照用户信息表并通过中断调用向属于该组播组的各个用户重复发送该组播数据帧,具体方法是,当一个组播数据帧到达驱动时,先发送它,然后在网卡发送操作完毕产生的中断中,根据用户信息表中的信息,重置该数据帧,再通过网卡向下一个用户发送出去。
2.根据权利要求1所述的这种隧道组播方法,其特征是以下对本发明方法作进一步的描述●物理层数据重发将数据重发任务从应用层移到了物理层,重发对象由应用数据报变成了以太帧,通过修改操作系统内核级的网卡驱动程序来实现,需要重发的单份数据从应用层到达网卡驱动层后,由网卡负责向各个目的地址的用户重发数据;●中断调用数据重发实现高效的网卡数据重发功能通过采用在中断中重发数据的方法,网卡每发送完一个以太帧时,产生网卡中断并且调用中断处理程序,此时在该中断处理程序中完成重发任务;●无缝数据修改实现无缝的用户数据报重发根据用户信息来更改重发的以太帧中的部分字段,包括以太帧头的目标地址字段、以太帧中封装的网际协议分组头的目标地址字段和校验和字段、以太帧中封装的网际协议分组中的用户数据报报头的目标端口字段和校验和字段,设置方法如下■以太帧头目标地址字段对应用户信息表中的以太网地址;■网际协议数据报报头目标地址字段对应用户信息表中的网际协议地址;■用户数据报报头目标端口字段对应用户信息表中的用户数据报接收端口;●网际协议、用户数据报校验和快速重算法被重发的以太帧中的内容数据是一样的,根据标准的校验和算法,快速地计算需要重新设置的二个校验和,实现方法如下原有校验和反码,加上需要修改的新数据的反码,需要修改的新数据包括网际协议数据报报头目标地址字段、用户数据报报头目标端口字段,减去该新数据对应的原数据的反码,再将所得值求反码,表示式如下C1=~(~C+~D1-~D)C1为新校验和,C为原校验和,D1为修改的新数据,D为对应的原数据,代表反码操作,根据用户数据报标准协议,若计算得到的用户数据报校验和为0则实际取0xFFFF;●网际协议组播数据报隧道发送技术网际协议组播数据报隧道发送技术包括服务器端组播数据截获模块和客户端驱动模块,服务端程序和应用服务程序位于同一台计算机或局域网内的各个计算机上,服务端程序捕获应用服务程序发送的组播数据报,经过封装通过传输控制协议连接送到采用隧道组播技术构建的专用数据发送服务器即隧道组播服务器;客户端驱动程序接收该服务器发来的单播用户数据报,经过处理后恢复成原始形式的组播数据报,并以相应的组播地址和端口通过本地回路127.0.0.1发送该数据,原有应用客户端程序就可以接收到数据。
3.根据权利要求1所述的这种隧道组播方法,其特征是网卡驱动模块中用户信息表结构如下<用户网际协议地址、用户数据报接收端口号、用户以太网地址、组播地址>。
4.根据权利要求1所述的这种隧道组播方法,其特征是应用数据流程中发送过来的业务数据报最大长度必须小于以太帧最大长度减去以太帧头长度、网际协议分组头长度以及用户数据报报头长度,业务数据报的长度超过该限制,则通过应用层的分拆和重组来实现。
全文摘要
隧道组播方法属于计算机通信领域,分为两个部分应用数据流程和用户信息流程,两个流程异步执行,用户信息流程为应用数据流程服务,用户信息流程用户信息接收模块接收用户请求,交用户信息管理模块处理;用户信息管理模块组成用户信息数据报;并向下发送用户信息数据报到达网卡驱动模块;网卡驱动模块将其中信息更新用户信息表;应用数据流程业务数据接收模块接收业务数据报,交业务数据转发模块;业务数据转发模块将接收到的组播数据报向下传送到网卡驱动模块;网卡驱动模块将组播数据帧和常规数据帧区分开;并向该组播组用户重复发送该组播数据帧。本发明实现了高效用户数据报广播,网络带宽利用率接近100%,并支持超大容量的并发用户。
文档编号H04L12/18GK1402470SQ0213695
公开日2003年3月12日 申请日期2002年9月12日 优先权日2002年9月12日
发明者程杨, 黄海欣 申请人:上海华广科技有限公司