一种数据包转换装置及方法与流程

文档序号:13708720阅读:872来源:国知局
一种数据包转换装置及方法与流程

本发明要求2012年2月21日由西蒙.佩罗特等人递交的发明名称为“IGMP/MLD转换”的第61/601338号美国临时专利申请案的在先申请优先权,该在先申请的内容以引用的方式并入本文本中,如全文再现一般。

关于由联邦政府赞助的

研究或开发的声明

不适用。

缩微平片附件的引用

不适用。



背景技术:

组播网络路由协议可以在互联网协议(IP)网络上提供一对多和多对多的数据发送。组播协议允许数据通过组播网络从第一跳路由器(FHR)传输到最后一跳路由器(LHR),其中FHR可连接到源或汇聚点(RP),LHR可将数据转发到客户端设备。客户端设备可以使用互联网组管理协议(IGMP)在第四版IP(IPv4)网络中与组播网络交换数据,或者使用组播监听者发现协议(MLD)在第六版IP(IPv6)网络中与组播网络交换数据。配置与组播网络连接的节点可能无法为IPv4客户端和IPv6客户端提供信令,因为MLD协议和IGMP协议互斥。



技术实现要素:

在一项实施例中,本发明包括一种装置,包含一个网元(NE),用于接收第四版互联网协议(IPv4)格式的互联网组管理协议(IGMP)数据包,将所述数据包转换成第六版互联网协议(IPv6)格式的组播监听者发现协议(MLD)数据包,以及转发转换后的数据包。

在另一项实施例中,本发明包括一种装置,包含NE,用于接收IPv6格式的MLD数据包,以及将所述数据包转换成IPv4格式的IGMP数据包。

在又一项实施例中,本发明包括一种方法,包含接收多个数据包,其中所述多个数据包包括IGMP数据包和MLD数据包;将至少其中一个IGMP数据包转换成MLD数据包;以及将至少其中一个MLD数据包转换成IGMP数据包。

结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其他特征。

附图说明

为了更完整地理解本发明,现可参考以下简要描述,结合附图和详细描述,其中相同参考标号表示相同部分。

图1是IGMP/MLD转换网络的实施例的示意图。

图2是另一IGMP/MLD转换网络的实施例的示意图。

图3是另一IGMP/MLD转换网络的实施例的示意图。

图4是IGMP/MLD转换方法的实施例的示意图。

图5示出了编码转换后的第三版(v3)IGMP查询的实施例。

图6示出了编码转换后的第二版(v2)MLD查询的实施例。

图7示出了编码转换后的IGMPv3报告的实施例。

图8示出了编码转换后的MLDv2报告的实施例。

图9是NE的实施例的示意图。

具体实施方式

首先应该理解的是,尽管下面提供了一种或多种实施例的示例性实施方式,本发明公开的系统和/或方法可通过多种当前已知的或存在的技术实施。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。

本文公开了一种用于IGMP/MLD转换的系统和方法。NE可接收来自下游节点的MLD数据包,将这些数据包转换成IGMP数据包,并且将转换后的数据包转发到上游。NE还可接收来自下游节点的IGMP数据包,将这些数据包转换成MLD,并且将转换后的数据包转发到上游。NE可将一个代理置于下游接口上并将转换器置于上游接口上。NE还可连接到多个下游网络。NE可代理所有的下游网络并可转换少于所有网络。IGMP/MLD转换可以在不需要采用上层功能(例如应用层功能)的情况下在开放系统互连(OSI)模型的下层(例如IP层和以下)进行。此外,IGMP/MLD转换可以是完整的,而不是映射,可以是无状态的。

IGMP/MLD转换可以是IPv4到IPv6转变和共存的机制。IGMP/MLD转换可以使单栈(例如,仅IPv4或仅IPv6)主机可以作为监听者、源或两者参与不同地址族所属的组播组。转换机制可以包括IGMP/MLD代理。转换设备可以位于(例如,DSL网络的数字用户线(DSL)接入复接器(DSLAM)、有线网络的线缆调制解调器终端系统(CMTS)等中的)提供商网络边缘处的(例如用户驻地设备(CPE)中的)客户网络边缘,或IGMP/MLD数据包可到达的任何其他节点。代理功能可能是虚拟的,可以直接将其输出传送到组播路由器进程(例如,协议无关组播(PIM)后台程序)中,该组播路由器进程和转换代理运行在相同的主机上。

此外,本文所公开的方法和系统可通过IGMP/MLD代理提供组播数据流的IPv4和IPv6之间的转换。这可能允许单栈节点参与不同地址族的组播组。这种转换机制既支持发送也支持接收。可以支持任意源组播(ASM)、指定源组播(SSM)、PIM和其他组播网络。

图1是IGMP/MLD转换网络100的实施例的示意图。网络100可包括一个上游节点130、多个下游节点120和一个NE110。NE110可包括一个代理112和一个转换器114。NE110可接收来自下游节点120的IGMP或MLD消息,代理节点120,将IGMP消息转换成MLD,反之亦然,以及将所转换的消息转发给上游节点130。

例如,下游节点120可以置于IPv4网络中并采用IGMP。上游节点可以置于IPv6,可采用MLD,并可以连接到组播网络,例如协议无关组播(PIM)或其他组播网络。上游节点130和下游节点120可以不是双栈设备,并可以配置不进行IPv4/IPv6转化。NE110可以使用代理112和转换器114来进行MLD和IGMP之间的转换以允许下游节点120访问上游组播网络。转换器114和代理112可以是虚拟的,这样可允许NE110在没有双栈硬件的情况下进行转换。

IGMP/MLD代理112可以置于上游网络节点130和一个或多个下游网络节点120之间。代理112可以作为监听者并且可置于下游网络中,而其余的组播基础设施可以位于上游。另外,多个代理112可以以树形拓扑结构布置,其中一个代理112的上游网络是另一个代理112的下游网络。转换器114可以置于代理112和上游网络节点130之间,如图1所示。

如果转换器114和代理112置于相同的NE110中,NE110可作为一个转换组播路由器。或者,转换器114和代理112可以置于一个以上的NE110中,在这种情况下,转换器可充当链路层桥接器,其修改通过其传输的数据。将该转换器置于代理的上游而不是下游有两个原因:

转换器114可置于该代理的上游,因为在下游接口上转换地址可能干扰查询器选举。例如,IGMP和MLD路由器可在它们自己之间选举查询器。赢得选举的标准可以基于IGMP/MLD查询的源地址。将转换器114置于下游接口上可对地址映射方案造成额外的限制。例如,可能要求该方案在采用映射之前和之后确保相同的选举结果。相反,当转换应用到上游接口时可以消除这种限制。由于代理112可作为其上游接口上的客户端,代理112不能参与查询器选举。再例如,仅存在一个上游接口,而存在多个下游接口。将转换器114应用于上游接口可能需要单个转换点,这样可有助于调试和故障处理。

转换器进行的转换可应用到由在下游节点120上操作的客户端状态机上游发送的消息以及从上游节点130接收到的消息。这些数据包可以由转换器进行转换,但是本领域的技术人员将理解特定的实施方式可采用任何内部结构,只要外部可观察的行为与本文所述的行为一致。

图2是另一IGMP/MLD转换网络200的实施例的示意图。网络200可包括NE210、上游节点230、下游节点221和222、转换器214和代理212和213,这些与NE110、上游节点130、下游节点120、转换器114和代理112类似。然而,下游节点221和222可以置于不同的网络(例如,IPv4和IPv6)中,而上游节点230可与下游节点222共享一个网络类型(例如IPv6)。NE210可代理(213和212)下游节点221和222,但仅转换(214)不与上游节点230共享一个网络类型的下游节点221。

在混合网络中,当其中存在IPv4和IPv6接收器(例如,下游节点221和下游节点222)时,可采用两个逻辑代理(例如,代理212和代理213)。每个代理可保持成员关系状态并且将状态机运行在其代理的接收器的地址族中。例如,代理212可在下游节点221的网络中保持成员关系状态,代理213可在下游节点222的网络中保持成员关系状态。转换可应用于这两个下游节点中的一个(例如下游节点221)。

图3是另一IGMP/MLD转换网络300的实施例的示意图。网络300可包括含有转换器314和路由器316的NE310。NE310可接收从下游节点321和322发来的MLD/IGMP,下游节点321和322大体上类似于下游节点221和222。NE310可转换这些消息并采用路由器316以创建组播网络消息(例如PIM加入消息等)。路由器316随后可将这些信息转发到PIM节点330。因此,NE310可进行IGMP/MLD转换并可作为组播路由器操作。当转换器314作为组播路由器的一部分实施时,转换器314可置于下游接口上,如图所示。在该示例中,路由器316可在上游接口上传输PIM消息,在下游接口上传输IGMP/MLD。转发器314可以是完全虚拟的。

图4是IGMP/MLD转换方法400的实施例的流程图,该方法可以由NE110、210和/或310采用。在步骤401,方法400可接收一个消息并将目的地址从IPv4转换成IPv6,反之亦然。目的地址可以根据表1进行转换。

表1:IPv4/IPv6组播地址等价

方法400可前进到步骤402,将消息源地址设置为代理的上游接口的地址。源地址可如下进行转换:对于IGMP转换到MLD,源地址可以设置为分配给代理的上游接口的链路本地IPv6地址。对于MLD转换到IGMP,源地址可以设置为分配给代理的上游接口的IPv4地址。拥有未指定的源地址(0.0.0.0或::)的IGMP和MLD报告可能以不同的方式处理。在MLD中,可能丢弃它们。在MLD中,可能接受它们。为了消除这种不明确性,转换器可丢弃拥有未指定的源地址的IGMP和MLD报告。

方法400可前进到步骤403,转换消息的路由器警报选项。IGMP消息可以与路由器警报IPv4选项一起发送,而MLD消息可以与逐跳IPv6扩展头中的路由器警报选项一起发送。转换器可在这两种方式之间进行转换。具体而言,如果路由器警报选项在输入上接收,则其可以在输出上发送。该值可以设置为零,因为IPv4和IPv6值空间可能不完全相同。

方法400可前进到步骤404,可拦截消息(例如IGMP)并产生等价消息(例如MLD)。例如,IGMP/MLD消息可以由转换器(例如转换器114)处理,该转换器可归属于代理(例如代理112)的上游接口,在上游接口上,该代理可充当监听者。步骤401中的转换可应用于从代理(例如代理112)发送来的IGMP/MLD报告和离开/完成消息以及从路由器(例如上游节点130)接收到的IGMP/MLD查询。当接收到具有含有表2所列的其中一个值的类型字段的IGMP消息时,转换器可拦截该消息并产生一个等价MLD消息,该消息对应于相同行中具有所列的型号的第六版互联网控制消息协议(ICMPv6)消息。该转换器在接收到MLD消息时可进行反向操作。

表2:IGMP/MLD消息类型等价

方法400可前进到步骤405,在转换后的消息中设置转换后的比特。出于各种原因,包括操作性原因,将允许标识转换后的流量的机制包含在内可能是有用的。为此目的,可以采用IGMPv3和MLDv2中的预留比特。当设置为约1的值时,转换后的比特可表示消息至少已经转换一次。当设置为约0的值时,转换后的比特可表示没有进行转换。转换器可将转换后的比特在输出上设置为约1的值。默认情况下,该比特在输入上可忽略,意味着消息可能转换两次或多次。

方法400可前进到406,在最大响应延迟时间内转换这些消息。例如,IGMPv2和IGMPv3查询可包含指定最大响应时间(MRT)的字段,该最大响应时间可以是在发送报告之前所允许的最大时间,以十分之一秒为单位来表示。类似地,MLDv1和MLDv2查询可包含指定最大响应延迟(MRD)的字段,可以以毫秒为单位来表示。MLDv1可以直接将MRD值编码为一个二进制整数。IGMPv2可以直接将MRT值编码为一个二进制整数。IGMPv3和MLDv2同样可允许浮点编码。IGMPv2和IGMPv3可使用8比特字段,而MLDv1和MLDv2可使用16比特字段。转换算法的实施例可以如下:

IGMPv2to MLDv1:MRD=100*MRT

公式1

可以在IGMPv2中表示的所有值可以等价地、在不损失精确度的情况下在MLDv1中表示。

IGMPv3to MLDv2:MRD=100*MRT

公式2

可以在IGMPv3中表示的所有值可以等价地、在不损失精确度的情况下在MLDv2中表示。如果MRT<128,MRT和MRD都可以编码为二进制整数。如果128<=MRT<336,MRT可以编码为一个浮点值,而MRD可编码为一个二进制整数。如果336<=MTR,MRT和MRD都编码为浮点值。

MLDv1to IGMPv2:MRT=min(255,round(MRD/100))

公式3

MRD可以被100除,四舍五入为最接近的整数,然后取上限值255(可以是IGMPv2中可表示的最大MRT值)。精确度和范围都存在损耗。

MLDv2to IGMPv3:MRT=min(31744,round(MRD/100))

公式4

MRD可以被100除,四舍五入为最接近的整数,然后取上限值31744(可以是IGMPv3中表示的最大MRT值)。精确度和范围都存在损耗。如果MRD<12800,MRT和MRD都可以编码为二进制整数。如果12800<=MRD<32768,MRD可以编码为一个二进制整数,而MRT可编码为一个浮点值。如果32768<=MRD,MRT和MRD都可以编码为二进制整数。

方法400随后可前进到步骤407,进行任何消息特定转换。取决于待转换的消息,组播组地址可在IPv4和IPv6之间转换,如由Boucadair,M.(Boucadair)撰写的互联网工程任务组(IETF)文档draft-boucadair-64-multicast-address-format-00中所述,其内容以引用的方式并入。任何源地址(包含在步骤402的源地址转换)可以如下所述进行转换。在IGMP到MLD的转换中,IPv4源地址可以进行转换,如Bao,C.,撰写的IEFT文档请求注解(RFC)6052中所述,其内容以引用的方式并入。在MLD到IGMP的转换中,IPv4地址可以从IPv6源地址中提取,如RFC6052中所述。可以丢弃含有IPv4嵌入IPv6前缀之前的源地址的MLD消息,除非存在适用的静态配置映射。

又例如,IGMPv3和MLDv2消息和报告可包含附加数据,如由Cain,B.撰写的IEFT文档RFC3376和Vida,R.,撰写的RFC3810中所定义的,其内容以引用的方式并入。转换器可保留附加和辅助数据。这可以通过将这种数据看作是数据的不透明集合以及适当地设置相应的IPv4或ICMPv6长度字段。最大传输单元(MTU)问题可在应用层而不是在IP层进行处理。转换器可将大的报告消息拆分成适合转换后接口的MTU的较小消息,如RFC3376和3810中所述。

关于数据传送,IGMP/MLD转换器可用于转换组播数据包的头部或封装/解封装它们。这可应用于常规组播业务,并不应用于IGMP/MLD信令。可以根据Li,X.,撰写的IEFT文档RFC6145,其内容以引用的方式并入,以及Boucadair中规定的地址映射进行转换。可以丢弃具有MPREFIX64之外的具有源或目的地址的IPv6数据包,除非存在适用的静态配置映射。当通过IPvY网络(例如由IPv6网络分隔的未连接的IPv4网络)加入两个IPvX岛时,可以优选封装/解封装。发生封装/解封装的接口可以配置成转换器。当进行封装时,原始数据包不可以修改。如果该消息是IPv6数据包,该消息可以在IPv4数据包中进行封装,反之亦然。封装数据包的地址可以根据Boucadair通过映射原始数据包的那些地址获取。当进行解封装时,原始数据包可以从封装数据包的净荷中获取,并按原样转发,如Conta,A.,撰写的IEFT文档RFC2473中所述,其内容以引用的方式并入。

图5示出了编码转换后的IGMPv3查询500的实施例。查询500可包括转换比特505,该转换比特可设置为约1的值以表示该消息已经转换,以及约0的值以表示消息未转换。在IGMPv3查询500中,比特数64可能是转换后的比特,如图5所示。所有其他字段可以如RFC3376中所述进行编码。

图6示出了编码转换后的MLDv2查询600的实施例。查询600可包括转换后的比特605,其可以设置为约1的值以表示该消息已经被转换,以及设置为约0的值以表示消息未转换。在MLDv2查询中,比特数192可能是转换后的比特605,如图6所示。所有其他字段可以如RFC3810中所述进行编码。

图7示出了编码转换后的IGMPv3报告700的实施例。查询700可包括转换后的比特705,其可以设置为约1的值以表示该消息已经被转换,以及设置为约0的值以表示消息未转换。在IGMPv3报告中,比特数32可能是转换后的比特705,如图7所示。所有其他字段可以如RFC3376中所述进行编码。

图8示出了编码转换后的MLDv2报告800的实施例。查询800可包括转换比特805,该转换比特可设置为约1的值以表示该消息已经转换,以及设置为约0的值以表示消息未转换。在MLDv2报告中,比特数32可能是转换后的比特805,如图8所示。所有其他字段可以如RFC3810中所述进行编码。

图9是NE900的实施例的示意图,NE900可以作为网络100、200和/或300中的节点,例如NE110、210和/或330,和/或节点120、130、221、222、230、321、322和/或330。本领域技术人员将认识到,术语NE包含广泛范围的设备,NE900仅是其中的一个示例。包含NE900只是为了清楚地进行论述,而决不是将本发明的应用限于一个特定的NE实施例或一类NE实施例。本发明中描述的至少一些特征/方法可以在一个网络设备或部件里实现,例如NE900。举个例子,本发明的特征/方法可以通过安装硬件、固件、和/或软件运行硬件来实现。NE900可以是任何通过网络传输帧的设备。如图9所示,NE900可包括收发器(Tx/Rx)910,收发器可以是发射器、接收器和其组合。Tx/Rx910可以耦合到多个下游端口920用于传输和/或接收来自其他节点的帧,Tx/Rx910耦合到多个上游端口950用于传输和/或接收来自其他节点和/或天线的帧,以及处理器930耦合到Tx/Rx910以处理这些帧和/或确定将帧发送到哪些节点。NE900可以或可以不做出网络路由决策。处理器930可以包括一个或多个多核处理器和/或存储设备932,所述处理器和/或存储设备可以用作数据存储器。处理器930可以用于实施本文本所述的任一方案,例如IGMP/MLD转换方法400,并且可以使用硬件、软件或这两者来实施。下游端口920和/或上游端口950可以含有电和/或光发射和/或接收部件。

应理解,通过将可执行指令编程和/或加载至NE900,处理器930、存储器932和或Tx/Rx910中的至少之一被改变,将NE900的一部分转换成特定机器或装置,例如,本发明宣扬的拥有新颖功能的多核转发结构。加载可执行软件至计算机所实现的功能可以通过公知设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适于在软件中实施,因为重新编写硬件实施比重新编写软件设计更为昂贵。通常,稳定及大规模生产的设计更适于在如专用集成电路(ASIC)这样的硬件中实施,因为运行硬件实施的大规模生产比软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过公知设计规则转变成专用集成电路中等同的硬件实施,该集成电路硬线软件指令。由新ASIC控制的机器是一特定的机器或装置,同样地,编程和/或加载有可执行指令的电脑可视为特定的机器或装置。

本发明揭示多项实施例,且所属领域的技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改在本发明的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。在明确陈述数值范围或限制的情况下,应将此类表达范围或限制理解为包含属于明确陈述的范围或限制内的类似量值的迭代范围或限制(例如,从约为1到约为10包含2、3、4等;大于0.10包含0.11、0.12、0.13等)。例如,每当揭示具有下限Rl和上限Ru的数值范围时,具体是揭示落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R=Rl+k*(Ru-Rl),其中k是从1%到100%以1%增量递增的变量,即,k是1%、2%、3%、4%、5%、……50%、51%、52%、……95%、96%、97%、98%、99%或100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。相对于权利要求的某一要素,术语“可选择”的使用表示该要素可以是需要的,或者也可以是不需要的,二者均在所述权利要求的范围内。例如包括、包含和具有等较广义的术语,应被理解为用于支持较狭义的术语,例如“由……组成”、“基本上由……组成”、以及“大体上由……组成”等。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其他细节。

虽然本发明多个具体实施例,但应当理解,所公开的系统和方法也可通过其他多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其他系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦接或直接耦接或通信的其他项也可以采用电方式、机械方式或其他方式通过某一接口、装置或中间部件间接地耦接或通信。其他变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1