CN114095474B - 确定mptcp服务器公网地址的方法和通信装置 - Google Patents
确定mptcp服务器公网地址的方法和通信装置 Download PDFInfo
- Publication number
- CN114095474B CN114095474B CN202010762122.XA CN202010762122A CN114095474B CN 114095474 B CN114095474 B CN 114095474B CN 202010762122 A CN202010762122 A CN 202010762122A CN 114095474 B CN114095474 B CN 114095474B
- Authority
- CN
- China
- Prior art keywords
- mptcp
- address
- server
- public network
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/659—Internet protocol version 6 [IPv6] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/677—Multiple interfaces, e.g. multihomed nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2567—NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
- H04L61/5014—Internet protocol [IP] addresses using dynamic host configuration protocol [DHCP] or bootstrap protocol [BOOTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5076—Update or notification mechanisms, e.g. DynDNS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请提供了一种确定MPTCP服务器公网地址的方法和通信装置,该方法包括:MPTCP客户端向DNS服务器发送第一请求,请求第一域名对应的MPTCP服务器的至少一个IP地址和MPTCP服务器对应的第一标识;MPTCP客户端接收第一信息,包括:第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器;MPTCP客户端确定与第一域名和第一标识对应的该MPTCP服务器的至少一个IP地址。本申请提供的方法,可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,使得MPTCP会话快速建链。
Description
技术领域
本申请涉及通信领域领域,更为具体的,涉及一种确定MPTCP服务器公网地址的方法和通信装置。
背景技术
随着互联网协议第六版(internet protocol version6,Ipv6)的到来,主机的多地址(Multihome)变得越来越普及。为了充分利用设备的多连接特性,新型多路径传输层协议已经成为当前最大的趋势。目前已经制定了多路径传输控制协议(multipathtransmission control protocol,MPTCP)。
MPTCP是一种利用多条路径并发传输的传输层协议。MPTCP是按顺序初始化多个连接,即:当一条通道(或者首个子流)按照三次握手的方式建立起来后,再按照三次握手的方式建立其他的子通道(或者次子流)。这些通道以三次握手建立连接和四次握手解除连接。这些通道都会绑定于同一个MPTCP会话(MPTCP session)。发送端的数据可以选择其中一条或者多条通道进行传输。
目前MPTCP客户端(例如终端设备)通过域名系统(domain name system,DNS)服务器查询MPTCP服务器的IP地址和/或端口信息时,通常只能获取一个最优查询结果(例如只能查询到一个MPTCP服务器的公网IP地址),即使获取多个公网IP地址,也无法确认哪些公网IP对应同一个MPTCP服务器。这会导致查询结果中的IP地址网络不可达或网络丢包严重时,影响MPTCP客户端应用首次访问MPTCP服务器时TCP建链性能和结果,从而可能导致了用户无法访问应用数据,降低了用户体验。
发明内容
本申请提供了一种确定MPTCP服务器公网地址的方法和通信装置,可以解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
第一方面,提供了一种确定MPTCP服务器公网地址的方法,该方法的执行主体既可以是MPTCP客户端也可以是应用于MPTCP客户端的芯片。该方法包括:MPTCP客户端向域名系统DNS服务器发送第一请求,该第一请求包括第一域名;MPTCP客户端向域名系统DNS服务器发送第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的至少一个互联网协议IP地址和该MPTCP服务器对应的第一标识;该议MPTCP客户端接收该DNS服务器发送的响应于该第一请求的第一信息,该第一信息包括:该第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器;该MPTCP客户端根据该第一信息,确定与该第一域名和该第一标识对应的该MPTCP服务器的至少一个IP地址。
第一方面提供的确定MPTCP服务器公网地址的方法,MPTCP客户端通过获取域名对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,从而可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
可选的,MPTCP客户端可以为终端设备。
在第一方面一种可能的实现方式中,该方法还包括:该MPTCP客户端根据该MPTCP服务器的至少一个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流。
在第一方面一种可能的实现方式中,该MPTCP客户端根据该MPTCP服务器的多个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流,包括:
该MPTCP客户端依次利用该MPTCP服务器的多个IP地址建立首个子流,最先建立成功的子流为该首个子流,该首个子流对应第一IP地址;
该MPTCP客户端将根据第二IP地址建立成功的子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
在第一方面一种可能的实现方式中,该MPTCP客户端根据该MPTCP服务器的多个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流。包括:
该MPTCP客户端同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为该首个子流,该首个子流对应第一IP地址;
该MPTCP客户端将根据第二IP地址正在建立和/或已经建立成功的首个子流撤销,并将利用该第二IP地址重新建立成功的子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除该第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
在第一方面一种可能的实现方式中,该MPTCP客户端根据该MPTCP服务器的多个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流。包括:
该MPTCP客户端同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为第一首个子流,该第一首个子流对应第一IP地址;
该MPTCP客户端将根据第二IP地址建立成功的第二首个子流加入到该第一首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
在第一方面一种可能的实现方式中,该第一请求还用于请求第一类型的资源记录,该第一类型的资源记录包括:该第一域名对应的至少一个MPTCP服务器中每一个MPTCP服务器对应的第一标识。
可选的,在本申请实施例中,第一类型的资源记录表示域名对应的一个或者多个MPTCP服务器或一组等价MPTCP服务器(例如一个负载均衡(load balancer)代理的一组MPTCP服务器)的标识,一个标识用于唯一标识一个MPTCP服务器,即同一个服务器对应的标识相同。换句话说,第一类型的资源记录包括:域名对应的MPTCP服务器的一个或者多个公网IP地址,以及MPTCP服务器分别对应的第一标识,一个MPTCP服务器可以对应一个或者多个公网IP地址,一个域名对应一个或者多个MPTCP服务器。一个域名对应的同一个MPTCP服务器对应的多条第一类型的资源记录标识该MPTCP服务器的多个IP地址。
在第一方面一种可能的实现方式中,该第一标识为MPTCP服务器对应的通用唯一识别码UUID。
可选的,在本申请实施例中,第一类型的资源记录可以包括地址指针记录APTR类型的RR记录和AAAAPTR类型的RR记录中的至少一种。APTR类型对应A类型的RR记录,该类型RR记录中的域名对应IPv4地址,AAAAPTR类型对应AAAA类型的RR记录,该类型RR记录中的域名对应IPv6地址。
第二方面,提供了一种确定MPTCP服务器公网地址的方法,该方法的执行主体既可以是DNS服务也可以是应用于DNS服务的芯片。该方法包括:第一DNS服务器接收多路径传输控制协议MPTCP客户端发送的第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的至少一个互联网协议IP地址和该MPTCP服务器对应的第一标识;该第一DNS服务器向该MPTCP客户端发送响应于该第一请求的第一信息,该第一信息包括:该第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器。
第二方面提供的确定MPTCP服务器公网地址的方法,DNS服务器可以根据请求的域名确定对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,从而可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,并将该信息发送给MPTCP客户端,MPTCP客户端可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
在第二方面一种可能的实现方式中,该方法还包括:
该第一DNS服务器获取第二信息,该第二信息包括:至少一个域名中每个域名对应的MPTCP服务器的IP地址,以及MPTCP服务器对应的第一标识,至少一个域名包括该第一域名,一个域名对应至少一个MPTCP服务器。
可选的,MPTCP服务器的运营商可以向该第一DNS服务器对应的DNS服务器运营商提供多条AAAAPTR类型RR记录或者多条APTR类型的RR记录。第一DNS服务器运营商审核通过这些记录后,将其加入DNS数据库。例如,该第一DNS服务器可以为根DNS服务器。多条APTR类型或者AAAAPTR类型的RR记录包括:至少一个域名、至少一个域名分别对应的MPTCP服务器IP地址、一个或者多个MPTCP服务器的第一标识等。
可选的,MPTCP服务器的运营商还可以向该第一DNS服务器对应DNS服务运营商提供“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型RR记录等。
在第二方面一种可能的实现方式中,该第一DNS服务器获取第二信息,包括:
该第一DNS服务器向第二DNS服务器发送第二请求,该第二请求用于请求该第一域名对应的MPTCP服务器的至少一个IP地址以及该MPTCP服务器对应的第一标识;该第一DNS服务器接收来自于该第二DNS服务器的响应于该第二请求的第二信息。
可选的,MPTCP服务器的运营商向第二DNS服务器对应的DNS服务运营商提供上述的第二信息、多条APTR类型的RR记录或者多条AAAAPTR类型RR记录,例如,该第二DNS服务器可以为根DNS服务器。
可选的,MPTCP服务器的运营商还可以向该第二DNS服务器对应DNS服务运营商提供“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型RR记录等。
可选的,如果第二DNS服务器也没有存储该APTR和/或AAAAPTR类型的RR记录,则第二DNS服务器也可以作为客户端向上层DNS服务器查询APTR和/或AAAAPTR类型的RR记录。
在第二方面一种可能的实现方式中,该第一请求还用于请求第一类型的资源记录,该第一类型的资源记录包括:该第一域名对应的至少一个MPTCP服务器中每一个MPTCP服务器对应的第一标识。
换句话说,第一类型的资源记录包括:域名对应的MPTCP服务器的一个或者多个公网IP地址,以及MPTCP服务器分别对应的第一标识,一个MPTCP服务器可以对应一个或者多个公网IP地址,一个域名对应一个或者多个MPTCP服务器。一个域名对应的同一个MPTCP服务器对应的多条第一类型的资源记录标识该MPTCP服务器的多个IP地址。
在第二方面一种可能的实现方式中,该第一标识为MPTCP服务器对应的通用唯一识别码UUID。
第三方面,提供了一种确定MPTCP服务器公网地址的方法,该方法的执行主体既可以是第一网关也可以是应用于第一网关的芯片。该方法包括:第一网关确定多路径传输控制协议MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址,该公网地址用于该MPTCP服务器和MPTCP客户端建立MPTCP会话的子流;该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址。
可选的,该第一网关为动态主机配置协议DHCP服务器,或者为支持DHCP代理能力的网关设备,或者为支持DHCP服务器功能的网络地址转换NAT网关设备,或者为支持DHCP服务器和NAT功能的负载均衡器设备。
第三方面提供的确定MPTCP服务器公网地址的方法,第一网关将为后端的MPTCP服务配置的私网地址对应的公网地址发送给后端的MPTCP服务器。从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP,从而可以正确建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
在第三方面一种可能的实现方式中,该方法还包括:该第一网元确定该至少一个私网地址中每一个私网地址对应的端口号;该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址,包括:
该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,该MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址,或者,至少一个私网地址中每一个私网地址对应的公网地址和端口号用于MPTCP服务器和MPTCP客户端建立一个MPTCP会话中的除过首个子流之外的其它子流(或者也可以称为次子流)。
可选的,如果NAT为EIP模式,即一个公网IP地址地址对应一个私网IP地址,也就是利用一个公网IP地址可以映射出一个私网IP地址地址的情况下,DHCP服务器可以确定或者获取MPTCP服务器的至少一个私网IP地址中每一个IP私网地址对应的公网IP地址,并不需要确定DHCP服务器上的端口号。
可选的,如果NAT为DNAT模式,即在公网IP地址的个数少于私网IP地址个数,利用一个公网IP地址不可以映射出一个私网IP地址的情况下,可以利用公网IP地址和端口号联合映射出一个私网IP地址,DHCP服务器需要确定或者获取MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。采用DNAT的方式,可以节约公网IP地址的数量,一个公网IP地址可以对应多个私网IP地址。
在第三方面一种可能的实现方式中,该方法还包括:
该第一网关接收该MPTCP服务器发送的地址请求报文(例如为DHCP Request报文);
该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址,包括:该第一网关向MPTCP服务器发送响应于该地址请求报文的第一应答报文,该第一应答报文(例如为DHCP Ack报文)包括:该至少一个私网地址中每一个私网地址对应的公网地址。
在第三方面一种可能的实现方式中,该方法还包括:
该第一网关接收该MPTCP服务器发送的地址请求报文(例如为DHCP Request报文);
该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:该第一网关向MPTCP服务器发送响应于该地址请求报文的第一应答报文,该第一应答报文(例如为DHCP Ack报文)包括:该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在第三方面一种可能的实现方式中,该方法还包括:
该第一网关接收该MPTCP服务器发送的地址续租请求报文(例如为DHCP Request报文、Renew报文或者Rebind报文)该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址,包括:该第一网关向该MPTCP服务器发送响应于该地址续租请求报文的第二应答报文,例如,第二应答报文可以是DHCP Ack报文或者为Reply报文,该第二应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址。
在第三方面一种可能的实现方式中,该方法还包括:
该第一网关接收该MPTCP服务器发送的地址续租请求报文(例如为DHCP Request报文、Renew报文或者Rebind报文)该第一网关向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:该第一网关向该MPTCP服务器发送响应于该地址续租请求报文的第二应答报文,例如,第二应答报文可以是DHCP Ack报文或者为Reply报文,该第二应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在第三方面一种可能的实现方式中,该第一应答报文或者该第二应答报文包括扩展的动态主机配置协议DHCP选项,该扩展的DHCP选项包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
第四方面,提供了一种确定MPTCP服务器公网地址的方法,该方法的执行主体既可以是MPTCP服务器也可以是应用于MPTCP服务器的芯片。该方法包括:MPTCP服务器获取该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址,该公网地址用于该MPTCP服务器和MPTCP客户端建立MPTCP会话的子流;
该MPTCP服务器向MPTCP客户端发送该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址。
第四方面提供的确定MPTCP服务器公网地址的方法,MPTCP服务器可以获取自己至少一个私网地址中每一个私网地址分别对应的公网地址,并将该信息发送给MPTCP客户端,从而可以正确的和MPTCP客户端建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了该通信装置的本地配置,也不需要该通信装置本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
在第四方面一种可能的实现方式中,该方法还包括:
该MPTCP服务器获取该至少一个私网地址中每一个私网地址对应的端口号;
该MPTCP服务器向MPTCP客户端发送该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址,包括:该MPTCP服务器向MPTCP客户端发送该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址和端口号。
可选的,该MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址,或者,至少一个私网地址中每一个私网地址对应的公网地址和端口号用于MPTCP服务器和MPTCP客户端建立一个MPTCP会话中的除过首个子流之外的其它子流(或者也可以称为次子流)。
在第四方面一种可能的实现方式中,该MPTCP服务器获取该至少一个私网地址中每一个私网地址对应的公网地址,包括:
该MPTCP服务器向第一网关发送地址请求报文,
该MPTCP服务器接收该第一网关发送的响应于该地址请求报文的第一应答报文,该第一应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址。
在第四方面一种可能的实现方式中,该MPTCP服务器获取至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:
该MPTCP服务器向第一网关发送地址请求报文,
该MPTCP服务器接收该第一网关发送的响应于该地址请求报文的第一应答报文,该第一应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在第四方面一种可能的实现方式中,该MPTCP服务器获取该至少一个私网地址中每一个私网地址对应的公网地址,包括:
该MPTCP服务器向第一网关发送地址续租请求报文,
该MPTCP服务器接收该第一网关发送响应于该地址续租请求报文的第二应答报文,该应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址。
在第四方面一种可能的实现方式中,该MPTCP服务器获取该至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:
该MPTCP服务器向第一网关发送地址续租请求报文,
该MPTCP服务器接收该第一网关发送响应于该地址续租请求报文的第二应答报文,该应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在第四方面一种可能的实现方式中,该第一应答报文或者该第二应答报文包括扩展的动态主机配置协议DHCP选项,该扩展的DHCP选项包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在第四方面一种可能的实现方式中,该第一网关为动态主机配置协议DHCP服务器,或者为支持DHCP代理能力的网关设备,或者为支持DHCP服务器功能的网络地址转换NAT网关设备,或者为支持DHCP服务器和NAT功能的负载均衡器设备。
在第四方面一种可能的实现方式中,该MPTCP服务器向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:在该MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立过程中,该MPTCP服务器通过TCP报文将该至少一个私网地址中每一个私网地址对应的公网地址发送给该MPTCP客户端,或者,将该至少一个私网地址中每一个私网地址对应的公网地址和端口号发送给该MPTCP客户端。
例如,MPTCP服务器可以生成ADD_ADDR选项并添加在Syn ACK报文中,该MPTCPADD_ADDR选项携带:至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,将至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号该私网IP和对应公网IP和/或端口。
在第四方面一种可能的实现方式中,该MPTCP服务器向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号,包括:在该MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立后,该MPTCP服务器向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
第五方面,提供了一种通信装置,该通信装置包括用于执行以上第一方面或者第一方面的任意一方面可能的实现方式中的各个步骤的单元。
第六方面,提供了一种通信装置,该通信装置包括用于执行以上第二方面或者第二方面的任意一方面可能的实现方式中的各个步骤的单元。
第七方面,提供了一种通信装置,该通信装置包括用于执行以上第三方面或者第三方面的任意一方面可能的实现方式中的各个步骤的单元。
第八方面,提供了一种通信装置,该通信装置包括用于执行以上第四方面或者第四方面的任意一方面可能的实现方式中的各个步骤的单元。
第九方面,提供了一种通信装置,该通信装置包括至少一个处理器和存储器,该至少一个处理器用于执行以上第一方面或者第一方面的任意一方面可能的实现方式中的方法。
第十方面,提供了一种通信装置,该通信装置包括至少一个处理器和存储器,该至少一个处理器用于执行以上第二方面或者第二方面的任意一方面可能的实现方式中的方法。
第十一方面,提供了一种通信装置,该通信装置包括至少一个处理器和存储器,该至少一个处理器用于执行以上第三方面或者第三方面的任意一方面可能的实现方式中的方法。
第十二方面,提供了一种通信装置,该通信装置包括至少一个处理器和存储器,该至少一个处理器用于执行以上第四方面或者第四方面的任意一方面可能的实现方式中的方法。
第十三方面,提供了一种通信装置,该通信装置包括至少一个处理器和接口电路,该至少一个处理器用于执行以上第一方面或者第一方面中的任意一方面可能的实现方式中的方法。
第十四方面,提供了一种通信装置,该通信装置包括至少一个处理器和接口电路,该至少一个处理器用于执行以上第二方面或者第二方面中的任意一方面可能的实现方式中的方法。
第十五方面,提供了一种通信装置,该通信装置包括至少一个处理器和接口电路,该至少一个处理器用于执行以上第三方面或者第三方面中的任意一方面可能的实现方式中的方法。
第十六方面,提供了一种通信装置,该通信装置包括至少一个处理器和接口电路,该至少一个处理器用于执行以上第四方面或者第四方面中的任意一方面可能的实现方式中的方法。
第十七方面,提供了一种MPTCP客户端设备,该MPTCP客户端设备包括上述第五方面、第九方面或者第十三方面提供的任一种通信装置。
第十八方面,提供了一种DNS服务器,该DNS服务器包括上述第六方面、第十方面或者第十四方面提供的任一种通信装置。
第十九方面,提供了一种DHCP服务器,该DHCP服务器包括上述第七方面、第十一方面或者第十五方面提供的任一种通信装置。
第二十方面,提供了一种MPTCP服务器,该MPTCP服务器包括上述第八方面、第十二面或者第十六方面提供的任一种通信装置。
第二十一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序在被处理器执行时,用于执行第一方面至第四方面中任意一方面中的方法,或者,用于执行第一方面至第四方面中任意一方面中的任意可能的实现方式中的方法。
第二十二方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序被执行时,用于执行第一方面至第四方面中任意一方面中的方法,或者,用于执行第一方面至第四方面中任意一方面中的任意可能的实现方式中的方法。
第二十三方面,提供了一种芯片,该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的通信设备执行第一方面至第四方面中任意一方面中的方法,或者,用于执行第一方面至第四方面中任意一方面中的任意可能的实现方式中的方法。
本申请提供的确定MPTCP服务器公网地址的方法和通信装置,MPTCP客户端通过获取域名对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,从而可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
本申请提供的确定MPTCP服务器公网地址的方法和通信装置,通过DHCP服务器将为后端的MPTCP服务配置的私网地址对应的公网地址、或者公网地址和端口信息发送给后端的MPTCP服务器,从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP和/或端口信息,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP、或者私网IP对应公网IP和端口信息,从而可以正确建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
附图说明
图1是多宿主客户端的组网场景架构的示意图。
图2是本申请提供的一例适用于本申请实施例的通信系统的示意图。
图3是本申请实施例提供的一例确定MPTCP服务器公网地址方法的示意性流程图。
图4是为本申请提供的一例DNS查询请求和DNS查询应答信息的示意性结构图。
图5是为本申请提供的一例查询问题区域(Query)字段的示意性结构图。
图6是本申请实施例提供的一例APTR类型或者AAAAPTR类型的RR记录的示意性结构图。
图7是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图8是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图9是本申请实施例提供一例适用于本申请实施例的通信系统的示意图。
图10是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图11是本申请实施例提供的另一例通信装置结构的示意性框图。
图12是本申请实施例提供的又一例通信装置结构的示意性框图。
图13是本申请实施例提供的另一例通信装置结构的示意性框图。
图14是本申请实施例提供的又一例通信装置结构的示意性框图。
图15是本申请提供的一例LB应用场景组网的示意性结构图。
图16是本申请提供的一例适用于本申请实施例的通信系统的示意图。
图17是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图18是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图19是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图20是本申请实施例提供的一例DHCPv6客户端和DHCPv6服务器在T1时刻地址租约更新过程的示意性流程图。
图21是本申请实施例提供的一例DHCPv6客户端和DHCPv6服务器在T2时刻地址租约更新过程的示意性流程图。
图22是本申请实施例提供的一例扩展的DHCP选项的示意性结构图。
图23是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图24是本申请实施例提供的另一例确定MPTCP服务器公网地址方法的示意性流程图。
图25是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图26是本申请实施例提供一例适用于本申请实施例的通信系统的示意图。
图27是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图28是本申请实施例提供的一例NAT公共地址选项的示意性结构图。
图29是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图30是本申请实施例提供一例适用于本申请实施例的通信系统的示意图。
图31是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图32是本申请实施例提供的一例NAT公共地址选项的示意性结构图。
图33是本申请实施例提供的又一例确定MPTCP服务器公网地址方法的示意性流程图。
图34是本申请实施例提供的另一例通信装置结构的示意性框图。
图35是本申请实施例提供的又一例通信装置结构的示意性框图。
图36是本申请实施例提供的另一例通信装置结构的示意性框图。
图37是本申请实施例提供的又一例通信装置结构的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
另外,本申请的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(compact disc,CD)、数字通用盘(digital versatile disc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(erasable programmableread-only memory,EPROM)、卡、棒或钥匙驱动器等)。另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
本申请实施例的技术方案可以应用于各种通信系统,例如:全球移动通讯(GlobalSystem of Mobile communication,GSM)系统、码分多址(Code Division MultipleAccess,CDMA)系统、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)系统、通用分组无线业务(General Packet Radio Service,GPRS)、长期演进(Long TermEvolution,LTE)系统、LTE频分双工(Frequency Division Duplex,FDD)系统、LTE时分双工(Time Division Duplex,TDD)、通用移动通信系统(Universal MobileTelecommunication System,UMTS)、全球互联微波接入(Worldwide Interoperabilityfor Microwave Access,WiMAX)通信系统、第五代(5th Generation,5G)系统或新无线(NewRadio,NR)等。
本申请实施例中的终端设备可以指用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(Session InitiationProtocol,SIP)电话、无线本地环路(Wireless Local Loop,WLL)站、个人数字处理(Personal Digital Assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
随着移动终端(例如手机)用户数量的不断增长,各类移动终端支持的业务功能不断增加,例如即时通信、证券、网页浏览、文件下载等功能已逐步成为终端设备,尤其是智能手机的主流应用。在上网过程中,移动终端需要对统一资源定位符(uniform resourcelocator,URL)的域名查询其域名对应的互联网协议(internet protocol,IP)地址,以便发送数据包。这个过程需要通过查询DNS服务器才能完成。
DNS服务器是一种分布式的主机信息数据库,提供域名和IP地址之间的映射和转换,可以通过DNS服务器将域名解析为对应的IP地址。终端设备可以通过DNS提供的域名解析服务实现对域名的访问。
域名访问的过程如下:以终端设备访问域名A为例,当终端设备访问该域名A时,查询其缓存中是否存在该域名A对应的应用服务器的IP地址,如果存在,则终端设备可以直接获取该IP地址,通过该IP地址访问该域名A。如果不存在,则终端设备可以向DNS服务器发送域名解析请求,该域名解析请求携带该域名A,由DNS服务器返回该域名A对应的IP地址,终端设备可以通过该IP地址访问该域名A。
另外,终端设备在获得域名对应的IP地址后,生成并缓存一条DNS缓存记录。该DNS缓存记录用于表示域名与IP地址的对应关系。此外,终端设备针对缓存的每条DNS缓存记录维护相应的存留时间(time to live,TTL)。DNS缓存记录的TTL为该DNS缓存记录在终端设备的缓存中的保留的时间。这样,若在某一个DNS缓存记录的TTL内,终端设备需要再次访问该DNS缓存记录中的域名,则该终端设备可以直接根据该DNS缓存记录,获取该域名对应的IP地址。若超过该DNS缓存记录的TTL后,该终端设备需要再次访问该域名,通过DNS服务器解析得到所述域名对应的IP地址。
传输层(Transport Layer)是国际标准化组织开放式互联(internationalorganization for standardization open system interconnection,ISO OSI)协议的第四层协议,传输层协议为应用进程提供端到端的通信服务,是两台通信设备(例如计算机)经过网络进行数据通信时,第一个端到端的层次。传统的传输层协议仅支持单路径功能,即:一个传输层连接只能绑定一条端到端路径,用于数据传输。如果需要多条连接,只能建多条4层TCP连接。
随着Ipv6的到来,主机的多地址(Multihome)变得越来越普及。即使是广泛使用的随着互联网协议第四版(internet protocol version4,Ipv4),多宿主主机(Multihomehost)也越来越多了。从数据中心胖树(Fat-tree)网络架构下的服务器到具有4G/Wifi/3G/蓝牙(Bluetooth)多连接的智能手机,都是多宿主主机。为了充分利用设备的多连接特性,新型多路径传输层协议已经成为当前最大的趋势。MPTCP允许传输控制协议连接使用多个路径来最大化信道资源使用。它不再使用传统TCP协议所要求的单个信道,而是支持冗余信道资源的反向多路复用,将整个数据传输速率提高到所有可用信道的总和。与此同时,MPTCP还与传统TCP协议向后兼容。
MPTCP是一种利用多条路径并发传输的传输层协议。MPTCP是按顺序初始化多个连接,即:当一条通道(或者首个子流)按照三次握手的方式建立起来后,再按照三次握手的方式建立其他的子通道(或者次子流)。这些通道以三次握手建立连接和四次握手解除连接。这些通道都会绑定于同一个MPTCP会话(MPTCP session)。发送端的数据可以选择其中一条通道进行传输,或者通过调度器在两条通道上进行传输。
由于在同一个MPTCP会话中,一个MPTCP服务器可以对应多个公网IP地址,MPTCP客户端可以利用该多个公网IP地址分别建立该MPTCP会话的多个子流或者通道,以进行数据传输。目前,MPTCP服务器对应的多个公网IP地址一般依赖客户端配置,例如手机的MPTCP代理应用会静态配置MPTCP代理网关的至少一个公网地址。
相关资料“https://tools.ietf.org/html/draft-bonaventure-mptcp-experience-00”中的“draft-bonaventure-mptcp-experience-00.txt”提及:当单宿主客户端执行DNS查询时,它将从其本地解析器接收其请求的最佳答案。如果客户端是多宿主的,则返回的DNS查询的答案可能会因该客户端发送DNS查询请求的接口而异。多宿主客户端的组网场景的示意图如图1所示。如图1所示的,多宿主客户端具有无线保真(wireless-fidelity,Wifi)、蜂窝网络接口(cellular)这两个网络接口,多宿主客户端可以通过WIFI访问内容分发网络2(content delivery network,CDN),通过蜂窝网络接口访问CDN1和CDN3。
对于如图1所示的组网场景,可以使用相关资料https://tools.ietf.org/html/draft-vandergaast-edns-client-subnet-02”中定义的客户端子网扩展的DNS(ExtensionDNS,EDNS)。当客户端从其WiFi接口发送DNS查询请求时,它还应在此DNS查询请求中发送与蜂窝网路接口相对应的客户端子网。这将向DNS服务器指示请求的IP地址对于WiFi接口和蜂窝网络接口(例如,CDN3)均应有效。
相关资料“https://tools.ietf.org/html/draft-barre-mptcp-impl-00”中分析认为:使用DNS分配与给定的MPTCP服务器关联的地址列表有如下三种方法。
第一种方法:使用现有的转发DNS,并考虑与一个域名关联的所有“A”和“AAAA”类型的资源记录(resource record,RR)都对应于同一个MPTCP服务器,并且可用于建立多路径TCP子流。但是,当多个资源记录与一个DNS域名相关联时,通常是出于负载平衡的原因,并且这些资源记录指向不同的MPTCP服务器的地址。
其中,“A”类型的资源记录用于IP地址记录,包括一个32比特位的IPV4地址,常用于映射主机名称(或者域名)到IP地址。也就是说,“A”类型的资源记录是指定域名对应的IP地址。“AAAA”类型的资源记录也用于IP地址记录,包括一个128比特位的IPV6地址,用于映射主机名称(或者域名)到IP地址。也就是说,“AAAA”类型的资源记录也是指定域名对应的IP地址。
第二种方法:定义一个新的DNS记录,其中包含与给定MPTCP服务器关联的IP地址列表。但是,这将需要部署新型的DNS记录。
第三种方法:反向DNS来编码有关与给定MPTCP服务器关联的备用地址的信息。反向DNS树通常仅包含将域名与反向IPv4或IPv6地址相关联的指针记录(pointer record,PTR),并且,也可以使用反向DNS来存储A和AAAA记录。所以,目前建议采用第三种方法。PTR类型的资源记录用于将一个IP地址映射到对应的域名(或者主机名),可以理解为反向DNS,也可以看成是A记录或者AAAA记录的反向,即通过IP地址访问域名,而A记录或者AAAA记录是通过域名访问IP。
例如,假设域名为“mptcp.example.org”,并且可通过以下三个IP地址访问的MPTCP服务器。该IP地址来自文档前缀[RFC3849][RFC5737]:
IP地址1::192.0.2.10
IP地址2:198.51.100.23
IP地址3:2001:db8::1234
转发DNS将为此包含以下记录:
服务(Server)
mptcp.example.org.7200IN A 192.0.2.10
mptcp.example.org.7200IN A 198.51.100.23
mptcp.example.org.7200IN AAAA 2001:db8::1234
其中,“7200”表示该DNS缓存记录的生命周期,单位为“秒”。“IN”表示网络类型的名称为“Internet网络”。“A”表示为IPV4类型的IP地址。“AAAA”表示为IPV6类型的IP地址。
此外,以下条目将被添加到反向DNS中:
10.2.0.192.in-addr.arpa.7200IN AAAA 2001:db8::1234
10.2.0.192.in-addr.arpa.7200IN A 198.51.100.23
23.100.51.198.in-addr.arpa.7200IN AAAA 2001:db8::1234
23.100.51.198.in-addr.arpa.7200IN A 192.0.2.10
4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.7200IN A 192.0.2.10
4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.7200IN A 198.51.100.23
从上述分析可以看出,“draft-bonaventure-mptcp-experience-00.txt”的方案解决了CDN服务器的选择问题,但是,DNS的查询结果仍然只有MPTCP服务器的一个公网地址。
利用“draft-barre-mptcp-impl-00.txt”的方案,需要进行两次DNS查询,先向DNS服务器查询正向解析结果,然后根据查询到的IP地址查询DNS反向解析结果,对应的反向解析记录(A或AAAA类型记录,非PTR类型记录)是预先配置到DNS服务器上的。
因此,目前MPTCP客户端(例如终端设备)通过DNS服务器查询MPTCP服务器的IP地址和/或端口信息时,通常只能获取一个最优查询结果(例如只能查询到一个MPTCP服务器的IP地址),即使获取多个IP地址,也无法确认哪些IP对应同一个MPTCP服务器。这会导致查询结果中的IP地址网络不可达或网络丢包严重时,就会影响MPTCP客户端应用首次访问MPTCP服务器时TCP建链性能和结果。而且首个子流建链失败会导致整个MPTCP会话建链失败,MPTCP客户端无法感知服务器新的IP地址,建立其他子流,不能保证MPTCP会话的正确建立,从而导致了用户无法访问应用数据,降低了用户体验。
有鉴于此,本申请提供了一种确定MPTCP服务器公网地址的方法,定义了一种新的DNS资源记录类型,该DNS资源记录中标识域名对应的MPTCP服务器或一组等价MPTCP服务器的标识,一个MPTCP服务器的标识用于唯一标识一个MPTCP服务器,一个域名可以对应一个或者多个MPTCP服务器,一个MPTCP服务器在DNS服务器中对应的多条DNS资源记录用于标识该MPTCP服务器的多个公网IP地址。在MPTCP客户端通过DNS服务器查询该DNS资源记录时,MPTCP客户端可以获取MPTCP会话中一个MPTCP服务器的多个公网IP地址,便可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。
下面结合图2和图3详细说明本申请提供的确定MPTCP服务器公网地址的方法。
图2是一例适用于本申请实施例的无线通信系统的架构示意图。如图2所示的,MPTCP客户端(例如为终端设备)需要访问应用时,可以向DNS服务器查询需要访问的域名的对应的服务器(例如为MPTCP服务器)的IP地址,在通过DNS服务器获取该域名对应的服务器的IP地址之后,就可以根据该IP地址,访问对应的服务器,从而获取需要的访问的应用的数据。
图3是本申请一个实施例的确定MPTCP服务器公网地址的方法200的示意流程图。该方法200可以应用在图2所示的场景中,当然也可以应用在其他通信场景中,本申请实施例在此不作限制。
下文的描述中,以MPTCP客户端和DNS服务器为执行主体说明书本申请提供的方法。作为示例而非限定,执行方法的执行主体也可以是应用于DNS服务器和MPTCP客户端的芯片。
如图3所示,图3中示出的方法200可以包括S210至S240。下面结合图3详细说明方法200中的各个步骤。
应理解,在本申请实施例中,MPTCP客户端可以为终端设备,MPTCP服务器存储有MPTCP客户端需要访问的应用数据,MPTCP服务器也可以称为应用服务器,MPTCP客户端可以通过与MPTCP服务器建立MPTCP会话获取需要的数据。MPTCP服务器的IP地址可以理解为MPTCP服务器对外发布的多个公网IP地址,这些公网IP地址可以是支持MPTCP的服务器本地的网口IP,也可以是MPTCP的服务器对应网络地址转换(network address translation,NAT)设备上的公网IP地址,NAT设备为该支持MPTCP的服务器提供NAT网关功能。这些公网IP地址可以包括IPV4地址和IPV6地址。
S210,MPTCP客户端向DNS服务器发送第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识。
S220,DNS服务器根据第一请求,确定第一信息,该第一信息包括:第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器。
S230,DNS服务器向MPTCP客户端发送响应于该第一请求的第一信息。
S240,该MPTCP客户端根据该第一信息,确定与该第一域名和该第一标识对应的该MPTCP服务器的至少一个IP地址。
在S210中,MPTCP客户端需要访问某一个域名时,如果MPTCP客户端上的应用创建超文本传输协议(hypertext transfer protocol,HTTP)会话时,在本地缓存的DNS类型记录查询不到第一域名对应的MPTCP服务器的IP地址,就会触发生成第一请求,例如,该第一请求可以为DNS查询请求。MPTCP客户端便可以向DNS服务器发送第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的IP地址和MPTCP服务器对应的第一标识,一个第一标识用于唯一标识(或者对应)一个MPTCP服务器。例如,第一域名为可以为www.xxx.com。
可选的,在本申请实施例中,本地缓存的DNS类型记录可以为:“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型的RR记录中的至少一种。
图4所示的为本申请提供的一例DNS查询请求和DNS查询应答信息的示意性结构图,图4中a图所示的为DNS查询请求示意性结构图,该DNS查询请求包括:会话标识(Transaction ID)字段、标志(Flags)字段、问题数(Questions)字段、回答资源记录数(Answer RRs)字段、授权资源记录数(Authority RRs)字段、附加资源记录数(AdditionalRRs)字段、查询问题区域(Queries)字段、授权区域(Authoritative nameservers)字段、附加区域(Additional recoreds)字段。
图4中b图所示的为DNS查询应答信息的示意性结构图,该DNS查询应答信息:会话标识(Transaction ID)字段、标志(Flags)字段、问题数(Questions)字段、回答资源记录数(Answer RRs)字段、授权资源记录数(Authority RRs)字段、附加资源记录数(AdditionalRRs)字段、查询问题区域(Queries)字段、回答区域(Answers)字段、授权区域(Authoritative nameservers)字段、附加区域(Additional recoreds)字段。
图5所示的为查询问题区域(Query)字段的示意性结构图。如图5所示的,Query字段包括:查询名字段、查询类型字段、查询类字段。
表1所示的为定义的查询类型包括的内容。
表1
类型 | 助记符 | 说明 |
1 | A | IPv4地址 |
2 | NA | 名字服务器 |
5 | CHAME | 规范名称定义主机的正式名字的别名 |
6 | SOA | 开始授权标记一个区的开始 |
11 | WKS | 熟知服务定义主机提供的网络服务 |
12 | PTR | 指针把IP地址转化为域名 |
13 | HINFO | 主机信息给出主机使用的硬件和操作系统的表述 |
15 | MX | 邮件交换把邮件改变路由送到邮件服务器 |
28 | AAAA | IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
查询类(Class)和回答资源记录(Answer RR资源)定义中的类型(Class)定义一致,通常取值为1,表示Internet的IP地址。
在S220中,DNS服务器收到该第一请求,可以根据该第一请求中包括的域名,查询正常正向DNS数据库中的缓存。正向的DNS查询可以理解为根据域名查询对应的服务器的IP地址,即映射域名到服务器的公网IP地址。正向DNS数据库包括域名以及对应的服务器的IP地址的信息。在本申请实施例中,可以定义一种新的DNS资源记录类型(第一类型的资源记录),DNS服务器可以存储该第一类型的资源记录。
第一类型的资源记录包括:第一域名对应的至少一个MPTCP服务器中每一个MPTCP服务器对应的标识(即第一标识)。第一类型的资源记录表示域名对应的一个或者多个MPTCP服务器或一组等价MPTCP服务器(例如一个负载均衡(load balancer)代理的一组MPTCP服务器)的标识,一个标识用于唯一标识一个MPTCP服务器,即同一个服务器对应的标识相同。换句话说,第一类型的资源记录包括:域名对应的一个或者多个MPTCP服务器的公网IP地址,以及该一个或者多个MPTCP服务器分别对应的标识,一个MPTCP服务器可以对应一个或者多个公网IP地址。
可选的,在本申请实施例中,第一类型的资源记录可以包括地址指针记录(address pointer record,APTR)类型的RR记录和AAAAPTR类型的RR记录中的至少一种。APTR类型对应A类型的RR记录,该类型RR记录中的域名对应IPv4地址,AAAAPTR类型对应AAAA类型的RR记录,该类型RR记录中的域名对应IPv6地址。
可选的,MPTCP服务器对应的标识可以为MPTCP服务器的通用唯一识别码(Universally Unique Identifier,UUID),一个UUID用于唯一标识一个MPTCP服务器。应理解,在本申请实施例中,MPTCP服务器对应的标识还可以是其他标识,只要该标识可以唯一对应或者指示一个MPTCP服务器即可,本申请实施例对此不作限制。
一个域名对应的同一个MPTCP服务器对应的多条第一类型的资源记录标识该MPTCP服务器的多个IP地址。例如,假设同一个MPTCP服务器对应3条APTR类型的RR记录,则证明该MPTCP服务器具有3个IP地址。
因此,在S220中,DNS服务器可以根据该第一请求中包括的域名,查询第一类型的资源记录。
可选的,在S220中,在本申请实施例中,DNS服务器还可以查询存储的“A”类型的RR记录、“AAAA”类型的RR记录等。
可选的,在本申请实施例中,DNS服务器本地缓存的DNS类型记录还可以包括:APTR类型的RR记录、AAAAPTR类型的RR记录中的至少一种。
DNS服务器可以根据该第一请求中包括的域名,通过查询可以确定第一信息,该第一信息包括:第一域名对应的至少一个MPTCP服务器的IP地址和该MPTCP服务器分别对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器,一个MPTCP服务器对应一个或者多个IP地址。
例如,假设第一域名为www.xxx.com,对应的3个不同的MPTCP服务器,分别为MPTCP服务器1、MPTCP服务器2、MPTCP服务器3。三个服务器分布在不用的位置上。MPTCP服务器1对应两个IP地址,分别为IP11、IP12,MPTCP服务器2对应三个IP地址,分别为IP21、IP22、IP23,MPTCP服务器3对应三个IP地址,分别为IP31、IP32、IP33,MPTCP服务器1对应的标识为UUID1,MPTCP服务器1对应的标识为UUID2,MPTCP服务器3对应的标识为UUID3。
对于MPTCP服务器1,包括如下两条APTR类型的RR记录:
www.xxx.com.IP11,UUID1;
www.xxx.com.IP12,UUID1;
对于MPTCP服务器2,包括如下三条APTR类型的RR记录:
www.xxx.com.IP21,UUID2;
www.xxx.com.IP22,UUID2;
www.xxx.com.IP23,UUID2;
对于MPTCP服务器3,包括如下三条APTR类型的RR记录:
www.xxx.com.IP31,UUID3;
www.xxx.com.IP32,UUID3;
www.xxx.com.IP33,UUID3;
在S230中,DNS服务器可以向MPTCP客户端发送响应于该第一请求的第一信息,例如,该第一信息可以为DNS查询应答报文。可选的,DNS服务器可以将查询到的APTR类型的RR记录和/或AAAAPTR类型RR记录通过DNS查询应答报文发送给MPTCP客户端。可选的,DNS服务器可以只将一个MPTCP服务器对应的多条APTR类型的RR记录和/或AAAAPTR类型RR记录发送给MPTCP客户端,该MPTCP服务器可以为距离MPTCP客户端最近的MPTCP服务器。下文的描述中,将以第一域名对应一个MPTCP服务器为例进行说明。
在S240中,MPTCP客户端可以根据该第一信息,确定与该第一域名和该第一标识对应的MPTCP服务器的一个或者多个IP地址。例如,MPTCP客户端可以解析该APTR类型的RR记录和/或AAAAPTR类型RR记录,确定同一个MPTCP服务器对应的一个或者多个IP地址。
本申请提供的确定MPTCP服务器公网地址的方法,MPTCP客户端通过获取域名对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,从而可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
应理解,在本申请实施例中,MPTCP客户端通过域名在DNS服务器查询到MPTCP服务器IP地址信息后,和正常的A类型DNS资源记录一样,将查询到的APTR类型和/或AAAAPTR类型DNS资源记录缓存起来,并按老化时间正常老化。
还应理解,在本申请实施例中,一个域名可以对应多个不同的MPTCP服务器,这多个不同的MPTCP服务器可以分布在不同的位置,一个MPTCP服务器也可以对应不同的IP地址。MPTCP客户端访问该域名时,可以和多个不同的MPTCP服务器中的任意一个建立MPTCP会话。例如,利用同一个MPTCP服务器的不同IP地址分别建立子流进行传输。
应理解,在本申请实施例中,MPTCP服务器的IP地址可以为IPV4地址或者IPV6地址,IPv4地址和IPv6地址对应的服务器UUID可以定义成不同的类型值。
可选的,作为一种可能的实现方式,图6所示的为本申请提供的APTR类型或者AAAAPTR类型的RR记录的示意性结构图,如图6所示的,该资源记录包括字段101至字段106,其中,101表示域名(name)字段,102表示查询请求类型(type)字段,103表示类型(class)字段,104表示TTL字段,105表示数据长度(data length)字段,106表示数据(data)字段。
其中,域名(name)字段:用于指示需要查询的域名,该字段的长度为可变的。
查询请求类型(type)字段:长度为2个字节(Byte,B),指示需要查询的资源记录的类型为APTR类型的RR记录或者AAAAPTR类型RR记录。其中,IPv4地址类型和IPv6地址类型可以对应不同的值。可选的,在本申请实施例中,查询请求类型(type)也可以为通配类型的查询请求,该通配类型的查询请求用于请求查询APTR类型的RR记录或者AAAAPTR类型RR记录,或者,该查询请求类型字段的值也可以是其它用于指示APTR类型的RR记录或者AAAAPTR类型RR记录的值。
类型(class)字段:长度为2个字节。图6中所示的“IN”用于指示需要查询的网络类型为“Internet”。可选的,在本申请实施例中,类型(class)字段还可以用于指示其它需要查询的网络类型。
TTL,长度为4个字节,TTL为该APTR类型的RR记录或者AAAAPTR类型RR记录在DNS服务器或者MPTCP客户端中的缓存中的保留的时间长度,单位为“秒”。
数据长度(data length)字段:长度为2个字节,用于指示访问的域名对应的应用数据的长度。
数据(data)字段:包括MPTCP服务器的IP地址和UUID,MPTCP服务器的IP地址可以为IPv4地址或者IPv6地址。
应理解,图6只是示例性的,不应该对本申请实施例提供的APTR类型的RR记录或者AAAAPTR类型RR记录的结构或者包括的内容造成任何限制。在本申请实施例中,APTR类型的RR记录或者AAAAPTR类型RR记录的结构还可以是其它的结构,APTR类型的RR或者AAAAPTR类型RR记录还可以包括其他的内容。本申请实施例在此不作限制。
可选的,在本申请一些可能的实现方式中,DNS查询请求还用于请求第一类型的资源记录。
具体而言,在本申请实施例中,由于定义了APTR类型的RR记录和AAAAPTR类型RR记录,因此,在S210中,MPTCP客户端向DNS服务器发送的DNS查询请求可以用于请求该APTR类型的RR记录或者AAAAPTR类型RR记录。例如,可以将DNS查询请求中的查询请求类型字段设置为用于指示APTR类型的RR记录或者AAAAPTR类型RR记录,或者还可以将DNS查询请求中的查询请求类型字段设置为用于指示通配类型的查询请求,该通配类型的查询请求用于请求查询APTR类型的RR记录或者AAAAPTR类型RR记录。例如,该通配类型的查询请求可以为表1中所示的ANY类型的查询请求。或者还可以在DNS查询请求中设置指示信息,该指示信息用于指示需要查询的资源记录的类型为APTR类型的RR记录或者AAAAPTR类型RR记录。本申请实施例在此不作限制。
可选的,DNS查询请求还可以用于请求查询“A”类型的RR记录、“AAAA”类型的RR记录或者PTR类型的RR记录等。本申请实施例在此不作限制。
在S220中,在DNS服务器收到该DNS查询请求后,根据该请求中的域名,查询正向DNS数据库中的“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型的RR记录、APTR类型的RR记录、AAAAPTR类型RR记录中的至少一种。或者,DNS服务器可以根据DNS查询请求中携带的查询请求的类型,只查询该DNS查询请求的类型指示的RR记录,例如只查询APTR类型的RR记录或者AAAAPTR类型RR记录。DNS服务器将查询到的记录经过本地策略筛选处理后,可以通过DNS查询应答报文回复MPTCP客户端。本地筛选策略需尽可能考虑对于同一MPTCP服务器对应的多条APTR记录呈现相同的筛选结果。
可选的,在S240中,MPTCP客户端收到DNS服务器返回的查询应答报文后,解析其中APTR类型的RR记录,可以按照域名+服务器UUID为键值生成并缓存服务记录,一条服务记录至少包括一个IP地址。例如,假设该APTR类型的RR记录或者AAAAPTR类型RR记录包括如下三条:
www.xxx.com.IP21,UUID2;
www.xxx.com.IP22,UUID2;
www.xxx.com.IP23,UUID2;
则MPTCP客户端根据域名+服务器UUID生成的服务记录可以为:
www.xxx.com+UUID2:IP21、IP22、IP23:
该服务记录包括三个IP地址,即MPTCP客户端可以确定域名“www.xxx.com”对应的同一个MPTCP服务器(标识为UUID2)有3个IP地址,分别为IP21、IP22、IP23。这说明“www.xxx.com”对应的这一个服务器可以提供3个网络接口的服务链接。MPTCP客户端可以利用三个IP地址与该服务器建立MPTCP会话。
可选的,在本申请实施例中,以图7为例,在图3所示的方法步骤的基础上,该方法200还包括S250。
S250,该MPTCP客户端根据该MPTCP服务器的至少一个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流。
图7中所示的S210至S240的描述可以参考上述的图3中对这几个步骤的描述,为了简洁,这里不再赘述。
在S250中,假设该MPTCP服务器对应多个IP地址。在MPTCP客户端确定与第一域名和第一标识对应的该MPTCP服务器的多个IP地址之后,说明该服务器(该MPTCP服务器)是可以提供多网络接口的服务器,MPTCP客户端可以尝试与之建立MPTCP会话。MPTCP客户端可以根据这些IP地址尝试建立MPTCP会话的首个子流。可选的,MPTCP客户端可以根据这些IP地址,利用如下三种方式中的任意一种尝试建立MPTCP会话的首个子流。
第一种:该MPTCP客户端依次利用(或者轮询)该MPTCP服务器的多个IP地址建立首个子流,例如,根据获取的IP地址的自然顺序依次尝试和这多个IP建立MPTCP会话的首个子流,最先建立成功的子流为首个子流。假设首个子流对应第一IP地址。则MPTCP客户端将根据第二IP地址建立成功的子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址,该MPTCP服务器的多个IP地址包括第一IP地址和第二IP地址。
例如,假设该MPTCP服务器的多个IP地址包括:IP地址1、IP地址2、IP地址3。MPTCP客户端首先利用IP地址1建立首个子流,如果建立成功,则再分别利用IP地址2、IP地址3建立次子流,并将利用IP地址2、IP地址3建立成功的次子流加入到首个子流对应的MPTCP会话中。
如果利用IP地址1建立首个子流失败,则再利用IP地址2建立首个子流,如果建立成功,则再分别利用IP地址1、IP地址3建立次子流,并将利用IP地址1、IP地址3建立成功的次子流加入到首个子流对应的MPTCP会话中。
如果利用IP地址1和IP地址2分别建立首个子流均失败,则再利用IP地址3建立首个子流,如果建立成功,则再分别利用IP地址1、IP地址2建立次子流,并将利用IP地址1、IP地址2建立成功的次子流加入到首个子流对应的MPTCP会话中。
应理解,在本申请实施例中,在利用第一种方式中,除了根据获取IP地址的自然顺序依次尝试和这多个IP建立MPTCP会话的首个子流之外,还可以根据临时往返时验(Round-Trip Time,RTT)经验,将IP流表表中的多个IP地址按照RTT从低到高的顺序,依次尝试和多个IP地址建立首个子流。
第二种:MPTCP客户端同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为该首个子流,假设首个子流对应第一IP地址。MPTCP客户端将根据第二IP地址正在建立(建链)和/或已经建立(建链)成功的首个子流撤销,并将利用第二IP地址重新建立成功的第二子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除该第一IP地址之外的IP地址。例如,MPTCP客户端撤销正在建链或已经完成的根据第二IP地址建立的首个子流,在MP_JOIN选项中携带根据第一IP地址建立的首个子流获取的MPTCP会话接收端令牌(Receiver's Token),利用第二IP地址重新建立第二子流(subTCP)并加入对应的MPTCP会话。该MPTCP服务器的多个IP地址包括第一IP地址和第二IP地址。
例如,假设该MPTCP服务器的多个IP地址包括:IP地址1、IP地址2、IP地址3。MPTCP客户端同时利用IP地址1、IP地址2、IP地址3分别建立首个子流。假设利用IP地址2最先(最早)建立子流成功,则首个子流对应IP地址2。MPTCP客户端将分别利用IP地址1、IP地址3正在建立和/或建立成功的两个首个子流撤销掉,然后在MP_JOIN选项中携带根据IP地址2建立的首个子流获取的MPTCP会话接收端令牌(Receiver's Token),利用IP地址1、IP地址3分别重新建立新的子流(subTCP)加入IP地址2对应的MPTCP会话中。
第三种:该MPTCP客户端同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为第一首个子流,假设第一首个子流对应第一IP地址;MPTCP客户端将根据第二IP地址建立成功的第二首个子流加入到该第一首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址。例如,MPTCP客户端在已经建立的第二首个子流上重新发送Syn报文,携带MP_JOIN选项(包含要加入MPTCP会话的服务端令牌,MPTCP客户端随机数,MPTCP客户端截短的哈希消息认证码(Truncated HMAC))。MPTCP服务器如果同意将现有子流搬迁归并到令牌指定的已有MPTCP会话中,就响应回复携带MP_JOIN选项(MP_JOIN选项携带MPTCP服务器Truncated HMAC和MPTCP服务器随机数)的Ack报文,如果不同意则回复No-Ack报文或不回复Ack报文,该MPTCP服务器的多个IP地址包括第一IP地址和第二IP地址。
例如,假设该MPTCP服务器的多个IP地址包括:IP地址1、IP地址2、IP地址3。MPTCP客户端同时利用IP地址1、IP地址2、IP地址3分别建立首个子流。假设利用IP地址3最先(最早)建立子流成功,则首个子流对应IP地址3。假设此后MPTCP客户端分别利用IP地址1、IP地址2也成功建立了两个首个子流(例如为子流2和子流3),MPTCP客户端并不将分别利用IP地址1、IP地址2成功建立成功的首个子流撤销,MPTCP客户端在已经建立的子流2和子流3上分别重新发送Syn报文,携带MP_JOIN选项(包含要加入MPTCP会话的服务端令牌,MPTCP客户端随机数,MPTCP客户端Truncated HMAC)。MPTCP服务器如果同意将子流2和子流3搬迁归并到令牌指定的已有MPTCP会话中,就响应回复携带MP_JOIN选项(携带MPTCP服务器TruncatedHMAC和MPTCP服务器随机数)的Ack报文,如果不同意则回复No-Ack报文或不回复Ack报文。
可选的,在本申请实施例中,以图8为例,在图3所示的方法步骤的基础上,该方法200还包括S209。
S209,DNS服务器获取第二信息,该第二信息包括:至少一个域名中每个域名对应的MPTCP服务器的至少一个IP地址,以及MPTCP服务器对应的第一标识,至少一个域名包括该第一域名,一个域名对应至少一个MPTCP服务器。
图8中所示的S210至S240的描述可以参考上述的图3中对这几个步骤的描述,为了简洁,这里不再赘述。
在S209中,由于MPTCP客户端需要向DNS服务器(以第一DNS服务器为例进行说明)查询第一域名对应的MPTCP服务器的IP地址,以及MPTCP服务器的标识。因此,第一DNS服务器首先需要获取或者确定第二信息,第二信息包括:至少一个域名中每个域名对应的MPTCP服务器的至少一个IP地址,以及至少一个MPTCP服务器中每个MPTCP服务器对应的第一标识,该至少一个域名包括该第一域名,一个MPTCP服务器对应一个或者多个IP地址,一个域名对应至少一个MPTCP服务器。
例如,第二信息可以包括:多个域名分别对应的MPTCP服务器的IP地址,每一个MPTCP服务器的标识(例如为UUID)。一个域名可以对应多个MPTCP服务器,并且,一个MPTCP服务器可以对应一个或者多个IP地址。其中,多个域名包括DNS查询请求中携带的第一域名。
第一DNS服务器获取或者确定第二信息,并接收到MPTCP客户端发送的DNS查询请求后,便可以根据该DNS查询请求以及第二信息,确定第一域名对应的至少一个MPTCP服务器的IP地址和该至少一个MPTCP服务器中每个MPTCP服务器对应的标识(例如为UUID),并向MPTCP客户端发送第一域名对应的至少一个MPTCP服务器的IP地址和该至少一个MPTCP服务器分别对应的标识。
也就是说,第一DNS服务器可以获取多条APTR类型的RR记录、AAAAPTR类型RR记录。多条APTR类型或者AAAAPTR类型的RR记录包括:至少一个域名、至少一个域名分别对应的MPTCP服务器IP地址、MPTCP服务器ID等。多条APTR类型或者AAAAPTR类型的RR记录包括第一域名对应的RR记录。可选的,DNS服务器还可以获取“A”类型的RR记录、“AAAA”类型的RR记录等。
应理解,图7中所示方法流程中也可以包括上述的S209。
可选的,作为一种可能的实现方式,MPTCP服务器的运营商(MPTCP Owner)可以向该第一DNS服务器对应的DNS服务器运营商提供多条AAAAPTR类型RR记录或者多条APTR类型的RR记录。第一DNS服务器运营商审核通过这些记录后,将其加入DNS数据库。例如,该第一DNS服务器可以为根DNS服务器。
可选的,MPTCP服务器的运营商还可以向该DNS服务器对应DNS服务运营商提供“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型RR记录等。
可选的,作为另一种可能的实现方式,如果MPTCP服务器的运营商向第二DNS服务器对应的DNS服务运营商提供上述的第二信息或者多条APTR类型的RR记录,则第一DNS服务器可以向第二DNS服务器发送第二请求,该第二请求用于请求第二信息,或者,用于请求APTR和/或AAAAPTR类型的RR记录。第二DNS服务器根据该第二请求,将APTR和/或AAAAPTR类型的RR记录发送给第一DNS服务器。可选的,第二DNS服务器还可以将“A”类型的RR记录、“AAAA”类型的RR记录、PTR类型RR记录等发送给第一DNS服务器。例如,第二DNS服务器可以为根DNS服务器。
在本申请实施例中,第二DNS服务器可以理解为第一DNS服务器的上一级DNS服务器。
可选的,如果第二DNS服务器也没有存储该APTR和/或AAAAPTR类型的RR记录,则第二DNS服务器也可以作为客户端向上层DNS服务器查询APTR和/或AAAAPTR类型的RR记录。本申请实施例在此不作限制。
下面将结合具体的例子说明本申请提供的确定MPTCP服务器公网地址的方法。
在如图9所示的架构中,宿主机B(HostB)作为MPTCP的服务端,对作为MPTCP客户端的宿主机A(HostA)提供应用的多媒体资源访问服务。DNS服务器(DNS Server)为HostA提供DNS查询服务,HostA已经通过静态配置或动态主机配置协议(Dynamic HostConfiguration Protocol,DHCP)选项(Option)的方式成功发现该DNS服务器。
在如图9所示的架构中,本申请提供的确定MPTCP的服务器的IP地址的方法300的示意性流程图,如图10所示的,该方法300包括:
S310,DNS服务器获取A类型RR记录和APTR类型的RR记录。例如,HostB的服务运营商向该DNS服务器对应DNS服务运营商提供的A类型记录和APTR类型的记录。DNS服务器运营商审核通过这些记录后,将其加入DNS数据库。可选的,DNS服务器还可以获取AAAA类型RR记录、AAAAPTR类型RR记录。
假设:HostB的服务运营商对外提供服务的域名为:mptcp.example.com,HostB对外提供服务对应的公网地址为B1和B2,B1为:198.51.100.23,B2为:176.13.100.21,HostB的UUID为:02000e00-0c30-03f1-0000-0035020100d0。
例如,提供的A类型的RR记录如下:
mptcp.example.com.7200IN A 198.51.100.23
mptcp.example.com.7200IN A 176.13.100.21
提供的APTR类型RR记录如下:
mptcp.example.com.7200 IN APTR 198.51.100.2302000e00-0c30-03f1-0000-0035020100d0
mptcp.example.com.7200 IN APTR 176.13.100.2102000e00-0c30-03f1-0000-0035020100d0
S320,HostA向DNS发送DNS查询请求报文,用于查询域名对应的服务器的IP地址。例如,HostA准备访问HostB,访问“mptcp.example.com”的站点资源,如果HostA上应用创建HTTP会话时,在本地缓存的DNS A或APTR类型记录查询不到mptcp.example.com对应的服务器的IP地址,就触发生成发送DNS查询请求报文。该DNS查询请求报文可以同时请求查询名称为mptcp.example.com的A类型记录和APTR类型记录,也可以单独查询名称为mptcp.example.com的APTR类型记录。
S330,DNS服务器根据该DNS查询请求报文,进行查询,确定与该域名对应的APTR类型的RR记录,
例如,DNS服务器收到HostA的DNS查询请求报文后,按查询请求(例如该查询请求仅请求查询APTR类型的RR记录)的要求查询本地数据库中的名称为“mptcp.example.com”的APTR类型的RR记录,查询到如下两条记录:
mptcp.example.com.7200 IN APTR 198.51.100.2302000e00-0c30-03f1-0000-0035020100d0;
mptcp.example.com.7200 IN APTR 176.13.100.2102000e00-0c30-03f1-0000-0035020100d0;
S340,DNS服务器将查询结果通过查询应答报文回复给HostA,该查询结果包括:与该域名对应的APTR类型的RR记录。
S350,HostA收到DNS服务器返回的查询应答报文后,解析其中APTR类型记录,按域名+服务器的UUID为键值生成并缓存服务记录。一条服务记录至少包含一个IP地址。HostA解析处理完DNS查询应答报文,生成的服务记录如下:
mptcp.example.com+02000e00-0c30-03f1-0000-0035020100d0:
198.51.100.23
176.13.100.21
这说明“mptcp.example.com”对应的HostB可以提供多网络接口的服务链接。HostA可以尝试与之建立MPTCP会话。
S360,HostA利用HostB的多个IP地址与HostB建立MPTCP会话。假设HostA本身也有多网络入口(以两个为例),两个网络接口的IP地址分别为:A1和A2。因此,HostA根据尝试将<A1,B1>、<A2,B1>、<A1,B2>、<A2,B2>均分别作为MPTCP会话的首个子流的IP地址,尝试进行TCP握手交互。例如,可以利用S250中描述中的任意一种方式建立MPTCP会话的首个子流,最先完成握手的TCP会话作为MPTCP会话的首个子流,MPTCP会话建链成功,然后重建剩下的子流,并将新建链的子流加入已建链的MPTCP会话。
本申请提供的确定MPTCP服务器公网地址的方法,MPTCP客户端可以自动从DNS服务器获取MPTCP服务端的多个IP地址,不依赖MPTCP会话的首个子流的ADD_ADDR选项通告MPTCP服务端IP地址的机制,能够针对MPTCP服务端的多个IP地址尝试建立MPTCP会话的首个子流,保障了MPTCP会话建链的成功率和性能。
应理解,上述只是为了帮助本领域技术人员更好地理解本申请实施例,而非要限制本申请实施例的范围。本领域技术人员根据所给出的上述示例,显然可以进行各种等价的修改或变化,例如,上述方法200和方法300中某些步骤可以不必须的,或者可以新加入某些步骤等。或者上述任意两种或者任意多种实施例的组合。这样的修改、变化或者组合后的方案也落入本申请实施例的范围内。
应理解,在本申请的各个实施例中,第一、第二等只是为了表示多个对象是不同的。例如第一DNS服务器和第二DNS服务器只是为了表示出不同的DNS服务器。而不应该对DNS服务器的本身和数量等产生任何影响,上述的第一、第二等不应该对本申请的实施例造成任何限制。
还应理解,本申请实施例中的方式、情况、类别以及实施例的划分仅是为了描述的方便,不应构成特别的限定,各种方式、类别、情况以及实施例中的特征在不矛盾的情况下可以相结合。
还应理解,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
还应理解,上文对本申请实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
还应理解,本申请实施例中,“预定义”可以通过在设备(中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。
以上结合图1至图10对本申请实施例的确定MPTCP服务器公网地址的方法做了详细说明。以下,结合图11至图14对本申请实施例通信装置进行详细说明。
图11示出了本申请实施例的通信装置400的示意性框图,该通信装置400可以对应上述方法200和方法300中描述的MPTCP客户端,也可以是应用于MPTCP客户端的芯片或组件,并且,该通信装置400的各模块或单元分别用于执行上述方法200和方法300中各个实施例方式中的MPTCP客户端所执行的各动作或处理过程,如图11所示,该通信装置400可以包括:通信单元410和处理单元420。
通信单元410,用于向域名系统DNS服务器发送第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的至少一个互联网协议IP地址和该MPTCP服务器对应的第一标识;
处理单元420,用于根据该第一信息,确定与该第一域名和该第一标识对应的该MPTCP服务器的至少一个IP地址。
本申请提供的通信装置,该通信装置通过获取域名对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址,从而可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
可选的,在本申请的一些实施例中,处理单元420,还用于根据该MPTCP服务器的至少一个IP地址,建立与该MPTCP服务器的MPTCP会话的首个子流。
可选的,在本申请的一些实施例中,处理单元420,还用于:
依次利用该MPTCP服务器的多个IP地址建立首个子流,最先建立成功的子流为该首个子流,该首个子流对应第一IP地址;
将根据第二IP地址建立成功的子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
可选的,在本申请的一些实施例中,处理单元420,还用于:
同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为该首个子流,该首个子流对应第一IP地址;
将根据第二IP地址正在建立和/或已经建立成功的首个子流撤销,并将利用该第二IP地址重新建立成功的子流加入到该首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除该第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
可选的,在本申请的一些实施例中,处理单元420,还用于:
同时利用该MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为第一首个子流,该第一首个子流对应第一IP地址;
将根据第二IP地址建立成功的第二首个子流加入到该第一首个子流对应的MPTCP会话中,该第二IP地址为该MPTCP服务器的多个IP地址除第一IP地址之外的IP地址,该多个IP地址包括第一IP地址和第二IP地址。
可选的,在本申请的一些实施例中,该第一请求还用于请求第一类型的资源记录,该第一类型的资源记录包括:该第一域名对应的至少一个MPTCP服务器中每一个MPTCP服务器对应的第一标识。
可选的,在本申请的一些实施例中,该第一标识为MPTCP服务器对应的通用唯一识别码UUID。
应理解,通信装置400中各单元执行上述相应步骤的具体过程请参照前文中结合图3、图7、图8、图10中以及方法200和方法300中的相关实施例的MPTCP客户端或者宿主机A执行步骤的相关描述。为了简洁,这里不加赘述。
可选的,通信单元410可以包括接收单元(模块)和发送单元(模块),用于执行前述各个方法实施例中MPTCP客户端接收信息和发送信息的步骤。可选的,通信装置400还可以包括存储单元,用于存储处理单元420和通信单元410执行的指令。处理单元420、通信单元410和存储单元通信连接,存储单元存储指令,处理单元420用于执行存储单元存储的指令,通信单元410用于在处理单元420的驱动下执行具体的信号收发。
应理解,通信单元410可以是收发器、输入/输出接口或接口电路等。存储单元可以是存储器。处理单元420可由处理器实现。如图12所示,通信装置500可以包括处理器510、存储器520和收发器530。
图11所示的通信装置400或图12所示的通信装置500能够实现前述方法200和方法300的各个实施例、以及图3、图7、图8、图10所示的相关实施例的MPTCP客户端或者宿主机A执行的步骤。类似的描述可以参考前述对应的方法中的描述。为避免重复,这里不再赘述。
图13示出了本申请实施例的通信装置600的示意性框图,该通信装置600可以对应上述方法200和方法300中描述的DNS服务器(或者为第一DNS服务器),也可以是应用于DNS服务器(或者为第一DNS服务器)的芯片或组件,并且,该通信装置600各模块或单元分别用于执行上述方法200和方法300中各个实施例方式中的DNS服务器所执行的各动作或处理过程,如图13所示,该通信装置600可以包括:通信单元610和处理单元620。
通信单元610:用于接收多路径传输控制协议MPTCP客户端发送的第一请求,该第一请求包括第一域名,该第一请求用于请求该第一域名对应的MPTCP服务器的至少一个互联网协议IP地址该MPTCP服务器对应的第一标识;
处理单元620,用于根据第一请求,确定第一信息,该第一信息包括:该第一域名对应的MPTCP服务器的至少一个IP地址和该MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器,该第一域名对应至少一个MPTCP服务器,一个MPTCP服务器对应至少一个IP地址。
通信单元610:还用于向该MPTCP客户端发送响应于该第一请求的第一信息。
本申请提供的通信装置,可以根据请求的域名确定对应的MPTCP服务器的多个IP地址,以及每一个IP地址对应的MPTCP服务器的唯一标识,从而可以确定MPTCP会话中同一个MPTCP服务器的多个IP地址。并将该信息发送给MPTCP客户端,MPTCP客户端可以利用该多个IP地址建立MPTCP会话的首个子流,解决了单一IP地址的网络可达性故障和网络延时或丢包问题,可以使得MPTCP会话快速建链,提高用户体验。并且,提高了DNS查询效率,不需要多次查询才能获得MPTCP服务端对应的多个IP地址的查询效果。
可选的,在本申请的一些实施例中,处理单元620,还用于获取第二信息,该第二信息包括:至少一个域名中每个域名对应的MPTCP服务器的IP地址,以及MPTCP服务器对应的第一标识,该至少一个域名包括该第一域名,一个域名对应至少一个MPTCP服务器。
可选的,在本申请的一些实施例中,通信单元610,还用于:
向第二DNS服务器发送第二请求,该第二请求用于请求该第一域名对应的MPTCP服务器的至少一个IP地址以及该MPTCP服务器对应的第一标识;
接收来自于该第二DNS服务器的响应于该第二请求的第二信息。
可选的,在本申请的一些实施例中,该第一请求还用于请求第一类型的资源记录,该第一类型的资源记录包括:该第一域名对应的至少一个MPTCP服务器中每一个MPTCP服务器对应的第一标识。
可选的,在本申请的一些实施例中,该第一标识为MPTCP服务器对应的通用唯一识别码UUID。
应理解,通信装置600中各单元执行上述相应步骤的具体过程请参照前文中结合图3、图7、图8、图10中以及方法200和方法300中的相关实施例的DNS服务器或者第一DNS服务器执行步骤的相关描述。为了简洁,这里不加赘述。
可选的,通信单元610可以包括接收单元(模块)和发送单元(模块),用于执行前述各个方法实施例中DNS服务器或者第一DNS服务器接收信息和发送信息的步骤。可选的,通信装置600还可以包括存储单元,用于存储处理单元620和通信单元610执行的指令。处理单元620、通信单元610和存储单元通信连接,存储单元存储指令,处理单元620用于执行存储单元存储的指令,通信单元610用于在处理单元620的驱动下执行具体的信号收发。
应理解,通信单元610可以是收发器、输入/输出接口或接口电路等。存储单元可以是存储器。处理单元620可由处理器实现。如图14所示,通信装置700可以包括处理器710、存储器720和收发器730。
图13所示的通信装置600或图14所示的通信装置700能够实现前述方法200和方法300的各个实施例、以及图3、图7、图8、图10所示的相关实施例的DNS服务器或者第一DNS服务器执行的步骤。类似的描述可以参考前述对应的方法中的描述。为避免重复,这里不再赘述。
MPTCP是一种利用多条路径并发传输的传输层协议。MPTCP是按顺序初始化多个连接,即:当一条通道(或者首个子流)按照三次握手的方式建立起来后,再按照三次握手的方式建立其他的子通道(或者次子流)。这些通道以三次握手建立连接和四次握手解除连接。这些通道都会绑定于同一个MPTCP会话(MPTCP session)。发送端的数据可以选择其中一条通道进行传输,或者通过调度器在两条通道上进行传输。在同一个MPTCP会话中,一个MPTCP服务器可以对应多个公网IP地址,MPTCP客户端可以利用该多个公网IP地址分别建立该MPTCP会话的多个子流或者通道,以进行数据传输。
支持MPTCP的服务器(或者也可以称为MPTCP服务器)位于网络地址转换(networkaddress translation,NAT)网关之后,支持MPTCP的服务器可能无法自动感知自身网口私网IP对应的公网地址和/或端口号,目前只能依赖静态设置和管理协议进行配置。
相关资料“https://tools.ietf.org/html/draft-duchene-mptcp-load-balancing-01”中提出一种负载均衡(load balancer,LB)的应用场景方案,图15所示的为LB应用场景组网的示意性结构图。如图15所示的,LB设备本身会为后端的MPTCP服务器提供NAT功能,在配置负载均衡的服务器资源池时会配置代理服务的公网IP(即DNS发布该服务对应的公网IP)和资源池私网网关IP,MPTCP客户端会用该公网IP建立MPTCP会话的初始子流。
在图15所示的架构中,还需要为每个后端MPTCP服务器分配一个公网IP地址(例如图15中的ADDR2)。该公网IP地址不会在DNS中宣布,而是由MPTCP服务器通过建立首子流(初始子流)过程中的ADD_ADDR选项发布。并且后端MPTCP服务器的这个公网地址,不能用于建立MPTCP会话的初始子流,否则建立MPTCP会话后,MPTCP服务器通过ADD_ADDR选项通告私网地址(例如图15中ADDR1)给MPTCP客户端,MPTCP客户端无法访问连接私网地址ADDR1。
可见,目前NAT网关(例如,图15中的LB设备)主要通过静态配置的方式为后端的MPTCP服务器配置公网地址和对应的私网地址,灵活度较低。在NAT网关为后端多个MPTCP服务器提供NAT功能时,需要为每个MPTCP服务器静态配置或利用管理协议配置私网对应的公网地址,容易出错,运维的成本较高。并且,处于私网内的MPTCP服务器无法感知自身私网IP地址对应的公网IP地址和/或端口号,MPTCP客户端不能访问MPTCP服务器发送的私网IP地址,无法建立新的MPTCP会话子流。
有鉴于此,本申请还提供了一种确定MPTCP服务器公网地址的方法,通过动态主机配置协议(dynamic host configuration protocol,DHCP)服务器将为后端的MPTCP服务配置的私网地址和对应的公网地址和/或端口号发送给后端的MPTCP服务器。从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP和/或端口信息,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP和/或端口信息,从而可以正确的建立新的子流。
图16是一例适用于本申请实施例的无线通信系统的架构示意图。如图16所示的,该系统包括:MPTCP客户端、MPTCP服务器、一个或者多个DHCP服务器,不同的DHCP服务器可以通过不同的网络接口与MPTCP服务器之间传输信息,例如通过无线保真(wireless-fidelity,Wifi)、蜂窝网络接口(cellular)或者蓝牙等。MPTCP客户端可以与MPTCP服务器建立MPTCP会话的首子流和次子流等。
可选的,在图16所示架构中,还可以包括DNS服务器,MPTCP客户端(例如为终端设备)需要访问应用时,可以向DNS服务器查询需要访问的域名的对应的MPTCP服务器的IP地址,在通过DNS服务器获取该域名对应的服务器的IP地址之后,就可以根据该IP地址与MPTCP服务器建立MPTCP会话的首子流。DHCP服务器可以向MPTCP服务器发送MPTCP服务器的私网地址和对应的公网地址。
应理解,在本申请实施例中,MPTCP客户端可以为终端设备,MPTCP服务器存储有MPTCP客户端需要访问的应用数据,MPTCP服务器也可以称为应用服务器,MPTCP客户端可以通过与MPTCP服务器建立MPTCP会话获取需要的数据。MPTCP服务器的IP地址可以理解为MPTCP服务器对外发布的多个公网IP地址,这些公网IP地址可以是支持MPTCP的服务器本地的网口IP,也可以是MPTCP的服务器对应网络地址转换(network address translation,NAT)设备上的公网IP地址,NAT设备为该支持MPTCP的服务器提供NAT网关功能。这些公网IP地址可以包括IPV4地址和IPV6地址。
应理解,在本申请实施例中,DHCP服务器可以包括:支持DHCP代理能力的网关设备、支持DHCP服务器功能的NAT网关设备、或支持DHCP服务器和NAT功能的负载均衡器设备等。DHCP服务器可以为MPTCP服务器提供地址分配和续租服务。例如,在本申请实施例中,DHCP服务器可以是具有NAT功能的客户端设备(customer premise equipment,CPE)。
图17是本申请一个实施例的确定MPTCP服务器公网地址的方法800的示意流程图。该方法800可以应用在图16所示的场景中,当然也可以应用在其他通信场景中,本申请实施例在此不作限制。
下文的描述中,以MPTCP客户端、DHCP服务器以及MPTCP服务器为执行主体说明书本申请提供的方法。作为示例而非限定,执行方法的执行主体也可以是应用于DNS服务器和MPTCP客户端的芯片。
应理解,在本申请实施例中,DHCP服务器可以为DHCPv4服务器或者DHCPv6服务器。DHCPv4服务器用于分配IPv4地址,DHCPv6服务器用于分配IPv6地址。
如图17所示,图17中示出的方法800可以包括S810至S820。下面结合图17详细说明方法800中的各个步骤。
S810,第一网关确定MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址。其中,该公网地址用于MPTCP服务器和MPTCP客户端建立MPTCP会话的首个子流之后的子流。
可选的,在本申请实施例中,作为另外一种可能的实现方式,第一网关还可以确定MPTCP服务器的至少一个私网地址中每一个私网地址对应的端口号,即S810还可以为:第一网关确定MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址和端口号。
S820,第一网关向该MPTCP服务器发送MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址。
可选的,在本申请实施例中,作为另外一种可能的实现方式,第一网关还可以向该MPTCP服务器发MPTCP服务器的至少一个私网地址中每一个私网地址对应的端口号,即S820还可以为:第一网关向该MPTCP服务器发送该MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址和端口号。
在S810中,第一网关(下文的描述中,以第一网关为DHCP服务器为例进行)可以确定或者获取MPTCP服务器(也可以称为DHCP客户端)的至少一个私网IP地址中每个私网IP地址对应的公网IP地址。
可选的,作为另外一种可能的实现方式,DHCP服务器还获取MPTCP服务器的至少一个私网IP地址中每个私网IP地址对应的公网IP地址和端口号。
例如,DHCP服务器配置或作为DHCP的代理设备从真正的DHCP服务器的地址池中获取对应的对外提供公网服务的弹性IP地址(Elastic IP,EIP),或者,获取对应的目的网络地址转换(destination network address translation,DNAT)的公网IP和端口号,并将该公网IP和域名的对应关系,或者,将该公网IP、端口号与域名的对应关系的记录配置给DNS服务器供MPTCP客户端进行查询。DHCP服务器上可以配置公网IP地址池(IP pool)以及对应的私网IP地址池。DHCP服务器可以将通过查询该公网IP地址池(IP pool)以及对应的私网IP地址池,可以确定需要分配给后端的MPTCP服务的私网地址对应的公网地址和/端口号。
DNAT的作用是将一组本地内部的地址(私网地址)映射到一组全球地址(公网地址)。通常来说,公网地址的数量比起私网地址数量来要少得多,因此,可以利用公网IP地址和端口号联合映射出一个私网IP地址。
可选的,在本申请实施例中,MPTCP服务器可以通过不同的网络连接不同DHCP服务器。例如,MPTCP服务器可以通过网卡1或者蜂窝网络接口连接互联网服务提供商(internetservice provider,ISP)的网络上的CPE设备,通过Wifi或网卡2连接ISP2的CPE2设备。CPE1设备和CPE2设备均提供DHCP服务器和NAT功能。该MPTCP服务器可以从这些CPE设备上获取不同的私网IP地址和对应不同的EIP,或DNAT的公网IP和/或端口信息。
在本申请实施例中,该MPTCP服务器的对应的一个或者多个公网地址(公网IP地址),或者公网地址和端口号用于MPTCP服务器和MPTCP客户端建立一个MPTCP会话中的除过首个子流之外的其它子流(或者也可以称为次子流)。
应理解,在本申请实施例中,如果NAT为EIP模式,即一个公网IP地址地址对应一个私网IP地址,也就是利用一个公网IP地址可以映射出一个私网IP地址地址的情况下,DHCP服务器可以确定或者获取MPTCP服务器的至少一个私网IP地址中每一个IP私网地址对应的公网IP地址,并不需要确定DHCP服务器上的端口号。
在本申请实施例中,如果NAT为DNAT模式,即在公网IP地址的个数少于私网IP地址个数,利用一个公网IP地址不可以映射出一个私网IP地址的情况下,可以利用公网IP地址和端口号联合映射出一个私网IP地址,DHCP服务器需要确定或者获取MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。采用DNAT的方式,可以节约公网IP地址的数量,一个公网IP地址可以对应多个私网IP地址。
在S820中,DHCP服务器可以向MPTCP服务器发送:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址。
可选的,作为另外一种可能的实现方式,DHCP服务器可以向MPTCP服务器发送MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。
在MPTCP服务器获取DHCP服务器发送的公网IP地址,或者公网IP地址和端口号之后,缓存公网IP和/或端口号与私网IP地址之间的对应关系记录。例如,该对应关系记录可以利用私网IP地址为键值,MPTCP服务器本地如果有旧记录就覆盖更新(例如,DHCP服务器的地址池对应的对外提供公网服务的EIP或DNAT的公网IP和/或端口配置有变更),便可以根据该公网IP地址,或者,该公网IP地址和端口号,建立一个MPTCP会话中的除过首个子流之外的其它子流。
本申请提供的确定MPTCP服务器公网地址的方法,通过DHCP服务器将为后端的MPTCP服务配置的私网地址对应的公网地址、或者公网地址和端口信息发送给后端的MPTCP服务器。从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP和/或端口信息,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP、或者私网IP对应公网IP和端口信息,从而可以正确建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
可选的,在本申请一些可能的实现方式中,以图18为例,在图17所示的方法步骤的基础上,该方法800中还可以包括S809,该方法800中的S820可以具体为S821。
S809,MPTCP服务器向DHCP服务器(第一网关)发送地址请求报文。
S821,DHCP服务器向该MPTCP服务器发送响应于该地址请求报文的第一应答报文,该第一应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址。
可选的,作为另外一种可能的实现方式,该第一应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。
图18中所示的S810的描述可以参考上述的图17中对这个步骤的描述,为了简洁,这里不再赘述。
在本申请实施例中,MPTCP服务器可以在发现DHCP服务器并向DHCP服务器请求IP地址的过程获取该MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。在S809中,在MPTCP服务发现该DHCP服务器之后,MPTCP服务器可以向DHCP服务器发送地址请求报文(例如为DHCP Request报文)用于请求DHCP服务器分配公网IP地址。
可选的,该地址请求报文可以包括DHCP服务器分配的MPTCP服务器的私网IP地址。DHCP服务器接收到该地址请求报文,可以根据地址请求报文携带的私网IP地址,从地址池中确定(或者分配)与私网IP地址对应的公网IP地址,例如EIP,或者,从地址池中确定与私网IP地址对应的公网IP地址和端口号,例如为DNAT的公网IP和端口信息。分配规则可以是动态分配,也可以是静态预置规则分配。并且,DHCP服务器可以本地生成并缓存私网IP地址和对应的公网IP地址的NAT规则映射表,或者,本地生成并缓存私网IP地址和对应的公网IP地址和端口号的NAT规则映射表。
在S821中,DHCP服务器向该MPTCP服务器发送响应于该地址请求报文的第一应答报文(例如为DHCP Ack报文),第一应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,第一应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。MPTCP服务器收到该第一应答报文后,解析第一应答报文,将私网IP地址对应的公网IP地址,或者,将私网IP地址对应的公网IP地址和端口号绑定到网口上,并本地缓存私网IP地址对应的公网IP地址的对应关系,或者本地缓存私网IP地址对应的公网IP地址和端口号的对应关系。
MPTCP服务器在IP地址请求阶段获取上述的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号,可以保证MPTCP服务器正确的获取私网IP地址与对应的公网IP地址之间的对应关系,或者私网IP地址与对应的公网IP地址和端口号的对应关系,提高MPTCP服务器明确感知其各个私网IP对应的公网IP和/或端口信息的效率。
可选的,在本申请另一些可能的实现方式中,以图19为例,在图17所示的方法步骤的基础上,该方法800还可以包括S808,该方法800中的S820可以具体为S822。
S808,MPTCP服务器向该DHCP服务器发送地址续租请求报文。
S822,该DHCP服务器向该MPTCP服务器发送响应于该地址续租请求报文的第二应答报文,该第二应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址。
可选的,作为另外一种可能的实现方式,该第二应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。
图19中所示的S810的描述可以参考上述的图17中对这个步骤的描述,为了简洁,这里不再赘述。
在本申请实施例中,除了上述的在IP地址请求阶段获取MPTCP服务器各个私网IP对应的公网IP和/或端口信息之外,MPTCP服务器还可以在IP地址续租阶段获取各个私网IP对应的公网IP和/或端口信息。
MPTCP服务器申请到的IP地址一般情况下都会一个租用的时间长度(租期),在使用租期超过50%时,MPTCP服务器会以单播形式向DHCP服务器发送DHCP请求(DHCPRequest)报文来续租IP地址。如果MPTCP服务器成功收到DHCP服务器发送的DHCP确认(DHCPACK)报文,则按相应时间延长IP地址租期;如果MPTCP服务器没有收到DHCP服务器发送的DHCP ACK报文,则MPTCP服务器继续使用这个IP地址。
在使用租期超过87.5%时,MPTCP服务器会以广播形式向DHCP服务器发送DHCP请求(DHCP Request)报文来续租IP地址。如果MPTCP服务器成功收到DHCP服务器发送的DHCP确认(DHCP ACK)报文,则按相应时间延长IP地址租期;如果MPTCP服务器没有收到DHCP服务器发送的DHCP ACK报文,则MPTCP服务器继续使用这个IP地址,直到IP地址使用租期到期时,MPTCP服务器才会向DHCP服务器发送DHCP释放(Release)报文来释放这个IP地址,并开始新的IP地址申请过程。
以DHCP服务器为DHCPv6服务器为例进行说明。DHCPv6服务器为DHCPv6客户端(例如可以为MPTCP服务器)分配的地址是有租约的,租约由生命期(包括地址的优先生命期和有效生命期构成)和续租时间点(身份联盟(identity association,IA)的T1时刻、T2时刻)构成。其中,IA是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构,每个IA包括一个IAID和相关联的配置信息。在地址有效生命期结束后,DHCPv6客户端不能再使用该地址。在有效生命期到达之前,如果DHCPv6客户端希望继续使用该地址,则需要更新地址租约。
DHCPv6客户端为了延长其与IA关联的地址的有效生命期和优先生命期,在T1时刻,发送包含IA选项的续租(Renew)报文给DHCPv6服务器,其中IA选项中携带需要续租的IA地址选项。如果DHCPv6客户端一直没有收到T1时刻续租报文的回应报文,那么在T2时刻,DHCPv6客户端通过提醒(Rebind)报文向DHCPv6服务器继续续租地址。
图20所示为DHCPv6客户端和DHCPv6服务器在T1时刻地址租约更新过程的示意图。如图20所示的,包括步骤1号和步骤2:步骤1:DHCPv6客户端在T1时刻(推荐值为优先生命期的1/2)发送Renew报文进行地址租约更新请求。步骤2:DHCPv6服务器回应Reply报文。
具体的,在步骤2中,如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址租约。如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
图21所示为DHCPv6客户端和DHCPv6服务器在T2时刻地址租约更新过程的示意图。如图21所示的,包括步骤1至步骤3:
步骤1:DHCPv6客户端在T1时刻发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文。
步骤2:DHCPv6客户端在T2时刻(推荐值为优先生命期的0.8倍),向所有DHCPv6服务器组播发送Rebind报文请求更新租约。
步骤3:DHCPv6服务器回应Reply报文。
在步骤3中,如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
因此,在S808中,在IP地址续租阶段,MPTCP服务器可以向该DHCP服务器发送的地址续租请求报文(例如为DHCP Request报文、Renew报文或者Rebind报文)。例如,可以在使用租期超过50%时(例如为T1时刻)或者超过80%时(例如为T2时刻)向DHCPv6服务器发送DHCP Renew报文或者Rebind报文,该Renew报文或者Rebind报文用于进行地址租约更新请求。可选的,该地址续租请求报文可以包括DHCPv6服务器分配的私网IP地址。DHCPv6服务器接收到该地址续租请求报文,确定MPTCP服务器是否可以继续使用之前分配的私网IP地址对应的公网IP地址,例如EIP,或者,该私网IP地址对应的公网IP地址和端口号。
在S822中,该DHCP服务器(例如为DHCPv6服务器)向该MPTCP服务器发送响应于该地址续租请求报文的第二应答报文,例如,第二应答报文可以是DHCP Ack报文或者为Reply报文。可选的。该第二应答报文用于通知MPTCP服务器已经成功更新地址租约,或者,用于通知MPTCP服务器已经成功更新地址/前缀租约。
可选的,该第二应答报文包括:MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,MPTCP服务器的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。MPTCP服务器收到该第二应答报文后,解析第二应答报文,将与私网IP地址对应的公网IP地址,或者,将私网IP地址对应的公网IP地址和端口号绑定到网口上,并本地缓存私网IP地址对应的公网IP地址的对应关系,或者本地缓存私网IP地址对应的公网IP地址和端口号的对应关系。
MPTCP服务器在IP地址续租阶段获取上述的公网IP地址,或者,公网IP地址和端口号,可以保证MPTCP服务器正确的获取私网IP地址对应的公网IP地址的对应关系,或者私网IP地址对应的公网IP地址和端口号的对应关系,提高MPTCP服务器明确感知其各个私网IP对应的公网IP和/或端口信息的效率。
可选的,在本申请实施例中,MPTCP服务器如果释放或因为租期到期老化某个接口的私网IP,也会同步删除之前缓存的私网接口IP和对应的公网IP对应关系记录,或者私网接口IP和对应的公网IP和端口的对应关系记录,并通知MPTCP会话管理模块向还存活的对应MPTCP会话子流发送MPTCP REMOVE_ADDR选项,用于向对应的MPTCP客户端通知删除对应的公网IP地址和/或端口。
可选的,在本申请一些可能的实现方式中,在上述的IP地址请求阶段或者IP地址续租阶段,DHCP服务器可以将私网IP地址对应的公网IP地址,或者,将与私网IP地址对应的公网IP地址和端口号通过上述的第一应答报文或者第二应答报文发送给MPTCP服务器。第一应答报文或者第二应答报文可以包括扩展的DHCP选项(option),扩展的DHCP选项可以携带私网IP地址对应的公网IP地址,或者,携带私网IP地址对应的公网IP地址和端口号。可选的,在本申请实施例中,扩展的DHCP选项也可以称为NAT公共地址选项(NAT PublicAddress Option)。
可选的,图22所示的为本申请提供的一例扩展的DHCP选项的示意性结构图。如图22所示的,该扩展的DHCP选项包括:编码(code)字段、长度(length)字段、NAT类型(NATType)字段、保留(reserved)字段、IP地址字段。可选的,扩展的DHCP选项还可以包括端口(port)字段。
其中,编码(code)字段:用于对DHCP Option的选项编码的字段,该编码字段对应编码值(Code值)待互联网数字分配机构(internet assigned numbers authority,IANA)分配或厂商私有定义,该编码值表示该DHCP Option选项是扩展的通告分配的私网地址对应NAT公网地址和/或端口信息,该编码值本身不包括IP地址信息。
长度(length)字段:用于指示DHCP选项的长度。
NAT类型(NAT Type)字段:用于指示不同的NAT类型。NAT类型可以包括:IPv4 EIP、IPv4 DNAT、IPv6 EIP、IPv6 DNAT。例如,在DHCPv6协议中:NAT类型(NAT Type)字段的值为“0”,指示为IPv4 EIP,NAT类型(NAT Type)字段的值为“1”,指示为IPv4DNAT。在DHCPv6协议中:NAT类型(NAT Type)字段的值为“0”,指示为Ipv6 EIP,NAT类型(NAT Type)字段的值为“1”,指示为Ipv6 DNAT。
IP地址字段:用于指示私网IP地址对应的公网IP地址。例如,在NAT类型(NATType)字段指示为IPv4 EIP或者IPv4 DNAT时,IP地址字段指示的为IPv4地址。在NAT类型(NAT Type)字段指示为IPv6 DNAT或者IPv6 EIP时,IP地址字段指示的为IPv6地址。可选的,例如,IP地址字段指示的为IPv4地址时,该IP地址字段的长度可以为4个八位字节(4octets)。IP地址字段指示的为IPv6地址时,该IP地址字段的长度可以为16个八位字节(16octets)。
端口(port)字段:用于指示网络地址端口转换(Network Address PortTranslation,NAPT)的端口号。应理解,仅在NAT类型(NAT Type)字段指示的为IPv4 DNAT或者为IPv6 DNAT时,该端口(port)字段才存在并且有效。可选的,该端口(port)字段的长度可以为2个八位字节(2octets)。
应理解,图22只是示例性的,不应该对本申请实施例提供的扩展的DHCP选项的结构或者包括的内容造成任何限制。在本申请实施例中,扩展的DHCP选项的结构还可以是其它的结构,或者,扩展的DHCP选项还可以包括其他的内容。本申请实施例在此不作限制。
例如,DHCP服务器可以将私网IP地址对应的公网IP地址填充到该扩展的DHCP选项,或者,将与私网IP地址对应的公网IP地址和端口号填充到该扩展的DHCP选项,并且向该MPTCP服务器发送的DHCP Ack报文可以携带该扩展的DHCP选项,这样,MPTCP服务器便可以获取申请到的或者续租的将私网IP地址对应的公网IP地址,或者,私网IP地址对应的公网IP地址和端口号之间的对应关系。
可选的,在本申请一些可能的实现方式中,以图23为例,在图17所示的方法步骤的基础上,该方法800还可以包括:
S830,MPTCP服务器向MPTCP客户端发送该至少一个私网IP地址中每一个私网IP地址对应的公网IP地址。
可选的,MPTCP服务器可以向MPTCP客户端发送该至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号。
图23中所示的S810和S820的描述可以参考上述对这几个步骤的描述,为了简洁,这里不再赘述。
在S830中,MPTCP服务器在获取了自己的至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,至少一个私网IP地址中每一个私网IP地址对应公网IP地址和端口号之后,可以向MPTCP客户端发送该信息,从而实现了MPTCP服务器处于NAT设备之后,也能正常向MPTCP客户端通告有效的多路径服务IP或端口信息。实现了可以向MPTCP客户端通告更合适建立新子流的公网IP和/或端口信息,而非其私网IP,从而保证了MPTCP会话的正确建立,提高MPTCP会话建立的效率和成功率。
例如,MPTCP服务器可以向MPTCP会话管理模块通知该信息,以便MPTCP会话管理模块识别相关MPTCP会话重新公告地址变化。例如,MPTCP服务器可以通知对应MPTCP客户端添加新公网IP地址和/或端口、通知对应的MPTCP客户端删除旧公网IP地址和/或端口。
应理解,在本申请实施例中,对于MPTCP客户端和MPTCP服务器之间的MPTCP会话的建立首个子流时的公网IP地址。MPTCP客户端可以通过DNS解析流程获取公网IP地址以建立首个子流。例如,MPTCP的运营商选择将用于建立首个子流的公网IP地址和和服务域名的DNS A类型记录提交给DNS服务器运营商,DNS服务器运营商将其添加到DNS服务器的域名数据库中,这样,MPTCP客户端可以通过DNS服务器获取该DNS A类型记录,从而建立MPTCP会话的首个子流。
应理解,图23所示的流程中也可以包括上述的S808或者S809。
可选的,在本申请一些可能的实现方式中,以图24为例,在图23所示的方法步骤的基础上,该方法800中的S830可以具体为:S831。
S831、在MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立过程中,该MPTCP服务器通过TCP报文将至少一个私网地址中每一个私网地址对应的公网地址发送给该MPTCP客户端。
可选的,在MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立过程中,该MPTCP服务器还可以通过TCP报文将至少一个私网地址中每一个私网地址对应的公网地址和端口号发送该MPTCP客户端。
图24中所示的S810和S820的描述可以参考上述对这几个步骤的描述,为了简洁,这里不再赘述。
在S831中,MPTCP客户端可以在通过DNS服务器获取公网IP地址建立首个子流的过程中,MPTCP服务器可以将至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,将至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号发送给该MPTCP客户端,作为一种可能的实现方式,MPTCP会话管理模块可以查询需要加入MPTCP会话的相应接口IP和对应公网IP和/或端口对应关系的缓存记录,生成MPTCP ADD_ADDR选项,该MPTCP ADD_ADDR选项携带:至少一个私网IP地址中每一个私网IP地址对应的公网IP地址,或者,将至少一个私网IP地址中每一个私网IP地址对应的公网IP地址和端口号该私网IP和对应公网IP和/或端口。并且在首个子流的TCP报文中将该MPTCP ADD_ADDR选项发送给MPTCP客户端,供其建立新子流。
例如,在MPTCP客户端可以向MPTCP服务器发送TCP同步(Synchronize,Syn)请求报文(TCP Syn报文),MPTCP服务器收到该TCP Syn报文后,向MPTCP客户端回复同步请求应答(Syn ACK)报文。可选的,MPTCP服务器可以生成ADD_ADDR选项添加在该Syn ACK报文中,该ADD_ADDR选项携带私网地址分别对应的公网地址,或者,携带私网地址分别对应的公网地址和端口号。MPTCP客户端接收到该Syn ACK报文后,解析ADD_ADDR选项,从而便可以获取私网地址分别对应的公网地址,或者,私网地址分别对应公网地址和端口号。并向MPTCP服务器回复确认(ACK)报文。这样,MPTCP客户端和MPTCP服务器的首个子流建立过程便完成了。MPTCP客户端获取私网地址分别对应的公网地址,或者私网地址分别对应公网地址和端口号后,便可以建立该MPTCP会话的其他子流。
应理解,图24所示的流程中也可以包括上述的S808或者S809。
可选的,在本申请一些可能的实现方式中,以图25为例,在图23所示的方法步骤的基础上,该方法800中的S830可以具体为:S832。
S832,在MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立后,向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址。
可选的,在MPTCP服务器和该MPTCP客户端的MPTCP会话首个子流的建立后,MPTCP服务器还可以向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
图25中所示的S810和S820的描述可以参考上述对这几个步骤的描述,为了简洁,这里不再赘述。
在本申请实施例中,可选的,如果MPTCP服务器获取该私网地址分别对应的公网地址,或者,该私网地址分别对应公网地址和端口号是在MPTCP服务器和MPTCP客户端的MPTCP会话首个子流的建立完成后,则在MPTCP服务器和MPTCP客户端的MPTCP会话首个子流的建立完成后,MPTCP服务器可以通过其它报文或者信息将至少一个私网地址中每一个私网地址对应的公网地址,或者,将至少一个私网地址中每一个私网地址对应的公网地址和端口号发送给MPTCP客户端,也可以实现MPTCP服务器处于NAT设备之后,也能正常向MPTCP客户端通告有效的多路径服务IP地址和/或端口信息。MPTCP客户端在获取私网地址分别对应的公网地址,或者私网地址分别对应公网地址和端口号后,便可以建立该MPTCP会话的其他子流。减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址。
应理解,图25所示的流程中也可以包括上述的S808或者S809。
下面将结合具体的例子说明本申请提供的确定MPTCP服务器公网地址的方法。
在如图26所示的架构中,假设:MPTCP服务器通过网卡连接ISP1的CPE1设备,通过Wifi连接ISP2的CPE2设备。CPE1设备开启了DHCP服务器功能,使能了NAT公共地址选项(NATPublic Address Option),使能NAT功能,并配置EIP模式,CPE1上配置了IPv4私网地址资源池1(Pool 1)和公网地址资源池3(Pool 3)。CPE2设备开启DHCP服务器功能,使能了NATPublic Address Option,使能NAT功能,CPE2上也配置EIP模式,配置了IPv4私网地址资源池2(Pool 2)和公网地址资源池4(Pool 4)。终端设备(MPTCP客户端)分别通过CPE1设备和CPE2设备连接该MPTCP服务器。
图27所示的为在如图26所示的架构中,本申请提供的确定MPTCP服务器的IP地址的方法900的示意性流程图。图27示的流程主要为MPTCP服务器获取私网地址对应的公网地址的过程。如图27所示的,该方法900包括:S901至S906。
S901,MPTCP服务器网口上电,接口连接CPE1设备,检测网络接口状态未正常(物理状态UP)。MPTCP服务器作为DHCP的客户端(Client)从该网路接口向CPE1设备发送DHCP发现(DHCP Discover)广播报文。
S902,CPE1收到该DHCP Discover广播报文后,向CPE1设备回复DHCP回应(DHCPOffer)报文,DHCP Offer中包括预期在Pool1中分配私网地址IP3给MPTCP服务器。分配规则可以是动态分配,也可以是静态预置规则分配,例如为MPTCP服务器网口的媒体接入控制(media access control,MAC)地址,固定分配私网地址IP3。
S903,MPTCP服务器收到该DHCP Offer报文,在等待时间内没有收到其他DHCP服务器(例如其它CPE设备)的DHCP Offer报文,MPTCP服务器接受CPE1分配的IP3,并向CPE1发送DHCP请求(DHCP request)报文,携带IP3地址。
S904,CPE1收到该DHCP request报文,检查本地使能NAT和NAT公共地址选项(NATPublic Address Option),从Pool 3分配出公网地址EIP1,并将EIP1的信息填充到NATPublic Address Option,将NAT Public Address Option携带在DHCP Ack报文中发送给MPTCP服务器。分配规则可以是动态分配,也可以是静态预置规则分配,例如固定为私网地址IP3分配公网地址EIP1。并且,CPE本地生成并缓存该EIP1和IP3的NAT规则表。
图28所示的为S904中的NAT公共地址选项(NAT Public Address Option)的示意图,如图28所示的,编码字段(code)为待确定(to be done)状态,待互联网数字分配机构(internet assigned numbers authority,INNA)分配,例如为250等。长度(length)字段指示的长度为8个字节(8Bytes)。NAT Type字段指示的为IPv4 EIP。保留(reserved)字段指示为0。IP地址字段指示的为EIP1。由于NAT Type字段指示的为IPv4 EIP,所以该NAT PublicAddress Option不包括端口(port)字段。
MPTCP服务器收到该DHCP Ack报文后,解析其中的NAT Public Address Option。将IP3绑定到网口上,并本地缓存IP3和EIP1的对应关系记录。可选的,如果MPTCP服务器没有使用NAT Public Address Option或不支持该选项,就丢弃该选项,不解析NAT PublicAddress Option。
S905,MPTCP服务器向CPE1回复正确接收该DHCP Ack报文。
S906,CPE1向MPTCP服务器回复确认信息。
MPTCP服务器在wifi接口扫描到CPE2的Wifi热点连接认证登录后,也可以通过Wifi对应的逻辑网口向CPE2发起DHCP地址请求的交互流程,交互步骤和上述MPTCP服务器通过网口和CPE1发起的DHCP地址请求的交互流程类似,假设:MPTCP服务器在收到CPE2的DHCP Ack报文后,该DHCP Ack报文中的NAT Public Address Option携带私网地址IP4对应的公网地址EIP2。MPTCP服务器将IP4绑定到Wifi对应的逻辑网口上,并本地缓存IP4和EIP2的对应关系记录。
假设:MPTCP服务器的运营商选择将EIP1和服务域名的DNS A类型记录提交给DNS服务器运营商,要求DNS服务器运营商将其添加到DNS服务器的域名数据库中。MPTCP服务器内部配置网口IP3或Wifi对应的逻辑网口IP4作为MPTCP会话的多路网络入口。终端设备访问MPTCP服务器的多媒体资源时,根据MPTCP服务器的域名向DNS服务器提交查询请求,从查询结果中获悉EIP1的地址。
图29所示的为在如图26所示的架构中,本申请提供的确定MPTCP服务器的IP地址的方法1000的示意性流程图,图29所示的流程主要为终端设备通过MPTCP会话的首流建立过程获取私网地址对应的公网地址的过程。如图29所示的,该方法1000包括:S1010至S1060。
S1010,终端设备和MPTCP服务器进行目的IP为EIP1的MPTCP会话首个子流的三次握手。具体的,终端设备将TCP Syn报文转发到CPE1。
S1020,CPE1接收到该TCP Syn报文后,发现该报文的目的IP是EIP1,执行NAT操作,替换TCP Syn报文的目的IP地址,将报文目的IP地址由EIP1替换成IP3,重新路由将新报文转发给MPTCP服务器。后续的流程中,终端设备到MPTCP服务器的所有TCP报文在CPE1上的NAT处理都和S1010中的描述一致,需要将TCP报文的目的IP地址替换为对应的私网IP地址。
S1030,MPTCP服务器接收到该CPE1转发的TCP Syn报文后,检查本地配置,假设:如果MPTCP服务器配置MPTCP的多路径会话、MPTCP服务器配置了Wifi对应虚拟网口,并且,Wifi对应虚拟网口为激活状态。在MPTCP服务器确定需要发布Wifi对应虚拟网口的IP4地址,查询缓存的私网地址和公网地址对应关系记录发现IP4对应公网地址EIP4,生成ADD_ADDR选项,ADD_ADDR选项携带该EIP4,并将ADD_ADDR选项添加到Syn-Ack报文中经过CPE1发送给终端设备。可选的,该ADD_ADDR选项也可以在握手后的其他TCP报文中携带并发送给终端设备。
S1040,CPE1收到该Syn-Ack报文,发现Syn-Ack报文的源IP是私网IP(即为IP3),查询本地NAT规则表,替换IP头,将Syn-Ack报文的源IP由IP3替换成EIP1,然后路由转发给终端设备。后续的流程中,MPTCP服务器到终端设备的所有TCP报文在CPE1上的NAT处理都和S1040步骤的描述一致,需要将TCP报文的源IP地址替换为对应的公网IP地址。
S1050,终端设备收到该Syn-Ack报文,解析ADD_ADDR选项,缓存EIP4,同时继续通过CPE1向MPTCP服务器发送TCP Ack报文,这样就完成MPTCP会话的首个子流的三次握手,MPTCP会话建链成功。
S1060,终端设备利用EIP4建立该MPTCP会话的第二条子流,发起第二条子流的三次握手交互,握手成功后加入当前的MPTCP会话。利用EIP4建立该MPTCP会话的第二条子流的过程中,CPE2的NAT处理和CPE1的NAT处理描述一致。
应理解,在图26所示的架构中仅仅以CPE1和CPE2开启了NAT功能,并配置EIP模式的为例进行说明,可选的,在本申请实施例中,CPE1和CPE2开启了NAT功能,并可以配置DNAT模式,例如在如图30所示的架构中,假设:MPTCP服务器通过网卡连接ISP1的CPE1设备,通过Wifi连接ISP2的CPE2设备。CPE1设备开启了DHCP服务器功能,使能了NAT公共地址选项(NATPublic Address Option),使能NAT功能,并配置DNAT模式,CPE1上配置了IPv4私网地址资源池1(Pool 1)和公网地址资源池3(Pool3)。CPE2设备开启DHCP服务器功能,使能了NATPublic Address Option,使能NAT功能,CPE2上也配置DNAT模式,配置了IPv4私网地址资源池2(Pool 2)和公网地址资源池4(Pool 4)。终端设备(MPTCP客户端)分别通过CPE1设备和CPE2设备连接该MPTCP服务器。
在这种情况下,如图31所示的,图31所示的为在如图30所示的架构中,本申请提供的确定MPTCP服务器的IP地址的方法1100的示意性流程图,图31所示的流程主要为MPTCP服务器获取私网地址对应的公网地址和端口号的过程。如图31所示的,该方法1100包括:S1110至S1160。
S1110,MPTCP服务器网口上电,接口连接CPE1设备,检测网络接口状态未正常。MPTCP服务器作为DHCP的客户端(Client)从该网路接口向CPE1设备发送DHCP发现(DHCPDiscover)广播报文。
S1120,CPE1收到该DHCP Discover广播报文后,向CPE1设备回复DHCP回应(DHCPOffer)报文,DHCP Offer中包括预期在Pool1中分配私网地址IP3给MPTCP服务器。分配规则可以是动态分配,也可以是静态预置规则分配,例如为MPTCP服务器网口的媒体接入控制(Media Access Control,MAC)地址,固定分配私网地址IP3。
S1130,MPTCP服务器收到该DHCP Offer报文,在等待时间内没有收到其他DHCP服务器(例如其它CPE1设备)的DHCP Offer报文,MPTCP服务器接受CPE1分配的私网地址IP3,并向CPE1发送DHCP请求(DHCP request)报文,携带私网地址IP3。
S1140,CPE1收到该DHCP request报文,检查本地使能NAT和NAT公共地址选项(NATPublic Address Option),从Pool 3分配出公网地址IP1,由于配置了DNAT模式,因此CPE1设备需要分配出一个CPE1上的端口号,利用公网地址IP1和CPE1上的端口号唯一映射一个私网IP地址和MPTCP服务器的端口号。假设分配的CPE1上的空闲端口号为1000。CPE1将IP1和端口号1000的信息填充到NAT Public Address Option,将NAT Public Address Option携带在DHCP Ack报文中发送给MPTCP服务器。即利用公网地址IP1和端口号1000映射私网地址IP3。可选的。CPE1配置或根据地址和端口资源池分配生成DNAT映射表,该端口资源池配置对应一类服务,假设为HTTP服务,对应端口号43,端口号43可以理解为CPE1为该MPTCP服务器配置或者分配的端口号。CPE1本地生成并缓存该公网地址IP1和端口号1000对应的私网地址IP3和服务器的端口号43的NAT规则表。
图32所示的为S1140中的NAT公共地址选项(NAT Public Address Option)的示意图,如图32所示的,编码字段(code)为待确定(to be done,TBD)状态,待INNA分配。长度(length)字段指示的长度为M个字节(M Bytes)。NAT Type字段指示的为IPv4DNAT。保留(reserved)字段指示为0。IP地址字段指示的为公网地址IP1。端口(port)字段指示为“1000”。
MPTCP服务器收到该DHCP Ack报文后,解析其中的NAT Public Address Option。将IP3绑定到网口上,并本地缓存公网地址IP1、端口号1000和私网地址IP1、端口号43的对应关系记录。
S1150,MPTCP服务器向CPE1回复正确接收该DHCP Ack报文。
S1160 CPE1向MPTCP服务器回复确认信息。
可选的,如果MPTCP服务器为该MPTCP客户端提供的MPTCP服务器在wifi接口扫描到CPE2的Wifi热点连接认证登录后,也可以通过Wifi对应的逻辑网口向CPE2发起DHCP地址请求的交互流程,交互步骤和上述MPTCP服务器通过网口和CPE1发起的DHCP地址请求的交互流程类似,假设:MPTCP服务器在收到CPE2的DHCP Ack报文后,该DHCP Ack报文中的NATPublic Address Option携带私网地址IP4和服务器的端口号43对应的公网地址IP6和CPE2上的端口号2000。MPTCP服务器将IP4绑定到Wifi对应的逻辑网口上,并本地缓存公网地址IP6、端口号2000和私网地址IP4、端口号43的对应关系记录。
假设:MPTCP服务器的运营商选择将公网地址IP1、以及服务域名的DNS A类型记录提交给DNS服务器运营商,要求DNS服务器运营商将其添加到DNS服务器的域名数据库中。MPTCP服务器内部配置私网地址IP3或Wifi对应的私网地址IP4作为MPTCP会话的多路网络入口。终端设备访问MPTCP服务器的多媒体资源时,根据MPTCP服务器的域名向DNS服务器提交查询请求,从查询结果中获悉公网地址IP1的地址。
图33所示的为在如图30所示的架构中,本申请提供的确定MPTCP服务器的IP地址的方法1200的示意性流程图,图33所示的流程主要为终端设备通过MPTCP会话的首流建立过程获取私网地址对应的公网地址的过程。如图33所示的,该方法1200包括:S1210至S1260。
S1210,终端设备和MPTCP服务器进行目的IP为公网地址IP1的MPTCP会话首个子流的三次握手。具体的,终端设备将TCP Syn报文转发到CPE1。该TCP Syn报文携带的五元组信息包括:
源IP:公网地址IP2(即终端设备的IP地址);目的IP:公网地址IP1;源端口:port2(即终端设备本地随机分配空闲端口);目的端口:1000;协议类型:TCP。
S1220,CPE1接收到该TCP Syn报文,根据TCP Syn报文的目的IP+目的端口号查询DNAT映射表,确定新的目的IP为私网地址IP3。修改该报文TCP头和IP头,重新封装后路由转发给MPTCP服务器。修改后的TCP报文五元组信息包括:
源IP:公网地址IP1;目的IP:私网地址IP3;源端口:port2;目的端口:43;协议类型:TCP。
S1230,MPTCP服务器接收到该CPE1转发的TCP Syn报文后,检查本地配置,假设:确定需要发布Wifi对应虚拟网口的IP4地址,查询缓存的私网地址和公网地址对应关系记录发现IP4对应公网地址IP6,端口号为2000,生成ADD_ADDR选项,ADD_ADDR选项携带该公网地址IP6和端口号2000,并将ADD_ADDR选项添加到Syn-Ack报文中经过CPE1发送给终端设备。Syn-Ack报文携带的五元组信息包括:
源IP:私网地址IP3;目的IP:公网地址IP2;源端口:43;目的端口:port2;协议类型:TCP。
S1240,CPE1收到该Syn-Ack报文,根据源IP查询DNAT映射表,确定新的源IP为公网地址IP1,修改报文TCP头和IP头,重新封装后路由转发给终端设备。修改后的TCP报文五元组信息包括;
源IP:公网地址IP1;目的IP:公网地址IP2;源端口:1000;目的端口:port2;协议类型:TCP。
S1250,终端设备收到该Syn-Ack报文,解析ADD_ADDR选项,缓存公网地址IP6和端口号2000,同时继续通过CPE1向MPTCP服务器发送TCP Ack报文,这样就完成MPTCP会话的首个子流的三次握手,MPTCP会话建链成功。
S1260,终端设备利用公网地址IP6和端口号2000建立该MPTCP会话的第二条子流,发起第二条子流的三次握手交互,握手成功后加入当前的MPTCP会话。利用公网地址IP6和端口号2000建立该MPTCP会话的第二条子流的过程中,CPE2的NAT处理和CPE1的NAT处理描述一致。
应理解,在本申请实施例中,由于DNS的A/AAAA记录中并不指示域名和服务器端口的信息,所以终端设备在和MPTCP服务器建立MPTCP会话的首个子流时,位于CPE1(NAT网关)后的MPTCP服务器接入首子流对应的网络接口IP地址,在CPE1上可以配置对应EIP模式,终端设备无法通过DNS查询获取MPTCP服务器对应CPE1上生成的DNAT规则表相关信息,从而获悉其可访问的公网端口(例如为上述例子中的端口号1000)信息,只能通过其它方式获取。例如,MPTCP服务器运营商的服务通告等。首子流建立后,MPTCP服务器能通过首子流携带ADD_ADDR选项通告其它网络入口的DNAT信息(该网络入口私网IP对应的公网IP和端口信息)。
本申请提供的确定MPTCP服务器公网地址的方法,通过DHCP服务器将为后端的MPTCP服务配置的私网地址对应的公网地址和/或端口信息发送给后端的MPTCP服务器。从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP和/或端口信息,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP和/或端口信息,从而可以正确建立MPTCP会话的新的子流,保证了MPTCP会话可以顺序的建立子流,提高了MPTCP会话的效率。并且,减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
应理解,上述只是为了帮助本领域技术人员更好地理解本申请实施例,而非要限制本申请实施例的范围。本领域技术人员根据所给出的上述示例,显然可以进行各种等价的修改或变化,例如,上述方法800至方法1200中某些步骤可以不必须的,或者可以新加入某些步骤等。或者上述任意两种或者任意多种实施例的组合。这样的修改、变化或者组合后的方案也落入本申请实施例的范围内。
还应理解,本申请实施例中的方式、情况、类别以及实施例的划分仅是为了描述的方便,不应构成特别的限定,各种方式、类别、情况以及实施例中的特征在不矛盾的情况下可以相结合。
还应理解,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
还应理解,上文对本申请实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
还应理解,本申请实施例中,“预定义”可以通过在设备(中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。
以上结合图15至图33对本申请实施例的确定MPTCP服务器公网地址的方法做了详细说明。以下,结合图34至图37对本申请实施例通信装置进行详细说明。
图34示出了本申请实施例的通信装置1300的示意性框图,该通信装置1300可以对应上述方法800中的各个实施例中描述的第一网关,或者上述方法900至方法1200中的各个实施例中描述的CPE1,也可以是应用于DHCP服务器或者CPE1的芯片或组件,并且,该通信装置1300各模块或单元分别用于执行上述方法800中的各个实施方式中的第一网关或者上述方法900至方法1200中各个实施例方式中的CPE1所执行的各动作或处理过程,如图34所示,该通信装置1300可以包括:处理单元1310和通信单元1320。
处理单元1310,用于确定多路径传输控制协议MPTCP服务器的至少一个私网地址中每一个私网地址对应的公网地址,该公网地址用于该MPTCP服务器和MPTCP客户端建立MPTCP会话的子流;
通信单元1320,用于向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址。
可选的,在本申请的一些实施例中,处理单元1310,还用于确定该至少一个私网地址中每一个私网地址对应的端口号;
通信单元1320,还用于向该MPTCP服务器发送该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
本申请提供通信装置,该通信装置将为后端的MPTCP服务配置的私网地址对应的公网地址、或者公网地址和端口信息发送给后端的MPTCP服务器。从而让MPTCP服务器能明确感知其各个私网IP对应的公网IP和/或端口信息,以便MPTCP服务器可以向MPTCP客户端通知私网IP对应的公网IP、或者私网IP对应公网IP和端口信息,从而可以正确建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了MPTCP服务器的本地配置,也不需要MPTCP服务器本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
可选的,在本申请的一些实施例中,通信单元1320还用于:
接收该MPTCP服务器发送的地址请求报文,
向该MPTCP服务器发送响应于该地址请求报文的第一应答报文,该第一应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,通信单元1320还用于:
接收该MPTCP服务器发送的地址续租请求报文,
向该MPTCP服务器发送响应于该地址续租请求报文的第二应答报文,该第二应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,该第一应答报文或者该第二应答报文包括扩展的动态主机配置协议DHCP选项,该扩展的DHCP选项包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,该通信装置为动态主机配置协议DHCP服务器,或者为支持DHCP代理能力的网关设备,或者为支持DHCP服务器功能的网络地址转换NAT网关设备,或者为支持DHCP服务器和NAT功能的负载均衡器设备。
应理解,通信装置1300中各单元执行上述相应步骤的具体过程请参照前文中结合图17、图18、图19、图23、图24、图25中以及方法800中的各个实施例中描述的第一网关执行步骤的相关描述,或者,图27、图29、图31、图33中以及方法900至方法1200中的各个实施例中描述的CPE1设备执行步骤的相关描述。为了简洁,这里不加赘述。
可选的,通信单元1320可以包括接收单元(模块)和发送单元(模块),用于执行前述各个方法实施例中第一网关或者CPE1接收信息和发送信息的步骤。可选的,通信装置1300还可以包括存储单元,用于存储处理单元1310和通信单元1320执行的指令。处理单元1310、通信单元1320和存储单元通信连接,存储单元存储指令,处理单元1310用于执行存储单元存储的指令,通信单元1320用于在处理单元1310的驱动下执行具体的信号收发。
应理解,通信单元1320可以是收发器、输入/输出接口或接口电路等。存储单元可以是存储器。处理单元1310可由处理器实现。如图35所示,通信装置1400可以包括处理器1410、存储器1420和收发器1430。
图34所示的通信装置1300或图35所示的通信装置1400能够实现图17、图18、图19、图23、图24、图25中以及方法800中的各个实施例中描述的第一网关执行的步骤,或者,能够实现图27、图29、图31、图33中以及方法900至方法1200中的各个实施例中描述的CPE1设备执行的步骤。类似的描述可以参考前述对应的方法中的描述。为避免重复,这里不再赘述。
图36示出了本申请实施例的通信装置1500的示意性框图,该通信装置1500可以对应上述方法800至方法1200中的各个实施例中描述的MPTCP服务器,也可以是应用于MPTCP服务器的芯片或组件,并且,该通信装置1500各模块或单元分别用于执行上述方法800至方法1200中各个实施例方式中的MPTCP服务器所执行的各动作或处理过程,如图36所示,该通信装置1500可以包括:处理单元1510和通信单元1520。
处理单元1510,用于获取该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址,该公网地址用于该MPTCP服务器和MPTCP客户端建立MPTCP会话的子流。
通信单元1520,用于向MPTCP客户端发送该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址。
可选的,在本申请的一些实施例中,处理单元1510,还用于获取该至少一个私网地址中每一个私网地址对应的端口号;
通信单元1520,还用于向MPTCP客户端发送该MPTCP服务器的至少一个私网地址中每一个私网地址分别对应的公网地址和端口号。
本申请提供通信装置,该通信装置可以获取自己至少一个私网地址中每一个私网地址分别对应的公网地址和端口号和/或端口信息,并将该信息发送给MPTCP客户端,从而可以正确的和MPTCP客户端建立MPTCP会话的新的子流,保证了MPTCP会话可以顺利的建立子流,提高了MPTCP会话的效率。并且,减少了该通信装置的本地配置,也不需要该通信装置本地配置公网地址,避免了公网地址直接暴露在公网上从而影响其安全性。
可选的,在本申请的一些实施例中,通信单元1520还用于:
向第一网关发送地址请求报文;
接收该第一网关发送的响应于该地址请求报文的第一应答报文,该第一应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,通信单元1520还用于:
向第一网关发送地址续租请求报文;
接收该第一网关发送响应于该地址续租请求报文的第二应答报文,该应答报文包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,该第一应答报文或者该第二应答报文包括扩展的动态主机配置协议DHCP选项,该扩展的DHCP选项包括:该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
可选的,在本申请的一些实施例中,该第一网关为动态主机配置协议DHCP服务器,或者为支持DHCP代理能力的网关设备,或者为支持DHCP服务器功能的网络地址转换NAT网关设备,或者为支持DHCP服务器和NAT功能的负载均衡器设备。
可选的,在本申请的一些实施例中,通信单元1520还用于:在该通信装置和该MPTCP客户端的MPTCP会话首个子流的建立过程中,通过TCP报文将该至少一个私网地址中每一个私网地址对应的公网地址发送给该MPTCP客户端,或者,将该至少一个私网地址中每一个私网地址对应的公网地址和端口号发送给该MPTCP客户端。
可选的,在本申请的一些实施例中,通信单元1520还用于:在该通信装置和该MPTCP客户端的MPTCP会话首个子流的建立后,向MPTCP客户端发送该至少一个私网地址中每一个私网地址对应的公网地址,或者,该至少一个私网地址中每一个私网地址对应的公网地址和端口号。
应理解,通信装置1500中各单元执行上述相应步骤的具体过程请参照前文中结合图17、图18、图19、图23、图24、图25、图27、图29、图31、图33中以及方法800至方法1200中的各个实施例中描述的MPTCP服务器执行步骤的相关描述。为了简洁,这里不加赘述。
可选的,通信单元1520可以包括接收单元(模块)和发送单元(模块),用于执行前述各个方法实施例中MPTCP服务器接收信息和发送信息的步骤。可选的,通信装置1500还可以包括存储单元,用于存储处理单元1510和通信单元1520执行的指令。处理单元1510、通信单元1520和存储单元通信连接,存储单元存储指令,处理单元1510用于执行存储单元存储的指令,通信单元1520用于在处理单元1510的驱动下执行具体的信号收发。
应理解,通信单元1520可以是收发器、输入/输出接口或接口电路等。存储单元可以是存储器。处理单元1510可由处理器实现。如图37所示,通信装置1600可以包括处理器1610、存储器1620和收发器1630。
图36所示的通信装置1500或图37所示的通信装置1600能够实现图17、图18、图19、图23、图24、图25、图27、图29、图31、图33中以及方法800至方法1200中的各个实施例中描述的MPTCP服务器执行的步骤。类似的描述可以参考前述对应的方法中的描述。为避免重复,这里不再赘述。
还应理解,以上装置中单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且装置中的单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。例如,各个单元可以为单独设立的处理元件,也可以集成在装置的某一个芯片中实现,此外,也可以以程序的形式存储于存储器中,由装置的某一个处理元件调用并执行该单元的功能。这里该处理元件又可以称为处理器,可以是一种具有信号处理能力的集成电路。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路实现或者以软件通过处理元件调用的形式实现。
在一个例子中,以上任一装置中的单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specific integratedcircuit,ASIC),或,一个或多个数字信号处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA),或这些集成电路形式中至少两种的组合。再如,当装置中的单元可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,CPU)或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
本申请实施例还提供了一种通信系统,该通信系统包括:上述方法200和方法300中的MPTCP客户端和DNS服务器,或者,该通信系统包括:上述方法800中的MPTCP客户端、第一网关、或者MPTCP客户端中的至少两个。
本申请实施例还提供了一种计算机可读存储介质,用于存储计算机程序代码,该计算机程序包括用于执行上述本申请实施例提供的任意一种确定MPTCP服务器公网地址的方法的指令。该可读介质可以是只读存储器(read-only memory,ROM)或随机存取存储器(random access memory,RAM),本申请实施例对此不做限制。
本申请还提供了一种计算机程序产品,该计算机程序产品包括指令,当该指令被执行时,以使得该MPTCP客户端、DNS服务器、第一网关、MPTCP服务器执行对应于上述方法中的对应的操作。
本申请实施例还提供了一种位于通信装置中的芯片,该芯片包括:处理单元和通信单元,该处理单元,例如可以是处理器,该通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行计算机指令,以使所述通信装置执行上述本申请实施例提供的任一种确定MPTCP服务器公网地址的方法。
可选地,该计算机指令被存储在存储单元中。
可选地,该存储单元为该芯片内的存储单元,如寄存器、缓存等,该存储单元还可以是该终端内的位于该芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random accessmemory,RAM)等。其中,上述任一处提到的处理器,可以是一个CPU,微处理器,ASIC,或一个或多个用于控制上述的反馈信息的传输方法的程序执行的集成电路。该处理单元和该存储单元可以解耦,分别设置在不同的物理设备上,通过有线或者无线的方式连接来实现该处理单元和该存储单元的各自的功能,以支持该系统芯片实现上述实施例中的各种功能。或者,该处理单元和该存储器也可以耦合在同一个设备上。
其中,本实施例提供的通信装置、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是ROM、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是RAM,其用作外部高速缓存。RAM有多种不同的类型,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请中可能出现的对各种消息/信息/设备/网元/系统/装置/动作/操作/流程/概念等各类客体进行了赋名,可以理解的是,这些具体的名称并不构成对相关客体的限定,所赋名称可随着场景,语境或者使用习惯等因素而变更,对本申请中技术术语的技术含义的理解,应主要从其在技术方案中所体现/执行的功能和技术效果来确定。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请的实施例中的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器等数据存储设备。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种确定MPTCP服务器公网地址的方法,其特征在于,包括:
多路径传输控制协议MPTCP客户端向域名系统DNS服务器发送第一请求,所述第一请求包括第一域名,所述第一请求用于请求所述第一域名对应的MPTCP服务器的至少一个互联网协议IP地址和所述MPTCP服务器对应的第一标识;
所述议MPTCP客户端接收所述DNS服务器发送的响应于所述第一请求的第一信息,所述第一信息包括:所述第一域名对应的MPTCP服务器的至少一个IP地址和所述MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器;
所述MPTCP客户端根据所述第一信息,确定与所述第一域名和所述第一标识对应的所述MPTCP服务器的至少一个IP地址。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述MPTCP客户端根据所述MPTCP服务器的至少一个IP地址,建立与所述MPTCP服务器的MPTCP会话的首个子流。
3.根据权利要求2所述的方法,其特征在于,所述MPTCP客户端根据所述MPTCP服务器的多个IP地址,建立与所述MPTCP服务器的MPTCP会话的首个子流,包括:
所述MPTCP客户端依次利用所述MPTCP服务器的多个IP地址建立首个子流,最先建立成功的子流为所述首个子流,所述首个子流对应第一IP地址,所述多个IP地址包括所述第一IP地址;
所述MPTCP客户端将根据第二IP地址建立成功的子流加入到所述首个子流对应的MPTCP会话中,所述第二IP地址为所述MPTCP服务器的多个IP地址除所述第一IP地址之外的IP地址,所述多个IP地址包括所述第二IP地址。
4.根据权利要求2所述的方法,其特征在于,所述MPTCP客户端根据所述MPTCP服务器的多个IP地址,建立与所述MPTCP服务器的MPTCP会话的首个子流,包括:
所述MPTCP客户端同时利用所述MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为所述首个子流,所述首个子流对应第一IP地址,所述多个IP地址包括所述第一IP地址;
所述MPTCP客户端将根据第二IP地址正在建立和/或已经建立成功的首个子流撤销,并将利用所述第二IP地址重新建立成功的子流加入到所述首个子流对应的MPTCP会话中,所述第二IP地址为所述MPTCP服务器的多个IP地址除所述第一IP地址之外的IP地址,所述多个IP地址包括所述第二IP地址。
5.根据权利要求2所述的方法,其特征在于,所述MPTCP客户端根据所述MPTCP服务器的多个IP地址,建立与所述MPTCP服务器的MPTCP会话的首个子流,包括:
所述MPTCP客户端同时利用所述MPTCP服务器的多个IP地址分别建立首个子流,最先建立成功的子流为第一首个子流,所述第一首个子流对应第一IP地址,所述多个IP地址包括所述第一IP地址;
所述MPTCP客户端将根据第二IP地址建立成功的第二首个子流加入到所述第一首个子流对应的MPTCP会话中,所述第二IP地址为所述MPTCP服务器的多个IP地址除所述第一IP地址之外的IP地址,所述多个IP地址包括所述第二IP地址。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第一请求还用于请求第一类型的资源记录,所述第一类型的资源记录包括:所述第一域名对应的所述至少一个MPTCP服务器中每个MPTCP服务器对应的所述第一标识。
7.根据权利要求1所述的方法,其特征在于,
所述第一标识为MPTCP服务器对应的通用唯一识别码UUID。
8.一种确定MPTCP服务器公网地址的方法,其特征在于,包括:
第一DNS服务器接收多路径传输控制协议MPTCP客户端发送的第一请求,所述第一请求包括第一域名,所述第一请求用于请求所述第一域名对应的MPTCP服务器的至少一个互联网协议IP地址和所述MPTCP服务器对应的第一标识;
所述第一DNS服务器向所述MPTCP客户端发送响应于所述第一请求的第一信息,所述第一信息包括:所述第一域名对应的MPTCP服务器的至少一个IP地址和所述MPTCP服务器对应的第一标识,一个第一标识用于唯一标识一个MPTCP服务器。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述第一DNS服务器获取第二信息,所述第二信息包括:至少一个域名中每个域名对应的MPTCP服务器的IP地址,以及MPTCP服务器对应的所述第一标识,所述至少一个域名包括所述第一域名,一个域名对应至少一个MPTCP服务器。
10.根据权利要求9所述的方法,其特征在于,所述第一DNS服务器获取第二信息,包括:
所述第一DNS服务器向第二DNS服务器发送第二请求,所述第二请求用于请求所述第一域名对应的MPTCP服务器的至少一个IP地址以及所述MPTCP服务器对应的所述第一标识;
所述第一DNS服务器接收来自于所述第二DNS服务器的响应于所述第二请求的所述第二信息。
11.根据权利要求8所述的方法,其特征在于,所述第一请求还用于请求第一类型的资源记录,所述第一类型的资源记录包括:所述第一域名对应的所述至少一个MPTCP服务器中每个MPTCP服务器对应的所述第一标识。
12.根据权利要求8至11中任一项所述的方法,其特征在于,
所述第一标识为MPTCP服务器对应的通用唯一识别码UUID。
13.一种通信装置,其特征在于,包括用于执行如权利要求1至7中任一项所述方法的各个步骤的单元,或者,用于执行如权利要求8至12中任一项所述方法的各个步骤的单元。
14.一种通信装置,其特征在于,所述装置包括至少一个处理器,所述至少一个处理器与至少一个存储器耦合:
所述至少一个处理器,用于执行所述至少一个存储器中存储的计算机程序或指令,以使得所述通信装置执行如权利要求1至7中任一项所述的方法,或者执行如权利要求8至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当计算机读取并执行所述计算机程序或指令时,使得计算机执行如权利要求1至7中任一项所述的方法,或者执行如权利要求8至12中任一项所述的方法。
16.一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的通信设备执行如权利要求1至7中任一项所述的方法,或者执行如权利要求8至12中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010762122.XA CN114095474B (zh) | 2020-07-31 | 2020-07-31 | 确定mptcp服务器公网地址的方法和通信装置 |
PCT/CN2021/108737 WO2022022530A1 (zh) | 2020-07-31 | 2021-07-27 | 确定mptcp服务器公网地址的方法和通信装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010762122.XA CN114095474B (zh) | 2020-07-31 | 2020-07-31 | 确定mptcp服务器公网地址的方法和通信装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114095474A CN114095474A (zh) | 2022-02-25 |
CN114095474B true CN114095474B (zh) | 2023-02-03 |
Family
ID=80037611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010762122.XA Active CN114095474B (zh) | 2020-07-31 | 2020-07-31 | 确定mptcp服务器公网地址的方法和通信装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114095474B (zh) |
WO (1) | WO2022022530A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844804B (zh) * | 2022-06-01 | 2023-07-25 | 重庆奥普泰通信技术有限公司 | 网络测量方法、系统、电子设备及计算机可读存储介质 |
CN117640716A (zh) * | 2022-08-17 | 2024-03-01 | 华为技术有限公司 | 一种通信方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872423A (zh) * | 2016-09-23 | 2018-04-03 | 中国电信股份有限公司 | 用于实现 cdn 调度的方法、设备和系统 |
CN109714447A (zh) * | 2018-12-20 | 2019-05-03 | 全链通有限公司 | 基于区块链域名系统的域名生成方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8400923B2 (en) * | 2010-10-15 | 2013-03-19 | Telefonaktiebolaget L M Ericsson (Publ) | Multipath transmission control protocol proxy |
CN103503399B (zh) * | 2010-12-22 | 2016-05-18 | 爱立信(中国)通信有限公司 | 通信网络中的移动性处理 |
KR102234979B1 (ko) * | 2013-11-07 | 2021-04-02 | 삼성전자주식회사 | 무선 통신 시스템에서 이동성 관리를 위한 장치 및 방법 |
CN112995050A (zh) * | 2016-11-17 | 2021-06-18 | 华为技术有限公司 | 一种多路径数据传输方法及设备 |
CN108494891A (zh) * | 2018-02-28 | 2018-09-04 | 网宿科技股份有限公司 | 一种域名解析方法、服务器及系统 |
US10659569B1 (en) * | 2019-01-18 | 2020-05-19 | Hewlett Packard Enterprise Development Lp | End-to-end multipath TCP through network gateways |
-
2020
- 2020-07-31 CN CN202010762122.XA patent/CN114095474B/zh active Active
-
2021
- 2021-07-27 WO PCT/CN2021/108737 patent/WO2022022530A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872423A (zh) * | 2016-09-23 | 2018-04-03 | 中国电信股份有限公司 | 用于实现 cdn 调度的方法、设备和系统 |
CN109714447A (zh) * | 2018-12-20 | 2019-05-03 | 全链通有限公司 | 基于区块链域名系统的域名生成方法和系统 |
Non-Patent Citations (1)
Title |
---|
IPv6+MPTCP技术对上层应用支撑的验证;罗煜;《计算机工程与应用》;20180908;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114095474A (zh) | 2022-02-25 |
WO2022022530A1 (zh) | 2022-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230354149A1 (en) | Method for identification of traffic suitable for edge breakout and for traffic steering in a mobile network | |
US9584360B2 (en) | Global server load balancing support for private VIP addresses | |
US7415536B2 (en) | Address query response method, program, and apparatus, and address notification method, program, and apparatus | |
US7349369B2 (en) | Methods and apparatus for using a paging and location server to support session signaling | |
US9307393B2 (en) | Peer-to-peer mobility management in heterogeneous IPV4 networks | |
US9019965B2 (en) | Methods and devices for routing data packets between IPv4 and IPv6 networks | |
US20120084382A1 (en) | On-the-fly reverse mapping | |
Sousa et al. | Multihoming management for future networks | |
US20060056420A1 (en) | Communication apparatus selecting a source address | |
US20030137962A1 (en) | Methods and apparatus for supporting session registration messaging | |
US20070250642A1 (en) | Using multiple tunnels by in-site nodes for securely accessing a wide area network from within a multihomed site | |
US20220311734A1 (en) | Method and Device for Obtaining an IP Address | |
JP5680221B2 (ja) | モバイル・ノードをネットワークに接続する方法 | |
CN114095474B (zh) | 确定mptcp服务器公网地址的方法和通信装置 | |
US10827345B1 (en) | Methods and systems for LoRaWAN traffic routing and control | |
KR20080041989A (ko) | 이동통신 시스템에서 이동 단말에 대한 동적 ip주소 할당방법 | |
Komu et al. | A survey of identifier–locator split addressing architectures | |
CN115668889A (zh) | 用于可变长度地址(vla)网络的域名系统(dns)服务 | |
Hyun et al. | IPv4 and IPv6 performance comparison in IPv6 LTE network | |
CN111988441A (zh) | 基于IPv6的组网接入方法及系统 | |
EP3852412B1 (en) | Roaming | |
Hamme | DHCPv6 for Data Centers | |
Kang et al. | Mobility support through locator/ID split architecture | |
Santos | Private realm gateway | |
CN114390021A (zh) | 基于IPv6单栈的IDC服务提供系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |