ABG(应用负载网关)——终端共享接入检测方案、智能链路负载均衡(LLB)
一、终端共享接入检测方案
1.1 共享接入检测新功能
支持对接入终端超限IP进行日志记录、告警干扰;
支持针对指定IP进行共享接入检测;
支持对接入终端的品牌/型号/操作系统进行识别;
用户可按需升级终端接入检测特征库;
支持对透明模式部署
1.2 识别及控制方式
1.2.1 共享接入识别终端
通过终端识别库来识别接入IP的终端信息(终端品牌、型号、操作系统)
1.2.2 共享接入控制方式
以接入IP为控制对象,以受监控IP下最大共享接入终端数为控制条件,对接入终端超限的IP进行控制,控制动作包括:
--告警干扰:记录日志并向用户推送告警页面,干扰用户访问网络;
设置干扰实践,干扰时间过后自动解除干扰控制,重新开始识别。
---仅记录日志:仅对有超限行为的IP进行日志记录,不影响网络访问
1.3 配置方式
1.3.1 创建共享接入方案(WebUI界面)
可对选中的规则进行上移、下移操作,重新调整规则顺序
共享接入监控
过滤条件:源IP、规则名称、源安全域、接入数量(大于、小于、等于),状态(正常、记录日志、告警)
接入数量:点击对应条目右侧三角形可查看接入终端列表详情
共享接入日志
监控>日志>共享接入日志
共享接入特征库升级
系统>升级管理>特征库升级
1.3.2 共享接入规则配置(CLI)
共享接入规则配置
SG-6000(config)#share-access-detect rule“rule_name”
共享接入规则子视图
SG-6000(config-share-access-detect)#src-zone trust
SG-6000(config-share-access-detect)#src-addr addr1
SG-6000(config-share-access-detect)#src-ip 172.10.0.0/16
SG-6000(config-share-access-detect)#src-range 172.20.0.11 172.20.0.20
SG-6000(config-share-access-detect)#schedule schedule1 //指定检测生效的时间表
SG-6000(config-share-access-detect)#enable //启用规则,默认启用
SG-6000(config-share-access-detect)#disable
SG-6000(config)#access-limit 2 //指定最大可共享接入终端数
SG-6000(config)# action {log-only | warning} //指定超限控制行为
SG-6000(config)# control-duration 60 //指定warning时的干扰时间
SG-6000(config)# detected-endpoint-timeout 600 //指定终端超时时间
SG-6000(config)#sequence {first | last | seq_id} //指定rule的位置,即排序rule
查看共享接入规则
SG-6000(config)# show share-access-detect rule rul
共享接入特征库升级配置
SG-6000(config)# share-access-detect signature update
配置参数如下:
➢ mode {auto | manual} 升级模式:默认自动升级
➢ proxy-server {main | backup} ip port 设置升级代理服务器
➢ schedule {daily | weekly} 设置自动升级模式下固定周期:默认daily(每天)
➢ server1 {domain | ip} [vrouter vr_name] 设置升级服务器1
➢ server2 {domain | ip} [vrouter vr_name] 设置升级服务器2
➢ server3 {domain | ip} [vrouter vr_name] 设置升级服务器3
共享接入特征库升级查看
SG-6000(config)# show share-access-detect signature update
共享接入特征库信息查看
SG-6000(config)# show share-access-detect signature info
手动在线升级特征库
SG-6000(config)# exec share-access-detect signature update
离线导入特征库
SG-6000# import share-access-detect signature from ftp server A.B.C.D …… xx.sig
SG-6000# import share-access-detect signature from tftp server A.B.C.D …… xx.sig
共享接入日志
SG-6000(config)# logging share-access-detect on
SG-6000(config)# logging share-access-detect to syslog
SG-6000(config)# show logging share-access-detect
共享接入监控统计
SG-6000(config)#SG-6000# show share-access-detect statistics
1.4 Syslog及Debug
Syslog
➢新增日志类型:共享接入日志(share-access-detect)
当受监控的IP下接入终端数超过最大限制时,触发日志
控制方式为告警干扰时,只在触发告警干扰时记录一次日志
控制方式为记录日志时,只要有超限行为产生,均触发记录日志,但1min内 每IP最多记录一次
Debug
Debug dp ei 【config | distribute | engine | process | show | timer】
Debug netd e
二、典型配置场景举例
2.1 典型场景
场景: 运营商分配20.1.1.10和20.1.1.20两个IP供用户使用:
➢ 对于20.1.1.10,最大只允许接入3个终端,超出限制时,进行日志记录;终端超时时间为600s
➢ 对于20.1.1.20,最大只允许接入2个终端,超出限制时,进行告警干扰;控制时间为10min
1. 升级共享接入特征库
SG-6000# exec share-access-detect signature update
Extracting signature package….
Loading signature………………………………………………………
Update signature successfully
2. 查看共享接入特征库信息,升级成功
SG-6000(config)# show share-access-detect signature info
DB vendor: Hillstone Networks
Current version: 1.0.1
Release date: 2018/01/01 17:45:12
3. 设置共享接入规则
SG-6000(config)# share-access-detect rule IP1-20.1.1.10
SG-6000(config-share-access-detect)# src-ip 20.1.1.10/32
SG-6000(config-share-access-detect)# access-limit 3
SG-6000(config-share-access-detect)# action log-only
SG-6000(config-share-access-detect)# detected-endpoint-timeout 600
SG-6000(config-share-access-detect)# exit
SG-6000(config)# share-access-detect rule IP1-20.1.1.20
SG-6000(config-share-access-detect)# src-ip 20.1.1.20/32
SG-6000(config-share-access-detect)# access-limit 2
SG-6000(config-share-access-detect)# action warning
SG-6000(config-share-access-detect)# control-duration 600
SG-6000(config-share-access-detect)# exit
4. 开启共享接入日志
SG-6000(config)#logging share-access-detect on
5. 用户进行HTTP访问
20.1.1.10
➢ 多个用户终端共享上网时,访问正常
20.1.1.20
➢ 当用户使用2个以内终端通过共享上网时,访问正常;
➢ 已有两个用户终端在线,使用第3个用户终端上网时,页面弹出告警,访问被拒绝,同时前面2个终 端也无法访问HTTP 页面如下:
6. 查看共享接入监控统计
7. 查看共享接入日志
SG-6000(config)# show logging share-access-detect
注:
--最大可配置共享接入规则数:8
--每个IP下最大支持共享接入终端监控数:16
16 为“共享接入监控”及“日志”中的终端详情的最大值,即同一监控IP下,大量终端接入时,最多对16个终端做日志记录
➢ 记录日志:设备对同一IP下终端的日志记录最多支持16个
➢ 干扰:与规则中配置的最大接入数有关,若为3,则第4个设备登陆时,采取干扰行为,并记录日志。后续接入的终端命中warning, 也受到干扰行为而无法正常访问(记录日志但不会添加到监测的终端详情里),需等到该IP干扰时间结束后,重新匹配
举例:监控IP为10.10.10.10,有20个终端一起接入
✓ 若为log-only,此时监控中的终端详情可查看该IP下的最先建立会话的16个终端(剩余4个不记录日志);当有2个终端超时, 终端详情更新为14个终端,此时超时的2个终端和之前未做记录的4个终端,哪一个终端先有新建会话,就会匹配规则,将该终 端添加到该IP的终端详情中以记录日志
✓ 若为warning,规则中最大终端数为4时,“监控”的终端详情里显示5个终端;日志只更新该IP状态为warning,不加入终端
部署位置——勿部署在SNAT设备之前
终端共享接入检测基于源IP,用户内网部署时最好不要部署在SNAT设备之前,否则会出现同一个IP下共享接入终端数非 常多,无法正确监控
2.2 常见问题&定位方式
➢ 问题:终端接入检测功能失效(无数据)
➢ 可能因素:
✓ 未加载共享接入特征库时,系统不会进行终端接入检测
✓ 可以检查设备是否配置DNS name-server,用于解析升级服务器,特征库升级成功时,会显示特征库版本信息,如下:
SG-6000(config)#show share-access-detect signature info
DB vendor: Hillstone Networks
Current version: 1.0.1
Release date: 2018/01/01 17:45:12
三、智能链路负载均衡(LLB)方案介绍
3.1 背景
多链路接入已成为主流,运营商、高校、政府、企业等,越来越多的客户会在出口采用多链路的方式接入,这样带来的好处是:省钱、冗余保障,但突显出来的问题是出口流量如何选路才能保证充分利用带宽资源,不影响用户的上网体验
3.2 常见的几类选路方法
静态路由+固定权重
早期客户常用的选路方式,缺点:带宽利用模式固定,调整不灵活
ISP路由
一般作为选路的辅助方式,缺点:设备的ISP地址池可能需要不断自定义扩充
应用引流
部分友商常用引导方式,缺点:仅按照应用类别来区分线路,不考虑目的端口是否有访问资源是存在问题的
链路负载均衡
目前的热门方案,各厂家各有自己的方案
山石网科的链路负载均衡方案:智能链路负载均衡方案(LLB Link Load Balance),设计理念:机器学习,关键词:实时、动态、智能、高质量
3.3 功能介绍
智能LLB—链路动态平衡
系统实时监测链路状态,动态调整不同链路的转发优先级,从而达到链路动态均衡的效果
检测:系统实时检测链路状态(带宽利用率、延迟、抖动、丢包率),根据检测结果,设置不同链路的转发权重,优质链路优先转发更大的流量;
调整:当链路状态不佳时(如带宽占用率过高、延迟较小、丢包率上升等),系统自动调整链路转发权重,高质量链路权重变大、低质量链路权重变小,并按照一定比例逐步切换流量至高质量俩怒,避免快速切换产生网络震荡的同时,保证流量优先从最优质的的链路转发出去;
恢复:当链路状态恢复后,由于系统对链路状态采用的是实时检测计算的方式,各条链路的转发权重将会重新调整,从而更均衡地转发流量
3.4 常见LLB&智能LLB
|
常见LLB |
智能LLB |
实现机制 |
构造探测报文并主动发送至链路,根据报文情况计算链路状态 |
从实际经过设备的流量中,实时抽取报文计算链路状态 |
时效性 |
需要经历构造探测报文,发送及反馈、计算这一复杂过程,时效性差 |
实时计算实际链路状态,时效性强 |
网络影响 |
构造探测报文和发送频率控制不当,反而可能会对链路产生额外负担 |
不对链路有任何额外负担 |
3.5 智能LLB优势
配置过程简单,只需三步即可:
配置多条等价路由、配置LLB模板(链路检测规则)、绑定路由和LLB模板
注:由于LLB模板中的带宽利用率需要根据接口配置的带宽计算,必须先检查,确保配置了正确的上下行带宽,避免检测效果不准确
实时流量检测技术:
时效性、准确性更高,对链路状态的变化敏感,流量调整更合理
避免额外发探测报文对链路产生更大的负担
3.6 配置介绍
3.6.1 WebUI界面
1、智能LLB可与目的路由(DBR)或策略路由(PBR)绑定使用,目的路由:创建多条等价路由,生成fib表(转发表,根据路由表生成),或者创建策略路由,配置多个等价出口
配置接口带宽
用于LLB带宽占用率的计算,需要手动配置真实的出口带宽
创建LLB模板—智能LLB探测规则
创建LLB规则—将LLB模板与路由绑定
链路监控配置
监控>链路状态监控>链路配置
注:如果需要根据应用进行过滤查看,应用维度需要勾选“启用”
在Nat-Pool可查看链路:延时、抖动、丢包、带宽利用率,过滤条件为:时间、绑定接口、应用
3.6.2 CLI界面配置
配置多条等价目的路由,生成fib表(转发表,根据路由表生成)
注:ECMP权重可以任意设置(不一定非要像1:1:1这样),即静态权重,LLB会抽样计算,即动态权重,流量根据目的IP子网进行匹配,命中策略的,走动态权重,没有命中策略的,走静态权重
SG-6000# show fib
IPv4 Forwarding Table for Virutal Router <trust-vr>
======================================================
Destination Gateway Flags Interface Weight
---------------------------------------------------------------------------------------------
0.0.0.0/0 1.1.1.1 UG ethernet1/1 1/2/2
2.1.1.1 UG ethernet1/2 1/2/2
配置bandwidth(up/down方向均为50M)
SG-6000(config-if-eth1/1)# bandwidth upstream 50000000
SG-6000(config-if-eth1/1)# bandwidth downstream 50000000
创建LLB模板
SG-6000(config)# llb profile 1
开启探测:
SG-6000(config-llb-profile)# detect enable //默认开启(只能CLI配置,若关闭,记得开启)
配置detect探测子网的掩码,默认28位
SG-6000(config-llb-profile)# detect netmask 28
配置detect带宽利用率阈值,默认60%
SG-6000(config-llb-profile)# detect threshold 60
配置detect均衡模式,默认High Performance
SG-6000(config-llb-profile)# mode performance
查看LLB规则详情:
SG-6000(config-llb-profile)# show llb profile 1
创建LLB规则
将LLB模板与目的路由绑定
SG-6000(config)# llb rule 1 dbr 0.0.0.0/0 profile 1
注:这里配置的路由必须和fib表的路由IP掩码完全一样,才会命中LLB。
将LLB模板与策略路由绑定
SG-6000(config)# llb rule LLB-PBR pbr game id 1 profile LLB
注:PBR最多支持8个出接口,多于8个出接口的场景不适用。
查看LLB规则下子网信息
SG-6000(config)# show llb rule llb-rule task …
配置链路状态监测
SG-6000(config)# link-perf-monitor interface ethernet0/0
查看链路状态详情
SG-6000(config)# show link-perf-monitor statistics
可以看到每条链路的带宽占用率、延时、丢包率的数据,从而看到选路是否正确。
3.7 日志
日志每分钟产生一次,目前支持3种类型:上行带宽利用率超过上限(默认95%)、下行带宽利用率超过上限(默认95%)、探测失败
在llb profile下开启日志功能
SG-6000(config-llb-profile)# log enable
3.8 Debug调试命令
debug dp_llb_v2 process
可以看到每条链路的带宽占用率,丢包,延时的数据,从而看到选路是否正确
四、典型场景
4.1 典型场景1
场景:某运营商有3条出口链路,希望VIP用户流量走链路1,其他流量全部走剩余2条链路,是否可以和智能LLB配合使用?
效果:针对该需求,其他流量可以在2条链路上配合智能LLB均衡地使用链路。
配置:配置策略路由1-“VIP用户”,将VIP用户流量下一跳指向链路1出口
方法1:目的路由
配置2条等价的目的路由,分别走链路2和链路3出口;
配置LLB模板,并与目的路由绑定;
方法2:策略路由
配置策略路由2-“引流”,将其他用户流量的下一跳指向链路2和链路3出口,权重均为1;
配置LLB模板,并与策略路由2绑定
4.2 典型场景2
场景:某互联网有7条出口链路,其中视频流量分配至其中3条链路,游戏流量分配到另外3条链路,是否可以和智能LLB配置使用?
效果:视频流量可以在3条链路上进行智能LLB、游戏流量可以在3条链路上进行智能LLB,其余流量可以在7条链路上进行智能LLB;
配置:
配置策略路由1,将视频流量的下一跳指向链路1、2、3出口,权重均为1;
配置策略路由2,将游戏流量的下一跳指向链路4、5、6出口,权重均为1;
配置7条等价的目的路由,分别走7条链路出口;
配置LLB模板,并分别与策略路由1绑定、与策略路由2绑定、与目的路由绑定
注: 如果需要达到不同的智能LLB效果,可以创建不同的LLB模板分别绑定。
4.3 特殊说明
LLB探测采样时,是从TCP新建会话中按比例进行采样,所以当网络中TCP的新建会话数过少,可能会影响实际负载均衡效果,LLB调整链路权重后,会对后续的新建会话进行调整,所以,当网络中大多数为TCP长连接时,可能会影响实际负载均衡效果,LLB不是流控,不会因为接口配置的带宽数值进行流量控制,是根据接口的实际转发能力来进行转发处理。
测试建议:如果使用流量仪进行模拟测试,建议选用HTTP流量,且最好模拟为多Client轮询访问多HTTP Server的方式。