山石网科-HCSP之路:防火墙链路负载

发布时间 2023-06-29 10:01:32作者: f_carey

HCSP之路:防火墙链路负载

1 ECMP

  1. 等价多径路由(ECMP)是对经过安全设备的数据流量在多条等价路径(同协议)上进行负载均衡转发的方法。
  2. 最长匹配原则查找路由表,当路由表中有明细路由时,报文先匹配明细路由,如果没有明细路由再查找缺省默认路由。

1.1 ECMP配置

# ECMP选路支持方式,默认基于源/目IP,通过HASH算法分配
ecmp-route-select <[by-5-tuple]/[by-src]/[by-src-and-dst]>

# 开启ECMP功能,默认开启
ip vrouter trust-vr
  ecmp enable <1-1000 > 
# 最多允许1000条等价路由条目进行负载均衡。取值为1即不使用ECMP

2 智能LLB

2.1 智能LLB处理过程

智能LLB (Link Load Balance):系统实时检测链路状态,动态调整不同链路的转发优先级,从而达到链路动态均衡的效果。

  1. 动态检测:系统实时检测链路状态(带宽利用率、延迟、抖动、丢包率),根据检测结果,设置不同链路的转发权重,优质链路优先转发更大的流量。
  2. 动态调整:当链路状态不佳时(如带宽占用率过高、延迟较大、丢包率上升等),系统自动调整链路转发权重,高质量链路权重变大、低质量链路权重变小,并按照一定比例逐步切换流量至高质量链路,避免快速切换产生网络震荡的同时,保证流量优先从最优质的链路转发出去。
  3. 动态恢复:当链路状态恢复后,由于系统对链路状态采用的是实时检测计算的方式,各条链路的转发权重将会重新调整,从而更均衡地转发流量。

2.2 两种均衡模式

  • 高性能(High Performance):此模式下系统会跟据链路实时的时延、抖动、丢包情况,迅速调整以最大限度的保持链路均衡。
  • 高兼容(High Compatibility ):当链路负载变动时,系统不会频繁地切换链路,而是优先保证业务尽量在先前链路上。此模式多适用于对链路切换比较敏感的业务,如银行业务。

2.3 配置智能LLB

# 配置接口实际带宽,用于LLB带宽占用率的计算
interface ethernet0/0 local
  bandwidth downstream 11000000
  bandwidth upstream 10000000
# 创建智能LLB模板和规则
llb profile "LLB-tamper"
  detect threshold 50
exit
llb rule "LLB-rule" id 0 dbr vrouter "trust-vr" 0.0.0.0/0 profile "LLB-tamper"

3 入站Smart DNS

  • 通过内置ISP路由表,匹配入站请求,并返回相应ISP解析地址,避免跨运营商访问,提高访问质量。
  • 能够监测指定的目标(IP地址或者主机)是否可达配置条件包括:ping \http\arp\dns\tcp等,实现多点链路故障检测,自动备份故障链路。
  • 在同一运营商不同链路带宽的情况下,可以返回多个IP时,并使用加权轮询机制对高带宽按权重比例分配解析请求地址。
  • 用户需要将企业内网Web服务对外地址发布的方式更改为域名委派,即当有外网用户侧DNS服务器向企业域名服务商的DNS服务器请求客户内网Web服务域名解析时,返回域名委派服务器地址到防火墙。

3.1 入站Smart DNS配置

# 根据请求的来源确定返回哪一ISP外网地址,或根据出站动态探测生成的路由来确定返回哪个外网地址。
llb inbound smartdns "SmartDNS-rule"
  domain "www.test.com" 
  ip 200.0.0.1 isp "China-telecom" interface "ethernet0/0" weight 1
exit
llb-outbd-prox-detect
track "web-server"
  icmp 192.168.20.6 interface ethernet0/0 src-interface ethernet0/0 
exit
# 监测内部服务器
track "webser"
  icmp 192.168.20.1 interface ethernet0/0 src-interface ethernet0/0 
exit 
interface ethernet0/0
  monitor track "webser"
exit

4 服务器负载

服务器负载均衡功能(SLB),StoneOS中通过DNAT功能实现。

StoneOS支持的服务器负载均衡算法包括:

  • 加权散列算法。默认
  • 加权最小连接数算法
  • 加权轮询算法

4.1 服务器负载配置

# 修改服务器负载均衡算法
load-balance-algorithm {weighted-hash | weighted-round-robin [sticky] | weighted-least-connection [sticky]}

# 配置SLB服务器池并选择负载算法
slb-server-pool pool-name 
  server {ip ip/netmask | ip-range min-ip [max-ip]} [port port-num ]{weight-per-server weight-num} [max-connection-per-server max-num]
  # 指定负载均衡中流量转发的权重。范围是1到255,默认值是1。
  weight-per-server weight-num
  # 指定服务器最大连接数。范围是1到1000000000,默认值是0,表示无最大连接数限制。
  max-connection-per-server max-num
  
# 配置DNAT规则,选择slb-server-pool,并加最后加上load-balance
 dnatrule from src-address to dst-address [service service-name] trans-to trans-to-address [slb-server-pool pool-name][port] [load-balance] 
  • sticky:使每一个源IP产生的所有会话将被映射到同一个服务器上。