无重组的分组片段转发的制作方法

文档序号:19247684发布日期:2019-11-27 19:49阅读:175来源:国知局
无重组的分组片段转发的制作方法

本公开涉及基于分组的计算机网络,并且更具体地涉及处理网络设备内的分组。



背景技术:

互联网协议版本6(ipv6)是互联网协议版本4(ipv4)的后续版本,这两者都是用于经由诸如互联网的网络发送和接收数据的互联网协议的版本。ipv6解决了ipv4的潜在问题,诸如,地址耗尽。网络已经开始从ipv4向ipv6过渡,ipv6网络正在ipv4网络旁部署。用于促进从ipv4到ipv6的过渡的一个示例机制是封装下的地址和端口映射(map-e)。map-e是一种跨ipv6网络传输ipv4网络分组的机制,其使用互联网协议(ip)封装将ipv4网络分组封装在ipv6网络分组中。

将ipv4网络与ipv6网络连接的网络设备能够使用将ipv4网络分组封装在ipv6网络分组内的map-e,通过ipv6网络从ipv4网络转发ipv4网络分组。网络设备可以接收ipv4网络分组的片段,由片段重组完整的ipv4网络分组,将ipv4网络分组封装在ipv6网络分组内,并将ipv6网络分组转发到ipv4网络。网络设备还能够通过从封装ipv4分组的ipv6网络分组中解封ipv4分组并将解封后的ipv4网络分组转发到ipv4网络,来将封装在ipv6网络分组内的ipv4网络分组从ipv6网络转发到ipv4网络。



技术实现要素:

本公开描述了用于通过在不重组ipv4网络分组的情况下,接收ipv4网络分组的片段并将ipv4网络分组的片段封装在ipv6网络分组内来将ipv4网络分组转发到ipv6网络的技术。替代地,封装片段的目的地设备可以执行ipv4网络分组的重组。ipv4网络分组可以使用地址加端口技术进行分组路由,其中ipv4网络分组指定的源地址可以由ipv4网络分组指定的源端口的至少一部分扩展,并且由ipv4网络分组指定的目的地地址可以由ipv4网络分组指定的目的地端口的至少一部分扩展。

因为根据map-e执行地址映射可以包括将ipv4网络分组指定的目的地地址和目的地端口映射到ipv6目的地地址,所以网络设备在其已经接收到目的地地址和目的地端口两者的指示前不能执行map-e。此外,因为不是ipv4网络分组的每个片段可以包括ipv4网络分组指定的目的地端口的指示,并且片段可能是被无序地接收的,所以在网络设备接收到包括目的地端口的指示的片段之前,网络设备可能接收到不包括目的地端口的指示的一个或多个片段。map-e是在请求批注(rfc)7597(requestforcomments(rfc)7597)中描述的提议标准,其最新草案位于https://tools.ietf.org/html/rfc7597,其全部内容通过引用结合于此。

根据本公开的方面,一种网络设备可以缓冲接收的ipv4网络分组的片段,直到接收到包括目的地端口的指示的ipv4网络分组的片段。当网络设备接收到包括目的地端口的指示的ipv4网络分组的片段时,网络设备可以使用map-e将ipv4网络分组的目的地地址和目的地端口映射到ipv6目的地地址,将接收的ipv4网络分组的片段中的每一个片段封装在ipv6网络分组中,并基于ipv6目的地地址通过ipv6网络转发所封装的ipv4网络分组的片段。当网络设备随后接收到ipv4网络分组的额外片段时,网络设备还可以将ipv4网络分组的额外片段中的每一个片段封装在相应的ipv6网络分组内,并且基于ipv6目的地地址通过ipv6网络来转发相应封装的ipv4网络分组的额外片段。

本文中描述的技术可以提供某些优点。例如,通过将ipv4网络分组的片段封装在ipv6网络分组内并将封装的ipv4网络分组的片段转发到ipv6网络,本文中描述的技术可以允许网络设备避免由ipv4网络分组的片段重组整个ipv4网络分组。因为执行ipv4网络分组的重组使用处理器和存储器资源,所以避免由ipv4网络分组的片段重组ipv4网络分组可以使网络设备能够以使用较少处理器和存储器资源的方式将ipv4网络分组转发到ipv6网络。这通过使网络设备能够提高其将ipv4网络分组转发到ipv6网络的速度,同时消耗较少的处理能力并使用较少的存储器来执行这样的转发,提高了网络设备在将ipv4网络分组转发到ipv6网络时的性能。这还通过减少用于处理片段的处理器和存储器资源的量而提高了网络设备可以处理的片段的数量,从而提高了网络设备的可扩展性。

另外,通过在不由片段重组整个ipv4网络分组的情况下转发ipv4网络分组的片段,本文中公开的技术可以避免必须重新分段重组的ipv4网络分组,从而减少了由网络设备执行的处理量。例如,封装重组的ipv4网络分组的ipv6网络分组的大小将大于封装ipv4网络分组的片段的ipv6网络分组。因此,封装重组的ipv4网络分组的ipv6网络分组更可能超过ipv6网络的一个或多个链路的最大传输单元(mtu)。如果封装重组的ipv4网络分组的ipv6网络分组超过ipv6网络的一个或多个链路的mtu,则可能需要将重组的ipv4网络分组进行分段以便将ipv4网络分组转发到ipv6网络。

本公开还描述了用于在不根据ipv4网络分组的封装在ipv6网络分组内的片段重组ipv4网络分组的情况下,将封装在ipv6网络分组内的ipv4网络分组的片段转发到ipv4网络并且对这种网络分组执行反欺骗检查的技术。网络设备可以至少部分地基于ipv4网络分组指定的源地址和源端口来对封装在ipv6网络分组内的ipv4网络的片段执行反欺骗检查。这样,网络设备不能执行ipv4网络分组的反欺骗检查,直到网络设备已经接收到源地址和源端口的指示。此外,因为不是ipv4网络分组的每个片段都可以包括ipv4网络分组指定的源端口的指示并且片段可能是被无序地接收的,所以在网络设备接收到包括源端口的指示的片段之前,网络设备可能接收到封装在ipv6网络分组内的不包括源端口的指示的一个或多个片段。这些技术提供了与上面关于无重组地封装ipv4网络分组的片段讨论的类似优点。

根据本公开的方面,网络设备可以接收携带ipv4网络分组的片段的ipv6网络分组,从ipv6网络分组解封片段,并且缓冲片段直到网络设备接收到携带包括源端口的指示的ipv4网络分组片段的ipv6网络分组。当网络设备接收到携带包括源端口的指示的ipv4网络分组的片段的ipv6网络分组时,网络设备可以至少部分地基于ipv4网络分组的源地址和源端口对ipv4网络分组执行反欺骗检查。如果ipv4网络分组通过了反欺骗检查,则网络设备可以将其已经接收的片段中的每一个片段转发到ipv4网络,并且可以将其随后接收的任何额外片段转发到ipv4网络。如果ipv4网络分组未通过反欺骗检查,则网络设备可以丢弃接收到的ipv4网络分组的片段中的每一个片段,并且还可以丢弃任何随后接收到的ipv4网络分组的片段。

本文中描述的技术可以提供某些优点。例如,本文中描述的技术可以允许网络设备避免为了对网络分组执行反欺骗检查,由ipv4网络分组的片段重组整个ipv4网络分组。因为执行ipv4网络分组的重组使用处理器和存储器资源,所以避免由ipv4网络分组的片段重组ipv4网络分组可以使网络设备能够以使用较少处理器和存储器资源的方式来执行反欺骗检查。这通过使网络设备提高对ipv4网络分组执行反欺骗检查的速度,同时消耗较少的处理能力并使用较少的存储器来执行这样的反欺骗检查而提高了网络设备在对ipv4网络分组执行反欺骗检查时的性能。

在一个实例中,本公开涉及一种方法。该方法包括由网络设备从第一网络接收与网络分组相关联的片段流中的一个或多个片段,其中,网络分组是第一类型的网络分组。该方法进一步包括响应于确定网络设备尚未接收到片段流中的包括网络分组的目的地端口的指示的片段,由网络设备缓冲一个或多个片段。该方法进一步包括由网络设备接收片段流中的包括网络分组的目的地端口的指示的该片段。该方法进一步包括响应于接收到片段流中的包括网络分组的目的地端口的指示的该片段,由网络设备在不由一个或多个片段和该片段重组网络分组的情况下,至少部分地基于网络分组的目的地端口将片段流中的一个或多个片段和片段流中的该片段封装在多个网络分组内,其中,多个网络分组均是第二类型的网络分组。该方法进一步包括由网络设备向第二网络分发多个网络分组。

在另一个实例中,本公开涉及一种网络设备。该网络设备包括一个或多个网络接口,一个或多个网络接口被配置为从第一网络接收与网络分组相关联的片段流中的一个或多个片段,其中,网络分组是第一类型的网络分组。该网络设备进一步包括一个或多个处理器,一个或多个处理器被配置为响应于确定网络设备尚未接收到片段流中的包括网络分组的目的地端口的指示的片段来将一个或多个片段缓冲在片段缓冲器中。一个或多个网络接口进一步被配置为从第一网络接收片段流中的包括网络分组的目的地端口的指示的该片段。一个或多个处理器进一步被配置为响应于一个或多个网络接口接收到片段流中的包括网络分组的目的地端口的指示的该片段,在不由一个或多个片段和该片段重组网络分组的情况下,至少部分地基于网络分组的目的地端口将片段流中的一个或多个片段和片段流中的该片段封装在多个网络分组内,其中,多个网络分组均是第二类型的网络分组。一个或多个网络接口进一步被配置为将多个网络分组分发至第二网络。

在另一实例中,本公开涉及一种方法。该方法包括由网络设备从第一网络接收第一网络分组类型的一个或多个网络分组,其中,一个或多个网络分组中的每一个网络分组封装与第二网络分组类型的网络分组相关联的片段流中的一个或多个片段中的相应一个片段。该方法进一步包括响应于确定片段流的一个或多个网络分组不包括片段流中的包括网络分组的源端口的指示的片段,由网络设备缓冲片段流中的一个或多个片段。该方法进一步包括由网络设备接收对片段流中的包括网络分组的源端口的指示的片段进行封装的第一网络分组类型的网络分组。该方法进一步包括响应于接收到对片段流中的包括网络分组的源端口的指示的该片段进行封装的第一网络分组类型的网络分组,由网络设备在不由片段流中的一个或多个片段和片段流中的该片段重组第二网络分组类型的网络分组的情况下,至少部分地基于第二网络分组类型的网络分组的源端口对片段流中的一个或多个片段和片段流中的该片段执行反欺骗检查。该方法进一步包括响应于片段流中的一个或多个片段和片段流中的该片段通过反欺骗检查,由网络设备向第二网络分发片段流中的一个或多个片段和片段流中的该片段。

在另一个实例中,本公开涉及一种网络设备。该网络设备包括一个或多个网络接口,一个或多个网络接口被配置为从第一网络接收第一网络分组类型的一个或多个网络分组,其中,一个或多个网络分组中的每一个网络分组封装与第二网络分组类型的网络分组相关联的片段流中的一个或多个片段中的相应一个片段。该网络设备进一步包括一个或多个处理器,一个或多个处理器被配置为响应于确定片段流的一个或多个网络分组不包括片段流中的包括网络分组的源端口的指示的片段来将片段流中的一个或多个片段缓冲在片段缓冲器中。一个或多个网络接口进一步被配置为接收对片段流中的包括网络分组的源端口的指示的片段进行封装的第一网络分组类型的网络分组。一个或多个处理器进一步被配置为:响应于一个或多个网络接口接收到对片段流中的包括网络分组的源端口的指示的该片段进行封装的第一网络分组类型的网络分组,在不由片段流中的一个或多个片段和片段流中的该片段重组第二网络分组类型的网络分组的情况下,至少部分地基于第二网络分组类型的网络分组的源端口对片段流中的一个或多个片段和片段流中的该片段执行反欺骗检查。一个或多个网络接口进一步被配置为响应于片段流中的一个或多个片段和片段流中的该片段通过反欺骗检查,将片段流中的一个或多个片段和片段流中的该片段分发至第二网络。

在附图和以下描述中阐述了本公开的一种或多种技术的细节。根据说明和附图中以及根据权利要求中,本技术的其他特征、目的和优点将显而易见。

附图说明

图1是示出根据本文中描述的技术的系统的框图,其中网络设备可以将ipv4网络连接至ipv6网络。

图2是示出根据本文中描述的技术的示例网络设备10的框图,该网络设备被配置为在不重组ipv4网络分组的情况下将ipv4网络分组的片段封装在ipv6分组中,并且在不从其片段重组ipv4网络分组的情况下对ipv4网络分组的片段执行反欺骗检查。

图3a和图3b是示出根据本文中描述的技术的被分段成示例片段的示例ipv4网络分组和封装示例ipv4网络分组的示例片段的示例ipv6网络分组的框图。

图4是示出根据本文中描述的技术的示例片段流的状态转换的框图。

图5a至图5c描绘了示出根据本文中描述的技术的用于在不重组ipv4分组的情况下将ipv4分组封装在ipv6分组中的示例过程的流程图。

图6是示出根据本文中描述的技术的用于对片段流的片段执行反欺骗检查的示例片段流的状态转换的框图。

图7a至图7d描绘了示出根据本文中描述的技术的用于从ipv6分组解封ipv4分组的片段并在不重组ipv4分组的情况下对片段执行反欺骗检查的示例过程的流程图。

图8是示出根据本文中描述的技术的用于在不重组ipv4分组的情况下将ipv4分组封装在ipv6分组中的示例过程的流程图。

图9是示出根据本文中描述的技术的用于从ipv6分组解封ipv4分组的片段并在不重组ipv4分组的情况下对片段执行反欺骗检查的示例过程的流程图。

具体实施方式

图1是示出根据本文中描述的技术的系统2的框图,其中网络设备10可以将ipv4网络4连接至ipv6网络6。网络设备10可以例如是由map域的边缘处的服务提供商所管理的支持map-e的路由器(map-eenabledrouter,map-e允许路由器)(例如,map边界中继器),其具有至少一个将网络设备10连接至ipv6网络6的支持ipv6的接口以及至少一个将网络设备连接至ipv4网络4的ipv4接口。在一些实例中,系统2中的一些或全部可以是服务提供商网络(未示出)的一部分。

如图1中所示,网络设备10可以从ipv4网络4接收ipv4网络分组,将ipv4网络分组封装到ipv6网络分组中,并且可以通过ipv6网络6转发封装的ipv6网络分组。在该实例中,ipv6网络6还可以包括客户边缘(ce)设备8a-8n(“ce设备8”),封装的ipv6网络分组被转发至客户边缘设备8。ce设备8可以是在map部署中用作客户边缘路由器的设备。例如,ce设备8中的一个或多个可以为具有一个广域网侧接口和一个或多个局域网侧接口的住宅站点(residentialsite)提供服务。在一些实例中,ipv6网络6可以是专用网络或服务提供商网络,而ipv4网络4可以是公共网络(例如,互联网)。在一些实例中,网络设备10、ipv6网络6和ce设备8可以形成map域。在一些实例中,网络设备10还可以自ipv6网络6(诸如,自ce设备8)接收封装ipv4网络分组的ipv6网络分组,对ipv6网络分组执行反欺骗检查,并且如果ipv6网络分组通过反欺骗检查,则将封装在ipv6网络分组内的ipv4网络分组转发到ipv4网络4。在一些实例中,网络设备10和ce设备8均可以是双协议栈设备(dualstackeddevice),因为它们可以与ipv4设备、ipv6设备和其他双协议栈设备同等地互操作。例如,ce设备8可以经由ipv6网络6来与网络设备10交互,但是也可以操作性地连接至ipv4网络,以将ipv4网络分组转发到ipv4设备。

ipv4网络分组可以使用地址加端口技术进行分组路由,其中ipv4网络分组指定的ipv4目的地地址可以由ipv4网络分组指定的目的地端口的至少一部分来扩展。为了将ipv4网络分组路由通过ipv6网络6到其预期目的地,网络设备10可以将其从ipv4网络4接收的ipv4网络分组封装在ipv6网络分组内。网络设备10可以执行封装下的地址和端口映射(mappingofaddressandportwithencapsulation,map-e),以将ipv4网络分组指定的ipv4目的地地址和目的地端口映射到ipv6目的地地址,并将ipv4网络分组封装在指定ipv6目的地地址的ipv6网络分组中,使得ipv6网络分组可以路由通过ipv6网络6到其预期目的地。

网络设备10可以接收呈片段的形式的ipv4网络分组,其中每个片段包括ipv4网络分组的一部分。为了通过ipv6网络6将ipv4网络分组的片段转发到ipv4目的地地址指定的其预定目的地和ipv4网络分组指定的目的地端口的至少一部分,网络设备10可以执行map-e以至少部分地基于由ipv4网络分组指定的ipv4目的地地址和目的地端口来确定对应的ipv6目的地地址,至少部分地基于ipv6网络地址将每个片段封装在ipv6网络分组中,并且将每个封装的片段转发通过ipv6网络6到由ipv6网络地址指定的预期目的地。

因为执行map-e包括将ipv4网络分组指定的ipv4目的地地址和目的地端口映射到ipv6目的地地址,所以网络设备10在其接收到ipv4网络分组指定的目的地地址和目的地端口的指示前,可能无法将ipv4网络分组封装到ipv6网络分组中并转发ipv6网络分组。虽然ipv4网络分组的每个片段包括ipv4网络分组的目的地地址的指示,但是并非ipv4网络分组的每个片段会包括ipv4网络分组的目的地端口的指示。在一些实例中,仅单个ipv4网络分组的片段会包括ipv4网络分组的目的地端口的指示。

根据本公开的一些方面,网络设备10可以接收不包括目的地端口的指示的ipv4网络分组的片段,并且可以将接收到的ipv4网络分组的片段缓冲在缓冲器中,直到网络设备10接收到包括由ipv4网络分组指定的目的地端口的指示的ipv4网络分组的片段。当网络设备10接收到包括目的地端口的指示的ipv4网络分组的片段时,网络设备10可以至少部分地基于ipv4网络分组指定的ipv4目的地地址和目的地端口,将网络设备10所接收到的每个片段封装在ipv6网络分组中,并且可以通过ipv6网络6转发封装的网络分组。当网络设备10在接收包括目的地端口的指示的ipv4网络分组的片段之后,接收到ipv4网络分组的额外片段时,网络设备10可以将那些片段封装在ipv6网络分组中,并且可以通过ipv6网络6来转发封装的网络分组,而不将额外片段缓冲在缓冲器中或至少部分地基于额外片段重组ipv4网络分组。

网络设备10还可以将已经封装在ipv6网络分组中的ipv4网络分组从ipv6网络6转发到ipv4网络4,并且通过ipv4网络4将ipv4网络分组路由到其预期目的地。具体地,网络设备10可以从ipv6网络6接收封装有要转发到ipv4网络4的ipv4网络分组的片段的ipv6网络分组。为了防止ipv4地址的欺骗,网络设备10可以对其接收的封装有ipv4网络分组的片段的呈ipv6网络分组的形式的ipv4网络分组的片段执行反欺骗检查。网络设备10可以缓冲ipv4网络分组的片段,直到其已经接收到与ipv4网络分组相关联的使其能够对ipv4网络分组的片段执行反欺骗检查的信息。

网络设备10可以至少部分地基于ipv4网络分组的片段指定的ipv4源地址和源端口,对嵌入ipv6网络分组内的ipv4网络分组的片段执行反欺骗检查。然而,并非ipv4网络分组的每个片段会包括ipv4网络分组的源端口的指示。在一些实例中,ipv4网络分组中仅有单个片段可包括ipv4网络分组的源端口的指示。

根据本公开的一些方面,网络设备10可以接收封装有不包括ipv4网络分组的源端口的指示的ipv4网络分组的相应一个或多个片段的一个或多个ipv6网络分组,并且可以解封和缓冲接收到的ipv4网络分组的片段,直到网络设备10接收到封装有包括ipv4网络分组的源端口的指示的ipv4网络分组的片段的ipv6网络分组。当网络设备10接收到包括源端口的指示的ipv4网络分组的片段时,网络设备10能够至少部分地基于源地址和源端口对网络设备10接收的ipv4网络分组的片段执行反欺骗检查,而不根据其片段重组ipv4网络分组。

如果网络设备10接收到的ipv4网络分组的片段通过了反欺骗检查,则网络设备10可以将其已经接收的ipv4网络分组片段转发到ipv4网络4,并且可以将其接收的该ipv4网络分组的任何剩余片段转发到ipv4网络4。相反地,如果ipv4网络分组的片段未通过反欺骗检查,则网络设备10可以丢弃其已经接收的ipv4网络分组的片段,并且可以丢弃其接收的该ipv4网络分组的任何剩余片段。

图2是示出根据本文中描述的技术的示例网络设备10的框图,该网络设备被配置为在不重组ipv4网络分组的情况下将ipv4网络分组的片段封装在ipv6分组中,并且在不由其片段重组ipv4网络分组的情况下对ipv4网络分组的片段执行反欺骗检查。网络设备10可以包括路由器(诸如,提供商边缘或客户边缘路由器、核心路由器)、或其他类型的网络设备(诸如,交换机)。在一些实例中,网络设备是map边界中继路由器。在该实例中,网络设备10包括为设备提供控制平面功能的控制单元12。网络设备10还包括多个转发单元20a-20n(“转发单元20”)和交换结构(switchfabric)26,它们一起提供用于处理网络流量的数据平面。

转发单元20经由各自与相应的一个转发单元20相关联的接口卡22a-22n(“ifc22”)的接口来接收和发送数据分组。转发单元20及其相关联的ifc22均可以表示可插入网络设备10的机箱(未示出)内的单独线卡。贯穿本公开,ifc22可以被称为一个或多个网络接口。示例线卡包括柔性可编程集成电路(pic)集中器(fpc)、密集端口集中器(dpc)和模块化端口集中器(mpc)。ifc22中的每一个可以包括用于各种第二层(l2)技术的组合的接口,包括以太网、千兆比特以太网(gige)和同步光学网络(sonet)接口,其提供用于传输网络分组的l2接口。在各个方面,每个转发单元20可以包括更多或更少的ifc。交换结构26在转发单元20之间提供高速互连,用于将输入的数据分组转发到转发单元20的出口转发单元,从而通过包括网络设备10的网络输出。

控制单元12通过内部通信链路18连接至每个转发单元20。例如,内部通信链路18可以包括100mbps以太网连接。控制单元12通过经由内部通信链路18发送指令和其他配置数据,来配置转发单元20,以定义应用于由转发单元20接收的分组的控制处理操作。

控制单元12运行多个应用,包括守护进程14a-14k(“守护进程14”)。每个应用可以表示由控制单元操作系统管理的单独进程。守护进程14可以表示由网络设备10的制造商开发和部署的用户级进程。这样,守护进程14对于网络设备10是“本机的”,因为制造商小心地管理应用的开发以促进网络设备10的安全、鲁棒性和可预测的操作,这种操作至少部分地根据运营商(例如,服务提供商、企业或网络设备10制造商的其他客户)规定的配置来定义。守护进程14可以运行网络管理软件,执行路由协议以与对等路由设备通信,维护和更新一个或多个路由表,以及创建一个或多个转发表以便安装到转发单元20,以及其他功能。

控制单元12可以包括:一个或多个处理器(图2中未示出),其执行软件指令,诸如,用于定义软件或计算机程序的那些软件指令,软件指令存储到:计算机可读存储介质(同样在图2中未示出),诸如包括存储设备(例如,磁盘驱动器或光盘驱动器)和/或存储器的非暂时性计算机可读介质),存储器诸如有随机存取存储器(ram)(包括各种形式的动态ram(dram)(例如,ddr2sdram)或静态ram(sram))、闪存;其他形式的固定或可移动存储介质,其可以用于携带或存储呈指令或数据结构的形式的所期望的程序代码和程序数据并且可以由处理器存取;或任何其他类型的易失性或非易失性存储器,存储使得一个或多个处理器执行本文中描述的技术的指令。替代地或另外地,控制单元12可以包括专用硬件,诸如,一个或多个集成电路、一个或多个专用集成电路(asic)、一个或多个专用特殊处理器(assp)、一个或多个现场可编程门阵列(fpga)、或专用硬件的前述实例中的一个或多个的任何组合,以用于执行本文中描述的技术。

转发单元20中的每个转发单元包括至少一个片段缓冲器28,其存储网络分组的片段,诸如,网络设备10可以对其执行一个或多个操作的ipv4网络分组的片段。片段缓冲器28可以是用于存储网络分组的片段的任何适当的数据存储器,并且可以体现成任何适当的计算机可读存储介质,诸如,存储器、存储盘等。例如,转发单元20a的片段缓冲器28a可以是存储经由ifc22a接收的片段的存储器。转发单元24a的分组处理器24a可以对存储在片段缓冲器28a中的片段执行一个或多个操作,并且可以经由ifc22a输出存储在片段缓冲器28a中的片段。在一些实例中,片段缓冲器28可以是网络设备10的重组缓冲器,其通常被网络设备10用于存储将要重组的ipv4网络分组的片段,以形成网络设备10在ipv6网络内可以封装以发送到ipv6网络6的整个ipv4网络分组,或者重组ipv4网络分组以对ipv4网络分组执行反欺骗检查。然而,本公开中公开的技术能够在不由存储在片段缓冲器28中的片段重组ipv4网络分组的情况下对存储在片段缓冲器28中的片段执行一个或多个操作。

转发单元20中的每个转发单元包括至少一个分组处理器24,当分组遍历(traverse)网络设备10的内部架构时,分组处理器通过对在各个内部分组转发路径上的每个分组执行一系列操作来处理分组。例如,转发单元20a的分组处理器24a包括一个或多个可配置的硬件芯片(例如,芯片组),当由在控制单元12上执行的应用配置时,硬件芯片定义由转发单元20接收的分组要执行的操作。在一些实例中,每个芯片组可以表示“分组转发引擎”(pfe)。每个芯片组可以包括不同的芯片,每个芯片具有专门的功能,诸如,排队、缓冲、接口连接和查找/分组处理。每个芯片可以表示基于专用集成电路(asic)、基于现场可编程门阵列(fpga)或其他可编程硬件的逻辑。单个转发单元20可以包括一个或多个分组处理器24。

例如,可以通过对应的入口接口、入口转发单元20、出口转发单元20、出口接口或者分组在出口之前所指向的网络设备10的其他组件(诸如,一个或多个服务卡)中的任何一个对每个分组执行操作。分组处理器24处理分组以标识分组属性并执行与属性绑定的动作。每个分组处理器24包括转发路径单元,转发路径单元当被执行时使得分组处理器检查每个分组的内容(或另一个分组属性,例如,输入接口),并且在此基础上做出转发决定、应用滤波器和/或例如执行计费、管理、流量分析和负载平衡。分组处理的结果确定了转发单元20的分组处理器24将分组从其在ifc22之一上的输入接口转发或以其他方式处理至(至少在某些情况下)其在ifc22之一上的输出接口的方式。

分组处理器24包括在分组处理器24处执行的各分组模块30a-30n(“分组模块30”),其在不由ipv4网络分组的片段重组ipv4网络分组的情况下,经由ifc22从ipv4网络4接收ipv4网络分组的片段,根据map-e在各个ipv6网络分组内封装ipv4网络分组的各个片段,并且经由ifc22将每个ipv6网络分组转发到ipv6网络6。

由网络设备10经由ifc22接收的ipv4网络分组的片段集在本文中被称为片段流,其中特定ipv4网络分组的每个片段是与ipv4网络分组相关联的同一片段流的一部分。分组模块30可以通过执行map-e以确定ipv6目的地地址并且至少部分地基于ipv6目的地地址创建ipv6网络分组,从而封装片段流的每个片段,将网络设备10从ipv4网络4接收的ipv4网络分组的片段转发至ipv6网络6。分组模块30可以经由ifc22将封装了片段流的片段的ipv6网络分组转发到ipv6网络6。

分组模块30可以至少部分地基于由片段流的片段指定的ipv4目的地地址和目的地端口来确定ipv6目的地地址。然而,仅ipv4网络分组的片段流的单个片段可以包括ipv4网络分组的目的地端口的指示。因此,当分组模块30遇到片段流中的不包括ipv4网络分组的目的地端口的指示的片段时,分组模块30不能执行map-e以从ipv4网络分组的ipv4目的地地址和目的地端口确定ipv6目的地地址,因此分组模块30也不能创建ipv6网络分组来封装片段流的片段。

替代地,根据本公开的技术,分组模块30可以按照在网络设备10处接收片段的顺序,将其接收的ipv4网络分组的片段流的片段缓冲在片段缓冲器28中,直到分组模块30经由ifc22接收到片段流中的包括ipv4网络分组的目的地端口的指示的片段。当分组模块30经由ifc22接收到ipv4网络分组的片段流中的包括ipv4网络分组的目的地端口的指示的片段时,在无需网络设备10重组ipv4网络分组的情况下,分组模块30能够执行map-e来至少部分地基于ipv4网络分组的目的地地址将片段流中的片段封装在ipv6网络分组内并且将ipv6网络分组分发给ipv6网络6。

作为执行map-e的一部分,分组模块30根据ipv4目的地地址和目的地端口确定ipv6目的地地址。分组模块30还可以至少部分地基于ipv6目的地地址来创建ipv6网络分组,并且将其已经接收的片段流中的每个片段(即,片段流中的当前正在片段缓冲器28中缓冲的片段以及片段流中的包括目的地端口的指示的片段)封装在其已经创建的相应的ipv6网络分组内。分组模块30可以将ipv6网络分组转发到ipv6网络6,从而根据ipv6目的地地址路由到预期目的地。

当分组模块30在已经接收到片段流中的包括ipv4网络分组的目的地端口的指示的片段之后接收到ipv4网络分组的片段流的一个或多个额外片段时,分组模块30能够在不将片段流中的该一个或多个额外片段缓冲在片段缓冲器28中的情况下执行map-e以将片段流的一个或多个额外片段封装在相应的一个或多个ipv6网络分组内,并将一个或多个ipv6网络分组转发到ipv6网络6。以这种方式,分组模块30能够在不根据ipv4网络分组的片段重组ipv4网络分组的情况下将ipv4网络分组的片段从ipv4网络4转发到ipv6网络6。

分组处理器24还可以包括或以其他方式能够访问流表32a-32n(“流表32”),这些流表包括与分组模块30遇到(encountered)的片段流相关联的条目。流表可以是存储与由分组模块30处理的片段流相关联的信息的任何合适的数据结构或数据存储器,并且可以体现为任何合适的计算机可读存储介质。

当分组模块30最初遇到来自ipv4网络4的用于转发到ipv6网络6的片段流的片段时,分组模块30可以在流表32中创建片段流的条目。当分组模块30已经完成处理片段流的所有片段时,分组模块30可以从流表32中删除该片段流的条目。片段流的条目可以存储与片段流相关联的可以由分组模块30用以处理片段流的片段的各种信息。具体地,分组模块30可以使用存储在片段流的条目中的信息来确定是否将网络设备10接收的片段流的片段缓冲到片段缓冲器28中,或者是否封装和转发网络设备10接收的片段流的片段。

流表32中的片段流的条目可以包括关键字(key)或者以其他方式与关键字相关联,该关键字可以用于索引到流表32中以对特定片段流条目在流表32中查找和定位条目。可以至少部分地基于由包括在片段流中的每个片段中的ipv4网络分组报头指定的以下值,诸如经由散列,来生成用于与ipv4网络分组相关联的片段流的流表32中的条目的关键字:片段标识符、ipv4源地址、ipv4目的地地址和协议标识符。

片段标识符是对于片段流中的每个片段都相同的值(诸如,整数),并且唯一地标识出从具有相同的ipv4源地址、ipv4目的地地址和协议标识符的所有片段流中的片段流。ipv4源地址和ipv4目的地地址是分别表示片段流中的片段的源和预期目的地的ipv4网络地址。协议标识符是标识片段流中的片段的传输协议(例如,tcp、udp等)的值。这些值中的每一个值对于片段流中的每个片段都是相同的,从而允许网络设备10标识作为片段流的部分的片段。流表32可以存储关键字与流表32的条目的关联,或者以其他方式将关键字与条目相关联,使得流表32可以使用该关键字来索引片段流的流表32中的适当条目。

与ipv4网络分组相关联的片段流的流表32中的条目可以包括状态字段(“state”)、目的地端口字段(“dport”)、发送字节字段(“snt_byts”)、排队字节字段(“qued_byts”)、总长度字段(“total_byts”)和计时器字段(“timer”)。状态字段可以存储指示片段流的状态的值。在一些示例方面,与ipv4网络分组相关联的片段流可以呈以下状态之一:新条目状态、缓冲状态、封装状态和丢弃状态。

当流表32不包括片段流的条目时,片段流处于新条目状态(newentrystate)。因此,状态字段的值可以仅指示片段流是处于缓冲状态、封装状态或者丢弃状态。缓冲状态指示分组模块30将在片段缓冲器28中缓冲分组模块30所接收的片段流的片段,因为分组模块30尚未接收到片段流中的包括目的地端口的指示的片段。封装状态指示分组模块30已经接收到片段流中的包括目的地端口的指示的片段,因此将封装和转发片段流中的片段。丢弃状态指示分组模块30将丢弃片段流中的片段并且抑制缓冲、封装或转发片段流中的片段。

目的地端口字段可以存储指示目的地端口的值。如上所述,片段流中仅一个片段可以包括目的地端口的指示。这样,当网络设备10已经接收到片段流中的包括目的地端口的指示的片段时,分组模块30可以更新目的地端口字段。

发送字节字段可以存储指示网络设备10已经分发的片段流中的片段的总大小的值。每次网络设备10经由ifc22分发封装的片段流的片段时,分组模块30可以将发送字节字段的值增加分发片段的大小。排队字节字段可以存储指示当前由网络设备10在片段缓冲器28中缓冲的片段流中的片段的总大小的值。每次网络设备10接收并在片段缓冲器28中缓冲片段流中的片段时,分组模块30可以将排队字节字段的值增加所缓冲片段的大小。总长度字段可以存储指示片段流中的所有片段的总大小的值。当网络设备10接收到片段流中的最后一个片段时,分组模块30能够基于最后一个片段的偏移和最后一个片段的大小来确定片段流中的所有片段的总大小。

由发送字节字段、排队字节字段和总字节字段的值所指示的片段的大小可不包括片段中包括的ipv4报头的大小。如下面将进一步讨论的,ipv4分组的每个片段可以包括相应的ipv4报头和数据部分。这样,发送字节字段、排队字节字段和总字节字段的值可以分别指示由网络设备10已经发送的片段的数据部分的大小、由网络设备10缓冲的片段的数据部分的大小、以及构成片段流的所有片段的数据部分的大小。分组模块30可以通过从片段的大小中减去ipv4报头的大小来确定片段的数据部分的大小。

计时器字段可以存储指示在片段流处理期间已经经过的时间量的值。当网络设备10接收片段流中的片段时,分组模块30可以用片段流处理期间已经经过的时间量来更新计时器字段的值。如果在处理片段流期间已经经过的时间量超过重组超时值,则网络设备10可以停止转发片段流中的片段。以这种方式,分组模块30可以在其对片段流中的片段处理期间利用流表32。

分组模块30还可以在分组处理器24处执行以经由ifc22从ipv6网络6接收封装有要转发到ipv4网络4的ipv4网络分组的片段的ipv6网络分组。分组模块30可以从ipv6网络分组中解封ipv4网络分组的片段,对解封的片段执行反欺骗检查,并且如果片段通过了反欺骗检查,则在不由ipv4网络分组的片段重组ipv4网络分组的情况下,将片段转发到ipv4网络4。当在分组模块30中支持反欺骗检查时,分组模块30可以执行反欺骗检查。如果不支持反欺骗检查,则分组模块30可以在不执行反欺骗检查的情况下将片段转发到ipv4网络4。

封装在网络设备10所接收的ipv6网络分组内的ipv4网络分组的片段集在本文中也称为片段流,其中特定ipv4网络分组的每个片段是同一片段流的一部分。片段流中的每个片段可以被封装在相应的ipv6网络分组内,并且网络设备10可以自ipv6网络6接收封装有片段流中的片段的ipv6网络分组。

分组模块30可以对这种片段流的每个片段执行反欺骗检查。当分组模块30接收封装有片段流中的片段的ipv6网络分组时,分组模块30可以从ipv6网络分组解封片段。一旦解封分组,分组模块30就可以对解封的片段执行反欺骗检查。如果片段通过了反欺骗检查,则分组模块30可以将片段转发到ipv4网络4。如果片段未通过反欺骗检查,则分组模块30可以丢弃该分组。

通过确定ipv4网络分组的ipv4源地址和源端口是否均在相应的可接受范围内,分组模块30可以对与ipv4网络分组相关联的片段流中的片段执行反欺骗检查。如果ipv4源地址和源端口均在各自的可接受范围内,则该片段通过反欺骗检查。然而,如果ipv4源地址和源端口中的至少一者不在相应的可接受范围内,则该片段未通过反欺骗检查。

然而,ipv4网络分组的片段流仅有单个片段可以包括ipv4网络分组的源端口的指示。因此,当分组模块30遇到片段流中的不包括ipv4网络分组的源端口的指示的片段时,分组模块30不能对片段流中的任何片段执行反欺骗检查。

替代地,分组模块30可以从网络设备10经由ifc22从ipv6网络6已接收的ipv6网络分组中解封ipv4网络分组的片段流中的片段。分组模块30可以按照在网络设备10处接收它们的顺序来在片段缓冲器28中缓冲片段流中的解封片段,直到网络设备10接收并解封片段流中的包括ipv4网络分组的源端口的指示的片段。当网络设备10接收片段流中的包括ipv4网络分组的源端口的指示的片段时,分组模块30能够对片段流中的每个片段执行反欺骗检查。当网络设备10在接收到片段流中的包括ipv4网络分组的源端口的指示的片段之后接收ipv4网络分组的片段流中的一个或多个额外片段时,分组模块30能够在不在片段缓冲器28中缓冲片段流中的一个或多个额外片段的情况下,对片段流中的一个或多个额外片段执行反欺骗检查。

当分组模块30遇到分组模块30将要执行反欺骗检查的片段流中的片段时,分组模块30可以将与分组模块30遇到的片段流相关联的条目添加到流表32,其中片段流中的片段被封装在网络设备10接收的ipv6网络分组中。当分组模块30已经对片段流中的所有片段执行了反欺骗检查时,分组模块30可以从流表32中删除片段流的条目。

片段流的条目可以存储与片段流相关联的分组模块30可用来处理片段流中的片段以便对片段流中的片段执行反欺骗检查的各种信息。具体地,分组模块30可以使用存储在片段流的条目中的信息来确定是否将网络设备10接收的片段流中的片段缓冲到片段缓冲器28中,或者是否对网络设备10接收的片段流中的片段执行反欺骗检查。

流表32中的片段流的条目可以包括关键字或者以其他方式与关键字相关联,该关键字可以用于索引到流表32中以针对特定片段流条目在流表32中查找和定位条目。可以至少部分地基于由均包括在每个ipv6网络分组中的ipv6网络分组报头和ipv4网络分组报头所指定的以下值,诸如经由散列,生成与ipv4网络分组(其中片段流中的片段被封装在ipv6网络分组中)相关联的片段流的流表32中的条目的关键字:ipv6源地址、ipv6目的地地址、片段标识符、ipv4源地址、ipv6目的地地址以及协议标识符。

ipv6源地址和ipv6目的地地址是分别指示ipv6网络分组的源和预期目的地的ipv6网络地址。ipv4源地址和ipv4目的地地址是分别指示由ipv6网络分组封装的片段的源和预期目的地的ipv4网络地址。

片段标识符是对于片段流中的每个片段都相同的值,并且唯一地标识出具有相同的源地址、目的地地址和协议标识符的片段流中的所有片段流。协议标识符是标识片段流中的片段的传输协议(例如,tcp、udp等)的值。这些值中的每一个值对于片段流中的每个片段都是相同的,从而允许网络设备10标识封装有作为片段流的一部分的片段的ipv6网络分组。

与ipv4网络分组相关联的片段流的流表32中的条目可以包括状态字段(“state”)、源端口字段(“sport”)、发送字节字段(“snt_byts”)、排队字节字段(“qued_byts”)、丢弃字节字段(“dropped_byts”)、总长度字段(“total_byts”)和计时器字段(“timer”)。状态字段可以存储指示片段流的状态的值。与ipv4网络分组相关联的片段流可以呈以下状态之一:设备条目状态(deviceentrystate)、缓冲状态、欺骗状态可获得状态和丢弃状态。当网络设备10接收片段流中的片段时,网络设备10可以在流表32中创建条目,并且至少部分地基于其已经接收到的片段流中的片段来用值填充条目的字段。

因为当流表32不包括片段流的条目时片段流处于新条目状态,所以状态字段的值可以仅指示片段流是处于缓冲状态、欺骗状态可获得状态或者丢弃状态。源端口字段可以存储指示源端口的值。如上所述,片段流中仅一个片段可以包括源端口的指示。这样,仅当网络设备10已经接收到片段流中的包括源端口的指示的片段时,网络设备10可以更新源端口字段。

发送字节字段可以存储指示已经通过反欺骗检查并且已经被分发的片段流中的片段的总大小的值。每当片段流中的片段通过反欺骗检查并且由分组模块30分发到ipv4网络4时,分组模块30可以将流表32中的片段流的条目中的发送字节字段的值增加分发片段的大小。排队字节字段可以存储指示当前由分组模块30在片段缓冲器28中缓冲的片段流中的片段的总大小的值。每次分组模块30接收并在片段缓冲器28中缓冲片段流中的片段时,分组模块30可以将排队字节字段的值增加缓冲片段的大小。

丢弃字节字段可以存储指示分组模块30已经丢弃的片段流中的片段的总大小的值。如果片段未通过反欺骗检查,或者如果在处理片段流期间已经经过的时间量超过重组超时,则分组模块30可以丢弃片段流中的这些片段。每次片段流中的片段未通过反欺骗检查并被丢弃时,分组模块30可以将发送字节字段的值增加所丢弃的片段的大小。

总长度字段可以存储指示片段流中的所有片段的总大小的值。当分组模块30接收到片段流中的最后一个片段时,分组模块30能够基于最后一个片段的偏移和最后一个片段的大小来确定片段流中的所有片段的总大小。由发送字节字段、排队字节字段、丢弃字节字段和总字节字段的值所指示的片段的大小可不包括片段中包括的ipv4报头的大小。如下面将进一步讨论的,ipv4分组的每个片段可以包括相应的ipv4报头和数据部分。这样,发送字节字段、排队字节字段、丢弃字节字段和总字节字段的值可以分别指示由网络设备10已经发送的片段的数据部分的大小、由网络设备10缓冲的片段的数据部分的大小、由网络设备10丢弃的片段的数据部分的大小以及构成片段流的所有片段的数据部分的大小。分组模块30可以通过从片段的大小中减去ipv4报头的大小来确定片段的数据部分的大小。

计时器字段可以存储指示在处理片段流期间已经经过的时间量的值。当分组模块30接收片段流中的片段时,分组模块30可以用处理片段流期间已经经过的时间量来更新计时器字段的值。如果在处理片段流期间已经经过的时间量超过重组超时值,则分组模块30可以停止转发片段流中的片段。

图3a和图3b是示出根据本文中描述的技术的被分段成示例片段的示例ipv4网络分组和封装示例ipv4网络分组的示例片段的示例ipv6网络分组的框图。网络设备(诸如网络设备10)可以从ipv4网络(诸如ipv4网络4)接收ipv4网络分组的片段,并且可以将这些片段封装在ipv6网络分组内以便传输到ipv6网络(诸如ipv6网络6)。网络设备10还可以从ipv6网络(诸如ipv6网络6)接收封装ipv4网络分组的片段的ipv6网络分组。网络设备10可以从ipv6网络分组解封ipv4网络分组的片段,并且可以对解封的ipv4网络分组的片段执行反欺骗检查。

如图3a中所示,ipv4网络分组40可以包括报头42,其后是数据部分44。报头42可以包括指定关于ipv4网络分组40的各种信息的各字段。在图4的实例中,报头42中的字段可以包括总长度50a、标识50b、标记50c、片段偏移50d、协议50e、源地址50f和目的地地址50g。报头42可以包括图4中未示出的附加字段。例如,报头42可以包括总共十四个字段,其中十三个字段是必需的。

总长度50a是ipv4网络分组40的包括报头42和数据部分44的大小。当是ipv4网络分组40的一部分片段时,总长度50a可以是片段的大小而不是ipv4网络分组40的大小。

标识50b是唯一地标识构成ipv4网络分组40的片段组的值。贯穿本公开,标识50b可以被称为片段id。标记50c可以包括一个或多个标记。标记50c可包括不分段(don’tfragment,df)标记,如果ipv4网络分组40不能被分段可设定该标记(例如,具有值1),并且如果ipv4网络分组40可以被分段则可以不设定该标记(例如,具有值0)。标记50c还可以包括针对ipv4网络分组40的除最后一个片段之外的每个片段设置(例如,具有值1)的更多片段(morefragment,mf)。

片段偏移50d指定ipv4网络分组40的特定片段相对于原始未分段的ipv4网络分组40的开头的偏移。第一片段的偏移量为零。协议50e指定ipv4网络分组40的数据部分44中使用的协议,诸如,传输控制协议(tcp)或用户数据报协议(udp)。源地址50f指定ipv4网络分组40的发送方的ipv4地址。目的地地址50g指定ipv4网络分组40的接收方的ipv4地址。

ipv4网络分组40的数据部分44可以包括与ipv4网络分组40使用的传输层协议(诸如,tcp、udp等)相关联的数据。ipv4网络分组40的数据部分44可以包括传输协议报头46,其后是有效载荷48。取决于ipv4网络分组40使用的传输层协议,传输协议报头46可以是tcp报头、udp报头等。传输协议报头46可以包括源端口50h和目的地端口50i。源端口50h标识ipv4网络分组40的发送端口,并且目的地端口50i标识ipv4网络分组40的目的地端口。传输协议报头46可以包括图3a中未示出的附加字段。有效载荷48可以是由ipv4网络分组40携带的除了报头42和传输协议报头46之外的数据。

对ipv4网络分组40进行分段包括将ipv4网络分组40的数据部分44划分为顺序数据部分片段45a-45n(“数据部分片段45”),这些数据部分片段是ipv4网络分组40的数据部分44的顺序非重叠的各部分。数据部分片段45a可以包括数据部分44的顺序上第一部分,包括传输协议报头46和有效载荷48的第一部分。数据部分片段45n可以包括有效载荷48的顺序上最后一个非重叠的部分。一个或多个数据部分片段(诸如,数据部分片段45b)可以各自包括数据部分片段45a和数据部分片段45n中所包含的有效载荷48的部分之间的有效载荷48的一非重叠部分。可以看出,只有数据部分片段45a包含传输协议报头46,而其余数据部分片段45b-45n都不包含传输协议报头46。

ipv4网络分组40的片段52a-52n(“片段52”)可以分别包含ipv4报头42以及数据部分片段45之一。片段52a包含数据部分片段52a,并且是ipv4网络分组40的第一片段的实例,因为它包含数据部分44的顺序上的第一部分。片段52n包含数据部分片段45n,并且是ipv4网络分组40的最后一个片段的实例,因为它包含数据部分44的顺序上的最后一部分。包含数据部分片段52b的片段52b是ipv4网络分组40的中间片段的实例,因为其包含在顺序上不是数据部分44的第一部分或数据部分44的最后部分的数据部分片段(例如,数据部分片段45b)。

ipv4网络分组40可以被分段为多个片段52。多个片段52可包括一个第一片段(即片段52a)、一个最后片段(即片段52n)以及一个或多个中间片段(即片段52b)。片段52中的每个片段包括ipv4报头42的字段(包括字段50a-50g)。虽然每个字段50a-50g的值对于片段52中的每个片段是相同的,但是一些字段可以包含不同的值。例如,第一片段(诸如片段52a)和一个或多个中间片段(诸如片段52b)可以各自使标记50c中的更多片段(mf)标记被设定(例如,具有值1),因为它们不是最后一个片段。同时,最后一个片段(诸如片段52n)可以使标记50c中的md标记不被设定(例如,具有值0)。另外,片段偏移50d的值对于片段52中的每个片段可以是不同的。例如,第一片段(诸如片段52a)的片段偏移50d的值是零,而其他片段的片段偏移50d的值是非零。

虽然片段52被称为第一片段、中间片段和最后片段,但是应当理解,这些名称未必是指网络设备10可以接收这些片段52的顺序,因为片段52可能无序地到达网络设备10。替代地,术语第一、中间和最后是指包括在相应片段52中的数据部分44的各顺序部分。

当片段52到达网络设备10时,网络设备10可以将片段52封装到ipv6网络分组中,其中片段52中的每个片段被封装在单独的ipv6网络分组中。因此,如果片段52包括总共五个片段,则网络设备10可以将这五个片段封装在各自包含这五个片段之一的五个ipv6网络分组中。

如图3b中所示,当网络设备10接收片段52时,网络设备10可以执行map-e以将片段52封装在ipv6网络分组60a-60n(“ipv6网络分组60”)内。具体地,网络设备10可以将片段52a封装在ipv6网络分组60a内,将片段52b封装在ipv6网络分组60b内,将片段52n封装在ipv6网络分组60n内,等等。ipv6网络分组包括ipv6报头62和有效载荷(例如,片段52之一)。因此,ipv6网络分组60a包括ipv6报头62和片段52a,ipv6网络分组60b包括ipv6报头62和片段52b,并且ipv6网络分组60c包括ipv6报头62和片段52c。ipv6报头62可以包括ipv6源地址64a和ipv6目的地地址64b。ipv6源地址64a指定ipv4网络分组40的发送方的ipv6地址,ipv4网络分组40的片段被包含在ipv6网络分组中。ipv6目的地地址64b指定ipv6网络分组的接收方的ipv6地址。应该理解,ipv6报头62可以包括图3b中未示出的附加字段。

为了执行map-e来将片段52封装在ipv6网络分组60内,网络设备10可以至少部分地基于片段52来生成包括ipv6源地址64a和ipv6目的地地址64b的ipv6网络报头62。因为ipv4网络分组40使用地址加端口技术进行分组路由,其中ipv4网络分组40指定的源地址50f被ipv4网络分组40指定的源端口50h的至少一部分所扩展,并且ipv4网络分组40指定的目的地地址50g由ipv4网络分组40指定的目的地端口50i的至少一部分所扩展,所以网络设备10在它接收到包括源端口50h和目的地端口50i的片段52a前,可能无法生成ipv6网络报头62。

然而,网络设备10可能未必在其接收到片段52中的其他片段之前接收到包含目的地端口50i的片段52a。如果在网络设备10接收到片段52a之前,网络设备10接收到片段52中的除片段52a之外的一个或多个片段,则网络设备10可能无法封装其已经接收的片段52中的一个或多个片段。替代地,网络设备10可以在片段缓冲器28中缓冲它已经接收的片段52中的一个或多个片段,直到它接收到包括源端口50h和目的地端口50i的片段52a。当网络设备10接收到包括源端口50h和目的地端口50i的片段52a时,网络设备10能够至少部分地基于片段52a所包括的源端口50h和目的地端口50i来生成ipv6报头62(包括ipv6源地址64a和ipv6目的地地址64b)。网络设备10可以利用ipv6报头62将片段52a和存储在片段缓冲器28中的一个或多个片段封装到ipv6网络分组60中,并将ipv6网络分组60分发到ipv6网络6。

在一些实例中,网络设备10还可以接收可以封装与ipv4网络分组40相关联的片段流中的片段52的ipv6网络分组60。网络设备10可以从接收的ipv6网络分组60解封片段52,对片段52执行反欺骗检查,并且如果片段52通过了反欺骗检查,则将片段52转发到ipv4网络4上。

网络设备10可以通过确定源地址50f和源端口50h中的每一者是否在相应的可接受范围内,至少部分地基于片段52中包括的ipv4源地址50f和源端口50h来对片段52执行反欺骗检查。如果源地址50f和源端口50h中的每一者都在相应的可接受范围内,则片段52可以通过片段检查。

然而,只有片段流中的第一片段(例如,片段52a)包含源端口50h,并且网络设备在接收片段52中的其他片段之前可能未必接收到包含源端口50h的片段52a。如果在网络设备10接收到片段52a之前网络设备10接收到片段52中的除片段52a之外的一个或多个片段,则网络设备10可能无法对其已经接收的片段52中的一个或多个片段执行反欺骗检查。替代地,网络设备10可以在片段缓冲器28中缓冲它已经接收的片段52中的一个或多个片段,直到它接收到包括源端口50h的片段52a。当网络设备10接收包括源端口50h的片段52a时,网络设备10能够至少部分地基于片段52a中包括的源端口50h来对片段流中的片段52执行反欺骗检查。如果片段流中的片段52通过了反欺骗检查,则网络设备10可以将片段流中的片段52转发到ipv4网络4。

当网络设备10接收、缓冲和封装片段流中的片段52时,片段流可以在不同状态之间转换。图4是示出根据本文中描述的技术的示例片段流的状态转换的框图。如图4中所示,片段流的状态可以是新条目状态70、缓冲状态72、封装状态74或丢弃状态76。新条目状态70指示网络设备10尚未接收到片段流中的任何片段52。缓冲状态72指示网络设备10当前正在缓冲其接收的片段52但是还不能封装和分发任何所接收的片段52。封装状态74指示网络设备10当前能够封装和分发其接收的任何片段52。丢弃状态76指示网络设备10当前正在丢弃其接收的任何片段52。

片段流处于新条目状态70,直到它接收到片段流中的一片段。当片段流处于新条目状态70时,如果网络设备10接收到片段流中的中间片段或一最后片段,则片段流可以转变到缓冲状态72,或者如果网络设备10接收到片段流中的第一片段,则片段流可以转变到封装状态74。当片段流处于缓冲状态72时,网络设备10不能封装其接收到的片段流中的任何片段52。替代地,网络设备10可以在片段缓冲器28中存储其已经接收到的片段。当网络设备10在片段流处于缓冲状态72时接收片段流中的额外中间片段或最后片段时,片段流可以保持在缓冲状态72,并且网络设备10可以在片段缓冲器28中存储其接收到的片段。

无论片段状态是处于新条目状态70还是缓冲状态72,当网络设备10接收到片段流中的第一片段时,网络设备10能够转变为封装状态74。当片段流处于封装状态74时,网络设备10已经接收到片段流中的包括ipv4网络分组40的目的地端口的指示的第一片段。因此,网络设备10现在准备好在ipv6网络分组60中封装其已经接收的片段52,并将ipv6网络分组60分发给ipv6网络6。当网络设备10在片段流处于封装状态74时接收额外片段52时,网络设备10可以在不在片段缓冲器28中缓冲额外片段52的情况下,将其接收的额外片段52封装在ipv6网络分组60中,并且将ipv6网络分组60分发到ipv6网络6。

当片段处于新条目状态70、缓冲状态72或封装状态74时,当处理片段52所经过的时间超过重组超时时,或者当发生错误时,片段流可以转变到丢弃状态76。重组超时的时长的实例可以是30秒、45秒等。当片段流处于丢弃状态76时,网络设备10会丢弃其接收的任何片段52。丢弃片段可以包括网络设备10禁止将片段52封装或转发到ipv6网络6。

图5a至图5c描绘了示出根据本文中描述的技术的用于在不重组ipv4分组的情况下将ipv4分组封装在ipv6分组中的示例过程的流程图。这样的过程可以由网络设备(诸如网络设备10)执行,该网络设备连接至ipv4网络(诸如ipv4网络4)和ipv6网络(诸如ipv6网络6)。如图5a中所示,网络设备10可以从ipv4网络4接收ipv4网络分组的片段(诸如,ipv4网络分组40的片段52之一)(82)。

如贯穿本公开所讨论的,网络设备10可以缓冲它接收到的流中的每个片段,直到它接收到流的第一片段。一旦网络设备10接收到流的第一片段,它就具有必要的信息(诸如,目的地端口)来执行其已经接收的流中的每个片段的封装。因此,网络设备10至少部分地基于片段的类型来确定响应于接收到该片段而采取的动作的类型。此外,如上面关于图4所讨论的,网络设备10响应于接收到片段而采取的动作的类型也可以至少部分地基于片段流的状态。

这样,当网络设备10接收到片段时,网络设备10可以确定片段的片段类型以及片段的片段流状态,以便确定响应于接收该片段而执行的动作。网络设备10可以至少部分地基于片段中包含的信息,来将片段的片段类型确定为以下之一:片段流的第一片段(例如,片段52a)、中间片段(例如,片段52b)或最后片段(例如,片段52n)(84)。例如,网络设备10的ifc22可以接收片段,并且网络设备10的分组模块30可以确定片段的片段类型。

网络设备10可以至少部分地基于片段的ipv4报头42中的片段偏移50d和标记50c来确定片段是片段流的第一片段、中间片段还是最后片段。具体地,如果片段偏移50d的值等于零并且如果设置了标记50c中的更多片段标记,则网络设备10可以确定该片段是片段流的第一片段。如果片段偏移50d的值不为零并且设置了标记50c中的更多片段标记,则网络设备10可以确定该片段是中间片段。如果片段偏移50d的值不为零并且没有设置标记50c中的更多片段标记,则网络设备10可以确定该片段是最后片段。

除了确定片段的类型之外,网络设备10还可以在网络设备10接收片段时确定片段流的状态。片段流的状态还可以告知网络设备10响应于接收片段所采取的动作。片段流可以处于四种状态之一:新条目、缓冲、封装或丢弃。当网络设备10尚未接收到片段流中的任何片段时,片段流可以处于新条目状态。当其已经接收到片段流中的一个或多个片段但是尚未接收到片段流中的包括目的地端口的指示的第一片段时,片段流可以处于缓冲状态。当其已经接收到片段流中的包括目的地端口的指示的第一片段时,片段流可以处于封装状态。当网络设备10将要丢弃片段流中的各个片段时,片段流可以处于丢弃状态。例如,网络设备10的分组模块30可以确定片段流的状态。

当片段流处于缓冲状态时,网络设备10能够在片段缓冲器28中缓冲它接收的片段流中的任何片段,但是不能封装和分发其已经接收到的片段流中的片段。当流状态处于封装状态时,网络设备10能够封装和分发其已经接收到的片段流中的片段。当片段流处于丢弃状态时,网络设备10可以丢弃其接收的片段流中的任何片段。

如图5b中所示,当片段是第一片段52a时,网络设备10可以确定该片段的片段流处于以下流状态之一:新条目、缓冲或丢弃(86)。因为网络设备10在其已经接收到片段流中的第一片段之前不能封装片段流中的片段,所以片段流不能处于封装模式,直到网络设备10接收到片段流中的第一片段。虽然图5a和图5b示出了在确定片段的片段流的状态之前确定片段的类型,但应当理解,这样的确定可以以任何顺序发生、或者可以同时发生。例如,网络设备10可以在确定片段的片段类型之前确定片段的片段流的状态。

网络设备10可以通过对流表32执行查找来确定流表32是否包括特定片段流的条目,并且如果是,则确定片段流的流表条目的状态字段的值,从而确定片段流的状态。网络设备10可以通过使用网络设备10可以至少部分地基于片段的内容生成的关键字,索引到流表32中来执行对流表32的查找。因为每个片段可以包括ipv4报头42,所以网络设备10可以至少部分地基于ipv4报头42的一部分来生成关键字。在一个实例中,网络设备10可以至少部分地基于ipv4报头42中包括的片段id、源地址、目的地地址和协议id来生成关键字,因为它们可以与其他片段流相比较来唯一地标识片段流。例如,网络设备10可以散列片段id、源地址、目的地地址和协议id,以生成用于索引到流表32中以查找片段流的流表条目的关键字。

当流表32不包括片段流的条目时,网络设备10可以确定片段流处于新条目状态。响应于确定片段是第一片段并且片段流的状态是新条目,网络设备10可以在流表32中为该片段流创建片段流的条目(88)。例如,网络设备10的分组模块30可以在流表32中创建片段流的条目,并更新流表32中的条目的字段。如上所述,流表32中的片段流的条目可以包括诸如状态、目的地端口、发送字节、排队字节、总字节和计时器的字段。因为第一片段包括目的地端口的指示,所以网络设备10可以将条目中的目的地端口字段更新为第一片段指示的目的地端口。此外,在网络设备10接收片段流的第一片段时,网络设备10可以通过将条目的状态字段设置为指示封装状态的值来将片段流的状态从新条目改变为封装。

另外,因为第一片段可以在不在片段缓冲器28中缓冲的情况下被封装和分发,所以网络设备10还可以将发送字节字段设置为片段的数据部分(例如,数据部分45a)的大小。片段的ipv4报头(例如,ipv4报头42)包括指示包括ipv4报头的片段的大小的总长度50a。因此,网络设备10可以至少部分地基于总长度50a,通过从总长度50a的值中减去ipv4报头的大小来确定片段的数据部分的大小。

网络设备10可以继续根据map-e封装第一片段(90)并将封装的第一片段分发给ipv6网络6(92)。在封装和分发第一片段之后,片段流可以保持处于封装状态,并且过程可以返回到步骤82,以便网络设备10接收片段流中的其他片段。例如,网络设备10的分组模块30可以封装第一片段。

如果当前片段是片段流中的第一片段,并且如果流表32包括片段流的条目,则片段流的条目的状态字段可以指示片段流是否处于缓冲状态、或片段流的状态是否处于丢弃状态。如上所述,当网络设备10已经接收并缓冲片段流中的一个或多个片段时,片段流可以处于缓冲状态。

响应于确定当前片段是片段流中的第一片段并且片段流的状态是丢弃,网络设备10可以丢弃该片段(即,避免将片段转发到ipv6网络6)(102)。

响应于确定当前片段是片段流中的第一片段并且片段流处于缓冲状态,网络设备10可以基于第一片段来更新流表32中的片段流的条目(94)。网络设备10可以将片段流的状态字段的值从指示缓冲状态更新为指示封装状态,并且将条目中的目的地端口字段的值更新为指示由第一片段指示的目的地端口。

因为接收片段流中的第一片段使得网络设备10能够封装和转发它已经缓冲的片段流中的片段,所以网络设备10还可以更新条目的发送字节字段的值以指示排队字节字段的当前值加上该片段的数据部分(例如,数据部分45a)的大小。如上所述,片段的ipv4报头(例如,ipv4报头42)包括指示包括ipv4报头的片段的大小的总长度50a。因此,网络设备10可以至少部分地基于总长度50a,通过从总长度50a的值中减去ipv4报头的大小,来确定片段的数据部分的大小。网络设备10还可以将条目的排队字节字段的值设置为指示零,这是因为网络设备10能够封装和转发它已经缓冲的片段流中的片段。

网络设备10可以继续使用map-e来封装它已经缓冲的流中的每个片段加上第一片段(96),并且可以将每个封装的片段分发给ipv6网络6(98)。例如,网络设备10的分组模块30可以封装片段流中的片段,并且可以经由ifc22将封装的分组分发到ipv6网络6。响应于封装和分发其已经接收到的片段流中的每个片段,网络设备10可以确定是否删除流表32中的片段流的条目(100)。如果网络设备10已经封装并转发了片段流中的所有片段,则网络设备可以删除流表32中的该片段流的条目。

网络设备10可以通过确定它已经发送为转发片段流中的片段的数据量是否等于该片段流中的所有片段的总大小来确定它已经封装并转发了片段流的所有片段。网络设备10可以确定片段流的条目的总字节字段的值是否大于零以及总字节字段的值是否等于条目的发送字节字段的值。如果是,则网络设备10确定它已经封装并转发了片段流中的所有片段并且可以从流表32中删除该片段流的条目,因此对于特定片段流结束由网络设备10执行的对片段的转发(101)。如果网络设备10确定它尚未封装并转发片段流中的所有片段,则网络设备10可以禁止删除该片段流的条目,并且可以返回到步骤82以接收片段流的额外片段。例如,网络设备10的分组模块30可以确定它是否已经封装并转发了片段流中的所有片段。

如上所述,片段可以是第一片段、中间片段或最后片段。如图5c中所示,当片段是中间片段或最后片段时,网络设备10可以确定该片段的片段流的状态,并且可以至少部分地基于片段流的状态来执行一个或多个动作(104)。当网络设备10接收到作为中间片段或最后片段的片段时,片段流状态可以处于以下之一:新条目状态、缓冲状态、封装状态或丢弃状态。

如以上关于图5b所讨论的,网络设备10可以通过对流表32执行查找来确定流表32是否包括特定片段流的条目,并且如果是,则基于该片段流的流表条目中的状态字段的值来确定该片段流的状态,从而确定片段流的状态。

如果流表32不包括片段流的条目,则网络设备10可以确定片段流处于新条目状态,而不管当前片段是第一片段、中间片段还是最后片段。响应于确定片段是中间片段或最后片段并且片段流的状态是新条目,网络设备10可以在流表32中为片段流创建片段流的条目(106)。一旦在流表32中创建片段流的条目,网络设备10就可以更新条目的一个或多个字段的值。因为网络设备10尚未接收到片段流中的第一片段,所以当网络设备10接收到片段流中的中间片段或最后片段时,片段流状态从新条目状态转换到缓冲状态。因此,网络设备10可以将流表32中的片段流的条目的状态字段的值设置为指示缓冲状态。网络设备10还可以将流表32中的条目的发送字节字段的值设置为零,因为网络设备10尚未封装和分发片段流中的任何先前片段,并且因为片段流当前处于缓冲状态。

当网络设备10接收的片段是片段流中的最后片段(例如,片段52n)时,网络设备10能够至少部分地基于最后片段的ipv4报头42中所包括的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的数据部分45的总大小。在一个实例中,片段流中的所有片段的数据部分45的总大小可以通过以下方式来确定:最后片段的ipv4报头42中的总长度50a的值与最后片段的ipv4报头42中的片段偏移50d的值乘以八的结果相加,并由总和的结果减去最后片段的ipv4报头42的大小。网络设备10可以用其已经确定的片段流中的所有片段的总大小来更新条目的总字节字段的值。

当片段流当前处于缓冲状态时,网络设备10操作为在其保持缓冲状态时在片段缓冲器中缓冲网络设备接收的片段,而不封装和转发片段或丢弃片段。因为片段流现在处于缓冲状态,所以网络设备10可以将片段缓冲在片段缓冲器28中(108)。当网络设备10缓冲片段流的片段时,网络设备10可以更新流表32中的片段流的条目,以反映当前在网络设备10的片段缓冲器28中缓冲的片段的大小。因此,因为网络设备10接收的中间片段或最后片段当前是片段缓冲器28中缓冲的片段流的仅有片段,所以网络设备10可以将流表32中的片段流的条目中的排队字节字段的值设置为指示:由其已经接收和缓冲的中间片段或最后片段的ipv4报头42的总长度50a指定的总长度减去ipv4报头42的大小的结果。一旦在片段缓冲器28中缓冲片段,网络设备10就可以在图5a中所示的步骤82等待接收片段流的额外片段。

如果网络设备10接收的片段是片段流中的中间片段或最后片段,并且如果流表32包括片段流的条目,则片段流处于缓冲状态、封装状态或者丢弃状态。如上所述,流表32中的片段流的条目中的状态字段指示片段流是处于缓冲状态、封装状态还是丢弃状态。当片段流处于丢弃状态时,网络设备10可以丢弃其已经接收的片段(即,避免将片段转发到ipv6网络6)(120)。一旦丢弃片段,网络设备10就可以在图5a中所示的步骤82等待接收片段流的额外片段。

当网络设备10接收的片段是片段流中的中间片段或最后片段时,如果片段流处于缓冲状态,则网络设备10可以在片段缓冲器28中缓冲它接收到的片段并且可以更新流表32中的片段流的条目(110)。网络设备10可以将条目中的排队字节字段更新为:将正在缓冲的当前片段的ipv4报头42的总长度50a所指示的值减去片段的ipv4报头42的大小的结果加上排队字节字段的当前值。如果该片段是片段流的最后片段,则网络设备10还能够如上所述地至少部分地基于最后片段的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的总大小,并且可以用其已经确定的片段流中的所有片段的数据部分45的总大小来更新条目的总字节字段的值。一旦在片段缓冲器28中缓冲了片段,网络设备10就可以在图5a中所示的步骤82等待接收片段流的额外片段。

如果网络设备10先前已经接收到片段流的第一片段,则片段流处于封装状态。当片段是片段流中的中间片段或最后片段时,并且如果片段流处于封装状态,则在不在片段缓冲器28中缓冲片段的情况下,网络设备10能够在ipv6网络分组60内封装其已经接收的片段并将ipv6网络分组60分发到ipv6网络6。网络设备10可以使用map-e封装片段(112)并将封装的片段分发到ipv6网络6(114)。作为使用map-e封装片段的一部分,网络设备10可以至少部分地基于由片段流指定的目的地地址和目的地端口来确定ipv6目的地地址。

在网络设备10封装和分发片段流中的一片段时,网络设备10可以将流表32中的片段流的条目中的发送字节字段更新为:将网络设备10封装和分发的片段的总长度加上发送字节字段的当前值。如果该片段是片段流的最后片段,则网络设备10还能够如上所述地至少部分地基于最后片段的ipv4报头42中的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的总大小,并且可以用其已经确定的片段流中的所有片段的数据部分45的总大小来更新条目的总字节字段的值。

响应于封装和分发片段,网络设备10可以确定是否删除流表32中的片段流的条目(116)。如果网络设备10已经封装并分发了片段流中的每个片段,则网络设备可以删除流表32中的片段流的条目。如果网络设备已经发送为转发片段流中的片段的数据量(例如数据部分45)等于片段流中的所有片段的数据部分45的总大小,则网络设备10可以确定它已经封装并转发了片段流中的所有片段。网络设备10可以确定片段流的条目的总字节字段的值是否大于零以及总字节字段的值是否等于发送字节字段的值。如果是,则网络设备10确定它已经封装并转发了片段流中的所有片段并且可以删除片段流的条目,因此结束由网络设备10对于特定片段流执行的片段的缓冲、封装和转发(118)。如果网络设备10确定它尚未封装并转发片段流中的所有片段,则网络设备10可以禁止从流表32中删除片段流的条目,并且可以在图5a中的步骤82等待对片段流的额外片段的接收。

除了将ipv4网络分组40的片段52转发到ipv6网络6之外,网络设备10还可以将封装在ipv6网络分组60内的片段52从ipv6网络6转发到ipv4网络4。作为转发封装的片段52的一部分,网络设备10可以对其接收的每个片段52执行反欺骗检查,以确定每个片段中的源地址50f和源端口50h的值是否均在相应的可接受范围内。如果片段的源地址50f和源端口50h的值均在相应的可接受范围内,则片段通过反欺骗检查。然而,如果片段的源地址50f和源端口50h的值中的至少一者不在相应的可接受范围内,则该片段未通过反欺骗检查。

因为ipv4网络分组40使用地址加端口技术进行分组路由,其中ipv4网络分组40指定的源地址50f被ipv4网络分组40指定的源端口50h的至少一部分扩展,并且ipv4网络分组40指定的目的地地址50g由ipv4网络分组40指定的目的地端口50i的至少一部分扩展,所以网络设备10不能对其已经接收到的片段执行反欺骗检查,直到它接收到片段流中的包括源端口50h的片段。在一些实例中,仅片段中的第一片段包括源端口50h。

然而,网络设备10可能未必在其接收封装片段52的其他片段的ipv6网络分组之前,接收到封装第一片段的ipv6网络分组。如果在网络设备10接收封装第一片段的ipv6网络分组之前,网络设备10接收封装片段52中除第一片段之外的的一个或多个片段的一个或多个ipv6网络分组,则网络设备10可能无法对其已经接收的片段52中的一个或多个片段执行反欺骗检查。替代地,网络设备10可以从一个或多个ipv6网络分组中解封一个或多个片段,并且可以在片段缓冲器28中缓冲一个或多个片段,直到它接收到封装第一片段的ipv6网络分组。

当网络设备10接收到封装片段流中的第一片段的ipv6网络分组时,网络设备10能够至少部分地基于第一片段中包括的源端口50h,对第一片段以及片段流中的已经存储在片段缓冲器28中的任何片段执行反欺骗检查。网络设备10可以利用ipv6报头62将片段52a和在片段缓冲器28中存储的一个或多个片段封装到ipv6网络分组60中,并将ipv6网络分组60分发到ipv6网络6。在一些实例中,如果在网络设备10中支持反欺骗检查,则网络设备10可以执行反欺骗检查。如果在网络设备10中未支持反欺骗检查,则网络设备10可以在将片段流中的片段52转发到ipv4网络4时禁止执行反欺骗检查。

当网络设备10接收和解封片段流中的片段52并对片段流中的片段执行反欺骗检查时,片段流可以在不同的状态之间转变。图6是示出根据本文中描述的技术的用于对片段流的片段执行反欺骗检查的示例片段流的状态转换的框图。如图6中所示,片段流的状态可以是新条目状态122、缓冲状态124、欺骗状态可获得状态126或丢弃状态128。新条目状态122指示网络设备10尚未接收到封装片段流中的片段52的任何ipv6网络分组60。缓冲状态124指示网络设备10当前正在缓冲其已经从ipv6网络分组60解封的片段52但是还不能对任何接收到的片段52执行反欺骗检查。欺骗状态可获得状态126指示网络设备10当前能够对其已解封的任何片段52执行反欺骗检查。丢弃状态128指示网络设备10当前正在丢弃其解封的任何片段52。

片段流处于新条目状态122,直到它接收到封装片段流中的片段的ipv6网络分组。当片段流处于新条目状态122时,片段流可以在网络设备10接收到封装片段流中的中间片段或最后片段的ipv6网络分组时转变到缓冲状态124,或者可以在网络设备10接收到封装片段流中的第一片段的ipv6网络分组时转变到欺骗状态可获得状态126。当片段流处于缓冲状态124时,网络设备10不能对其接收的片段流的任何片段52执行反欺骗检查。替代地,网络设备10可以从其接收的ipv6网络分组中解封片段,并且可以在片段缓冲器28中存储它已经接收的片段。当网络设备10在片段流处于缓冲状态124时接收和解封片段流中的附加中间片段或最后片段时,片段流可以保持处于缓冲状态124,并且网络设备10可以在片段缓冲器28中存储其已经解封的片段。

无论片段状态是处于新条目状态122还是缓冲状态124,当网络设备10接收到片段流中的第一片段时,网络设备10能够转变为欺骗状态可获得状态126。当片段流处于欺骗状态可获得状态126时,网络设备10已经接收并解封了片段流中的包括与片段流相关联的ipv4网络分组40的源端口的指示的第一片段。因此,网络设备10现在准备好对其在ipv6网络分组60中已经接收的片段52执行反欺骗检查。网络设备10可以将通过反欺骗检查的所有片段52转发到ipv4网络4,并且可以丢弃未通过反欺骗检查的所有片段52。

当网络设备10在片段流处于欺骗状态可获得状态126时接收额外片段52时,网络设备10可以在不在片段缓冲器28中缓冲额外片段52并且不由额外片段52重组ipv4网络分组40的情况下,对其接收的额外片段52执行反欺骗检查。

当片段处于新条目状态122、缓冲状态124或封装状态126时,当处理片段52所经过的时间超过重组超时时,或者在处理片段流中发生错误时,片段流可以转变到丢弃状态128。在一些实例中,重组超时可以是30秒、45秒或任何其他合适的值。当片段流处于丢弃状态128时,网络设备10可以丢弃其接收的任何片段52。丢弃片段可以包括网络设备10禁止将片段52封装或转发到ipv6网络6。

图7a至图7d是示出根据本文中描述的技术的用于在不重组ipv4分组的情况下从ipv6分组解封ipv4分组的片段并对片段执行反欺骗检查的示例过程的流程图。这样的过程可以由连接至ipv4网络和ipv6网络的网络设备执行,诸如,在图1和图2中所示的连接至ipv4网络4和ipv6网络6的网络设备10。如图7a中所示,网络设备10可以从ipv4网络4接收封装ipv4网络分组的片段(诸如,ipv4网络分组40的片段52之一)的ipv6网络分组(诸如,ipv6网络分组60之一)(130)。作为响应,网络设备10可以从其接收的ipv6网络分组中解封ipv4网络分组40的片段(132)。例如,网络10的ifc22可以接收ipv6网络分组,并且网络设备10的分组模块30可以从ipv6网络分组中解封片段。

同一ipv4网络分组的每个片段可以是同一片段流的一部分。如贯穿本公开所讨论的,对于片段流,网络设备10可以缓冲其接收和解封的每个片段,直到它接收到流的第一片段。一旦网络设备10接收和解封流的第一片段,它就具有必要的信息(诸如,源端口)来执行其已经接收的片段流中的每个片段的反欺骗检查。因此,网络设备10至少部分地基于片段的类型来确定响应于接收和解封该片段而采取的动作的类型。此外,如上面关于图4所讨论的,网络设备10响应于接收到片段而采取的动作的类型也可以至少部分地基于片段流的状态。

这样,当网络设备10接收和解封片段时,网络设备10可以确定片段的片段类型以及片段的片段流的状态,以便确定响应于接收该片段而执行的动作。网络设备10可以至少部分地基于片段中包含的信息来将片段的片段类型确定为以下之一:片段流的第一片段(例如,片段52a)、中间片段(例如,片段52b)或最后片段(例如,片段52n)(134)。例如,网络设备10的分组模块30可以确定片段的片段类型。

网络设备10可以至少部分地基于片段的ipv4报头42中的片段偏移50d和标记50c来确定片段是片段流的第一片段、中间片段还是最后片段。例如,如果片段偏移50d的值等于零并且如果设置了标记50c中的更多片段标记,则网络设备10可以确定该片段是片段流的第一片段。如果片段偏移50d的值不为零并且设置了标记50c中的更多片段标记,则网络设备10可以确定该片段是中间片段。如果片段偏移50d的值不为零并且没有设置标记50c中的更多片段标记,则网络设备10可以确定该片段是最后片段。

除了确定片段的类型之外,网络设备10还可以确定在网络设备10接收片段时的片段流的状态。片段流的状态还可以告知网络设备10响应于接收片段所采取的动作。当网络设备10要对片段流的片段执行反欺骗检查时,片段流可以处于四种状态之一:新条目、缓冲、欺骗状态可用或丢弃。当网络设备10尚未接收到片段流中的任何片段时,片段流可以处于新条目状态。当其已经接收到片段流中的一个或多个片段但是尚未接收到片段流中包括源端口的指示的第一片段时,片段流可以处于缓冲状态。当其已经接收到片段流中的包括源端口的指示的第一片段时,片段流可以处于欺骗状态可获得状态。当网络设备10将要丢弃片段流中的各个片段时,片段流可以处于丢弃状态。例如,网络设备10的分组模块30可以确定片段流的状态。

当片段流处于缓冲状态时,网络设备10能够在片段缓冲器28中缓冲其接收和解封的片段流中的任何片段,但是可能无法对其已经接收的片段执行反欺骗检查。当流状态处于欺骗状态可获得状态时,网络设备10能够对其已经接收的片段流中的片段执行反欺骗检查。当片段流处于丢弃状态时,网络设备10可以丢弃其接收的片段流中的任何片段。

如图7b中所示,当片段是第一片段时,网络设备10可以确定片段的片段流处于以下流状态之一:新条目、缓冲或丢弃(136)。因为网络设备10无法对片段流中的片段执行反欺骗检查直到其已经接收到片段流中的第一片段,所以片段流在网络设备10接收到片段流中的第一片段前无法处于欺骗状态可获得状态。虽然图7a和图7b示出了在确定片段的片段流的状态之前确定片段的类型,但应当理解,这样的确定可以以任何顺序发生或者可以同时发生。例如,网络设备10可以在确定片段的片段类型之前确定片段的片段流的状态。

网络设备10可以通过对流表32执行查找来确定流表32是否包括特定片段流的条目,并且如果是,则确定片段流的流表条目的状态字段的值,从而确定片段流的状态。网络设备10可以通过使用网络设备10可以至少部分地基于封装片段的ipv6网络分组的内容生成的关键字,索引到流表32中来执行对流表32的查找。因为封装片段的每个ipv6网络分组可以包括ipv6报头62和ipv4报头42,所以网络设备10可以至少部分地基于ipv6报头62的至少一部分和ipv4报头42的至少一部分来生成关键字。在一个实例中,网络设备10可以至少部分地基于ipv6报头62中包含的ipv6源地址和ipv6目的地地址以及ipv4报头42中包含的片段id、源地址、目的地地址和协议id来生成关键字,因为它们可以与其他片段流相比较地来唯一地标识片段流。例如,网络设备10可以散列ipv6源地址、ipv6目的地地址、片段id、源地址、目的地地址和协议id,以生成用于索引到流表32中以查找片段流的流表条目的关键字。

当流表32不包括片段流的条目时,网络设备10可以确定片段流处于新条目状态。响应于确定网络设备10接收和解封的片段是第一片段并且片段流的状态是新条目,网络设备10可以在流表32中为片段流创建片段流的条目(138)。如上所述,流表32中的片段流的条目可以包括诸如状态、源端口、发送字节、排队字节、总字节、丢弃字节和计时器的字段。因为第一片段包括源端口的指示,所以网络设备10可以将条目中的源端口字段更新为第一片段所指示的源端口。此外,当网络设备10接收到片段流中的第一片段时,网络设备10可以通过将条目的状态字段设置为指示欺骗状态可获得状态的值来将片段流从新条目状态转换到欺骗状态可获得状态。因为网络设备10一旦接收到第一片段就可以执行反欺骗检查,网络设备10可以继续对其已经接收和解封的片段执行反欺骗检查,如图7d中进一步详细示出的。

如图7d中所示,网络设备10可以通过确定与片段范围的片段流相关联的源地址和源端口是否都在可接受范围内来对其已经接收的片段执行反欺骗检查(154)。例如,网络设备10的分组模块30可以对片段执行反欺骗检查。网络设备10可以从流表32中的片段流的条目的源地址字段中检索源地址,并且可以确定源地址是否在可接受范围内。网络设备10还可以从流表32中的片段流的条目的源端口字段中检索源端口,并且可以确定源端口是否在可接受范围内。

如果源地址和源端口都在可接受范围内,则片段通过反欺骗检查。如果源地址或源端口不在可接受范围内,则该片段未通过反欺骗检查。如果片段未通过反欺骗检查,则网络设备10可以丢弃片段以及当前正在片段缓冲器28中缓冲的同一片段流的所有先前接收的片段(156)。

当片段未通过反欺骗检查时,网络设备10可以更新流表32中的片段流的条目。网络设备10可以将丢弃字节字段的值设置为网络设备10已经丢弃的片段的数据部分45的总大小。因为网络设备10丢弃该片段以及当前正在片段缓冲器28中缓冲的相同片段流的所有先前接收的片段,所以网络设备10可以将丢弃字节字段的值设置为排队字节字段的值与片段中的总长度50a所指定的片段的ipv4报头42中的总长度50a的值的总和减去ipv4报头42的大小。网络设备10还可以将发送字节字段和排队字节字段的值设置为零。

网络设备10可以确定它是否应该删除流表32中的片段流的条目。如果网络设备10已经接收到构成片段流的每个片段,则网络设备可以删除片段流的条目(158)。因为片段未通过反欺骗检查,所以网络设备10应该丢弃它已经接收的片段流中的每个片段。如果网络设备10已经接收并丢弃了片段流中的每个片段,则其已经丢弃的所有片段的总大小应该与片段流中的所有片段的总大小相同。

因此,网络设备10可以通过将总字节字段的值与丢弃字节字段进行比较来确定它是否已经接收到片段流中的每个片段。如果总字节字段的值大于零,并且如果总字节字段的值等于丢弃字节字段的值,则网络设备10可以确定它已经接收到片段流中的每个片段,并且可以删除流表32中的片段流的条目(160)。另一方面,如果网络设备10确定它尚未接收到片段流中的每个片段,则网络设备10可以避免删除流表32中的片段流的条目,而是可以图7a中所示的步骤130等待接收携带片段流中的片段的附加ipv6网络分组60。

当片段通过了反欺骗检查时,则网络设备10可以将片段以及当前正在片段缓冲器28中缓冲的同一片段流的所有先前接收的片段转发至ipv4网络4(162)。网络设备10还可以将发送字节字段的值设置为网络设备10已经发送至ipv4网络4的各片段的数据部分45的总大小。因为网络设备10将片段以及当前正在片段缓冲器28中缓冲的相同片段流的所有先前接收的片段发送至ipv4网络4,所以网络设备10可以将发送字节字段的值设置为排队字节字段的值与片段的ipv4报头42中的总长度50a的值的总和减去ipv4报头42的大小。网络设备10还可以将排队字节字段的值设置为零。

网络设备10可以确定它是否应该删除流表32中的片段流的条目。如果网络设备10已经接收到构成片段流的每个片段,则网络设备可以删除片段流的条目(164)。因为片段已经通过了反欺骗检查,所以网络设备10应该已经转发了它已经接收的片段流中的每个片段。如果网络设备10已经接收并转发了片段流中的每个片段,则其已经转发的所有片段的总大小应该与片段流中的所有片段的总大小相同。

因此,网络设备10可以通过将总字节字段的值与发送字节字段进行比较来确定它是否已经接收到片段流中的每个片段。如果总字节字段的值大于零,并且如果总字节字段的值等于发送字节字段的值,则网络设备10可以确定它已经接收到片段流中的每个片段,并且可以删除流表32中的片段流的条目(166)。另一方面,如果网络设备10确定它尚未接收到片段流中的每个片段,则网络设备10可以避免删除流表32中的片段流的条目,而是可以图7a中所示的步骤130等待接收携带片段流中的片段的附加ipv6网络分组60。

网络设备10可只需要对特定的片段流执行一次反欺骗检查,因为该片段流包括指定单个ipv4源地址和单个源端口的单个ipv4网络分组的片段。因此,如果片段流中的一个片段通过了反欺骗检查,则片段流中的其他片段也将通过反欺骗检查。相反地,如果片段流中的一个片段未通过反欺骗检查,则片段流中的其他片段也将不能通过反欺骗检查。因此,一旦网络设备10已经对片段流执行了反欺骗检查,网络设备10就可以基于片段流先前是否已经通过或者未通过反欺骗检查,来确定是否要转发或丢弃片段流的剩余片段。

返回参考图7b,如果当前片段是片段流中的第一片段,并且如果流表32包括片段流的条目,则片段流的条目的状态字段可以指示片段流是否处于缓冲状态或片段流的状态是否处于丢弃状态。如上所述,当网络设备10已经接收并缓冲片段流中的一个或多个片段时,片段流可以处于缓冲状态。

响应于确定当前片段是片段流中的第一片段并且片段流处于丢弃状态,网络设备10可以丢弃片段(即,避免将片段转发到ipv4网络4)(142)。响应于丢弃片段,网络设备10可以在图7a中所示的步骤130处等待接收携带片段流中的片段的附加ipv6网络分组60。

响应于确定当前片段是片段流中的第一片段并且片段流处于缓冲状态,网络设备10可以将片段流从缓冲状态转换至欺骗状态可获得状态并且可以基于第一片段来更新流表32中的片段流的条目(140)。网络设备10可以将片段流的状态字段的值从指示缓冲状态更新为指示欺骗状态可获得状态,并且将条目中的源端口字段的值更新为指示由第一片段指示的源端口。因为接收片段流的第一片段使得网络设备10能够将其已经缓冲的片段流中的片段转发到ipv4网络4,所以网络设备10还可以将条目的发送字节字段的值更新为指示排队字节字段的当前值加上片段的ipv4报头42中的总长度50a的值减去ipv4报头42的大小。网络设备10还可以将条目的排队字节字段的值设置为指示零,这是因为网络设备10能够转发其已经缓冲的片段流中的片段。网络设备10可以继续对其已缓冲的流中的每个片段以及第一片段执行反欺骗检查,如图7d中所示。

如上所述,片段可以是第一片段、中间片段或最后片段。如图7c中所示,当片段是中间片段或最后片段时,网络设备10可以确定片段的片段流的状态,并且可以至少部分地基于片段流的状态来执行一个或多个动作(143)。当网络设备10接收到作为中间片段或最后片段的片段时,片段流状态可以处于以下之一:新条目状态、缓冲状态、欺骗状态可获得状态或丢弃状态。

如以上关于图7b所讨论的,网络设备10可以通过对流表32执行查找来确定流表32是否包括特定片段流的条目,并且如果是,则基于片段流的流表条目中的状态字段的值来确定片段流的状态,从而确定片段流的状态。

如果流表32不包括片段流的条目,则网络设备10可以确定片段流处于新条目状态,而不管当前片段是第一片段、中间片段还是最后片段。响应于确定片段是中间片段或最后片段并且片段流的状态是新条目,网络设备10可以在流表32中为片段流创建片段流的条目(144)。一旦在流表32中创建片段流的条目,网络设备10就可以更新条目的一个或多个字段的值。因为网络设备10尚未接收到片段流中的第一片段,所以当网络设备10接收到片段流中的中间片段或最后片段时,片段流状态从新条目状态转换到缓冲状态。因此,网络设备10可以将流表32中的片段流的条目的状态字段的值设置为指示缓冲状态。网络设备10还可以将流表32中的条目的发送字节字段和丢弃字节字段的每个值设置为零,因为片段流中的片段中均尚未通过或不能通过反欺骗检查。

当网络设备10接收的片段是片段流中的最后片段时,网络设备10能够至少部分地基于最后片段的ipv4报头42中包括的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的数据部分45的总大小。在一个实例中,片段流中的所有片段的数据部分45的总大小可以通过以下方式来确定:最后片段的ipv4报头42中的总长度50a的值与最后片段的ipv4报头42中的片段偏移50d的值乘以八的结果相加,并由总和的结果减去最后片段的ipv4报头42的大小。网络设备10可以用片段流中的所有片段的总大小来更新条目的总字节字段的值。当网络设备10接收的片段是中间片段时,网络设备10可以将总大小字段的值设置为零。

当片段流当前处于缓冲状态时,网络设备10操作为在其保持缓冲状态时在片段缓冲器中缓冲网络设备接收的片段。因为片段流现在处于缓冲状态,所以网络设备10可以将片段缓冲在片段缓冲器28中(146)。当网络设备10缓冲片段流的片段时,网络设备10可以更新流表32中的片段流的条目,以反映当前在网络设备10的片段缓冲器28中缓冲的片段的数据部分45的大小。因此,因为网络设备10接收的中间片段或最后片段当前是片段缓冲器28中缓冲的片段流的仅有片段,所以网络设备10可以将流表32中的片段流的条目中的排队字节字段的值设置为指示:由其已经接收和缓冲的中间片段或最后片段的ipv4报头42的总长度50a减去ipv4报头42的大小的值。一旦在片段缓冲器28中缓冲片段,网络设备10就可以在图7a中所示的步骤130处等待接收片段流的额外片段。

如果网络设备10接收的片段是片段流中的中间片段或最后片段,并且如果流表32包括片段流的条目,则片段流处于缓冲状态、欺骗状态可获得状态或者丢弃状态。如上所述,流表32中的片段流条目中的状态字段指示片段流是处于缓冲状态、欺骗状态可获得状态或者丢弃状态。当片段流处于丢弃状态时,网络设备10可以丢弃其已经接收的片段(即,避免对片段执行反欺骗检查或将片段转发到ipv4网络4)(152)。一旦丢弃片段,网络设备10就可以在图7a中所示的步骤130处等待接收片段流的额外片段。

当网络设备10接收的片段是片段流中的中间片段或最后片段时,如果片段流处于缓冲状态,则网络设备10可以在片段缓冲器28中缓冲它接收到的片段并且可以更新流表32中的片段流的条目(148)。网络设备10可以将条目中的排队字节字段更新为:将正在缓冲的当前片段的ipv4报头42的总长度50a的值减去ipv4报头42的大小加上排队字节字段的当前值。如果该片段是片段流的最后片段,则网络设备10还能够如上所述至少部分地基于最后片段的ipv4报头42中的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的总大小,并且可以用其已经确定的片段流中的所有片段的数据部分45的总大小来更新条目的总字节字段的值。一旦在片段缓冲器28中缓冲片段,网络设备10就可以在图7a中所示的步骤130处等待接收片段流的额外片段。

如果网络设备10先前已经接收到片段流的第一片段,则片段流处于欺骗状态可获得状态。当片段是片段流中的最后片段时,网络设备10可以将条目中的排队字节字段更新为将正在缓冲的当前片段的ipv4报头42中的总长度50a的值减去ipv4报头42的大小加上排队字节字段的当前值,并且还可以如上所述至少部分地基于最后片段的ipv4报头42中的片段偏移50d的值和总长度50a的值来确定片段流中的所有片段的数据部分45的总大小,并且可以用其已经确定的片段流中的所有片段的数据部分45的总大小来更新条目的总字节字段的值(150)。当片段是片段流中的中间片段或最后片段时,并且如果片段流处于欺骗状态可获得状态,则网络设备10可以对其已经接收并解封的片段执行反欺骗检查,如图7d中进一步详细示出的。以这种方式,网络设备10能够在不由片段52重组ipv4网络分组40的情况下,接收封装片段52的ipv6网络分组60,从ipv6网络分组60解封片段52,并且对片段52中的每一个执行反欺骗检查。

图8是示出根据本文中描述的技术的用于在不重组ipv4分组的情况下将ipv4分组封装在ipv6分组中的示例过程的流程图。这样的过程可以由连接至ipv4网络和ipv6网络的网络设备执行,诸如,在图1和图2中所示的连接至ipv4网络4和ipv6网络6的网络设备10。如图8中所示,网络设备10可以从第一网络接收与网络分组相关联的片段流中的一个或多个片段,其中,网络分组是第一类型的网络分组(202)。在一些实例中,第一网络可以是ipv4网络4,并且第一类型的网络分组可以是ipv4网络分组40。

网络设备10可以响应于确定网络设备10尚未接收到片段流中的包括网络分组的目的地端口的指示的片段来缓冲一个或多个片段(204)。在一些实例中,目的地端口可以是ipv4目的地端口50i,并且网络设备10可以在片段缓冲器28中缓冲一个或多个片段。

网络设备10可以接收片段流中的包括网络分组的目的地端口的指示的片段(206)。在一些实例中,由网络设备10接收的片段可以是包括目的地端口50f的片段52a。

网络设备10可以响应于接收片段流中的包括网络分组的目的地端口的指示的片段,在不由一个或多个片段和该片段重组网络分组的情况下,至少部分地基于网络分组的目的地端口,将片段流中的一个或多个片段和片段流中的该片段封装在多个网络分组内,其中,多个网络分组均是第二类型的网络分组(208)。在一些实例中,第二类型的网络分组可以是ipv6网络分组60,并且网络设备10可以执行map-e的技术以封装片段流中的一个或多个片段。

网络设备10可以向第二网络分发多个网络分组(210)。例如,网络设备10可以通过将分组在ifc22之一的输出接口上向分组的目的地输出来转发多个网络分组中的每个分组。在一些实例中,第二网络可以是ipv6网络6。

在一些实例中,网络设备10可以在接收到包括目的地端口的指示的片段并分发多个网络分组之后,接收片段流的一个或多个剩余片段。网络设备10可以在不缓冲片段流的一个或多个剩余片段的情况下,至少部分地基于目的地端口将片段流的一个或多个剩余片段封装在一个或多个网络分组内,其中,该一个或多个网络分组均是第二类型的网络分组。网络设备10可以将一个或多个网络分组分发至第二网络。

在一些实例中,网络设备10可以在流表(诸如流表32)中创建片段流的条目。网络设备10可以响应于接收到片段流中的不包括包括网络分组的目的地端口的指示的一个或多个片段,通过将流表中的片段流的条目更新为指示片段流处于缓冲状态来将片段流转变为缓冲状态,其中,缓冲状态指示网络设备尚未接收到网络分组的目的地端口的指示。例如,网络设备10可以将流表32中的片段流的条目中的状态字段更新为指示缓冲状态。

在一些实例中,网络设备10可以响应于接收到片段流中的包括网络分组的目的地端口的指示的片段,通过将流表中的片段流的条目更新为指示片段流处于封装状态来将片段流从缓冲状态转换为封装状态,其中,封装状态指示网络设备能够至少部分地基于目的地端口来封装片段流中的片段。例如,网络设备10可以将流表32中的片段流的条目中的状态字段更新为指示封装状态。

在一些实例中,网络设备10可以确定网络分组的片段流中的一个或多个片段不包括片段流中的第一片段。在一些实例中,片段流中的第一片段可以是片段52a。网络设备10可以至少部分地基于确定片段是否是片段流的第一片段来确定片段流中的片段是否包括网络分组的目的地端口的指示。

图9是示出根据本文中描述的技术的用于在不重组ipv4分组的情况下从ipv6分组解封ipv4分组的片段并对片段执行反欺骗检查的示例过程的流程图。如图9中所示,网络设备10可以从第一网络接收第一网络分组类型的一个或多个网络分组,其中,一个或多个网络分组中的每一个网络分组封装与第二网络分组类型的网络分组相关联的片段流中的一个或多个片段中的各个片段(302)。在一些实例中,第一网络可以是ipv6网络6,第一网络分组类型可以是ipv6分组50,一个或多个片段可以是片段52中的一个或多个,并且第二网络分组类型可以是ipv4网络分组40。

网络设备10可以响应于确定片段流的一个或多个网络分组不包括片段流中的包括网络分组的源端口的指示的片段,来缓冲片段流中的一个或多个片段(304)。在一些实例中,片段流中的包括网络分组的源端口的指示的片段可以是包括源端口50h的片段52a,并且网络设备10可以在片段缓冲器28中缓冲片段流中的一个或多个片段。

网络设备10可以接收封装片段流中的包括网络分组的源端口的指示的片段的第一网络分组类型的网络分组(306)。在一些实例中,第一类型的网络分组可以是ipv6网络分组60a。

网络设备10可以响应于接收封装片段流中的包括网络分组的源端口的指示的片段的第一网络分组类型的网络分组,至少部分地基于第二网络分组类型的网络分组的源端口对片段流中的一个或多个片段和片段流中的该片段执行反欺骗检查,而不由片段流中的一个或多个片段和片段流中的该片段重组第二网络分组类型的网络分组(308)。

网络设备10可以响应于片段流中的一个或多个片段和片段流中的该片段通过反欺骗检查,向第二网络分发片段流中的一个或多个片段和片段流中的该片段(310)。例如,网络设备10可以通过将分组在ifc22之一的输出接口上输出到分组的目的地来转发多个网络分组中的每个分组。在一些实例中,第二网络可以是ipv4网络4。

在一些实例中,网络设备10可以在接收到封装片段流中的包括网络分组的源端口的指示的片段的第一网络分组类型的网络分组并且片段流中的一个或多个片段和片段流中的该片段通过反欺骗检查之后,接收第一网络分组类型的另外的一个或多个网络分组,其中,另外的一个或多个网络分组中的每一个分组封装片段流中的一个或多个剩余片段中的相应一个片段。

在一些实例中,网络设备10可以在不缓冲片段流中的一个或多个剩余片段的情况下,对片段流中的一个或多个剩余片段执行反欺骗检查。在一些实例中,网络设备10可以响应于片段流中的一个或多个剩余片段通过反欺骗检查,向第二网络分发片段流中的一个或多个剩余片段。

在一些实例中,网络设备10可以在流表(诸如流表32)中创建与片段流相关联的条目。网络设备10可以响应于确定片段流中的一个或多个片段不包括片段流中的包括第二网络分组类型的网络分组的源端口的指示的片段,通过将流表中的片段的条目更新为指示片段流处于缓冲状态来将片段流转变为缓冲状态,其中,缓冲状态指示网络设备尚未接收到网络分组的源端口的指示。例如,网络设备10可以将流表32中的片段流的条目中的状态字段更新为指示缓冲状态。

在一些实例中,网络设备10可以响应于确定片段流中的片段包括第二网络分组类型的网络分组的源端口的指示的片段,通过将流表中的片段的条目更新为指示片段流处于欺骗状态可获得状态来将片段流从缓冲状态转换为欺骗状态可获得状态,其中,欺骗状态可获得状态指示网络设备能够至少部分地基于网络分组的源端口对片段流的一个或多个片段和片段流的该片段执行反欺骗检查。例如,网络设备10可以将流表32中的片段流的条目中的状态字段更新为指示欺骗状态可获得状态。

在一些实例中,网络设备10可以确定网络分组的片段流中的一个或多个片段不包括片段流中的第一片段。在一些实例中,网络设备10可以至少部分地基于确定片段是否是片段流的第一片段来确定片段流中的片段是否包括网络分组的源端口的指示。在一些实例中,片段流中的第一片段可以是片段52a。

本公开中描述的技术可以至少部分地在硬件、软件、固件或其任何组合中实现。例如,所描述的技术的各个方面可以在一个或多个处理器中实现,处理器包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等同集成或离散逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指代前述逻辑电路中的任一项,单独地或与其他逻辑电路的组合或任何其他等同电路。包括硬件的控制单元还可以执行本公开的一种或多种技术。

这样的硬件、软件和固件可以在同一设备内或在单独的设备内实现,以支持本公开中描述的各种操作和功能。另外,所描述的单元、模块或组件中的任一项可以一起实施或作为离散但可互操作的逻辑设备单独实施。不同功能的模块或单元的描述旨在突出不同的功能方面,并且不一定意味着这样的模块或单元必须通过独立的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能,可以通过单独的硬件或软件组件执行,或集成在共同或单独的硬件或软件组件中。

本公开中描述的技术也可以体现或编码在计算机可读介质中,诸如包含指令的计算机可读存储介质。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他处理器例如,当执行指令时执行该方法。计算机可读介质可以包括非暂时性计算机可读存储介质和暂时性通信介质。有形的并且非暂时性的计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、磁带、磁介质、光介质或其他计算机可读存储介质。应当理解,术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他暂时性介质。

已经描述了各种实例。这些和其他实例在所附权利要求的范围内。

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