F5 会话处理流程描述(参数说明)及Q&A_20100120.doc

上传人:苏美尔 文档编号:7199782 上传时间:2020-11-05 格式:DOC 页数:15 大小:888.50KB
返回 下载 相关 举报
F5 会话处理流程描述(参数说明)及Q&A_20100120.doc_第1页
第1页 / 共15页
F5 会话处理流程描述(参数说明)及Q&A_20100120.doc_第2页
第2页 / 共15页
F5 会话处理流程描述(参数说明)及Q&A_20100120.doc_第3页
第3页 / 共15页
F5 会话处理流程描述(参数说明)及Q&A_20100120.doc_第4页
第4页 / 共15页
F5 会话处理流程描述(参数说明)及Q&A_20100120.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《F5 会话处理流程描述(参数说明)及Q&A_20100120.doc》由会员分享,可在线阅读,更多相关《F5 会话处理流程描述(参数说明)及Q&A_20100120.doc(15页珍藏版)》请在三一文库上搜索。

1、F5 会话处理流程(参数说明)及Q&A一. TCP状态转换图1、建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。2、连接终止协议(四次握手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个F

2、IN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。(1)TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。(3) 服务器关闭客户端的连接,发送一个FIN给客户端。(4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1。3、连接状态说明CLOSED:这个没什么好说的了,表示初始状态。LISTEN:这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接

3、受连接了。SYN_RCVD:这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。SYN_SENT:这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_

4、SENT状态表示客户端已发送SYN报文。ESTABLISHED:这个容易理解了,表示连接已经建立了。FIN_WAIT_1:这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难

5、见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。TIME_WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。CLOSING:这种状态比较特殊,实际情况中应该是很少见

6、,属于一种比较罕见的例外状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。CLOSE_WAIT:这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统

7、毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。LAST_ACK:这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。二. F5 TCP 连接管理及参数说明1. F5 TCP建立过程及相关参数说明如图:Standard VS/TCP Profi

8、le的连接建立过程如图:Standard VS/TCP/HTTP Profile(七层应用)的连接建立过程2. F5 TCP RST过程及TCP PORFILE中Reset on timeout选项 F5 VS 收到任何一方会话中发送的RST包,F5 VS行为为立即转发,并清除F5中本会话连接。 TCP PORFILE中Reset on timeout选项,意为当F5 VS中的会话超出idle 超时时间值后, F5 VS将向客户端、服务器同时发RST,并删除自身VS中会话链接。此项默认值为启用状态。 3. F5 TCP关闭过程及相关参数说明下图是客户端主动发起关闭应用时的TCP连接关闭过程以及

9、F5设备相应状态,总体上在这种情况下,F5会首先通过四次握手先关闭服务器端TCP连接,再关闭客户端连接具体如下图所示:下图是服务器端主动发起关闭应用时的TCP连接关闭过程以及F5设备相应状态,总体上在这种情况下,F5会首先通过四次握手先关闭客户端TCP连接,再关闭服务器端连接具体如下图所示:针对以上参数,F5设备上相关的配置项Time Wait2000 (缺省)OptionsSpecify: User specified amount of time (in milliseconds) that a TCP connection remains in the TIME-WAIT state b

10、efore entering the CLOSED stateImmediate: This option specifies that the system closes the connection immediately after the connection enters the TIME-WAIT state Indefinite: This option specifies that TCP connections can remain in the TIME-WAIT state indefinitelyThis setting specifies the length of

11、time (in milliseconds) that a TCP connection remains in the TIME-WAIT state before entering the CLOSED state.Fin Wait5 (Default)Options:Specify: User specified amount of time (in seconds) that a TCP connection is in the FIN-WAIT or CLOSING state before closingImmediate: This option specifies that th

12、e TCP connection closes immediately after entering the FIN-WAIT or CLOSING stateIndefinite: This option specifies that TCP connections in the FIN-WAIT or CLOSING state do not quitThis setting specifies the length of time (in seconds) that a TCP connection is in the FIN-WAIT or CLOSING state before c

13、losing.Close Wait5 (Default)Options:Specify: User specified amount of time (in seconds) that a TCP connection remains in the LAST-ACK state before quittingImmediate: This option specifies that the TCP connection closes immediately after entering the LAST-ACK stateIndefinite: This option specifies th

14、at TCP connection in the LAST-ACK state do not close until they meet the maximum retransmissions timeout.This setting specifies the length of time (in seconds) that a TCP connection remains in the LAST-ACK state before quitting.三. F5 Standard VS/TCP Profile / Standard VS/TCP/HTTP Profile(七层应用) 时间值及行

15、为产品 :F5 big ip 8400(OS:9.3.1)tcp-idle-timeoutsyn-timeoutrstfin-waitclose-waittime-waitPersistenceStandard VS/TCP Profile / Standard VS/TCP/HTTP Profile(七层应用) 300s与 tcp idle-timeout相同 0秒5秒5秒2s60分(自定义)四. F5 VS 异常场景行为及计时器的使用 场景产品 :F5 big ip 8400(OS:9.3.1)tcp-idle-timeoutsyn-timeoutrstfin-waitclose-wait

16、time-waitPersistenceStandard VS/TCP Profile / Standard VS/TCP/HTTP Profile(七层应用) 300s与 tcp idle-timeout相同 0秒5秒5秒2s60分(自定义)场景行为 &超时后行为双向发RST双向发RST双向发RST双向发RST双向发RST根据负载均衡算法,重新分发1异常情况下:客户端发SYN- F5 SYN_ACK后,客户端不再发ACK包,F5对此会话如何处理(对客户端)?自身对本会话如何处理?F5 此时对会话的响应所使用的计时器是那个,时间值是多少,即SYNWait TIMEOUT是多少?这种情况f5会进

17、入半连接状态,一直等到idle timeout超时(缺省设置为300s),该计时器在tcp profile中可定义.不刷新不刷新2针对TMOS 9.3.1版本中,后台server全部down掉的情况下,客户端对F5VS 进行建链请求,F5 VS完成TCP 三次握手后,立即向客户端发送RST包,此时,客户端同时向F5发HTTP GET请求,这时,F5对客户端后面这个HTTP GET 请求,其行为是什么?是否发Reset包?(应用系统故障时,抓包,未看到后面的F5发的RST包)1、F5在发出第一个RESET后,会立即清除自身的连接。2、对于F5后续收到http get 请求,因没有匹配的sessi

18、on,F5会将该包丢弃.在9.3.1版本中,不再发RESET.不刷新3正常状态下(F5 VS、member服务器正常),客户端发RST包,F5的如何处理响应,对自身会话如何处理,计时器用那个,时间是多少?同样,如服务器端发RST包,F5如何处理响应,对自身会话如何处理,计时器用那个,时间是多少? 如后续在此会话上,仍有相同的数据请求到达F5 VS,F5如何处理响应 ,对自身会话如何处理,计时器用那个,时间是多少无论是客户端还是服务器端发送reset给f5的VS,f5会立即清除相关的连接,没有相关联的计时器4正常状态下,在tcp profile中选择reset on timeout后, F5到了

19、tcp-idletimeout 后主动向服务器端、客户端同时发rst并立即拆除session。此时,如后续客户端有数据请求包到F5 VS,而F5此时已清除了SESSION,那么F5如何响应客户端的请求,是发RST包给客户端,还是新建或直接丢弃?计时器使用那个?如果是新的连接(syn 请求),重新建立连接;如果是其它状态的包,由于没有匹配的session,f5会将该包丢弃。并且F5 向请求方(客户端)发RST。5正常状态下(F5 VS、member服务器正常),客户端与F5 vs之间、F5与MEMBER(SER)均已完成建链,此时,后台MEMBER服务器服务PORT DOWN/UP,存在两种情况

20、:(F5 的POOLMEMBER MONITOR INTERVAL 5s TIMEOUT 16S) A. 如member 的服务PORT 在16S内(含)一直为DOWN状态 客户端后续数据请求包,F5如何处理响应?F5 vs本身对此SESSION的如何处理?F5在是否会直接将后续请求包直接发给其他MEMBER? 还是F5VS 保持与客户端当前会话,F5与其也MEMBER建链,然后,再将其转发至新VS MEMBER中?还是F5会强制客户端重新建链,重新分配会话到其他MEMBER.F5会清除原有session。强制客户端重新建链,重新分配会话到其他MEMBER.F5处理方法 (双向发RST包,对客

21、户端、服务器),对自身SESSION 行为:立即清除。6B . 如Pool Member 的服务Port 在16S内(含)恢复UP服务状态 客户端后续数据请求包,F5如何处理响应?F5 vs本身对此SESSION的如何处理?厂商回复: F5会视作服务器正常,处理数据包行为没有改变。7F5 VS 为standar 类型,VS中的MEMBER 全DOWN后,VS对外仍提供会话建链,属F5正常机制(VS属性),非版本区别?厂商回复:正常机制,所有版本都是这种方式8F5 VS 收到FIN (首个FIN包,不区分服务器、客户端) 后,转发给另一端(服务器或客户端),进行Fin wait 1状态,并进入5

22、S的超时计时。如首个FIN的ACK包未能在5S内收到 ,F5的行为是什么?以什么行为向PCSERVER拆链,即 F5设备VS 在FIN-TIME out的动作行为。厂商回复: F5设备在fin time out 后如果在tcp profile中选择reset on timeout后,会触发向客户端和服务器端同时发送reset数据包,同时删除相关连接表,如果不选择reset on timeout ,F5设备只清除本地相关连接表,不做其它动作处理.9 F5 收到第一个FIN包(不管CLIENTSERVER), FIN TIMEOUT进入5秒超时计时,此值非绝对值,即如后续有包匹配SESSION,即

23、触发TIMER 重新计时 ? 这种机制是否对CLOSE WAIT 计时器同等生效? 如CLOSE WAIT计时器与 FIN WAIT计时器刷新机制不一致,那么下面情况下,F5对会话的处理响应行为是什么? 等待中,数据包匹配,刷新重新计时等待中,数据包匹配,刷新重新计时等待中,数据包匹配,刷新重新计时10 以客户端发起FIN为例,当F5收到CLIENT FIN后,进入CLOSE wait状态,并开始计时器倒计时,如F5与SERVER之间的两个FIN过程超出5S时或仍有数据传送,F5将会在CLOSE wait计时器倒计时5s后,根据上面的第一点的行为(选择RESET ON TIMEOUT),是否进

24、行RESET双向拆链。厂商回复:无论是在close-wait,还是last-ack状态下都会进行5s倒计时。超过该时间设定,reset on timeout拆连接。五. F5 Q &A场景: 硬件: F5 big-ip LTM 8400软件 : 9.3.1 37.1VS TYPE : 主机Virtual ServerProfile : Standard VS/TCP Profile / Standard VS/TCP/HTTP Profile(七层应用) 1、关于F5 VS建立TCP会话时的TCP SYN 包的处理行为Q&A 上面的截取的客户端与F5的TCP建链过程:1)、正常情况下,F5的与

25、客户端的完成三次握手的建链时间是多少(CLIENT SYN- F5 SYN_ACKCLIENT ACK)? 厂商回复:这个要根据网络的具体情况(延时,带宽等)而异,附件是我的一个正常访问的数据抓包,可以参考一下.2)、异常情况下:客户端发SYN- F5 SYN_ACK后,客户端不再发ACK包,F5对此会话如何处理(对客户端)?自身对本会话如何处理?F5 此时对会话的响应所使用的计时器是那个,时间值是多少,即SYNWait TIMEOUT是多少?厂商回复:这种情况f5会进入半连接状态,一直等到idle timeout超时(缺省设置为300s),该计时器在tcp profile中可定义.2、关于F

26、5 VS对会话中TCP RST数据包的处理行为1)针对TMOS 9.3.1版本中,后台server全部down掉的情况下,客户端对F5VS 进行建链请求,F5 VS完成TCP 三次握手后,立即向客户端发送RST包,此时,客户端同时向F5发HTTP GET请求,这时,F5对客户端后面这个HTTP GET 请求,其行为是什么?是否发Reset包?(应用系统故障时,抓包,未看到后面的F5发的RST包)。厂商回复:F5对RST后收到http get 请求,因无会话将直接丢弃,在当前9.3.x版本,不会发rst包.(F5 case :Case Number C620307确认)1、F5在发出第一个RES

27、ET后,会立即清除自身的连接。2、对于F5后续收到http get 请求,因没有匹配的session,F5会将该包丢弃.在9.3.1版本中,不再发RESET.2)正常状态下(F5 VS、member服务器正常),客户端发RST包,F5的如何处理响应,对自身会话如何处理,计时器用那个,时间是多少?同样,如服务器端发RST包,F5如何处理响应,对自身会话如何处理,计时器用那个,时间是多少? 如后续在此会话上,仍有相同的数据请求到达F5 VS,F5如何处理响应 ,对自身会话如何处理,计时器用那个,时间是多少?厂商回复:无论是客户端还是服务器端发送reset给f5的VS,f5会立即清除相关的连接,没有

28、相关联的计时器。3)、正常状态下,在tcp profile中选择reset on timeout后, F5到了tcp-idletimeout 后主动向服务器端、客户端同时发rst并立即拆除session。此时,如后续客户端有数据请求包到F5 VS,而F5此时已清除了SESSION,那么F5如何响应客户端的请求,是发RST包给客户端,还是新建或直接丢弃?计时器使用那个? 厂商回复:如果是新的连接(syn 请求),重新建立连接;如果是其它状态的包,由于没有匹配的session,f5会将该包丢弃。4)、正常状态下(F5 VS、member服务器正常),客户端与F5 vs之间、F5与MEMBER(SE

29、R)均已完成建链,此时,后台MEMBER服务器服务PORT DOWN/UP,存在两种情况:(F5 的POOLMEMBER MONITOR INTERVAL 5s TIMEOUT 16S) A. 如member 的服务PORT 在16S内(含)一直为DOWN状态 客户端后续数据请求包,F5如何处理响应?F5 vs本身对此SESSION的如何处理?F5在是否会直接将后续请求包直接发给其他MEMBER? 还是F5VS 保持与客户端当前会话,F5与其也MEMBER建链,然后,再将其转发至新VS MEMBER中?还是F5会强制客户端重新建链,重新分配会话到其他MEMBER.厂商回复:F5会清除原有ses

30、sion。强制客户端重新建链,重新分配会话到其他MEMBER.F5处理方法 (双向发RST包,对客户端、服务器),对自身SESSION 行为:立即清除。 B . 如Pool Member 的服务Port 在16S内(含)恢复UP服务状态 客户端后续数据请求包,F5如何处理响应?F5 vs本身对此SESSION的如何处理?厂商回复:F5会视作服务器正常,处理数据包行为没有改变。5)、F5 VS 为standar 类型,VS中的MEMBER 全DOWN后,VS对外仍提供会话建链,属F5正常机制(VS属性),非版本区别? 厂商回复:正常机制,所有版本都是这种方式。3、关于F5 VS对会话中TCP F

31、IN数据包的处理行为Q&A 1) F5 VS 收到FIN (首个FIN包,不区分服务器、客户端) 后,转发给另一端(服务器或客户端),进行Fin wait 1状态,并进入5S的超时计时。如首个FIN的ACK包未能在5S内收到 ,F5的行为是什么?以什么行为向PCSERVER拆链,即F5设备VS 在FIN-TIME out的动作行为。厂商回复: F5设备在fin time out 后如果在tcp profile中选择reset on timeout后,会触发向客户端和服务器端同时发送reset数据包,同时删除相关连接表,如果不选择reset on timeout ,F5设备只清除本地相关连接表,

32、不做其它动作处理.2)、 F5 收到第一个FIN包(不管CLIENTSERVER), FIN TIMEOUT进入5秒超时计时,此值非绝对值,即如后续有包匹配SESSION,即触发TIMER 重新计时 ? 这种机制是否对CLOSE WAIT 计时器同等生效? 如CLOSE WAIT计时器与 FIN WAIT计时器刷新机制不一致,那么下面情况下,F5对会话的处理响应行为是什么?厂商回复: 以客户端发起FIN为例,当F5收到CLIENT FIN后,进入CLOSE wait状态,并开始计时器倒计时,如F5与SERVER之间的两个FIN过程超出5S时或仍有数据传送,F5将会在CLOSE wait计时器倒计时5s后,根据上面的第一点的行为(选择RESET ON TIMEOUT),进行RESET双向拆链。请确认。厂商回复:无论是在close-wait,还是last-ack状态下都会进行5s倒计时。超过该时间设定,reset on timeout拆连接。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1