使用软件定义网络的中继优化转让专利

申请号 : CN201580053752.7

文献号 : CN107113342A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·T·考弗曼

申请人 : 微软技术许可有限责任公司

摘要 :

各种实施例提供一种用于修改信道绑定以便在对等(P2P)通信事件中跨网络在中继客户端和对等体之间中继分组的系统。中继服务器接收绑定信道的请求以便中继用于通信事件的分组。中继服务器创建对通信路径的需求。中继服务器将需求发送到软件定义网络(SDN)控制器。SDN控制器进而在SDN交换机中创建和安装流和流表,以针对通信事件跨网络中继分组。

权利要求 :

1.一种针对通信事件在网络中中继分组的方法,所述方法包括:接收来自中继客户端的将信道绑定到所述通信事件的对等体的请求;

基于接收到的信道绑定请求,针对软件定义的网络(SDN)控制器,创建用于中继所述分组的信道的要求;

将创建的要求发送到所述SDN控制器,有效用于使所述SDN控制器能够配置一个或多个SDN交换机以在通信事件中中继分组;以及向所述中继客户端发送指示信道绑定请求的结果的响应。

2.根据权利要求1所述的方法,其中,所述信道绑定请求包括信道号和所述对等体的传输地址。

3.根据权利要求1所述的方法,其中,所述一个或多个SDN交换机的配置包括向所述一个或多个SDN交换机发送流和流表,所述流和流表有效用于配置所述一个或多个SDN交换机以在所述通信事件中中继分组。

4.根据权利要求3所述的方法,其中,中继所述分组包括所述一个或多个SDN交换机中的一个去除信道数据消息的报头字段。

5.根据权利要求3所述的方法,其中,所述中继客户端使用经修改的中继协议,所述经修改的中继协议包括在没有信道数据消息的报头字段的情况下在所述通信事件中发送分组。

6.根据权利要求1所述的方法,其中,所述创建的要求包括目的地地址、目的地端口、源地址、源端口或差分服务码点(DSCP)值中的一个或多个。

7.根据权利要求1所述的方法,其中,绑定所述信道在一段时间后到期,所述方法还包括:从所述中继客户端接收将所述信道绑定到所述对等体的第二请求;以及向所述SDN控制器发送消息,有效用于使所述SDN控制器能够刷新一个或多个SDN交换机的配置,以便在所述通信事件中继续中继分组。

8.根据权利要求1所述的方法,其中,接收所述请求或发送所述创建的要求是使用认证来执行的。

9.一种用于针对通信事件在网络中中继分组的系统,所述系统包括:中继客户端;以及

一个或多个软件定义的网络(SDN)交换机,被配置为:接收来自所述中继客户端的用于所述通信事件的分组;

检查接收的分组中的一个或多个字段;以及

响应于确定所述分组与安装在所述一个或多个SDN交换机中的更多流中的一个流之间的匹配,在所述通信事件中中继所述接收的分组。

10.根据权利要求9所述的系统,还包括:中继服务器,被配置为:

从所述中继客户端接收信道绑定请求;

基于接收的信道绑定请求,创建用于中继所述分组的信道绑定的要求;

将创建的要求发送到SDN控制器;

向所述中继客户端发送指示所述信道绑定请求的结果的响应;以及SDN控制器,被配置为:从所述中继服务器接收所述创建的要求;

基于接收的要求来创建一个或多个流;以及

将创建的流安装在所述一个或多个SDN交换机中,有效用于使所述一个或多个SDN交换机能够在所述通信事件中中继分组。

11.根据权利要求10所述的系统,其中,单个网络主机包括所述中继服务器和所述SDN控制器。

12.根据权利要求9所述的系统,其中,所述中继客户端使用经修改的中继协议,所述经修改的中继协议包括在没有信道数据消息的报头字段的情况下在所述通信事件中发送分组。

13.根据权利要求9所述的系统,还包括:信令服务器,被配置为:

将转发路径的候选传输地址插入到正被发送给所述中继客户端的传输地址的候选列表,以便与所述通信事件的连接性建立协议一起使用;以及SDN控制器,被配置为:

定义针对所述转发路径的与插入的所述转发路径的候选传输地址相对应的一个或多个流;以及在所述一个或多个SDN交换机中安装定义的流,有效用于使所述SDN交换机能够在所述通信事件中中继所述分组。

14.一种被配置为执行操作的软件定义的网络(SDN)交换机,所述操作包括:接收指定在通信事件中将分组从中继客户端中继到对等设备的操作的一个或多个流;

从所述中继客户端接收分组;

执行指定的操作以确定接收的分组中的一个或多个字段与所述一个或多个流中的一个流匹配;以及响应于所述接收的分组中的一个或多个字段中的一个字段匹配,将所述分组中继到所述对等设备。

15.根据权利要求14所述的SDN交换机,还被配置为执行操作,所述操作包括:确定所述接收的分组与所述一个或多个流中的任一个流不匹配;

响应于所述确定,向SDN控制器提供对所述确定的指示,所述指示有效用于使得所述SDN控制器能够向所述SDN交换机发送一个或多个附加流;

从所述SDN控制器接收更多个附加流中的一个流;以及使用所述更多个附加流中的一个流来确定所述接收的分组中的一个或多个字段与所述一个或多个附加流中的一个流相匹配;以及响应于所述接收的分组中的一个或多个字段匹配,将所述分组中继到所述对等设备。

说明书 :

使用软件定义网络的中继优化

背景技术

[0001] 当一个或两个主机通过网络地址转换(NAT)或防火墙连接到分组网络时,跨分组网络建立两个主机之间的对等(P2P)通信路径可能是一个挑战。主机尝试确定公共地址以建立P2P通信会话。然而,当两个主机通过NAT连接时,这些尝试通常不能建立P2P主机之间的直接连接,必须使用中继器来建立P2P通信会话。中继器是开放网络上的一个主机,用于在P2P主机之间中继通信分组。对等主机之间的所有业务以网络带宽和中继主机处理为代价通过中继器。随着P2P网络中通过NAT连接的主机数量的增加,需要更多的中继主机来提供中继P2P网络中的业务的能力。

发明内容

[0002] 提供该发明内容以便以简化的形式来引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在确定所要求保护的主题的关键特征或主要特征,也不旨在用于限定所要求保护的主题的范围。
[0003] 各种实施例提供了一种用于修改信道绑定以便跨网络在对等(P2P)通信事件中在中继客户端和对等体之间中继分组的系统。中继服务器接收绑定信道的请求,以便中继用于通信事件的分组。中继服务器创建对通信路径的要求。中继服务器将该要求发送到软件定义网络(SDN)控制器。SDN控制器进而在SDN交换机中创建并安装流和流表,以便跨网络中继用于通信事件的分组。
[0004] 各种实施例提供在中继客户端和对等体之间的P2P通信事件中跨网络中继分组的SDN交换机。SDN控制器使用SDN交换机用于检查中继客户端和对等体之间接收到的分组中的字段的流和流表来配置SDN交换机。基于与一个或多个流匹配的一个或多个字段,SDN交换机中继用于通信事件的接收到的分组。
[0005] 各种实施例使得能够修改用于NAT遍历的候选传输地址的列表。信令控制器通过插入转发路径的传输地址来修改候选列表,转发路径跨网络在P2P通信事件中在中继客户端和对等体之间中继分组。转发路径由SDN控制器预先配置。

附图说明

[0006] 详细描述参考附图。在附图中,附图标记的最左边的数字标识附图标记首次出现的图。在说明书和附图中在不同实例中使用相同的附图标记可以指示相似或相同的项。
[0007] 图1示出了根据一个或多个实施例的示例的操作环境。
[0008] 图2示出了根据一个或多个实施例的示例的操作环境。
[0009] 图3示出了根据一个或多个实施例的示例的操作环境。
[0010] 图4是描述根据一个或多个实施例的方法中的步骤的流程图。
[0011] 图5是描述根据一个或多个实施例的方法中的步骤的流程图。
[0012] 图6是描述根据一个或多个实施例的方法中的步骤的流程图。
[0013] 图7是根据一个或多个实施例的示例的设备。

具体实施方式

[0014] 概述
[0015] 主机之间的对等(P2P)通信对于诸如VoIP、web会议、屏幕共享、即时消息传递等各种形式的实时通信事件是有用的。当主机中的一个或两个通过网络地址转换(NAT)连接到分组网络时,为这些通信事件建立通信路径存在挑战。在IETF RFC 5245中规定的交互式连接建立(ICE)和IETF RFC 3489中规定的用于NAT的会话遍历实用工具(STUN),可以被主机用来尝试确定用来建立P2P通信会话的传输地址。
[0016] 使用ICE的主机尝试使用候选传输地址列表建立通信路径。传输地址通常包括地址和端口,例如IPv4地址和端口号。也可以使用IPv6寻址。可以通过信令服务器(例如SIP服务器)在主机之间传送候选传输地址。候的运输地址也可以由主机使用STUN来获得。
[0017] 当两个主机通过NAT或防火墙连接时,直接连接或ICE/STUN可能无法在主机之间建立直接连接。在这种情况下,中继器用于建立P2P通信会话。一种这样的中继技术是围绕NAT使用中继遍历(TURN),其中开放网络上的主机充当中继服务器以在P2P主机之间中继分组。当中继服务器中继用于P2P通信的分组时,主机之间的所有业务都以网络带宽和中继服务器处的处理为代价而通过中继服务器。
[0018] 各种实施例提供了一种用于在跨越网络的对等(P2P)通信事件中修改信道绑定以便在中继客户端和对等体之间中继分组的系统。中继客户端和/或对等体都通过网络地址转换(NAT)连接到网络。中继服务器接收绑定信道的请求,以便中继用于通信事件的分组。中继服务器创建对于通信路径的要求。中继服务器将要求发送到软件定义网络(SDN)控制器。SDN控制器进而在SDN交换机中创建和安装流和流表,以跨网络中继用于通信事件的分组。
[0019] 各种实施例提供了一种在中继客户端和对等体之间的P2P通信事件中跨网络中继分组的SDN交换机。SDN控制器使用SDN交换机用于检查中继客户端和对等体之间接收到的分组中的字段的流和流表来配置SDN交换机。基于与一个或多个流匹配的一个或多个字段,SDN交换机中继用于通信事件的接收到的分组。各种实施例包括在中继所接收的分组之前去除和/或修改所接收分组中的字段。
[0020] 各种实施例使得能够修改用于NAT遍历的候选传输地址的列表。信令控制器通过插入用于转发路径的传输地址来修改候选列表,转发路径在跨网络的P2P通信事件中在中继客户端和对等体之间中继分组。转发路径由SDN控制器预先配置。各种实施例修改中继客户端和/或对等体,使得中继客户端和/或对等体在中继客户端和/或对等体所提供的候选传输地址列表中添加用于转发路径的传输地址。
[0021] 在下面的讨论中,标题为“示例环境”的部分描述了可以利用各种实施例的示例环境。接下来,根据一个或多个实施例,标题为“修改的信道绑定”的部分描述了修改信道绑定的示例。接下来,标题为“SDN交换机中的分组修改”的部分描述了根据一个或多个实施例的SDN交换机修改分组以中继分组的示例。接下来,标题为“使用修改的ICE候选列表的NAT遍历转发”的部分描述了根据一个或多个实施例修改候选列表照片日志的示例。接下来,标题为“示例方法”的部分描述了根据一个或多个实施例的示例方法。最后,标题为“示例设备”的部分描述了根据一个或多个实施例的示例设备。
[0022] 现在考虑其中可以实践各种实施例的示例性环境。
[0023] 示例环境
[0024] 图1示出了根据一个或多个实施例的示例环境100。环境100包括连接到网络104的对等主机102。这里,对等主机102被配置为用于跨网络104的对等(P2P)通信。对等主机102可以是以任何合适的方式配置的任何合适的设备,例如示例而非限制的方式,通过手机、平板设备、游戏设备、台式个人计算机(PC)、膝上型PC等。
[0025] 网络104表示对等主机102可以通过其连接的任何合适类型的分组网络,诸如无线蜂窝网络、无线因特网接入(Wi-Fi)、因特网等等。这里描述的实施例适用于任何合适的分组网络,例如,诸如使用IPv4、IPv6、IPv4和IPv6的任何组合等的网络。尽管未示出,但是网络104可以包括诸如服务器、无线接入点、蜂窝基站等的附加处理实体。网络104可以以任何合适的方式配置,例如通过示例而非限制的方式,单个网络、多个互连网络的组合或联合、虚拟化网络等。
[0026] 对等主机102可以直接连接到网络104,在这种情况下,对等主机102具有可由其他对等主机102用于P2P通信的网络104上的公共地址。可替代地,对等主机102可以通过网络地址转换(NAT)106连接到网络104。NAT 106可以是路由器、防火墙、接入点或任何其它合适的网络设备的一部分。当通过NAT 106连接时,对等主机102具有在NAT 106后面的网络中的专用地址,并且NAT 106具有网络104上的公共地址。
[0027] 当对等主机102在NAT 106之后时,对等主机102可能难以或不可能与另一对等主机102交换用于P2P通信的分组。当在两个对等主机102之间找不到直接通信路径时,两个对等主机102可以使用连接到网络104的中继主机108,以便在两个对等主机102之间中继分组。中继主机108通常利用公共地址连接到诸如因特网的公共网络。
[0028] 中继主机108可以被配置为使用任何合适的中继协议,例如在IETF RFC 5766中规定的围绕NAT使用中继遍历(TURN)来执行中继操作。还可以使用任何其他合适的协议来实现中继操作。中继主机108可以在任何合适的计算设备上实现,诸如执行实现中继协议的软件的计算机服务器。中继主机108通过网络104从第一对等主机102接收分组,中继主机108检查用于目的地地址的分组,然后中继主机108通过网络104将分组中的应用数据发送到目的地地址处的第二对等主机102。
[0029] 中继协议可以提供用于中继分组的多种机制。例如,TURN支持发送机制和信道机制。信道机制使用称为具有四字节报头的信道数据消息的分组格式,其包括所包含的应用数据的信道号和长度。对于在对等主机102之间发送大量业务的P2P通信,信道机制提供比发送机制更低的开销,从而减少当分组通过中继主机108中继时对等主机102之间所需的带宽。
[0030] 图2示出了根据一个或多个实施例的示例环境200。环境200包括被配置为通过NAT 106连接到网络104的中继客户端202的对等主机102。对等主机102被配置为对等体204,其也通过NAT 106连接到网络104。网络104包括互联以通过网络104传送分组的多个网络元件
206(为简要在图3中示出为“NE”)。网络元件206可以是路由器、交换机、网关、服务器或用于通过路由、交换、重复、转发或其他合适机制通过网络104传送分组的任何其他合适的设备。
[0031] 中继主机108被配置为中继服务器208并且连接到网络104。中继客户端202和对等体204都通过NAT 106连接到网络104,因此中继客户端202建立通过中继服务器208中继的连接以与对等体204进行P2P通信。
[0032] 为了使用信道机制进行通信,中继客户端202向中继服务器208发送信道绑定请求,包括未绑定信道号和用于对等体204的传输地址,如210所示。信道号在中继服务器208中绑定到对等体204的传输地址和中继客户端202的传输地址。如果信道绑定成功,则中继服务器208向中继客户端202发送信道绑定成功消息。
[0033] 信道绑定将持续一段有限的时间段,例如10分钟,除非信道绑定被中继客户端202刷新。为了刷新信道绑定,中继客户端202发送包括相同的信道号的另一个信道绑定请求到中继服务器208,导致信道重新绑定到对等体204。
[0034] 一旦信道号被绑定,中继客户端202使用信道数据消息将包含用于P2P通信的应用数据的分组发送到中继服务器208。中继服务器208接收信道数据消息,并且使用信道绑定中的对等体204的传输地址将应用数据中继到对等体204。包含从对等体204到中继客户端202的应用数据的分组也可以由TURN服务器208使用相同的信道绑定中继。TURN服务器208从对等体204接收具有应用数据的分组,并创建包括接收到的应用数据的信道数据消息,并将创建的信道数据消息发送给中继客户端202。
[0035] 在中继客户端202和对等体204之间的P2P通信的分组的示例流程在图2中通过从中继客户端202通过网络104的网络元件206到中继服务器208,以及从中继服务器208通过网络104的网络元件206到对等体204的实线示出。相应地,中继服务器208接收并发送在中继客户端202和对等体204之间发送的所有应用数据,要求中继服务器208具有足够的网络带宽和处理能力来处理该业务负载。
[0036] 软件定义网络(SDN)例如OpenFlow提供了基于各种应用的联网需求的软件可配置网络的组件。被配置为使用SDN的应用以编程方式将应用的网络需求传送到SDN控制器。SDN控制器将网络要求转换为在SDN交换机或网元中以流表配置的流。SDN交换机通过将这些分组中的字段与通常排列在流水线中的一个或多个流表中的流相匹配来处理传入分组。当分组中的一个或多个字段与流的匹配字段中的值匹配时,流中所包含的指令在分组上被执行。那些指令可以将分组转发到流水线中的连续流表或将处理后的分组转发出SDN交换机的端口。
[0037] 可替代地,可以针对与SDN交换机中配置的其他流中的任何字段值不匹配的“不匹配”分组来定义和执行流。在不匹配的分组上执行的指令以及匹配的分组可能会触发SDN交换机和相关SDN控制器之间的通信,以在SDN交换机中安装一个或多个附加流来处理分组。因此,SDN交换机将不需要配置中继分组的流,直到需要该能力,如通过接收到不匹配的中继分组所指示的。
[0038] 流表中的流条目可以包括与分组中的字段匹配的匹配字段,指定流表内流的先后次序的优先级,跟踪匹配分组的数目的计数器,对匹配分组执行的指令,指定流过期之前的时间量的超时,以及用于管理流条目的其他字段。通过将分组处理逻辑分配到SDN交换机中的流表,针对各种应用的主机发送和接收业务优化了特定于应用的网络交换和路由。
[0039] 通过在SDN交换机的流表中配置分组交换和转发,SDN交换机在中继客户端和对等体之间中继分组。中继服务器的主计算机不再需要执行中继程序来接收、处理和传送中继通信中的分组。通过使用SDN交换机中继分组,中继服务器的计算和网络带宽要求大大降低。如下面所讨论的,并且关于图3,中继分组的SDN交换机可以靠近网络边缘放置。这减少了中继器的延迟和中继器消耗的总体网络带宽。
[0040] 图3示出了根据一个或多个实施例的示例环境300。环境300包括被配置为通过NAT 106连接到网络104的中继客户端202的对等主机102。对等主机102被配置为对等体204,并且通过NAT 106连接到网络104。网络104包括多个网络元件,其是SDN交换机302,它们互连以通过网络104传送分组。SDN控制器304连接到网络104,以使用任何合适的控制协议(例如OpenFlow协议)配置SDN交换机302。为了清楚起见,网络104被示出为包括SDN交换机302,但是网络104还可以包括诸如路由器、交换机、网关、服务器或用于通过网络104传送分组的任何其它合适的设备的其他网络元件。
[0041] SDN中继服务器306连接到网络104,并且被配置为实现中继协议的一个或多个修改版本以优化使用SDN的特征来中继分组的P2P通信的网络路由和性能。虽然SDN控制器304和SDN中继服务器306被示为分开的实体,但是应当理解,由SDN控制器304和SDN中继服务器306执行的功能可以以任何合适的方式组合在一起或分布,而不改变所要求保护的主题的范围。
[0042] 应当理解,SDN控制器304可以以任何合适的方式配置SDN交换机302,例如通过示例而不是限制,在单个网络内,跨多个网络的联合,等等。此外,SDN控制器304可以以任何合适的方式,例如通过示例而不是限制,将SDN交换机302配置成在单个网络内、跨多个网络的联合等形成一个或多个虚拟网络,以形成特定于应用的虚拟网络,特定于客户端的虚拟网络等。还应当理解,可以使用认证和/或加密来执行中继客户端202、SDN中继服务器306、SDN控制器304和/或SDN交换机302之间的通信的任何组合以确保通信被授权和/或安全。
[0043] 上述和下文描述的各种实施例可以利用计算机可读存储介质来实现,所述计算机可读存储介质包括能够使处理单元实现所公开方法的一个或多个方面的指令,以及利用被配置为实现所公开的方法的一个或多个方面的系统来实现。“计算机可读存储介质”是指所有法定形式的媒体。因此,诸如载波和信号本身的非法定形式的介质并不意图被术语“计算机可读存储介质”覆盖。
[0044] 通常,本文所描述的功能中的任何一个可以使用软件,固件,硬件(例如,固定逻辑电路)或这些实现的组合来实现。本文使用的术语“模块”、“功能”、“组件”和“逻辑”通常表示软件、固件、硬件或其组合。在软件实现方式的情况下,模块、功能或逻辑表示在处理器(例如,一个CPU或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储器件中。下面描述的技术的特征是平台无关的,这意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。
[0045] 计算机可读介质的一种这样的配置是信号承载介质,因此被配置为例如经由网络来发送指令(例如,作为载波)。计算机可读介质还可以被配置为计算机可读存储介质,因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令和其他数据的其它存储器设备。
[0046] 可替代地或另外地,这里描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
[0047] 修改的信道绑定
[0048] 在一个或多个实施例中,中继协议的信道绑定过程被修改以配置SDN交换机302在中继客户端202和对等体204之间中继分组。中继客户端202向SDN中继服务器306发送信道绑定请求,如308处所示,包括未绑定信道号和对等体204的传输地址。如果信道绑定在SDN中继服务器306处成功,则SDN中继服务器306可选地向中继客户端202发送信道绑定成功消息。
[0049] SDN中继服务器306形成用于在中继客户端202和对等体204之间中继分组的信道绑定要求。SNS中继服务器306通过网络104向SDN控制器304发送信道绑定要求,如310处所示。这些要求可以包括源地址、源端口、目的地地址、目的地端口、差分服务码点(DSCP)值和/或信道绑定应该持续的时间段。
[0050] SDN控制器304处理接收到的信道绑定要求以创建用于信道绑定的流和流表。SDN控制器304通过网络104将创建的流和流表安装到SDN交换机302中的一个或多个中,以配置转发路径在中继客户端202和对等体204之间中继分组。
[0051] 信道绑定将持续一段有限的时间段,例如10分钟,除非中继客户端202通过向SDN中继服务器306发送包括相同信道号的另一个信道绑定请求而刷新信道绑定。响应于从中继客户端202接收到信道绑定消息来刷新信道绑定,SDN中继服务器306向SDN控制器304发送消息。响应于接收到消息,SDN控制器304刷新SDN交换机302中的流和流表,以保持用于信道绑定的转发路径。
[0052] 中继客户端202和对等体204之间的分组流由图3中的从中继客户端202通过网络104的SDN交换机302到对等体204的实线示出。如图3所示,中继客户端202和对等体204之间的分组流现在使用更靠近网络104的边缘的SDN交换机302进行中继,从而降低网络104的整体网络利用率。SDN中继服务器306的网络带宽和处理要求也降低,因为当使用修改的信道绑定时,分组不再由SDN中继服务器306进行中继。
[0053] 在一个或多个实施例中,当SDN交换机302执行中继时,可以修改中继协议的信道数据消息。安装在SDN交换机302中的流和流表可以通过检查在中继客户端202和对等体204之间发送的TCP和/或UDP分组中所包含的多个分组字段来执行中继。将这些分组字段与在SDN交换机302中的流中指定的匹配字段进行比较。
[0054] 例如,在UDP或TCP分组中发送信道数据消息。信道数据消息包含标识信道号和信道数据消息中的应用数据的长度的字段。SDN交换机302中的流通过检查在TCP和/或UDP分组中的、在TCP和/或UDP分组中的信道数据消息之前的字段来执行中继。可以在不检查信道数据消息中的字段的情况下做出SDN交换机302中的流中继分组的决策。
[0055] 在一个或多个实施例中,当SDN交换机302中的流通过检查TCP和/或UDP分组中的先前字段来执行中继时,可以在信道绑定之后中继分组,而不使用信道数据消息。可以修改中继客户端202中的中继协议以发送和接收应用数据,而不包括信道数据消息的报头。
[0056] 省略信道号和信道数据消息中的应用数据字段的长度减少了发送到中继客户端202和从中继客户端202发送的分组中的开销,并且减少了在网络104中中继分组所需的带宽。如上所述,初始化和刷新与SDN中继服务器306、SDN控制器304和SDN交换机302的信道绑定的过程在使用省略信道号和信道数据信息中的应用数据字段的长度的修改的中继协议时保持相同。
[0057] SDN交换机中的分组修改
[0058] 在一个或多个实施例中,SDN交换机302被配置为基于分配在SDN中继服务器306中的信道绑定并使用由SDN控制器304定义并且安装在SDN交换机302中的流和流表来执行中继协议的信道数据消息的中继。如上所述,如308所示,中继客户端202向SDN中继服务器306发送包括未绑定信道号和对等体204的传输地址的信道绑定请求。SDN中继服务器306形成了在中继客户端202和对等体204之间中继分组的信道绑定要求。SDN中继服务器306通过网络104将信道绑定要求发送到SDN控制器304,如310所示。要求可以包括源地址和目的地地址、端口号、差分服务码点(DSCP)值、信道号和/或信道绑定应持续的时间段。
[0059] SDN控制器304处理接收到的信道绑定要求以创建用于信道绑定的转发路径的流和流表。SDN控制器304通过网络104将所创建的流和流表安装到一个或多个SDN交换机302中,以配置转发路径以在中继客户端202和对等体204之间中继分组。信道绑定将持续有限的时间段,例如10分钟,除非中继客户端202刷新信道绑定,如上所述。
[0060] 在一个或多个实施例中,在SDN交换机302处接收信道数据消息。安装在SDN交换机302中的流和流表根据流和流表中指定的匹配字段来检查分组字段。如果SDN交换机302确定分组包含信道数据消息,则SDN交换机302从在TCP和/或UDP分组中所包含的信道数据消息中去除信道号和应用数据字段的长度,并将TCP和/或UDP分组的其余部分拼接在一起。
SDN交换机302根据需要调整TCP、UDP和/或IP报头的字段中的值,以形成用于发送的有效分组并中继拼接分组。
[0061] 流和流表中继分组所使用的匹配字段可以包括检查信道数据消息中的字段和/或通过检查TCP和/或UDP分组中的在TCP和/或UDP分组中的信道数据消息之前的字段。可以使用软件、固件、硬件(例如,固定和/或可编程逻辑电路,例如门阵列、FPGA、SOC和/或ASIC)或这些实现方式的组合在SDN交换机302中实现检查和拼接。
[0062] 如上文关于图3所讨论的,使用更接近网络104的边缘的SDN交换机302来中继中继客户端202和对等体204之间的分组流,从而降低网络104的整体网络利用率,而不需要中继客户端202和对等体204中的中继协议的任何修改。由于分组不再由SDN中继服务器306中继,所以降低了中继服务器的网络带宽和处理要求。
[0063] 使用修改后的ICE候选列表进行NAT遍历转发
[0064] 在一个或多个实施例中,可以使用SDN技术来完全避免使用TURN中继器。SDN控制器304可以被配置为在针对P2P通信事件的任何中继分组的请求之前,为用于NAT遍历转发的转发路径定义流和流表。对等主机102可以交换用于通信事件的传输地址的候选列表。在交换期间,候选列表通过诸如SIP服务器的信令服务器来传送。信令服务器重写候选列表以包括由SDN控制器304预定的转发路径。可替代地,对等主机102可以被直接配置为将预定转发路径的传输地址添加到对等主机102在尝试使用ICE建立通信路径时所提供的候选传输地址列表中。
[0065] SDN控制器304可以配置一个或多个SDN交换机302,其中流和流表在P2P通信事件之前定义转发路径。可替代地,当“不匹配”分组到达要在SDN交换机302中继时,流和流表可以由SDN交换机302中的SDN控制器304按需配置。
[0066] 示例方法
[0067] 图4是描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以以任何合适的硬件、软件、固件或其组合来实现。在至少一些实施例中,该方法可以由适当配置的SDN中继服务器来实现。
[0068] 步骤400在中继服务器上接收来自中继客户端的信道绑定请求,以分配信道绑定以从中继客户端向对等体中继分组。例如,在至少一些实施例中,信道绑定请求包括未绑定信道号和对等体的传输地址。步骤402将信道绑定到中继客户端和对等体。该步骤可以以任何合适的方式进行。例如,中继服务器为包含在信道绑定请求中的信息分配存储,以在接收到用于中继的分组时使用。可选地,中继服务器响应中继客户端以指示信道绑定请求的成功或失败。响应于接收信道绑定请求,步骤404确定信道绑定的SDN要求。步骤406将确定的SDN要求发送到SDN控制器,SDN要求可由SDN控制器使用以创建流和流表,以配置用于在一个或多个SDN交换机中的信道绑定的转发路径,以便在中继客户端和对等体之间中继分组。
[0069] 图5是描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以以任何合适的硬件、软件、固件或其组合来实现。在至少一些实施例中,该方法可以由适当配置的SDN交换机来实现。
[0070] 步骤500在SDN交换机处接收定义中继主机和对等体之间的分组中继的流。该步骤可以以任何合适的方式进行。例如,流可以被组织成一个或多个流表。可以在流水线中布置多个流表以顺序执行流表。流可以包括匹配字段,其包含可用于基于流的匹配字段中的接收到的分组匹配值中的字段来确定流是否适用于接收到的分组的信息。步骤502检查接收到的分组以识别分组中的字段以与一个或多个流中的匹配字段进行比较。步骤504确定接收到的分组将被中继。该步骤可以以任何合适的方式进行。例如,SDN交换机中的流通过检查在TCP和/或UDP分组中的TCP和/或UDP分组中的信道数据消息之前的字段来执行中继。可以在不检查信道数据消息中的字段的情况下做出SDN交换机中的流中继分组的决策。例如,SDN交换机中的一个或多个流比较被检查分组中的源地址、目的地址、TCP或UDP源端口、TCP或UDP目的地端口和/或差分服务码点(DSCP)字段的任何适当组合的值以匹配字段值,以确定SDN交换机将中继分组。步骤506通过将接收到的分组沿朝向目的地的方向转发到SDN交换机的端口来中继接收到的分组。该步骤可以以任何合适的方式进行。例如,SDN交换机中的流将分组从中继客户端中继到对等体,从对等体中继到中继客户端。
[0071] 图6是描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以以任何合适的硬件、软件、固件或其组合来实现。在至少一些实施例中,该方法可以由适当配置的SDN交换机来实现。
[0072] 步骤600在SDN交换机处接收定义中继主机和对等体之间的分组中继的流。该步骤可以以任何合适的方式进行。例如,流可以被组织成一个或多个流表。可以在流水线中布置多个流表以顺序执行流表。流可以包括匹配字段,其包含可用于基于接收到的分组中匹配流的匹配字段中的值的字段来确定流是否适用于接收到的分组的信息。步骤602检查接收到的分组以识别分组中的字段以与一个或多个流中的匹配字段进行比较。步骤604确定接收到的分组将被中继。该步骤可以以任何合适的方式进行。例如,SDN交换机中的流通过检查在TCP和/或UDP分组中的TCP和/或UDP分组中的信道数据消息之前的字段来执行中继。可以在不检查信道数据消息中的字段的情况下做出SDN交换机中的流中继分组的决策。例如,SDN交换机中的一个或多个流比较被检查分组中的源地址、目的地址、TCP或UDP源端口、TCP或UDP目的地端口和/或差分服务码点(DSCP)字段的任何适当组合的值以匹配字段值,以确定SDN交换机将中继分组。步骤608从接收的分组中移除字段,例如信道号和分组中的信道数据消息的长度字段。步骤608将分组的剩余部分拼接在一起。可选地,可以根据需要调整TCP、UDP和/或IP报头的字段中的值,以正确反映拼接分组的属性。步骤610通过在朝向目的地的方向上将分组转发到SDN交换机的端口来中继拼接分组。该步骤可以以任何合适的方式进行。例如,SDN交换机中的流将分组从中继客户端中继到对等体,以及从对等体中继到中继客户端。
[0073] 示例设备
[0074] 图7示出了可以被实现为实现本文描述的实施例的任何类型的便携式和/或计算机设备的示例设备700的各种组件。设备700包括能够进行设备数据704的有线和/或无线通信(例如,接收到的数据,正在接收的数据,被安排广播的数据,数据的数据分组等)的通信设备702。设备数据704或其他设备内容可以包括设备的配置设置、存储在设备上的媒体内容和/或与设备的用户相关联的信息。存储在设备700上的媒体内容可以包括任何类型的音频、视频和/或图像数据。设备700包括一个或多个数据输入706,通过该数据输入706可以接收任何类型的数据、媒体内容和/或输入,诸如用户可选择的输入、消息、音乐、电视媒体内容、记录的视频内容和任何其他类型的从任何内容和/或数据源接收的音频、视频和/或图像数据。
[0075] 设备700还包括可以被实现为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器以及任何其他类型的通信接口中的任何一个或多个的通信接口708。通信接口708提供设备700和通信网络之间的连接和/或通信链路,通过该通信网络,其他电子、计算和通信设备与设备700进行数据通信。
[0076] 设备700包括处理各种计算机可执行或可读指令以控制设备700的操作并实现上述实施例的一个或多个处理器710(例如,微处理器、控制器等中的任何一个)。可替代地或另外,设备700可以利用结合通常在712处识别的处理和控制电路实现的硬件、固件或固定逻辑电路的任何一个或组合来实现。尽管未示出,设备700可以包括系统总线或数据传输系统,其耦合设备内的各种组件。系统总线可以包括不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任何一种的处理器或局部总线。
[0077] 设备700还包括诸如一个或多个存储器组件的计算机可读介质714,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器ROM)、闪速存储器、EPROM、EEPROM等中的任意一个或多个)和磁盘存储设备。磁盘存储设备可以被实现为任何类型的磁性或光学存储设备,例如硬盘驱动器、可记录和/或可重写的光盘(CD)、任何类型的数字通用盘(DVD)等。设备700还可以包括大容量存储介质设备716。
[0078] 计算机可读介质714提供数据存储机制以存储设备数据704以及各种设备应用718以及与设备700的操作方面相关的任何其它类型的信息和/或数据。例如,操作系统720可以利用计算机可读介质714作为计算机应用来维护并且在处理器710上执行。设备应用718可以包括设备管理器(例如,控制应用、软件应用、信号处理和控制模块,特定设备本地的代码、特定设备的硬件抽象层等)以及可以包括Web浏览器、图像处理应用程序、通信应用(如P2P通信应用、文字处理应用和各种其他不同的应用)的其他应用。设备应用718还包括用于实现本文描述的技术的实施例的任何系统组件或模块。在该示例中,设备应用718可以包括操作以实现如上所述的技术的实施例的中继协议模块722。
[0079] 设备700还包括向音频系统726提供音频数据和/或向显示系统728提供视频数据的音频和/或视频输入-输出系统724。音频系统726和/或显示系统728可以包括任何处理、显示和/或以其他方式呈现音频、视频和图像数据的设备。视频信号和音频信号可以经由RF(射频)链路、S-视频链路、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接或其他类似的通信链路从设备700传送到音频设备和/或显示设备。在一个实施例中,音频系统726和/或显示系统728被实现为设备700的外部组件。可替代地,音频系统726和/或显示系统728被实现为示例设备700的集成组件。
[0080] 结论
[0081] 各种实施例提供了一种用于修改信道绑定以便在对等(P2P)通信事件中跨网络在中继客户端和对等体之间中继分组的系统。中继服务器接收绑定信道的请求,以便中继用于通信事件的分组。中继服务器创建针对通信路径的要求。中继服务器将要求发送到软件定义网络(SDN)控制器。SDN控制器进而在SDN交换机中创建并安装流和流表,以便跨网络中继用于通信事件的分组。
[0082] 各种实施例提供在中继客户端和对等体之间的P2P通信事件中跨网络中继分组的SDN交换机。SDN控制器利用SDN交换机用于检查中继客户端和对等体之间接收到的分组中的字段的流和流表来配置SDN交换机。基于与流中的一个或多个匹配的一个或多个字段,SDN交换机中继用于通信事件的接收到的分组。
[0083] 各种实施例使能修改用于NAT遍历的候选传输地址的列表。信令控制器通过插入转发路径的传输地址来修改候选列表,转发路径在P2P通信事件中跨网络在中继客户端和对等体之间中继分组。转发路径由SDN控制器预先配置。
[0084] 尽管已经以特定于结构特征和/或方法动作的语言描述了实施例,但是应当理解,所附权利要求中限定的各种实施例不一定限于所描述的具体特征或动作。相反,具体特征和动作被公开为实现各种实施例的示例形式。