发明内容
本发明实施例提供了一种报文处理方法及广域网加速控制器WOC,可以实现对报文的高效转发,减少协议栈的处理延时,增强用户体验。
在第一方面,本发明实施例提供了一种报文处理方法,所述方法包括:
广域网加速控制器WOC接收第一SYN报文;
如果所述第一SYN报文中没有携带用于描述所述第一SYN报文发送方的加速能力的字段,则查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;
如果所述第一SYN报文所携带的所述服务器地址信息位于所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。
结合第一方面,在第一种可能的实现方式下,所述方法还包括:
如果所述第一SYN报文所携带的所述服务器地址信息不在所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文根据用户配置进行相应的处理。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式下,所述第一SYN报文的发送方为客户端,所述WOC部署在所述客户端,如果所述第一SYN报文所携带的所述服务器地址信息不在所述黑名单内,则所述方法还包括:
所述WOC向第一服务器部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
接收所述第一服务器部署的WOC在接收到所述第二SYN报文之后,发送的携带有所述第一服务器部署的WOC的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的所述服务器地址信息所对应的服务器。
结合第一方面或第一种可能的实现方式,在第三种可能的实现方式下,所述WOC部署在所述第一服务器,所述第一SYN报文的发送方为部署在客户端的WOC,如果所述第一SYN报文所携带的所述服务器地址信息不在所述黑名单内,则所述方法还包括:
所述WOC接收所述客户端部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
向所述客户端部署的WOC发送携带有自身的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的服务器地址信息所对应的服务器。
结合第一方面,在第四种可能的实现方式下,所述方法还包括:
如果所述第一SYN报文中携带有用于描述所述第一SYN报文的发送方的加速能力的字段,则根据携带的所述字段,判断所述第一SYN报文发送方的加速能力和所述WOC的加速能力交集是否为空;
如果为空,则将所述第一SYN报文携带的服务器的地址信息添加到所述黑名单中;
如果不为空,则将所述第一SYN报文发送方后续发送的数据报文进行加速处理。
结合第一方面至第四种可能的实现方式中的任一种可能实现方式,在第五种可能的实现方式下,所述方法还包括:以第一时间阈值为时间间隔更新所述黑名单。
在第二方面,本发明实施例提供了一种广域网加速控制器WOC,所述WOC包括:
接收单元,用于接收第一SYN报文;
查询单元,用于当所述第一SYN报文中没有携带用于描述所述第一SYN报文发送方的加速能力的字段时,查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;
处理单元,用于当所述查询单元查询到所述第一SYN报文所携带的服务器地址信息位于所述黑名单内时,则将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。
结合第二方面,在第一种可能的实现方式下,所述处理单元还用于,
如果所述查询单元确定出所述第一SYN报文所携带的所述服务器地址信息不在所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文根据用户配置进行相应的处理。
结合第二方面或第一种可能的实现方式,在第二种可能的实现方式下,所述第一SYN报文的发送方为客户端,所述WOC部署在所述客户端,所述处理单元还用于,
向第一服务器部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
所述接收单元,还用于接收所述第一服务器部署的WOC在接收到所述第二SYN报文之后,发送的携带有所述第一服务器部署的WOC的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的服务器地址信息所对应的服务器。
结合第二方面或第一种可能的实现方式,在第三种可能的实现方式下,所述WOC部署在所述第一服务器,所述第一SYN报文的发送方为部署在客户端的WOC,所述接收单元,还用于,接收所述客户端部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
所述处理单元,还用于向所述客户端部署的WOC发送携带有自身的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的服务器地址信息所对应的服务器。
结合第二方面,在第四种可能的实现方式下,所述第一处理单元还用于,
如果所述第一SYN报文中携带所述第一SYN报文的发送方的加速能力信息,则根据所述第一SYN报文携带的加速能力信息,判断所述第一SYN报文发送方的加速能力和所述WOC的加速能力交集是否为空;
如果为空,则将所述第一SYN报文携带的所述服务器的地址信息添加到所述黑名单中;
如果不为空,则将所述第一SYN报文发送方后续发送的数据报文进行加速处理。
结合第二方面至第四种可能的实现方式中的任一种可能实现方式,在第五种可能的实现方式下,所述第一处理单元还用于,以第一时间阈值为时间间隔更新所述黑名单。
本发明实施例中,通过WOC接收第一SYN报文;如果所述第一SYN报文中没有携带用于描述所述第一SYN报文发送方的加速能力的字段,则查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;如果所述第一SYN报文所携带的所述服务器地址信息位于所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。由于采用黑名单机制,可以避免将不需要转发的报文转发而造成的处理延时,同时将报文在IP层转发,可以减少协议栈的处理延时,增强用户体验。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。
本发明实施例提供的报文处理方法和WOC,当报文无法通过WOC加速时,可以将报文在IP层转发,相比于现有技术在TCP层或在应用层转发,可以减少协议栈的处理延时,增强用户体验。
下述实施例描述的为报文处理方法。图3为本发明实施例一提供的报文处理方法流程图。如图3所示,本发明实施例提供的方法包括以下步骤:
S301,广域网加速控制器WOC接收第一SYN报文。
这里的WOC可以是客户端WOC,也可以是服务器端WOC,图4为客户机和服务器之间通过WOC建立正常的TCP网络连接的信令图。如图4所示,如果这里的WOC是客户端WOC1,则接收的第一SYN报文来自客户端;如果这里的WOC为服务器端WOC2,则这里的第一SYN报文来自客户端WOC1,或者,如果图4中没有WOC1,则WOC2会接收到来自客户端的第一SYN报文。
这里首先对SYN报文做简要阐述:SYN报文是建立TCP连接时使用的握手信号。如图4所示,在客户机、WOC和服务器之间建立正常的TCP网络连接时,都是发送方(可以是客户机、WOC1或WOC2)首先发出一个SYN消息,接收方(可以是WOC、WOC2或服务器)使用合成器确认(Synthesizer Acknowledge,SYN ACK)应答表示接收到了这个消息,最后发送方再以ACK消息响应。具体如图4中的步骤401至步骤409所示,这样在发送方和接收方之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
S302,如果第一SYN报文中没有携带用于描述第一SYN报文发送方的加速能力的字段,则查询该WOC的黑名单,该黑名单用于存储不能通过该WOC进行加速处理的报文所携带的服务器地址信息。
为使该WOC知道所述第一SYN报文发送方(可能是客户端或客户端WOC)的WOC的加速能力,需要在向该WOC发送的第一SYN报文中添加一个字段,为叙述方便,这里以私有option字段为例(也可以是其他可用的字段),如图4中的404、405所示,所述私有option字段用于描述所述第一SYN报文发送方的WOC的加速能力。
下面对第一SYN报文中的option字段做简要说明,option字段是TCP头部的扩展字段,用户可以添加固定长度以内的信息到扩展字段,而不影响TCP协议本身的交互。这里将描述WOC的加速能力的option成为私有option,第一SYN报文中的option的定义如表1所示:
表1第一SYN报文中的option定义
从表1中可以看出:扩展option共占12个字节(byte)。其中KIND表示协议头,可提供修改该值的接口,以尽量避免冲突,占1byte;LEN=13,占1byte;VERSION为设备版本占用1byte;DEVICE ID表示设备的ID,用mac表示、占用4bytes;RESERVED是保留字段,占用1bytes;TPO表示是否支持传输优化,占4比特(bits);LZ表示是否支持压缩,支持什么样的压缩,占4bits;DRE表示是否支持数据去重,1bits;CONN表示是否支持连接池、连接复用,占3bits;AO表示是否支持应用优化,支持什么样的应用优化,占12bits。
字段TPO、LZ、DRE、CONN和AO可以表示WOC的加速能力,如果数据链路中有两个WOC,例如:WOC1的加速能力如表2所示,WOC2的加速能力如表3所示:
表2WOC1的加速能力
TPO |
LZ |
DRE |
CONN |
AO |
支持 |
不支持 |
支持 |
不支持 |
支持 |
表3WOC2的加速能力
TPO |
LZ |
DRE |
CONN |
AO |
不支持 |
支持 |
不支持 |
支持 |
不支持 |
从表2和表3可以看出,通过私有option中的五个字段可以判断出WOC1和WOC2的加速能力是不一样的。
由于经过该WOC的报文可能需要加速,可能需要转发,也可能需要根据用户设置做其它处理,而对报文加速设置WOC的最终目的,因此,客户端需要判断来接收到的第一SYN报文中是否有私有option字段。
如果第一SYN报文中没有携带所述私有option字段,说明发出第一SYN报文的设备没有加速能力,因此可以确定报文无法通过该WOC加速,如果无法加速,则可能需要对报文转发或进行其它处理,要确定是否需要对报文转发,需要查询黑名单,即根据所述SYN报文中的服务器的互联网协议IP地址和服务器监听端口查询客户端WOC黑名单。
S303,如果第一SYN报文所携带的服务器地址信息位于上述黑名单内,则将第一SYN报文的发送方后续发送的数据报文通过IP层转发。
具体地,如果传输的报文对应的节点位于所述黑名单内,说明该报文需要转发,因此,将第一SYN报文的发送方后续发送的数据报文通过IP层转发。由于将报文在底层处理比在高层处理所用的时间相对较少,因此,相比于现有技术中的在TCP层或在应用APP层转发,可以减少协议栈的处理延时,增强用户体验。
优选地,在一个实施例中,本发明实施例的报文处理方法还包括:
如果第一SYN报文所携带的服务器地址信息不在上述黑名单内,则将第一SYN报文的发送方后续发送的数据报文根据用户配置进行相应的处理。
进一步地,如图4所示,如果第一SYN报文的发送方为客户端,该WOC部署在该客户端,如果第一SYN报文所携带的服务器地址信息不在该黑名单内,则本发明实施例的报文处理方法还包括:
该WOC向第一服务器部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
接收第一服务器部署的WOC在接收到第二SYN报文之后,发送的携带有第一服务器部署的WOC的加速能力信息的SYN ACK报文;其中,第一服务器为第一SYN报文所携带的服务器地址信息所对应的服务器。
在另一个实施例中,如果该WOC部署在所述第一服务器,第一SYN报文的发送方为部署在客户端的另一WOC,如果第一SYN报文所携带的服务器地址信息不在该黑名单内,则本发明实施例的报文处理方法还包括:
接收所述客户端部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
向该客户端部署的WOC发送携带有自身的加速能力信息的SYN ACK报文;其中,第一服务器为第一SYN报文所携带的服务器地址信息所对应的服务器。
优选地,在另一个实施例中,本发明实施例的报文处理方法还包括:
如果第一SYN报文中携带有用于描述第一SYN报文的发送方的加速能力的字段,则根据携带的该字段,判断第一SYN报文发送方的加速能力和该WOC的加速能力交集是否为空;
如果为空,则将第一SYN报文携带的服务器的地址信息添加到该黑名单中,并且不对第一SYN报文发送方后续发送的数据报文进行加速处理;
如果不为空,则将第一SYN报文发送方后续发送的数据报文进行加速处理。
具体地,该WOC与对端设备三次握手完成后,有两种情况将<server ip,server监听端口>存入黑名单。
a)该WOC的对端设备不是WOC;
b)该WOC与对端的WOC的能力交集为空。
在本发明实施例中,通过第一SYN报文中携带有用于描述该第一SYN报文的发送方的加速能力的字段,来判断第一SYN报文发送方的加速能力和该WOC的加速能力交集是否为空。例如假设WOC1的能力为:
WOC2的加速能力为:
TPO |
LZ |
DRE |
CONN |
AO |
不支持 |
支持 |
不支持 |
支持 |
不支持 |
那么这种情况下,WOC1和WOC2能力交集为空,无法实现报文传输加速。
另外,黑名单也有老化机制,可以第一时间阈值为时间间隔更新黑名单,这样可以防止网络拓扑改变后原本不可加速的流可以加速的情况,第一时间阈值可以根据实际需要设定。
上述实施例描述的为,通过WOC接收第一SYN报文;如果所述第一SYN报文中没有携带用于描述所述第一SYN报文发送方的加速能力的字段,则查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;如果所述第一SYN报文所携带的所述服务器地址信息位于所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。由于采用黑名单机制,可以避免将不需要转发的报文转发而造成的处理延时,同时将报文在IP层转发,可以减少协议栈的处理延时,增强用户体验。
相应地,本发明实施例提供了与上述实施例一的报文处理方法对应的WOC。图6为本发明实施例二提供的WOC结构示意图。如图6所示,本发明实施例提供的WOC包括:接收单元601、查询单元602和处理单元603。
接收单元601,用于接收第一SYN报文;
查询单元602,用于如果第一SYN报文中没有携带用于描述第一SYN报文发送方的加速能力的字段,则查询该WOC的黑名单,其中,这里的黑名单用于存储不能通过该WOC进行加速处理的报文所携带的服务器地址信息;
处理单元603,用于当查询单元602查询到第一SYN报文所携带的服务器地址信息位于黑名单内时,将第一SYN报文的发送方后续发送的数据报文通过IP层转发。
其中,处理单元603还用于,如果第一SYN报文所携带的服务器地址信息不在上述黑名单内,则将第一SYN报文的发送方后续发送的数据报文根据用户配置进行相应的处理。
在一个实施例中,如果第一SYN报文的发送方为客户端,且该WOC部署在该客户端,则处理单元603还用于,
向第一服务器部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
相应地,接收单元601,还用于接收第一服务器部署的WOC在接收到第二SYN报文之后,发送的携带有第一服务器部署的WOC的加速能力信息的SYN ACK报文;其中,第一服务器为第一SYN报文所携带的服务器地址信息所对应的服务器。
在另一个实施例中,如果该WOC部署在上述第一服务器,第一SYN报文的发送方为部署在客户端的另一WOC,则接收单元601,还用于接收该客户端部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
处理单元603,还用于向该客户端部署的WOC发送携带有自身的加速能力信息的SYN ACK报文;其中,第一服务器为第一SYN报文所携带的服务器地址信息所对应的服务器。
进一步的,在另一个实施例中,处理单元603还用于,如果第一SYN报文中携带第一SYN报文的发送方的加速能力信息,则根据第一SYN报文携带的加速能力信息,判断第一SYN报文发送方的加速能力和该WOC自身的加速能力交集是否为空;
如果为空,则将第一SYN报文携带的服务器的地址信息添加到上述黑名单中,并且不对第一SYN报文发送方后续发送的数据报文进行加速处理;
如果不为空,则将第一SYN报文发送方后续发送的数据报文进行加速处理。
优选地,处理单元603,还用于以第一时间阈值为时间间隔更新上述黑名单。
上述实施例描述的为,通过接收第一SYN报文;如果所述第一SYN报文中没有携带用于描述所述第一SYN报文发送方的加速能力的字段,则查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;如果所述第一SYN报文所携带的所述服务器地址信息位于所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。由于采用黑名单机制,可以避免将不需要转发的报文转发而造成的处理延时,同时将报文在IP层转发,可以减少协议栈的处理延时,增强用户体验。
图7为本发明实施例四提供的WOC结构示意图,如图7所示,所述报文处理装置包括:至少一个通信接口71、处理器72、存储器73和***总线74。通信接口71、处理器72和存储器73通过***总线74连接并完成相互间的通信。所述***总线可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器73用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器73可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
在一个实施例中,处理器72通过读取存储器73中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于:
通过所述通信接口接收第一SYN报文;
判断所述第一SYN报文中是否携带用于描述所述SYN报文发送方的加速能力的字段;如果所述SYN报文中没有携带用于描述所述SYN报文发送方的加速能力的字段,则查询所述WOC的黑名单,所述黑名单用于存储不能通过所述WOC进行加速处理的报文所携带的服务器地址信息;
如果所述第一SYN报文所携带的服务器地址信息位于所述黑名单内,则利用所述通信接口将所述第一SYN报文的发送方后续发送的数据报文通过IP层转发。
具体地,所述处理器72还用于通过读取并执行所述存储器73中存储的可执行程序代码,以用于:
如果所述第一SYN报文所携带的所述服务器地址信息不在所述黑名单内,则将所述第一SYN报文的发送方后续发送的数据报文根据用户配置进行相应的处理。
所述第一SYN报文的发送方为客户端,所述WOC部署在所述客户端,所述处理器72还用于通过读取并执行所述存储器73中存储的可执行程序代码,以用于:
所述WOC向第一服务器部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
所述第一服务器部署的WOC在接收到所述第二SYN报文之后,向所述WOC发送携带有所述第一服务器部署的WOC的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的所述服务器地址信息所对应的服务器。
所述第一SYN报文的发送方为部署在客户端的WOC,所述WOC部署在所述第一服务器端,所述处理器72还用于通过读取并执行所述存储器73中存储的可执行程序代码,以用于:
所述WOC向所述客户端部署的WOC发送携带有自身的加速能力信息的第二SYN报文;
所述客户端部署的WOC在接收到所述第二SYN报文之后,向所述WOC发送携带有所述客户端部署的WOC的加速能力信息的SYN ACK报文;其中,所述第一服务器为所述第一SYN报文所携带的所述服务器地址信息所对应的服务器。
所述处理器72还用于通过读取并执行所述存储器73中存储的可执行程序代码,以用于:
如果所述第一SYN报文中携带所述第一SYN报文的发送方的加速能力信息,则根据所述第一SYN报文携带的加速能力信息,判断所述第一SYN报文发送方的加速能力和所述WOC的加速能力交集是否为空;
如果为空,则将所述第一SYN报文携带的所述服务器的地址信息添加到所述黑名单中,并且不对所述第一SYN报文发送方后续发送的数据报文进行加速处理;
如果不为空,则将所述第一SYN报文发送方后续发送的数据报文进行加速处理。
其中,上述流程的具体细节,可以参照上述方法及装置实施例,此处不再赘述。
处理器72可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
需说明的是,上述处理器73除了具有上述功能之外,还可用于执行上述方法实施例中的其他流程,在此不再赘述。
通信接口71主要用于实现本实施例的流量来源确定设备与其他设备或装置之间的通信。在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。