用于在网络中转发数据分组的方法及其可编程入口和出口节点与流程

文档序号:11291022阅读:419来源:国知局
用于在网络中转发数据分组的方法及其可编程入口和出口节点与流程

相关申请的交叉引用

本申请要求享有于2015年01月30日提交的题为“用于在网络中转发数据分组的方法及其可编程入口和出口节点”的14/610,673号美国专利申请的优先权,该申请在此通过引用并入本文。

改进总体上涉及网络通信领域,并且更具体地,涉及用于网络中流式传输数据分组的系统、装置以及方法。



背景技术:

例如,当终端用户希望在服务提供商通过网络提供数字内容的时候消费该数字内容时,数据流被使用。这样的数据流通常管理与在允许终端用户消费数字内容之前下载足够部分的数字内容相关联的时间延迟。

数字内容通常以数据分组序列的形式在网络上传输。将理解,一个或者多个数据分组的丢失、损坏或者延迟可影响对终端用户提供的数据流的质量。

虽然现有的涉及数据流的系统、装置以及方法在某种程度上已经是令人满意的,但是仍有改进的空间,尤其在解决与数据流的质量相关联的问题方面。



技术实现要素:

根据一方面,提供了一种用于在网络中转发数据分组的方法。该方法可以包括如下步骤:形成至少两个运输数据分组,包括至少复制数据分组的有效负载数据、序列数据以及目的地数据;沿着第一限定网络路径将所述至少两个运输数据分组的第一个向根据所述目的地数据选择的出口节点传输;以及沿着第二限定网络路径将至少两个运输数据分组的第二个向所述出口节点传输,所述第二限定网络路径不同于第一限定网络路径。

根据另一方面,提供了一种用于在网络中转发数据分组的可编程入口节点,所述网络具有多个节点,所述多个节点包括与所述网络外部的数据目的地耦合的出口节点,所述可编程入口节点用于可操作地连接至数据源并且用于通过网络连接至所述出口节点。所述可编程入口节点可以包括:处理设备;以及存储器,可操作地耦合至所述处理设备并且其上存储有转发指令,当由所述处理设备执行时,所述转发指令使所述可编程入口节点:形成至少两个运输数据分组,包括至少复制数据分组的有效负载数据、序列数据以及目的地数据;沿着第一限定网络路径将所述至少两个运输数据分组的第一个向根据目的地数据选择的出口节点传输;沿着第二限定网络路径将所述至少两个运输数据分组的第二个向所述出口节点传输,所述第二限定网络路径不同于所述第一限定网络路径。

根据另一方面,提供了一种用于连接至网络的可编程出口节点,所述网络具有多个节点,所述多个节点包括耦合至数据源的入口节点,所述可编程出口节点进一步用于通过所述网络可操作地连接至所述入口节点并且用于向所述网络外部的数据目的地转发数据分组。所述可编程出口节点可包括:处理设备;以及存储器,可操作地耦合至所述处理设备并且其上存储有转发指令,当由所述处理设备执行时,所述转发指令使所述可编程入口节点:将接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据进行比较;以及当确定所述接收的数据分组的序列数据不对应于之前传输的数据分组对应的存储的序列数据时,向所述数据目的地转发所述接收的数据分组。

根据另一方面,提供了一种用于在网络中转发数据分组的方法。该方法包括如下步骤:形成至少两个运输数据分组,包括至少复制数据分组的有效负载数据、序列数据以及目的地数据;以及沿着不同网络路径转发至少两个运输数据分组,所述不同路径基于目的地数据通向出口接点。

根据另一方面,提供了一种用于在网络中转发数据分组的可编程入口节点。所述可编程入口节点包括:可操作地耦合至网络的处理设备,其中,所述网络至少具有多个节点,所述多个节点至少包括耦合至数据源的所述可编程入口节点以及耦合至数据目的地的出口节点;以及存储器,其上存储有可由所述处理设备执行的第一转发指令。所述第一转发指令可包括:形成至少两个运输数据分组,包括至少复制数据分组的有效负载数据、序列数据以及目的地数据;以及沿着不同的网络路径转发所述至少两个运输数据分组,其中,所述不同网络路径基于所述目的地数据通向所述出口接点。

根据另一个方面,提供了一种用于在网络中转发数据分组的可编程出口节点。所述可编程出口节点包括:可操作地耦合至网络的处理设备,其中,所述网络至少具有多个节点,所述多个节点至少包括耦合至数据源的入口节点以及耦合至数据目的地的可编程出口节点;以及存储器,其上存储有可由处理设备执行的第二转发指令。所述第二转发指令可包括将接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据进行比较;以及在确定所述接收的数据分组的序列数据不对应于所述至少一个之前接收的数据分组的存储的序列数据时向数据目的地转发接收的数据分组。

根据另一方面,提供了一种用于在网络中转发与主流相关联的多个数据分组的网络控制器。所述网络控制器包括可操作地耦合至网络的处理设备,所述网络至少依次具有多个可编程网络节点,包括耦合至数据源的入口节点和耦合至数据目的地的出口节点。所述网络控制器还具有存储器,存储可由所述处理设备执行的计算机软件产品。所述计算机软件产品可以包括计算机代码,所述计算机代码适于将第一转发指令安装在所述入口节点的存储器上。所述第一转发指令可由所述入口节点的处理设备执行并且包括:通过至少复制所述主流的多个数据分组的每一个的有效负载数据、序列数据以及目的地数据而形成至少两个运输流;以及沿着所述网络的不同网络路径转发所述至少两个运输流,其中,所述不同网络路径基于所述目的地数据通向所述出口节点。

仍根据后一方面,所述第一转发指令可以包括,在所述形成和转发之前,识别具有序列数据和目的地数据的至少一个的多个数据分组的每一个。

仍根据后一方面,所述转发可包括将不同网络路径数据并入到所述至少两个运输流的每一个的数据分组的每一个,其中,所述至少两个运输流的每一个的网络路径数据可与不同网络路径相关联。

仍根据后一方面,所述计算机软件产品可以包括用以将第二转发指令安装在所述出口节点的存储器上的计算机代码,其中,所述第二转发指令可以是由出口节点的处理设备可执行的。所述第二转发指令可以包括跟踪接收的数据分组的序列数据;并且基于所述跟踪向数据目的地转发接收的数据分组。

仍根据后一方面,所述跟踪可以包括将所述接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据进行比较;并且在确定接收的数据分组的序列数据不对应于所述至少一个之前接收的数据分组的存储的序列数据时执行所述转发。

仍根据后一方面,所述网络控制器可以是软件定义网络(sdn)控制器,并且所述多个可编程网络节点可以是sdn节点。

仍根据后一方面,所述多个可编程网络节点可以是协议无感知转发(pof)交换机。

仍根据后一方面,目的地数据可以包括定制协议、实时传输协议(rtp)以及传输控制协议(tcp)的至少一个。

仍根据后一方面,所述第二转发指令可以包括,在确定所述接收的数据分组的给定的序列数据对应于至少一个之前接收的数据分组的存储的序列数据时,删除与给定的序列数据相关联的存储的序列数据。

仍根据后一方面,所述第二转发指令可以包括,在确定所述接收的数据分组的序列数据不对应于至少一个之前接收的数据分组的存储的序列数据时,将所述序列数据存储在所述出口节点的存储器和所述网络控制器的存储器的至少一个上。

仍根据后一方面,计算机软件产品可以包括用以将第二转发指令安装在出口节点的存储器上的计算机代码,其中,在接收来自数据目的地的业务流数据时,所述第二转发指令可以由其处理设备执行。所述第二转发指令可以包括:在接收来自数据目的地的业务流数据时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括:在从出口节点接收时,向所述数据源转发业务流数据。

仍根据后一方面,所述第二转发指令可以包括,在从数据目的地接收到业务流数据时,向入口节点转发该业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括从不同网络路径的每一个向数据源转发业务流数据。

仍根据后一方面,在向数据源转发之前,来自不同网络路径的每一个的业务流数据可以彼此组合。

根据另一个方面,提供了一种用于在网络中转发与主流相关联的多个数据分组的方法。该方法包括:通过至少复制所述主流的多个数据分组的每一个的有效负载数据、序列数据以及目的地数据而形成至少两个运输流;以及沿着不同网络路径转发所述至少两个运输流,其中,所述不同网络路径基于所述目的地数据通向出口节点。

仍根据后一方面,该方法可以包括,在所述形成和转发之前,识别至少具有所述序列数据和所述目的地数据的多个数据分组的每一个。

仍根据后一方面,所述转发可以包括将不同网络路径数据包含至所述至少两个运输流的每一个的数据分组的每一个,其中,所述至少两个运输流的每一个的网络路径数据与不同网络路径相关联。

仍根据后一方面,该方法可以包括跟踪接收的数据分组的序列数据;并且基于所述跟踪向数据目的地转发接收的数据分组。

仍根据后一方面,该方法可以包括跟踪,包括将所述接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据相比较;其中,在确定所述接收的数据分组的序列数据不对应于所述至少一个之前接收的数据分组的存储的序列数据时执行所述转发。

仍根据后一方面,所述网络可以是包括多个可编程网络节点的软件定义网络(sdn)。

仍根据后一方面,多个可编程网络节点是协议无感知转发(pof)交换机。

仍根据后一方面,目的地数据可以包括定制协议、实时传输协议(rtp)以及传输控制协议(tcp)的至少一个。

仍根据后一方面,该方法可以包括,在确定所述接收的数据分组的给定的序列数据对应于所述至少一个之前接收的数据分组的存储的序列数据时,删除与所述给定的序列数据相关联的存储的序列数据。

仍根据后一方面,该方法可以包括,在确定接收的数据分组的序列数据不对应于至少一个之前接收的数据分组的存储的序列数据时,将所述序列数据存储在所述出口节点的存储器和所述网络控制器的存储器的至少一个上。

仍根据后一方面,该方法可以包括,在从数据目的地接收业务流数据时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,该方法可以包括,在从出口节点接收时,向数据源转发业务流数据。

仍根据后一方面,该方法可以包括,在从数据目的地接收时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,该方法可以包括将来自不同网络路径的每一个的业务流数据向数据源转发。

仍根据后一方面,在向数据源转发之前,来自所述不同网络路径的每一个的业务流数据可以彼此组合。

根据另一个方面,提供了一种可以用于在网络中转发与主流相关联的多个数据分组的计算机软件产品。所述计算机软件产品可以存储在与所述网络相关联的网络控制器的存储器上,并且可以被配置以在在被安装在所述网络的入口节点的存储器上时执行第一转发指令。所述第一转发指令可以由入口节点的处理设备执行,并且包括:通过至少复制主流的多个数据分组的每一个的有效负载数据、序列数据以及目的地数据而形成至少两个运输流;以及沿着不同网络路径转发所述至少两个运输流,其中,所述不同网络路径基于所述目标数据通向出口节点。

仍根据后一方面,所述第一转发指令可以包括,在所述形成和转发之前,识别至少具有所述序列数据和目的地数据的多个数据分组的每一个。

仍根据后一方面,所述转发可以包括将不同网络路径数据包含至所述至少两个运输流的每一个的数据分组的每一个,其中,所述至少两个运输流的每一个的网络路径数据与不同网络路径相关联。

仍根据后一方面,计算机软件产品可以包括将被安装在所述网络的出口节点的存储器上的第二转发指令,其中,所述第二转发指令可以由所述出口节点的处理设备执行。所述第二转发指令可以包括跟踪接收的数据分组的序列数据;并且基于所述跟踪向数据目的地转发接收的数据分组。

仍根据后一方面,所述跟踪可以包括,将接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据相比较;并且在确定所述接收的数据分组序列数据不对应于所述至少一个之前接收的数据分组的存储的序列数据时执行所述转发。

仍根据后一方面,所述网络控制器可以是软件定义网络(sdn)控制器并且多个可编程网络节点可以是sdn节点。

仍根据后一方面,所述多个可编程网络节点可以是协议无感知转发(pof)交换机。

仍根据后一方面,所述目的地数据可以包括定制协议、实时传输协议(rtp)以及传输控制协议(tcp)的至少一个。

仍根据后一方面,所述第二转发指令可以包括,在确定所述接收的数据分组的给定的序列数据对应于所述至少一个之前接收的数据分组的存储的序列数据时,删除与所述给定的序列数据相关联的存储的序列数据。

仍根据后一方面,所述序列数据可以存储在出口节点的存储器和网络控制器的存储器的至少一个上。

仍根据后一方面,所述计算机软件产品可以包括用以将第二转发指令安装在出口节点的存储器上的计算机代码,所述第二转发指令可以由出口节点的处理设备在接收到来自数据目的地的业务流数据时执行。所述第二转发指令可以包括从数据目的地接收业务数据流时向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括在从出口节点接收时向数据源转发业务流数据。

仍根据后一方面,所述第二转发指令可以包括,在从数据目的地接收时向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括向数据源转发来自不同网络路径的每一个的业务流数据。

仍根据后一方面,在向数据源转发之前,来自不同的网络路径的每一个的业务流数据可以彼此组合。

根据另一方面,提供了一种用于在网络中转发与主流相关联的多个数据分组的可编程入口节点。所述可编程入口节点包括可操作地耦合至所述网络的处理设备,所述网络依次至少具有多个节点,所述多个节点至少包括耦合至数据源的可编程入口节点和耦合至数据目的地的出口节点。所述可编程入口节点也具有存储器,其上存储有第一转发指令,该第一转发指令可以由处理设备执行。所述第一转发指令包括:形成至少两个运输流,包括至少复制主流的多个数据分组的每一个的有效负载数据、序列数据以及目的地数据;以及沿着不同网络路径转发所述至少两个运输流,其中,所述不同网络路径基于所述目的地数据通向所述出口节点。

仍根据后一方面,所述第一转发指令可以包括,在所述形成和转发之前,识别至少具有所述序列数据和所述目的地数据的多个数据分组的每一个。

仍根据后一方面,所述转发可以包括,将不同网络路径数据包含至所述至少两个运输流的每一个的数据分组的每一个,其中,所述至少两个运输流的每一个的网络路径数据与不同网络路径相关联。

仍根据后一方面,所述网络可以是软件定义网络(sdn)。

仍根据后一方面,所述可编程入口节点可以是sdn交换机。

仍根据后一方面,所述sdn交换机是openflow交换机和协议无感知转发(pof)交换机的至少一个。

仍根据后一方面,所述目的地数据可以包括定制协议、实时传输协议(rtp)以及传输控制协议(tcp)的至少一个。

仍根据后一方面,所述可编程入口节点可以包括用以将第二转发指令安装在所述出口节点的存储器上的计算机代码,其中,所述第二转发指令可由该出口节点的处理设备在接收到来自数据目的地的业务流数据时执行。所述第二转发指令可以包括,在接收到来自数据目的地的业务数据流时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括:在从出口节点接收时,向数据源转发业务流数据。

根据另一方面,提供了一种用于在网络中转发与主流相关联的多个数据分组的可编程出口节点。所述可编程出口节点具有可操作地耦合至网络的处理设备,所述网络转而至少具有多个节点,至少包括耦合至数据源的入口节点和耦合至数据目的地的可编程出口节点。所述可编程出口节点也具有存储器,其上存储有可以由处理设备执行的第二转发指令。所述第二转发指令包括:将接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据相比较;以及当确定所述接收的数据分组的序列数据不对应于至少一个之前接收的数据分组的存储的序列数据时向数据目的地转发所述接收的数据分组。

仍根据后一方面,所述第二转发指令可以包括,在确定接收的数据分组的给定的序列数据对应于至少一个之前接收的数据分组的存储的序列数据时,删除与所述给定的序列数据相关联的存储的序列数据。

仍根据后一方面,所述序列数据可以存储在所述出口节点的存储器和所述网络控制器的存储器的至少一个上。

仍根据后一方面,所述网络可以是软件定义网络(sdn)。

仍根据后一方面,所述可编程入口节点是sdn交换机。

仍根据后一方面,所述sdn交换机是openflow交换机和协议无感知转发(pof)交换机的至少一个。

仍根据后一方面,所述第二转发指令可以包括,在从所述数据目的地接收时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括将来自不同网络路径的每一个的业务流数据向数据源转发。

仍根据后一方面,在向数据源转发之前,来自不同网络路径的每一个的业务流数据可以彼此组合。

根据另一个方面,提供了一种用于在网络中转发与主流相关联的多个数据分组的网络通信系统。所述网络通信系统具有可操作地连接至数据源和网络的可编程入口节点。所述可编程入口节点配置成接收将具有多个数据分组的所述主流从数据源向数据目的地转发的请求,其中,转发所述主流包括:通过至少复制所述主流的多个数据分组的每一个的有效负载数据、序列数据以及目的地数据而形成至少两个运输流;以及沿着不同网络路径转发所述至少两个运输流。其中,所述不同网络路径基于所述目的地数据通向所述出口节点。所述网络通信系统还具有可操作地耦合至所述数据目的地和所述网络的可编程出口节点。所述可编程出口节点配置成接收所述至少两个运输流,其中,所述接收包括:跟踪接收的数据分组的序列数据;以及基于所述跟踪向数据目的地转发接收的数据分组。

仍根据后一方面,所述第一转发指令可以包括,在所述形成和转发之前,识别至少具有序列数据和目的地数据的多个数据分组的每一个。

仍根据后一方面,所述转发可以包括将不同网络路径数据包含至所述至少两个运输流的每一个的数据分组的每一个,其中,所述至少两个运输流的每一个的网络路径数据与不同网络路径相关联。

仍根据后一方面,所述跟踪可以包括将接收的数据分组的序列数据与至少一个之前接收的数据分组的存储的序列数据相比较;并且其中,在确定所述接收的数据分组的序列数据不对应于所述至少一个之前接收的数据分组的存储的序列数据时执行所述转发。

仍根据后一方面,所述网络控制器可以是软件定义网络(sdn)控制器并且多个可编程网络节点可以是sdn节点。

仍根据后一方面,所述多个可编程网络节点可以是协议无感知转发(pof)交换机。

仍根据后一方面,所述目的地数据可以包括定制协议、实时传输协议(rtp)以及传输控制协议(tcp)的至少一个。

仍根据后一方面,所述第二转发指令可以包括,在确定所述接收的数据分组的给定的序列数据对应于所述至少一个之前接收的数据分组的存储的序列数据时,删除与所述给定的序列数据相关联的存储的序列数据。

仍根据后一方面,所述序列数据可以存储在所述出口节点的存储器和所述网络控制器的存储器的至少一个上。

仍根据后一方面,所述计算机软件产品可以包括用以将第二转发指令安装在所述出口节点的存储器上的计算机代码,其中,所述第二转发指令可以由所述出口节点的处理设备在接收到来自数据目的地的业务流数据时执行。所述第二转发指令可以包括,在从数据目的地接收业务流数据时,向入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同网络路径执行。

仍根据后一方面,所述第一转发指令可以包括,在从所述出口节点接收时,向所述数据源转发所述业务流数据。

仍根据后一方面,所述第二转发指令可以包括,在从数据目的地接收时,向所述入口节点转发业务流数据,其中,所述转发业务流数据可以沿着不同的网络路径执行。

仍根据后一方面,所述第一转发指令可以包括将来自不同网络路径的每一个的业务流数据向所述数据源转发。

仍根据后一方面,在向所述数据源转发之前,来自不同网络路径的每一个的业务流数据可以彼此组合。

阅读本公开后,本领域技术人员将会看到关于本改进的许多其它特征及其组合。

附图说明

在附图中:

图1是根据一实施例的网络通信系统的示例的网络图;

图2是根据一实施例示出了图1的网络通信系统中数据分组的主流的第一示例的示意图;

图3a是根据一实施例示出了数据分组的第二示例的高级示意图;

图3b是根据一实施例示出了数据分组的第二示例的高级示意图;

图4是根据一实施例示出了入口节点中数据分组的主流的示例的示意图;

图5是根据一实施例示出了出口节点中数据分组的示例流的示意图;

图6是根据一实施例示出了图1的网络通信系统的网络控制器的示例的高级示意图;

图7是根据一实施例示出了图1的网络通信系统的节点的示例的高级示意图;

图8是根据一实施例示出了图1的网络通信系统中数据分组的主流的第一示例的示意图。

图9是根据一实施例示出了图1的网络通信系统中数据分组的主流的第二示例的示意图。

图10a至图10b是根据一实施例的用于在图1的网络通信系统中转发与主流相关联的多个数据分组的方法的示例的流程图。

这些附图描述了用于说明目的的示例性实施例,并且可以对这些示例性实施例进行改变、替代配置、替代组件以及修改。

具体实施方式

图1示出了网络通信系统100的示例。如描述的,系统100包括通过分组交换网络140互连的网络控制器110、数据源或者流源120,以及数据目的地或者流处理设施130。分组交换网络140包括诸如入口节点150、中间节点160以及出口节点170的节点。

在这个实施例中,网络通信系统100具有部分或者完整的软件定义架构。网络控制器110是软件定义网络(sdn)控制器,其可以与合适的应用程序接口(api)相耦合。sdn控制器110配置成执行用于分组交换网络140的控制平面功能并且执行用于网络140的流量工程功能。例如,网络控制器110确定用于在网络140中传输的数据分组的流的最优网络路径,并调度系统节点110处的数据分组的出发时间(departuretime)。此外,在此实施例中,节点150、160以及170是诸如sdn节点、sdn交换器等的可编程网络节点。节点150、160以及170配置成可经由网络控制器110或者经由第三方设备编程和/或控制。网络控制器110和节点150、160和170的这种可编程性允许sdn系统100的控制和转发平面两者的定制。

本文呈现的示例方法和系统在sdn系统100中体现,其包括信息在网络140上的流式传输。在利用与sdn系统100、网络控制器110以及节点150、160和170相关联的优点的同时,本文公开的实施例包括将数据流进行复制以解决诸如可能导致丢失、损坏和/或延迟的数据分组的这些数据流质量问题。在非sdn通信系统中解决这样的挑战涉及在入口节点处并且在出口节点处物理集成的硬件,这在附加的物理装备、维护以及人力资源方面是昂贵的,并且使用如本文公开的sdn实施例可以解决至少一些这样的问题。

图2示出了网络通信系统100中数据分组pi的主流f的第一示例的示意图。如上面简要描述的,在数据流中,数字内容以具有多个数据分组pi的序列的主流f的形式在网络140上传输(也称为“转发”)。例如,主流f从数据源120传输。该实施例包括在入口节点150和出口节点170处的软件使用和/或对入口节点150和出口节点170的网络控制。在入口节点150处,主流f的数据分组pi被复制到复制的数据分组pi的两个运输流f′和f″中。运输流f′,f″随后沿着不同的网络路径传输通过网络140,并且更具体地,如果至少两个运输数据分组的第一个沿着第一限定网络路径210向出口节点转发,同时该至少两个传输数据分组的第二个沿着第二限定网络路径220向出口接点转发,第二限定网络路径220不同于第一限定网络路径210。此外,在出口节点170处,在接收运输流f′,f″的情况下,数据分组pi被跟踪并且向数据目的地130转发。相比于传输单个运输流,本实施例可以显著降低相同数据分组pi的任何给定的一个被丢失、损坏和/或延迟的可能性。可以基于接收数据分组的每一个的序列数据来跟踪接收的数据分组pi。在一个实施例中,本文描述的方法和系统允许在跟踪期间保留存储的序列数据的记录,其指示在数据分组序列的数据分组的哪一个已经被转发至数据目的地130。如本文详细描述的,所述至少两个不同网络路径可以根据目的地数据而选择,并且基于所述目的地数据而通向出口节点。

在图2中呈现的简化示例性示意中,网络140具有耦合远程设置的数据源120和数据目的地130的多个网络路径。运输流f′经由网络路径210传输通过网络140,使得运输流f′的数据分组pi沿着第一网络链路212传输至中间节点160′,并且随后经由第二网络链路242到达出口节点170。该实施例中还示出,运输流f″通过网络路径220传输至出口节点170,网络路径220具有中间节点160″和160″′以及网络链路222、224和226。

如图2中示意性示出的,一些数据分组pi丢失、损坏和/或延迟。例如,运输流f′的数据分组p4和运输流f″的数据分组p8丢失和/或漏掉并且运输流f′的数据分组p9相比于数据分组p8在时间上被延迟。本文公开的方法和系统可以在数据目的地130处提供具有较少数据流质量损害的主流f。实际上,在图2示出的时刻,主流f的数据分组p1、p2以及p3由出口节点170跟踪和比较,并且向数据目的地130转发。在这个实施例中,选择来自流体f″的数据分组p1和p2,同时选择来自流体f′的数据分组p3。即将到出口节点170的是来自运输流f″的数据分组p4,由于数据分组p4不存在于数据流f′中,数据分组p4将被转发至数据目的地130。在运输流的任何一个的数据分组pi可以用在传输至数据目的地130的主流f上的背景下,运输流两者都可以叫做活动的,并且实施例可以被称为活动-活动数据流的示例。

图3a为示出了数据分组pi的第一示例的高级示意图。在这个实施例中,数据分组pi包括有效负载数据310、目的地数据320以及序列数据330(在可替换实施例中可出现另外的数据)。有效负载数据310与通过网络140流式传输的分段数字内容相关联。在一个实施例中,有效负载数据310中包含的信息量在流的数据分组之间平均共享,而在另一个实施例中,有效负载310中包含的信息量可以随着一个数据分组到另一个而改变。目的地数据320与数据目的地130相关联,其中,主流f将最终被转发至数据目标130。在这个实施例中,详细地网络路径不是完全在入口节点处确定,而是至少部分地在中间节点处确定,并且可以因此取决于当前网络条件和/或任何其它相关考虑。与数据分组pi相关联的序列数据330表示其在主流f内的序列顺序。例如,在图2的实施例中,数据分组p1是主流f的第一个数据分组,而数据分组pi是主流f的第i个数据分组。

图3b为示出了数据分组pi的第二示例的高级示意图。在这个实施例中,数据分组pi附加地包括关于沿着最终通向出口节点的路径的中间目的地的更加详细的网络路径数据340。在一个实施例中,例如,在入口节点级,例如,整个路径可以被预先确定并指示在网络路径数据340中。网络路径可以包括网络140内遵循的节点和/或链路的具体序列。在另一个实施例中,网络路径数据可以表示数据分组pi将被转发到的后续中间节点160。

包含至数据分组pi的数据320,330(以及340或者任何其它附加数据)可以以报头的形式提供,报头可以由给定通信协议读取。例如,目的地数据320可以是互联网协议(ip)报头、用户数据报协议(udp)报头,实时传输协议(rtp)报头等。序列数据可以是表示主流f内数据分组pi的序列顺序的数值或者可以实现排序功能的任何其它报头。此外,提供定制的目的地数据320而不是与已知的通信协议相关联,这被发现在sdn环境中是有用的。实际上,由于节点150、160以及170是可编程的,因此减少了遵守标准协议的需要。

图4是根据本文公开的方法和系统的一实施例示出了由入口节点150处理的数据分组pi的主流f的示例400的示意图。在这个实施例中,入口节点150配置成接收输入数据并随时间顺序传输输出数据。例如,输入数据是具有有效负载数据310的数据分组pi的主流f并且输出数据是两个运输流f′和f″。根据本文公开的方法和系统,入口节点150配置成在输出所述输出数据之前基于指令执行动作。在图4的实施例中,入口节点150配置成执行第一转发指令。在一个实施例中,这样的第一转发指令可以存储在入口节点150的存储器上。在另一个实施例中,由网络控制器110使用相应调整的计算机软件产品将第一转发指令安装在入口节点150的存储器上。

例如,第一转发指令可以包括识别动作410、复制动作420以及转发动作430。在可替代实施例中,当数据分组到达入口节点处时,序列数据可能已经与有效负载数据一起存在,并且因此可以避免识别的步骤。在一些实施例中,数据可能以稳定数据流形式到达入口节点处和/或完全或者部分地由入口节点存储,并且入口节点可以附加地执行分离和/或缓冲功能以准备数据分组形式的数据发送。在图4的实施例中,入口节点150配置成执行识别动作410,其识别主流f的数据分组pi的每一个。根据这个实施例,识别可以包括将目的地数据320和序列数据330包含至数据分组pi的有效负载数据310。在另一个实施例中,识别操作410是可选的并且主流f的数据分组pi的每一个在被传输至入口节点150之前用目的地数据320和序列数据330识别。在另一个实施例中,入口节点150配置成将网络路径数据340包含至两个运输流f′和f″的给定一个的数据分组的每一个。在具体的实施例中,由于两个运输流f′和f″将被沿着两个不同的网络路径转发,运输流f′和f″的网络路径数据340不同。如图4中示出的,入口节点150配置成执行复制动作420,其随着时间顺序地复制主流f的数据分组pi以形成具有目的地数据320和序列数据330的数据分组pi的两个运输流f′和f″。例如,如图4中示出的,入口节点150配置为沿着分组交换网络140的中间节点160(至少在图2中示出)经由两个不同的网络路径210和220转发运输流f′和f″。例如,继续参考图4,需要注意,即使在该实施例中由入口节点150根据连续动作410、420以及430处理数据分组p2,但是可以通过由入口节点150执行的连续动作410、420以及430的每一个连续处理多于一个数据分组pi。

在另一个实施例中,由数据源120执行识别动作410而不是由入口节点150来执行。在这个具体的实施例中,在向入口节点150传输数据分组pi的主流f之前,由数据源120将目的地数据320和序列数据330包含至数据分组pi的有效负载310。仍在这个实施例中,例如,入口节点150仅在数据分组pi的每一个上执行复制动作420和转发动作430以形成运输流f′和f″。

图5是根据本文公开的方法和系统的实施例示出了由出口节点170处理的数据分组pi的主流f的示例500。在这个实施例中,出口节点170配置成接收输入数据并且随时间顺序地传输输出数据。输入数据是从入口节点150沿着两个不同的网络路径210和220传输的两个运输流f′和f″。出口节点170的输出数据是具有有效载荷数据310的数据分组pi的主流f。在图5的实施例中,出口节点170配置成执行第二转发指令。在一个实施例中,这样的第二转发指令可以存储在出口节点170的存储器上。在另一个实施例中,由网络控制器110使用相应调整的计算机软件产品将第二转发指令安装在出口节点170的存储器上。

例如,第二转发指令可以至少包括跟踪动作510、转发动作520、删除动作530以及存储动作540。如图5中描述的,出口节点170配置成执行跟踪动作510,其识别并且跟踪运输流f′和f″的数据分组pi的每一个。在一个实施例中,出口节点170跟踪来自两个运输流f′和f″的接收的数据分组pi并且将时刻ti与接收的数据分组pi的每一个相关联。根据这个实施例,出口节点170适于基于与运输流f′和f″的接收的数据分组pi的每一个相关联的时刻ti执行转发动作520。例如,当在时刻t3′接收运输流f′的数据分组p3并且在时刻t3″接收运输流f″的数据分组p3(t3″发生在t3′之前)时,出口节点170配置成向数据目的地130转发运输流f″的数据分组p3。对于运输流f′的数据分组p3,出口节点170配置成,一旦运输流的任一个的数据分组p3的任一个已经向数据目的地130转发,则在删除动作530下删除随后接收的数据分组p3。

在另一个实施例中,出口节点170跟踪来自两个运输流f′和f″的接收的数据分组pi并且在向数据目的地130转发数据分组pi之前对数据分组pi的序列数据330进行比较。在这个实施例中,出口节点170执行存储动作540并且存储接收的数据分组的每一个的存储的序列数据。该比较包括,在确定接收的数据分组pi的序列数据330不对应于至少一个之前接收的数据分组的存储的序列数据时,在转发数据分组pi之前将接收的数据分组的序列数据330与存储的序列数据相比较。换句话说,出口节点170保持与接收的数据分组pi相关联的接收的序列数据330的记录,使得当给定的数据分组具有已经接收的序列数据,即,其中,序列数据已经存储在存储序列数据中时,出口节点170适于删除给定的数据分组。可替换地,当给定的数据分组具有序列数据,而根据存储的序列数据,该序列数据之前没有被接收过时,出口节点170适于向数据目的地130转发给定的数据分组。继续在这个实施例中,当确定接收的数据分组的给定序列数据对应于之前接收的数据分组的任一个的存储的序列数据时,出口节点170适于删除与给定序列数据相关联的存储的序列数据。不同的是,例如,由出口节点170所存储的存储的序列数据可以实时更新以限制系统要求。

在一个实施例中,存储动作540将运输流f′和f″的数据分组的序列数据330存储在出口节点170的存储器中。在图5中描述的实施例中,在时刻t3″存储运输流f″的数据分组p3的序列数据330,使得在稍后时刻t3′接收运输流f′的数据分组p3时,由出口节点170确定应该在删除动作530下删除随后接收的运输流f′的数据分组p3。此外,在这个实施例中,在向数据目的地130转发数据分组pi的有效负载310之前,转发动作520从数据分组pi去除序列数据330和目的地数据320。在另一个实施例中,例如,数据分组pi与其目的地数据320和其序列数据330一起被转发。在另一个实施例中,出口节点170配置成将数据分组pi存储一段时间。当对数据分组pi重新排序(re-ordering)时,即当在先前数据分组之前接收后续数据分组时,这种存储可能是有用的。在这种情况中,出口节点170适于存储随后的数据分组以便根据数据分组pi的主流f的序列数据的序列向数据目的地130转发随后的数据分组。

在另一个实施例中,转发动作520不从转发的数据分组pi的每一个中去除目的地数据320和序列数据330。在具体的实施例中,转发的数据分组pi包括有效负载310、目的地数据320以及序列数据330。仍然在这个实施例中,例如,目的地数据130配置成基于它们各自的序列数据330处理“重构的”主流f的数据分组pi的每一个的有效负载310。

图6示出了网络控制器110的示例的高级示意图。如示出的,网络控制器110包括连接至存储器620的处理设备610。

图7示出了入口节点150和出口节点170的任一个的示例的高级示意图。如示出的,节点150和节点170包括处理设备710和可操作地连接至处理设备710的存储器720。

在一个实施例中,网络控制器110可以分别地使用入口节点150和出口节点170执行第一转发指令和第二转发指令。在这个具体的实施例中,由存储在网络控制器110的存储器620上的计算机软件产品来管理数据分组pi的主流f的流式传输。在另一个实施例中,所述计算机软件产品包含用于将第一转发指令安装在入口节点150的存储器720上和用于将第二转发指令安装在入口节点170的存储器720上的计算机代码。一旦第一转发指令和第二转发指令安装在节点150和节点170的任一的存储器720上,处理设备710适于根据本文公开的方法执行每一个转发指令。在一个实施例中,网络控制器110被销售时具有编程在存储器620上的计算机软件产品,入口节点150作为单独设备销售,其具有在入口节点150的存储器720上的第一转发指令,并且出口节点170作为单独设备销售,其具有在出口节点170的存储器720上的第二转发指令。

在一个实施例中,网络控制器110经由网络140可操作地耦合至入口节点150和出口节点170。在一个实施例中,sdn控制器110进一步配置成生成可以由入口节点150使用的网络路径。可以使用与网络通信系统100(并且更具体地,分组交换网络140)的拓扑和操作特性相关的数据填入网络控制器110的存储器620。例如,存储器620可以包括识别每个数据源120、每个节点150、160以及170以及每个数据目的地130的记录,识别互连节点的每条链路的记录,识别分组交换网络的每个可能的源路由的记录以及识别与可能的源路由相关联的每个传输延迟的记录。

在另一个实施例中,在网络控制器110的存储器620中存储的至少一些数据可以在网络控制器110的操作之前被访问。网络控制器110的存储器620可能由网络140的拓扑和操作特征的改变而更新,例如,当新的节点或者链路被添加或者升级时,或者当节点或者链路被移除或者发生故障时。可能接收来自节点或者来自连接至网络140的专用监视器(未示出)的关于改变网络情况的更新。在一个实施例中,网络数据库400可能实时或者接近于实时更新。

网络控制器110可能例如是opendaylightsdn控制器、开放网络操作系统(onos)sdn控制器等。网络控制器110可根据openflowtm协议和/或协议无感知转发(pof)协议与系统100的节点(例如,数据源120以及节点150、160和170)通信。网络控制器110也可以执行各种其它控制平面功能,包括用于网络140的网络配置、网络监控等。

在描述的实施例中,节点150和170是由网络控制器110可编程的,使得它们可以配置成在分组交换网络140上传输、接收和/或转发信息。例如,节点150、160以及170可以是诸如交换机、调制解调器、集线器或者网桥的sdn数据通信设备(dce),诸如路由器、工作站或者服务器和/或其组合的sdn数据终端设备(dte)。

图8是根据包括tcp传输的实施例示出了在网络通信系统100中数据分组pi的主流f的第一示例800的示意图。已知tcp流是双向的,使得信息流不仅从数据源120去往数据目的地130而且从数据目的地130去往数据源120。在这个实施例中,主流f从数据源120传输至数据目的地130而流业务数据810从数据目的地130传输至数据源120。例如,在一个实施例中,流业务数据810至少包含表示主流f的数据分组pi的哪一个已经成功传输至数据目的地130的确认数据。在图8中描述的实施例中,业务流数据810从数据目的地130传输至出口节点170,其中业务流数据810被复制以形成运输业务流数据810′和业务流数据810″。业务数据流810′和业务流数据810″的每个分别沿着运输流f′和f″的网络路径向后传输。在一个实施例中,业务流数据810的这种传输包括在由出口节点170执行的第二转发指令中。此外,在另一个实施例中,在以业务流数据820的形式向数据源120传输之前,由入口节点150接收和组合运输业务流数据810′和810″。在任何情况下,业务流数据820可使数据源120重传主流f的任何数据分组pi。

图9是根据包括tcp的实施例示出了网络通信系统100中数据分组pi的主流f的第二示例900的示意图。在描述的实施例中,数据目的地130配置成根据上述方法和系统执行第二转发指令的动作。实际上,在这个实施例中,从出口节点170将两个运输流f′和f″直接传输至数据目的地130,数据目的地130可以是数据处理目的地。在图9中描述的另一个实施例中,入口节点150将运输业务流数据810′和810″在没有组合的情况下直接地向数据源120转发。在另一个实施例中,业务流数据表示运输流f′和f″的任一个网络路径上的业务。在这个具体的实施例中,业务流数据810用于根据与网络140有关的管理和/或操作原因来重新路由任何一个运输流。

图10a至图10b是根据实施例用于在网络通信系统100中转发与主流f相关联的多个数据分组的方法1000的示例的流程图。参考图10a,示例性方法1000包括接收从数据目的地120转发具有多个数据分组pi的主流f的请求的步骤1002。一旦主流f的流式传输被启动,该方法包括识别至少具有序列数据330和目的地数据320的每一个数据分组pi的步骤1004。然后,该方法包括通过至少复制主流f的每一个数据分组pi的有效载荷数据310、序列数据330以及目的地数据320来形成至少两个运输流的步骤1006,接下来是沿着不同的网络路径转发至少两个运输流的步骤1008,其中该不同网络路径的每一个基于目的地数据320将通向出口节点。可以由入口节点150的处理设备710或者由网络控制器110的处理设备610执行方法1000。例如,在上文,在网络140中主流f的传输之前执行的步骤1004、1006以及1008称为第一转发指令。

此外,图10b是根据一实施例的用于在网络通信系统100中转发与主流f相关联的多个数据分组pi的方法1000的示例性流程图。在接收数据分组pi的至少两个运输流时并且在将重组主流f向数据目的地120传输之前执行的步骤1010、1012以及1014称为第二转发指令。更具体地,该方法包括沿着不同网络路径接收至少两个传输流的步骤1010,跟踪接收的数据分组的序列数据330的步骤1012以及基于所述跟踪将接收的数据分组向数据目的地120转发的步骤1014。

在一个实施例中,以第一识别表和复制表的形式提供第一转发指令并且以第二识别表和运输流组合表形式提供第二转发指令。当这样的表安装在节点150和170的存储器720上时,可以由处理设备710快速访问,以便根据本文描述的方法执行转发指令。

在描述的实施例中,网络140是包括多个有线链路的以太网。然而,在其它实施例中,网络140可以是诸如帧中继网络、异步传输模式(atm)网络、通用分组无线电业务(gprs)网络等的其它类型分组交换网络140并且可以包括多个有线链路、无线链路或者其组合。

可以通过使用硬件、使用软件以及其组合实施本文公开的实施例。基于这样的理解,可以以软件产品形式体现技术方案。软件产品可以存储在非易失性或者非暂时性的存储介质中,其可以是光盘只读存储器(cd-rom)、usb闪存盘或可移动硬盘。软件产品包括能够使计算机装置(个人计算机、服务器或者网络设备)执行本实施例中提供的方法的数个指令。

程序化代码应用于输入数据以执行本文描述的功能并且生成输出信息。输出信息应用于一个或多个输出设备。在一些实施例中,通信接口可以是网络通信接口。在对元件进行组合的实施例中,通信接口可以是诸如用于进程间通信的软件通信接口。仍然在其它实施例中,可以有实施为硬件、软件及其组合的通信接口的组合。

每个计算机程序可以存储在由通用或者特殊用途的可编程计算机可读的存储介质或者装置(例如rom、磁盘、光盘)上,用于在由计算机读取存储介质或设备时配置和操作计算机以执行本文所述的过程。该系统的实施例也可以视为用有计算机程序配置的非暂时计算机可读存储介质,其中,如此配置的存储介质使得计算机以特定和预定义的方式操作以执行本文所描述的功能。

此外,实施例描述的系统和方法能够分布在计算机程序产品中,该计算机程序产品包括承载用于一个或多个处理器的计算机可用指令的物理的、非暂时性的计算机可读介质。介质可以以各种形式提供,其包括一个或多个软盘、光盘、磁带、芯片、磁和电子存储介质、易失性存储器、非易失性存储器等。非暂时性计算机可读介质可以包括所有的计算机可读介质,不同之处在于暂时的传播信号。术语非暂时性不旨在排除诸如主存储器,易失性存储器,ram等的计算机可读介质,其中,存储在计算机可读介质上的数据可能仅被暂时存储。计算机可用指令也可以是各种形式的,包括编译和非编译代码。

大量参考关于从硬件设备形成的服务器、服务、接口、门户、平台或者其它系统。应该理解,这些术语的使用被认为表示具有至少一个处理器的一个或多个装置,该至少一个处理器被配置为执行在计算机可读有形、非暂时介质上存储的软件指令。应该进一步理解,所公开的基于计算机的算法、过程、方法或者其他类型的指令集可以体现为计算机程序产品,该计算机程序产品包括非暂时的有形计算机可读介质,存储使处理器执行所公开的步骤的指令。

如本文所使用的,除非另有说明,术语“耦合至”旨在包括直接耦合(其中彼此耦合的两个元件彼此接触)和间接耦合(其中至少一个附加元件位于两个元件之间)。因此,术语“耦合至”和“与…相耦合”同义使用。

本文描述的实施例由物理计算机硬件实施例实施。例如,本文描述的实施例提供了有用的物理机器,以及计算装置、服务器、处理器、存储器、网络的特别配置的计算机硬件布置。本文描述的实施例如指向计算机设备,和由计算机通过电子数据信号的处理和变换而实施的方法。

本文描述的实施例可以包括计算装置、服务器、接收器、发射器、处理器、存储器、显示器、特别配置为实现各种动作的网络。本文描述的实施例指向适用于处理和转换代表各种类型的信息的电磁信号的电子机器。本文描述的实施例普遍地和整体地涉及机器及其用途;并且本文描述的实施例在其与计算机硬件、机器、各种硬件组件的使用之外没有意义或者实际适用性。

可以理解,上面描述和说明的示例仅仅是示例性的。例如,可以在数据源处对不同的网络路径进行加密和/或复用,并且不同网络路径可以沿网络的相同网络路径转发,同时可以在数据目的地执行解密和/或解复用。范围由所附权利要求指示。

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