|
昨晚发了一篇《 120版本协议优先级正确使用之我见》。今天继续扒真相。。扒一扒协议分流的真相。
首先,仍然是协议分流的概念解释。顾名思义,识别出连接的协议后,根据用户的配置,将其分流到不同的线路上。
如何做协议识别?以前的路由识别协议都是使用4层信息,即IP+端口,来判断连接是什么协议。比如80就是http,22就是ssh。但在目前的网络应用中,这样老土的识别方式已经跟不上时代了。现在要的是DPI,即深度报文检测(Deep Packet Inspection),也就是爱快所使用的7层协议识别。
什么叫做7层协议识别?这意味着爱快不是使用IP加端口这样固定的信息来判断协议类型,而是通过分析7层数据的内容,来判断这个连接是什么协议的。这比4层识别要复杂的多。4层识别,只需要取得IP报文的地址,以及TCP或者UDP的端口号,就得出结果——这样的结果是不靠谱的。所以这也是为啥爱快的7层识别,占用CPU会比4层的高。跑10圈的能够跑1圈的比吗?
回来再说协议分流。为啥至今协议分流在某些情况下效果不好呢?特别是TCP连接。下面让我来分析一下:TCP连接,开始的时候,要经过三次握手,这三个包不携带任何应用层信息。所以这3个包是肯定不会被爱快的7层协议功能识别出来的。那么就作为未知协议,假设走了链路1吧。到第4个包的时候,假设爱快无比强大,识别出这是XX协议,发现要走链路2。怎么办?这时候,如果让后面的包去走链路2,那么这个连接就废掉了。为啥?同一个TCP连接,怎么能握手包走一个链路,后面的包又走一个链路呢?因此爱快只能让其仍然走握手选择的链路。这就造成了这个连接的分流不准。
但是如果只能这样的话,爱快就没必要推出协议分流了。经过测试,以及论坛上一部分分享,感觉爱快在运行一段时间以后,可以在第一个TCP包就判断出是什么协议——这个,应该是爱快通过以往流量学习到的,从而分流成功。
因此理论上看,使用7层协议识别来进行分流,就不可能做得分流完美。但是从爱快最近内测的120p1版本效果看,协议分流又做了改进。看了7层协议分流,还是有提高的空间。
只要尽量做到完美即可。
|
|