草庐IT

华为防火墙的四种智能选路方式

阿豪的笔记 2023-04-04 原文

FW支持四种智能选路方式,不同的智能选路方式可以满足不同的需求,管理员可以根据设备和网络的实际情况进行选择。

表1 智能选路方式

智能选路方式

定义

根据链路带宽负载分担

FW按照带宽比例将流量分配到各条链路上。带宽大的链路转发较多的流量,带宽小的链路转发较少的流量。

根据链路质量负载分担

FW优先使用链路质量高的链路转发流量。

根据链路权重负载分担

FW按照权重的比例将流量分配到各条链路上,权重大的链路转发较多的流量,权重小的链路转发较少的流量。

根据链路优先级主备备份

优先级最高的接口称为主接口,其他优先级的接口统称为备份接口,FW优先使用主接口转发流量。

根据链路带宽负载分担

如下图所示,FW拥有3条出接口链路,分别属于不同的ISP。其中,ISP1的链路带宽为200M,ISP2和ISP3的链路带宽均为100M,所以带宽比例为2:1:1。当FW转发一段时间流量后,各链路上累计传输的流量将分别占到总流量的50%、25%、25%,即各链路传输流量的比例和带宽的比例成正比。为了保证链路不会过载,管理员可以设置过载保护阈值,例如各链路均为90%。

  • 所有链路均未过载时,按照链路之间的带宽比例进行负载分担

  • 当某条链路的带宽使用率达到90%时,已建立会话的流量仍从该链路转发,但是后续新建立会话的流量不再通过此链路转发,FW会在未过载的链路中智能选路,后续流量按照未过载链路之间的带宽比例进行负载分担。

  • 如果所有链路都已过载,那么FW将继续按照各链路的带宽比例分配流量。

说明:

FW是根据各接口指定带宽的比例来分流的,而不是根据流量的实时流速。所以实际上各接口链路上分配的流量比例很难和设置的带宽比例一致,总是会有波动。

比如有3条接口链路,带宽比例设置为2:1:1,此时有4条流量,FW分别将这4条流量按照2:1:1分配到这3条接口链路上,即接口1分了2条流,接口2和3各分了1条流。但每条流的流速不一样,所以此时接口上转发的流量大小比例并不是2:1:1。

根据链路质量负载分担

丢包率、时延和时延抖动是FW衡量链路质量的3个参数。表2列出了3个链路质量参数的计算方法。

表2链路质量参数的计算方法

链路质量参数

计算方法

丢包率

FW发送若干个探测报文后,将统计丢包的个数,并计算丢包率。丢包率等于丢包个数除以探测报文个数。

时延

回应报文的接收时间减去探测报文的发送时间即为时延。FW发送N个探测报文后,将分别计算每次探测的时延,并取N次探测的平均值作为最终结果。

时延抖动

相邻两次探测的时延之差取绝对值即为时延抖动。FW发送N个探测报文后,将分别计算相邻两次探测的时延之差并取绝对值,然后取所有时延抖动的平均值作为最终结果。

FW自动向目的IP发送链路质量探测报文,获取各链路的传输质量信息,并将链路质量探测结果保存在链路质量探测表中。当有流量到达FW时,FW首先根据报文的目的IP去匹配探测表:

  • 如果匹配,则根据探测表中记录的出接口转发流量;

  • 如果未匹配,则自动向目的IP发起质量探测选择最优的链路转发流量,并将探测结果记录在链路质量探测表中。

  • 当质量探测表项老化后,新的流量触发智能选路时需要重新进行链路质量探测。

缺省情况下,链路质量探测报文的协议类型为tcp-simple(FW使用TCP报文检查网络的连通性,只要目的设备回应第一个探测报文,即认为链路是可用的,无需完成三次握手)。此时,FW针对TCP业务流量使用tcp-simple协议进行质量探测,针对非TCP业务流量使用ICMP协议进行质量探测。探测报文的协议类型还可以修改为ICMP,此时FW针对所有业务流量都使用ICMP协议探测进行质量探测。

如下图所示,FW拥有3条出接口链路,分别属于不同的ISP。FW向各个ISP内的指定设备发送5个探测报文,其中ISP1链路没有丢包,ISP2链路丢了2个包,ISP3链路没有收到回应报文。所以FW判定ISP1的质量最高,将优先使用ISP1链路转发流量,只要探测表项没有老化,FW就一直使用ISP1转发流量,不会使用ISP2链路和ISP3链路。如果管理员为各链路设置了过载保护阈值,那么当ISP1链路的带宽利用率达到阈值时,ISP1链路将不再参与智能选路,FW会选择其他链路中质量最高的ISP2链路转发后续流量。

根据链路权重负载分担

如下图所示,FW拥有3条出接口链路,分别属于不同的ISP。其中,ISP1的链路权重为5,ISP2的链路权重为3,ISP3的链路权重为2,所以权重比例为5:3:2。当FW转发一段时间流量后,各链路上累计传输的流量将分别占到总流量的50%、30%、20%,即各链路传输流量的比例和权重的比例成正比。为了保证链路不会过载,管理员可以设置过载保护阈值,例如各链路均为90%。

  • 当所有链路均未过载时,链路之间的按权重比例进行负载分担。

  • 当某条链路的带宽使用率达到90%时,此链路将不再被分配流量,FW会在未过载的链路中智能选路,后续流量按照未过载链路之间的权重比例进行负载分担。

  • 如果所有链路都已过载,那么FW将继续按照各链路的权重比例分配流量。

根据链路优先级主备备份

该智能选路方式分为两种场景:

  • 主备备份场景:主接口链路没有指定过载保护阈值,那么即使链路过载,FW也不会使用其他链路传输流量。只有当主接口链路发生故障后,优先级次高的备份接口才被启用以替代主接口,而其他优先级更低的备份接口则仍未启用。

  • 负载分担场景:各接口链路设置过载保护阈值,当主接口链路过载时,FW会使用优先级次高的备份接口和主接口一起分担流量。当主接口和优先级次高的备份接口都过载后,余下的备份接口中优先级最高的接口才被启用进行流量分担。

如下图所示,FW拥有3条出接口链路,分别属于不同的ISP。其中,ISP1的链路优先级为8,ISP2的链路优先级为3,ISP3的链路优先级为1,ISP1的链路优先级最高。管理员设置了过载保护阈值,各链路均为90%。FW优先使用ISP1链路转发流量,当ISP1链路的带宽利用率达到90%后,启用ISP2链路和ISP1链路一起分担流量。当ISP1链路和ISP2链路都过载时,启用ISP3链路和ISP1、ISP2链路一起分担流量。当3条链路都过载时,FW将按照各链路带宽的比例分配流量,不再根据链路优先级来分配。

会话保持

智能选路接口可以配置过载保护阈值,当链路的带宽利用率达到过载保护阈值时,FW对新流量进行智能选路时将排除该过载链路,在其他未过载的链路中进行选路。这样可能会导致用户上网流量在链路过载前选择了该链路,而新建会话流量(如打开新网页)因为原链路过载而被FW从其他链路转发出去。

这种情况会出现已经登录的网站在刷新后需要重新登录,网络游戏在链路切换后掉线,甚至某些网上银行业务因检测到IP地址变化而拒绝用户访问等现象。为了解决上述问题,可以开启智能选路会话保持功能。

开启该功能后,上网用户流量进行首次智能选路选择某链路后,FW会生成相应的会话保持表项,新流量如果命中了该会话保持表项,FW按照会话保持表项中记录的链路转发流量,这样能保证该用户的流量始终使用同一链路转发。

以基于源IP的会话保持模式为例介绍会话保持的原理,如下图所示,用户A的上网流量进行首次智能选路后,会生成一个会话保持表项,其中包含了源IP地址、匹配的智能选路策略ID和首次选路的出接口。当该用户再次发起连接时,FW会根据新流量中的源IP和匹配的智能选路策略ID查找相应的会话保持表项,并直接使用会话保持表项中记录的出接口转发该流量,这样就保证了此用户的流量始终使用同一出接口转发。

配置举例

如下图所示,企业原有一条从ISP1租用的链路,带宽为50M,又从ISP2租用一条性能优良的链路,带宽为150M。

  • 企业希望ISP2链路转发80%的流量,ISP1链路转发20%的流量,提高大多数用户的体验。

  • 当其中一条链路过载(阈值为90%)时,后续流量可以通过另一条链路转发,保证传输的可靠性。

配置思路

由于企业希望ISP2链路和ISP1链路转发流量的比例为4:1,所以智能选路的方式可以设置为根据链路权重负载分担,并指定ISP2链路的权重为4,ISP1链路的权重为1。为了保证链路故障或过载时,FW可以使用其他链路转发流量,还需要配置健康检查功能和链路过载保护功能。

  1. 可选:配置健康检查功能,分别为ISP1和ISP2链路配置健康检查。

  2. 配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查。

  3. 配置全局选路策略。配置智能选路方式为根据链路权重负载分担,指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口,并为接口设置权重值。

  4. 配置基本的安全策略,允许企业内网用户访问外网资源。

操作步骤

  1. 可选:开启健康检查功能,并为ISP1和ISP2链路分别新建一个健康检查。假设ISP1网络的目的地址网段为3.3.10.0/24,ISP2网络的目的地址网段为9.9.20.0/24;3.3.10.10、3.3.10.11和9.9.20.20、9.9.20.21分别为ISP1和ISP2网络中已知的设备地址。
    选择“对象 > 健康检查”,在“健康检查列表”区域单击“新建”,为ISP1链路新建一个健康检查。

    单击“新建”,为ISP2链路新建一个健康检查。

  2. 配置GigabitEthernet 0/0/1和GigabitEthernet 0/0/7的IP地址和网关地址,加入Untrust安全区域,配置接口所在链路的带宽和过载保护阈值,并应用对应的健康检查。
    选择“网络 > 接口”,单击待配置的接口所在行的。

  3. 配置接口GigabitEthernet 0/0/3的IP地址,并加入Trust安全区域。
    选择“网络 > 接口”,单击待配置的接口所在行的。

  4.  配置全局选路策略,流量根据链路权重负载分担。并将GigabitEthernet 0/0/1和GigabitEthernet 0/0/7加入出接口列表。
    选择“网络 > 路由 > 智能选路”,在“全局选路策略列表”区域,单击“配置”。

  5. 配置Trust到Untrust区域的安全策略,允许企业内网用户访问外网资源。假设内部用户网段为10.3.0.0/24。
    选择“策略 > 安全策略 > 安全策略”,单击“新建安全策略”。​​​​​​​

有关华为防火墙的四种智能选路方式的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

  4. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  5. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  6. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  7. ruby - 鸭子输入字符串、符号和数组的优雅方式? - 2

    这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby​​。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac

  8. ruby - 如何以编程方式删除实例上的 "singleton information"以使其编码(marshal)? - 2

    我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。

  9. ruby - Paperclip:以编程方式分配图像并设置其名称 - 2

    使用Paperclip,我想从这样的URL抓取图像:require'open-uri'user.photo=open(url)问题是我最后得到一个像“open-uri20110915-4852-1o7k5uw”这样的文件名。有什么方法可以更改user.photo上的文件名?作为一个额外的变化,Paperclip将我的文件存储在S3上,所以如果我可以在初始分配中设置我想要的文件名就更好了,这样图像就会上传到正确的S3key。像这样:user.photo=open(url),:filename=>URI.parse(url).path 最佳答案

  10. ruby - 如何以编程方式检查证书是否已被吊销? - 2

    我正在开发一个xcode自动构建系统。在执行一些预构建验证时,我想检查指定的证书文件是否已被撤销。我了解securityverify-cert验证其他证书属性但不验证吊销。我如何检查撤销?我正在用Ruby编写构建系统,但我对任何语言的想法都持开放态度。我阅读了这个答案(Openssl-Howtocheckifacertificateisrevokedornot),但指向底部的链接(DoesOpenSSLautomaticallyhandleCRLs(CertificateRevocationLists)now?)进入的Material对我的目的来说有点过于复杂(用户上传已撤销的证书是一

随机推荐