出向鏈路負載均衡之協議分流

 

在之前的文章《出向鏈路負載也需要智能DNS解析》中介紹了通過控制DNS解析實現運營商地址分佈均衡進而達到鏈路流量均衡,在很多網絡環境中可以實現保證訪問速度的同時,各鏈路流量也達到均衡分配。但在一些鏈路環境下,通過目的地址匹配加DNS控制的方式卻無法達到這樣的效果,尤其在一些高校環境下。其一,用戶網絡不適合DNS輪詢,用戶的內網地址爲教育網公網地址,DNS也使用教育網地址,如果強行做DNS輪詢將會導致教育網的一些域名無法解析;其二,一些網絡的鏈路環境本身不適合,除了同運營商多條鏈路的環境,還有一些極度不均衡的鏈路環境,如某校園網,200M聯通、200M移動、200M教育網三條鏈路,由於移動網絡與教育網內數據資源少,即使用戶完全使用教育網或移動的DNS,聯通鏈路依然是最先被佔滿的。
針對這樣的鏈路環境本文介紹另外一種出向鏈路負載均衡的策略:按四層協議分配流量。
使用四層協議分流的原因是TCP和UDP的所承載的應用協議有很大不同,不同的應用對網絡的要求也不同。在一個網絡中如果打開大多數網站的延遲超過3秒,你可以說這個網絡很慢,但此時該網絡帶寬的利用率可能只有10%,造成訪問慢的原因是網絡延遲而非帶寬,可見http對網絡延遲很敏感;在同樣的網絡打開迅雷下載,會發下載速度很高,這說明迅雷對帶寬敏感,但對延遲毫無感覺。對於網絡用戶,網絡的訪問感受往往來自於http、郵件等基於tcp的應用,而在P2P大行其道的當今網絡,UDP流量往往高於TCP流量很多,針對這樣的特點我們可以使用協議分流的方式,實現兼顧訪問速度和鏈路流量均衡的鏈路負載,即TCP協議流量按照目的地址匹配的方式選擇鏈路,UDP流量通過加權輪詢的方式將流量按比例分配到各出口鏈路。UDP加權輪詢保證了各鏈路負載均衡,不發生擁堵,TCP按目的地址選路實現網絡的最快訪問。下面介紹以下拓撲案例的配置方法:
 

 

 

1、配置鏈路負載均衡設備的接口IP地址,靜態/動態路由等常規配置,這裏不做詳細介紹。
2、配置各鏈路網關並綁定模板。
1)先配置各鏈路的源地址轉換地址;定義健康檢測方法。
聯通網snat-pool
ip nat pool snat-cnc 1.1.1.3 1.1.1.3 netmask /28 
移動網snat-pool
ip nat pool snat-cmcc 2.2.2.3 2.2.2.3 netmask /28 
定義各鏈路健康檢測方法:
ping-cnc-gw
ping-cmcc-gw
ping-cernet-gw
 
2)配置server模板,將1)中配置的snat-pool與health-check在模板中引用
教育網模板不做源nat,調用健康檢測方法。
slb template port tem-cernet
   health-check ping-cernet-gw
聯通網模板做源nat,調用健康檢測方法。
slb template port tem-cnc
   health-check ping-cnc-gw
   source-nat snat-cnc
3)配置各鏈路網關、服務組信息
教育網網關
slb server cernet-gw 1.1.1.1
   health-check ping-cernet-gw
       weight 10
   port 0 udp
       no health-check
   port 0 tcp
       no health-check
此處weight值爲udp請求加權輪詢的權值,配置網關時一定將port配置中的健康檢測關閉,否則默認的檢測會返回探測失敗的結果。移動鏈路網關cmcc-gw和聯通鏈路網關cnc-gw配置同上,只是weight值不同。
 
服務組分別配置TCP、UDP兩種類型服務組,並引入服務器端口模板。
配置TCP的服務組:需要對每條鏈路都定義一個服務組,服務組內鏈路對應的網關配置爲最高優先級(priority值越高,優先級越高,配置實例中服務組只有cernet-gw生效,cnc-gw在cernet-gw健康檢測失敗後纔會生效),按照以下方式定義cnc-gw-tcp、cernet-gw-tcp、cmcc-gw-tcp三條鏈路的tcp協議服務組
slb service-group cernet-gw-tcp tcp
    member cernet-gw:0 template tem-cernet priority 15
    member cnc-gw:0 template tem-cnc priority 10
member cmcc-gw:0 template tem-cmcc priority 5
配置UDP服務組:只需配置一個udp的服務組,服務組中的成員優先級相同,流量分配的方式爲加權輪詢。
slb service-group udp-group udp
    method weighted-rr
    member cernet-gw:0 template tem-cernet priority 5
    member cnc-gw:0 template tem-cnc priority 5
    member cmcc-gw:0 template tem-cmcc priority 5
   
以上配置將源地址nat配置和健康檢測與各鏈路網關綁定,當數據報文按照選路策略選擇某條鏈路時,數據包按照模板做源地址nat;各鏈路的健康狀態也是用模板的檢測方法進行檢測。
 
3、配置出向策略
定義按目的地址做會話保持模板dip-pst:
slb template persist destination-ip dip-pst
導入國內運營商IP地址信息:
bw-list chinaall tftp://172.31.31.100/chinaall.txt
配置tcp按目的地址選路策略:
slb template policy link-select-tcp
   bw-list name chinaall
   bw-list id 1 service-group ctc-gw-tcp
   bw-list id 2 service-group cnc-gw-tcp
   bw-list id 3 service-group cmcc-gw-tcp
   bw-list id 4 service-group cnc-gw-tcp
   bw-list id 5 service-group cmcc-gw-tcp
   bw-list id 6 service-group cernet-gw-tcp
   bw-list id 7 service-group cernet-gw-tcp
   bw-list use-destination-ip
bw-list id 值爲chinaall中每個ip地址後的運營商標識,1到7按順序爲電信、網通、鐵通、聯通、移動、教育、其他。同樣配置link-select-udp策略爲非tcp和udp的其它類協議選路使用。
配置出向策略:
slb virtual-server To-Internet 0.0.0.0
   port 0 tcp
      use-rcv-hop-for-resp
      no-dest-nat
      template policy link-select-tcp
   port 0 others
      name _wildcard_v4_TCP_0
      use-rcv-hop-for-resp
      no-dest-nat
      template policy link-select-udp
   port 0 udp
      name _wildcard_v4_UDP_0
      service-group udp-group
      use-rcv-hop-for-resp
      no-dest-nat
    template persist destination-ip dip-pst

配置中tcp與其它類型的協議使用按目的地址選路,udp使用加權輪詢的方式進行選路。udp加權輪詢中一定要配置基於目的地址的會話保持,以保證udp應用的正常使用,不做此項配置,網內用戶的與某個外網地址的通訊可能通過多鏈路完成,對方的安全機制會當作***阻斷應用。

Z.W.M

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章