发明内容
本申请实施例提供一种TFO传输方法、代理服务器和系统,用于实现了TFO自动探测和下发。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种TFO传输方法,该方法包括:
代理服务器从中央控制器或上一跳代理服务器接收最优路径信息和第一TFO信息,所述最优路径信息用于指示从入口代理服务器至源站服务器的最优转发路径,所述第一TFO信息用于指示所述最优转发路径上的服务器是否支持TFO;
所述代理服务器根据所述最优路径信息向下一跳服务器发送第一同步SYN请求,其中,如果所述代理服务器与所述下一跳服务器均支持TFO,则所述第一SYN请求中包括TFOCookie。
第二方面,提供了一种代理服务器,包括:
接收单元,用于从中央控制器或上一跳代理服务器接收最优路径信息和第一传输控制协议TCP快速打开TFO信息,所述最优路径信息用于指示从入口代理服务器至源站服务器的最优转发路径,所述第一TFO信息用于指示所述最优转发路径上的服务器是否支持TFO;
发送单元,用于根据所述最优路径信息向下一跳服务器发送第一同步SYN请求,其中,如果所述代理服务器与所述下一跳服务器均支持TFO,则所述第一SYN请求中包括TFOCookie。
第三方面,提供了一种代理服务器,包括:存储器、通信接口和处理器,所述存储器用于存储计算机执行代码,所述处理器用于执行所述计算机执行代码控制执行第一方面所述的方法,所述通信接口用于所述服务器与外部设备的数据传输。
第四方面,提供了一种通信系统,包括:中央控制器、源站服务器、客户端以及如第二方面所述的代理服务器,或者如第三方面所述的代理服务器。
第五方面,提供了一种存储一个或多个程序的计算机存储介质,所述一个或多个程序包括指令,所述指令当被计算机执行时使所述计算机执行如第一方面所述的方法。
第六方面,提供了一种计算机程序产品,可直接加载到计算机的内部存储器中,并含有软件代码,所述计算机程序经由计算机载入并执行后能够实现第一方面所述的方法。
本申请实施例提供的TFO传输方法、代理服务器和系统,通过网内全部代理服务器获取与其他代理服务器或源站服务器之间是否支持TFO,将该信息发送给中央控制器进行汇总,由中央控制器确定最优路径后,将该信息沿最优路径进行转发,路径上各服务器根据该信息确定是否与下一跳采用TFO通信,实现了TFO自动探测和下发。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
本申请公开了一种通信系统,参照图1中所示,包括:中央控制器11、至少一个代理服务器12、源站服务器13和客户端14。中央控制器11用于对整个代理服务器网络进行控制。代理服务器12中包括入口代理服务器和出口服务器,例如本申请实施例中以代理服务器2作为入口代理服务器,以代理服务器5作为出口代理服务器。客户端14的访问请求通过入口代理服务器进入网内,然后经过各代理服务器转发通过出口代理服务器到达源站服务器13。
本申请公开了一种TFO传输方法,应用于上述系统,参照图2中所示,该方法包括:
TFO自动探测阶段
S101、全网所有代理服务器之间相互进行TFO探测以及全网所有代理服务器对源站进行TFO探测,从而探测得到第一TFO信息。
即每个代理服务器都对其他代理服务器以及源站服务器进行TFO探测。第一TFO信息用于指示代理服务器与其他代理服务器或源站服务器之间是否支持TFO。上述探测可以是周期性进行的。
由于全网代理服务器的TFO探测是定时进行,所以可以准实时的刷新全网代理服务器,包括源站支持TFO的状态,支持或者不支持。在支持TFO的情况下,两点之间会自动协商好TFO cookie,并打开TFO。
示例性的,参照图3中所示,为代理服务器1对其他代理服务器和源站服务器进行TFO探测的示意图。
TFO探测结果上报及全路径计算阶段
S102、代理服务器将第一TFO信息发送给中央控制器。
中央控制器便知道彼此之间是否可以适用TFO,因为TFO必须要成对出现。根据TFO的特性,第一个TFO连接是无加速效果的,而周期性的TFO探测已经将支持TFO的成对代理服务器之间的TCP连接打通,所以来自客户端的真正的数据请求已经可以直接适用TFO特性。
示例性的,参照图4中所示,为全网的代理服务器向中央控制器上报TFO探测结果的示意图。
S103、中央控制器获取所有代理服务器的第一TFO信息,根据选路算法生成最优路径信息;并根据第一TFO信息和最优路径信息生成第二TFO信息;并将最优路径信息和第二TFO信息发送给入口代理服务器。
最优路径信息用于指示从入口代理服务器至源站服务器的最优转发路径;第二TFO信息用于指示最优转发路径上的服务器是否支持TFO。
这样入口代理服务器不仅知道最优路径信息,而且知道路径中的每一个代理服务器是否支持TFO。
选路算法可以采用业界通用的最短路径算法,例如基于时延最短的Dijsktra算法。中央控制器最终收集到第二TFO信息可以如表1所示。
表1
|
代理1 |
代理2 |
代理3 |
代理4 |
代理5 |
源站1 |
代理1 |
NO |
TFO |
TFO |
NO |
TFO |
NO |
代理2 |
TFO |
NO |
TFO |
TFO |
NO |
NO |
代理3 |
TFO |
TFO |
NO |
TFO |
TFO |
NO |
代理4 |
NO |
NO |
NO |
NO |
NO |
NO |
代理5 |
TFO |
NO |
TFO |
TFO |
NO |
NO |
表1中NO表示二者之间不支持TFO,TFO表示二者之间支持TFO。
假设中央控制器计算出来的最优路径为:代理2-代理3-代理5-源站,传统仅下发最优路径信息的形式为表2所示:
表2
本申请同时下发第二TFO信息后的形式如表3中所示:
表3
代理2(100) |
代理3(10) |
代理5(0) |
源站 |
其中,括号内的信息为第二TFO信息,其标注方法为二进制0和1,每一位标注从本端到下一跳是否支持TFO,标注为1,说明在探测阶段已经协商好TFO Cookie,则在实际传输过程中可以使用TFO进行传输。例如代理2的TFO标志为100,说明代理2到代理3支持TFO,但是代理2到代理5不支持TFO,代理2到源站也不支持TFO。代理3标注为10,说明代理3到代理5支持TFO,但是代理3到源站不支持TFO。代理5标注为(0),说明代理5到源站不支持TFO。
示例性的,参照图5中所示,为中央控制器向入口代理服务器下发最优路径信息和第二TFO信息的示意图。
S104、入口代理服务器从中央控制器接收最优路径信息和第二TFO信息。
传输阶段
S105、入口代理服务器监听有客户端请求时,根据最优路径信息向下一跳服务器发送第一SYN请求。
入口代理服务器通过监听特定端口来确定有客户端请求到来。
如果入口代理服务器与下一跳服务器均支持TFO,则第一SYN请求中包括TFOCookie和有效数据。如果入口代理服务器与下一跳服务器中有一者不支持TFO,则第一SYN请求中不包括所述TFO Cookie和有效数据。下一跳服务器可以是其他代理服务器或者源站服务器。有效数据指客户端请求中的有效数据
具体的,入口代理服务器直接向下一跳代理服务器发送TFO请求(TCP建连和传输数据),即可节省一次建立TCP连接的时间。同时入口代理服务器将最优路径信息和第二TFO信息以TCP数据的形式(实际请求之前增加)发送给下一跳服务器。
示例性的,参照图6中所示,为客户端请求触发的代理服务器转发的示意图。客户端请求代理服务器2监听的一个端口,触发代理服务器2查询本地的最优路径信息,发现下一跳是代理服务器3,并且代理服务器2到代理服务器3是支持TFO的,所以代理服务器2向代理服务器3发起带TFO Cookie和有效数据的SYN包。需要说明的是,代理服务器2在向代理服务器3转发的时候,将最优路径信息和第二TFO信息在实际数据之前发给代理服务器3。
S106、网内的代理服务器从上一跳代理服务器接收最优路径信息和第二TFO信息,并根据最优路径信息向下一跳服务器发送SYN请求。
类似地,同样需要根据本代理服务器及下一跳服务器是否支持TFO来确定SYN请求中是否包括TFO Cookie和有效数据,因此网内的代理服务器的处理方式与入口代理服务器的处理方式相同,在此不再赘述。
需要说明的是,从出口代理服务器的向源站服务器发送SYN请求时,不必携带最优路径信息。示例性的,参照图6中所示,代理服务器3在从代理服务器2接收到请求之后,发现下一跳是代理服务器5,从代理服务器3到代理服务器5也支持TFO,则代理服务器3向代理服务器5发起带TFO Cookie和有效数据的SYN包。代理服务器5发现下一跳是源站,且源站不支持TFO,则去掉最优路径信息后,使用正常的TCP连接向源站建立连接。整个过程节省了代理服务器2与代理服务器3之间以及代理服务器3与代理服务器5之间的TCP连接建立时间。
另外,如果代理服务器与下一跳服务器建立TCP连接失败(例如对端宕机或者断网导致失去服务能力),则本代理服务器向下下一跳服务器发送第二SYN请求,其中,如果本代理服务器与下下一跳服务器均支持TFO,则第二SYN请求中包括TFO Cookie和有效数据。即,本代理服务器会尝试跳过有问题的下一跳代理服务器,直接与下下一跳代理服务器建立连接,由于本代理服务器已经知道下下一跳代理服务器是否支持TFO,所以需要判断与其连接是否也使用TFO。
示例性的,参照图7中所示,一旦最优路径中除了入口代理服务器和源站服务器以外的代理服务器突然出现宕机,TCP连接的发起端会尝试跳过故障点,与故障点的下一跳尝试建立连接,例如如果代理服务器3故障,代理服务器2将与代理服务器5建立连接,通过TFO标志位“0”,说明代理服务器2到代理服务器5不能使用TFO,因此直接使用正常的TCP连接。
本申请实施例提供的TFO使用方法,通过网内全部代理服务器获取与其他代理服务器或源站服务器之间是否支持TFO,将该信息发送给中央控制器进行汇总,由中央控制器确定最优路径后,将该信息沿最优路径进行转发,路径上各服务器根据该信息确定是否与下一跳采用TFO通信,实现了TFO自动探测和下发。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中所涉及的代理服务器的一种可能的结构示意图,代理服务器12包括:接收单元1201、探测单元1202、发送单元1203。接收单元1201用于支持代理服务器执行图2中的过程S104、S106;探测单元1202用于支持代理服务器执行图2中的过程S101;发送单元1203用于支持代理服务器执行图2中的过程S102、S105、S106。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图9示出了上述实施例中所涉及的代理服务器的一种可能的结构示意图。代理服务器12包括:处理模块1212和通信模块1213。处理模块1212用于对代理服务器的动作进行控制管理,例如,处理模块1112用于支持代理服务器执行探测单元1202的功能。通信模块1213用于支持代理服务器与其他网络实体的通信,例如与图1中示出的功能模块或网络实体之间的通信。代理服务器21还可以包括存储模块1211,用于存储代理服务器的程序代码和数据。
其中,处理模块1212可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1213可以是收发器、收发电路或通信接口等。存储模块1211可以是存储器。
当处理模块1212为处理器,通信模块1213为网络接口,存储模块1211为存储器时,本发明实施例所涉及的代理服务器可以为图10所示的服务器。
参阅图10所示,该代理服务器12包括:处理器1222、通信接口1223、存储器1221以及总线1224。其中,网口1223、处理器1222以及存储器1221通过总线1224相互连接;总线1224可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。本发明实施例还提供一种存储介质,该存储介质可以包括存储器1221,用于储存为代理服务器所用的计算机软件指令,其包含执行上述方法所设计的程序代码。具体的,软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read OnlyMemory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于代理服务器中。当然,处理器和存储介质也可以作为分立组件存在于代理服务器中。
本申请实施例还提供一种计算机程序,该计算机程序可直接加载到存储器1221中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述的方法。
本申请实施例还提供一种存储一个或多个程序的计算机存储介质,一个或多个程序包括指令,该指令当被计算机执行时,使计算机执行图2中的相关方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。