【F5 UDP負載均衡】抓包實踐,說說F5 UDP硬負載均衡探測後端伺服器存活的原理
專案背景
兩臺UDP SERVER,通過F5實現硬體的UDP負載均衡,發現UDP SERVER上會定期收到F5的UDP探測包,但是UDP SERVER並沒有對這些探測包做過任何響應,所以不明白F5是如何知道UDP SERVER是活的還是死的?
兩臺UDP SERVER
172.28.17.52
172.28.17.54
VIP
172.28.26.13
主備F5
當把兩臺UDP SERVER都停掉之後,F5顯示如下:
紅色代表不可達
當單獨啟動52的UDP SERVER後,F5顯示如下:
52的伺服器上日誌顯示一直在收包,ip是F5的
但是就程式而言,本身是並沒有對探測包做出任何響應的,所以抓包看看
52的機器上只發現有F5來的探測包,並沒有發現有52回過去的響應包
54上再抓包,54程序停掉了
54程序不在,F5依然是在持續的發探測包的,UDP,同時可以看出54給F5回了ICMP的包,destination unreachable,搞之F5裝置,當前機器不可達,此時F5就知道了54不可達,隨即更自己維護的節點狀態資訊
那麼ICMP報文的作用是什麼呢?
ICMP協議主要用來檢測網路通訊故障和實現鏈路追蹤,最典型的應用就是PING和tracerooute。 PING: 通過傳送回送請求報文和回送回答報文來檢測源主機到目的主機的鏈路是否有問題,目的地是否可達,以及通訊的延遲情況。 traceroute: 通過傳送探測報文來獲取鏈路地址資訊。第一個探測報文TTL為1,到達第一個路由器時,TTL減1為0所以丟掉這個探測包,同時向源主機發回ICMP時間超過報文,這時源主機就獲得了第一個路由器的IP地址;接著源主機發送第二個探測報文,TTL增1為2,到達第一個路由器TTL減1為1並轉發探測包到第二個路由器,這時TTL減1為0,丟掉這個探測包並向源主機發回ICMP時間超過報文,源主機就獲得了第二個路由器的IP地址;以此類推,直到探測報文到達traceroute的目的地,這時源主機就獲得了到目的地的每一跳路由的IP地址。 |
由此不難看出為什麼F5能知道後端real server的節點狀態了