TCP連接建立後,下行和上行經過的路由器是一樣的嗎?

最近伺服器上發現了一個對某ip伺服器http嚴重超時的問題,抓包後發現是丟包重傳嚴重導致的。
經過一系列的traceroute,ping的排查,已經確保從我們自己的伺服器到目標ip的伺服器的所有路由器的延時是正常的。
由於對TCP/IP知識掌握不全面,現在懷疑tcp鏈接建立後,上行和下行經過的路由不同。traceroute等命令只能排查上行的路由擁塞問題,下行的可能查不出來。
我這樣分析對嘛?求TCP/IP大牛指導。


在Internet世界,非對稱路由(去向,來向路徑不同)非常普遍,但是這個問題里關於出方向、入方向的延遲的概念是模糊的,準確地說,ping / traceroute 得到的RTT是包含去向 + 來向的延遲。既然這個值是正常的,說明ICMP消息雙向延遲是可以接受的。

如果想測量單向的延遲,只有使用 smoke ping,使用SNMP MIB Entry 統計得到單向延遲。

一般來說,使用ICMP消息(ping / traceroute)來測量網路延遲有以下局限性:

1)ICMP size 較小
造成Ping延遲小,而TCP size大,有時甚至牽扯到分片,延遲大

2)ICMP與TCP協議號不同
這樣當做多路徑負載均衡時,HASH值不同,可能映射到不同的物理路徑,而不同的路徑延遲大小不一。

所以ICMP延遲小,僅僅只能說明ICMP延遲小,不能證明更多。

這個問題最大的可能是由於丟包率過大造成的,由於連續丟包,造成TCP處於slow start 狀態,一次傳一個包,傳輸效率低。


上下行路徑可能不一樣,這種情況很常見,尤其是如果你連接美國的網路,不同時間點的traceroute結果可能都不同,有可能是中間節點有等價路由,甚至有可能走的是不同的網路(我見過上行走教育網,下行走聯通的校園網)。

我只能告訴你有這種情況,但要怎麼解決我還不太清楚,可能要諮詢中間線路的運營商才能獲得答案。


有可能不一樣的,上下行路徑不一樣有時候會帶來一些問題(特殊應用,一般不會),所以在設計網路時會盡量保證在一個區域網內上下行路徑一致,也只是盡量而已,到了互聯網,這基本上就沒辦法保證了。


有可能,但是這個不是由tcp協議決定的,tcp是運輸層的協議。你要問也該問是不是ip層。因為網路狀況是隨時隨刻都在變化的,很可能一個路由器上行的時候好著,突然就壞了,那麼下行就走另外一條路了。就算同是上行,包還會亂序到達呢。


1. 出問題的那台伺服器不歸題主管理?

2. 一定要使用那條線路/機房嗎?


你和別人通過信件建立了筆友關係,你們兩人的信每次都是同樣的車間和人員投遞嗎?


當然有可能不一樣,不然電信的國際線路怎麼分全程cn2和半程cn2


tcp/ip的提出,就是為了讓每一個ip報文可以走不同的路由。所以上下行的路由很大概率不一樣。

你的報文是長包,還是短包,流速度是多少。鍋不一定要路由背,鏈路速度也是個問題。


上下行路徑不一樣也是比較常見的情況,可以分別從正向和反向traceroute、ping測試。

其實ping、traceroute都是一個往返的過程,顯示的時延都是往返時延之和。通常情況下ping測試和tcp的上下行路徑是一致的。

你描述的情況,從現象上看倒很有可能中間有某個安全設備,而安全設備是基於會話狀態的,上下行路徑不同,導致無法在會話表中匹配到而丟棄。


正反向路由不對稱的很多,尤其對中國這種多運營商混合提供服務的網路來講,中間路徑上的各種優化選路策略,均會導致中間的每一跳都有可能發生變化。


標識一個TCP連接的是(SRC IP/PORT, DST IP/"PORT),跟中間有多少個路由器、哪些路由器無關;另外TCP是L4概念,路由器是L3概念,理論上TCP甚至可以不用IP。


不一定一樣


不一樣,每一個包都有可能不一樣


推薦閱讀:

ipv9是什麼,是騙局還是真的有其事?
TCP網路編程,從socket到消息包,發送接收都是bit,傳輸中兩端怎麼知道哪些bit組成一個協議?
HTTP協議里的請求頭有什麼用?

TAG:計算機網路 | TCPIP |