关于实现ScreenOS的多链路负载均衡功能

来源:互联网 发布:js获取button点击事件 编辑:程序博客网 时间:2024/05/21 06:29

http://blog.jnsms.com/article.php?type-blog-itemid-106.html

  4月24日至25日,因新增宽带,为实现双链路,于是对学校网络防火墙进行了重新布署,现将布署过程中利用的几种不同的手段总结如下:  
  ECMP  
  用两条链路接入互联网,则可设置两条静态默认路由 (ScreenO中静态路由cost值默认都为1) 分别指向两个不同的下一跳地址,并打开ECMP功能,同时指定需要负载均衡的链路条数;另外可在防火墙连接两条链路的接口上都打开NAT功能,这样所有流量都会在两条链路上进行负载分担并转换成公网IP去往互联网。  
  Network->Routing->Virtual Router->Edit  
  或通过命令行set max-ecmp-routes 2来启用ECMP功能,由于ScreenOS最多支持四条链路的负载均衡,因此还可使用set max-ecmp-routes 3或set max-ecmp-routes 4 。  
  
  由于防火墙是状态检测设备,因此流量会基于会话以轮询的方式进行负载均衡;举个例子,假如共有100个会话,如果在两条链路上打开ECMP功能的话,则其中约50个会话从链路一出去,约50个会话会从链路二出去。  
  ECMP功能的好处是配置简单,但其缺点也是显而易见的,即它不能智能地依据路由远近去分配流量,而是绝对平均地以轮询的方式分配所有会话到不同链路,这样有可能导致某些流量不能从最佳路由出去。  
  另外ECMP还有一个缺点是跟某些应用不兼容。如学校邮箱和网上银行等出现无法登录,究其原因是这些应用是多连接的应用,且该应用要求每个连接都来自同一个IP地址,在打开防火墙ECMP的情况下,由于同一个用户发起的两个连接中的一个从链路一出去, 第二个连接从另一链路出去,导致这些应用运行不正常。虽然通过打开ScreenOS的nat stick功能set dip sticky,即保证来自同一个源IP的不同会话始终被翻译成同一个IP地址来解决应用兼容性问题,但效果不是很理想。  
 
  基于源地址的路由 (PBR)  
  实现流量复杂均衡还有一个手段就是采用源地址路由的方式。一般的三层转发设备都是通过查询路由表 (存放基于目标地址的路由) 来实现路由选路,而源地址路由(PBR)方式提供了另外一个手段,即防火墙会先查询某预先定义的特殊路由表(PBR 路由表)来进行路由查询,当PBR路由表中没有命中的路由条目时再去查询默认的路由表;也就是说,PBR路由表的优先级比默认路由表高。  
  而PBR路由表中存放的路由都不是按照目标地址来进行选路的,而是基于别的一些因素;比如源地址,源端口,目标地址,目标端口以及IP包头的COS字段这5者的任意组合。因此完全可以利用该特性按照内网用户的源地址属性进行选录。  
  针对我校本例,我校使用两条链路,两条带宽为电信10M动态,校园网内按区域划分为多个网段,通过PBR将3个网段从PPPOE拨号的10M动态链路送出去,其余网段从DHCP10M动态链路送出去以实现负载均衡。即具体为172.16.12.0、13.0、14.0共用一条线路,172.16.9.0、10.0、11.0、15.0、16.0、17.0、18.0、19.0、20.0、21.0共用另一条线路。  
  ……  
set route 172.16.0.0/16 interface ethernet0/0 gateway 172.16.10.2 preference 20  
set route source 172.16.11.0/26 interface ethernet0/2 preference 20  
set route source 172.16.12.0/24 interface ethernet0/1 preference 20  
set route source 172.16.13.0/24 interface ethernet0/1 preference 20  
set route source 172.16.14.0/24 interface ethernet0/1 preference 20  
set route source 172.16.15.0/26 interface ethernet0/2 preference 20  
set route source 172.16.16.0/26 interface ethernet0/2 preference 20  
set route source 172.16.17.0/26 interface ethernet0/2 preference 20  
set route source 172.16.19.0/26 interface ethernet0/2 preference 20  
set route source 172.16.18.0/26 interface ethernet0/2 preference 20  
set route source 172.16.20.0/26 interface ethernet0/2 preference 20  
set route source 172.16.21.0/26 interface ethernet0/2 preference 20  
set route source 172.16.9.0/26 interface ethernet0/1 preference 20  
  ……  
 
  基于目标地址的路由  
  为了使流量能够选择最佳路由,最直接的手段就是通过基于目标地址路由的选路方式,比如将所有去往某运营商域内的流量手工的指到到通往该运营商的下一跳路由器上,再另外用一条默认路由将其余流量指向到另外一条链路;如果是电信和网通的两条链路,一般习惯将具体路由指向网通路由器,默认路由指向电信路由器,原因是因为网通的路由条目较少而电信的资源较多。  
  比较常见的基于目标地址路由来实现负载均衡的场合是大学的校园网,由于大学校园网一般都有若干条链路接入internet,比如一条连接电信,一条连接网通,一条连接教育科研网(Cernet),而这三个网络之间的互联互通做得并不好,比如从电信链路出去访问Cernet的资源,会发现延时很大,速度很慢。这时使用基于目标地址的路由可以最大程度保证流量选择最佳路由出去。我校采用的是电信两条线路,此手段不适合布署我校的校园网。

原创粉丝点击