• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

路由器3620+pbr出口负载均衡的问题

2小时前提问
  • 0关注
  • 0收藏,42浏览
粉丝:0人 关注:0人

问题描述:

Policy name: fenliu
  node 10 permit:
    if-match acl 3001
    apply output-interface Dialer0 
  node 20 permit:
    if-match acl 3002
    apply loadshare output-interface
    apply output-interface Dialer0 
    apply output-interface GigabitEthernet0/0 

这是pbr的写法,通过观察 node20,并没有进行负载,数据都从dialer0出去

5 个回答
粉丝:35人 关注:2人

MSR3620(Comware7)PBR 负载分担不生效,node20 流量全部走 Dialer0

你的错误配置:

policy name: fenliu node 10 permit if-match acl 3001 apply output-interface Dialer0 node 20 permit if-match acl 3002 apply loadshare output-interface apply output-interface Dialer0 apply output-interface GigabitEthernet0/0

核心问题 1:命令语法错误(最主要原因)

apply loadshare output-interface 后面不能再分行写多条apply output-interface,这种写法不识别多出口负载分担;Comware7 的 PBR 策略路由,多出口负载分担的正确写法是在一条apply loadshare output-interface后面一次性跟多个出接口。

你当前配置等价于:先开启 loadshare 标记,第一条 apply output-interface Dialer0 被优先解析,后面 G0/0 被忽略,所以永远只走 Dialer0,不会负载分担。

❌错误写法(你现场)

apply loadshare output-interface apply output-interface Dialer0 apply output-interface GigabitEthernet0/0

✅正确写法

apply loadshare output-interface Dialer0 GigabitEthernet0/0

核心问题 2:PBR 负载分担默认基于五元组哈希,会话保持(流粘性)

同一个源目 IP + 端口的一条 TCP/UDP 长连接,全程固定走同一条链路,不会包包轮询

现象:测试的时候如果只开 1 条长连接,永远只走 Dialer0;必须多源 / 多目的多流,才能看到分流。 哈希算法默认:hash-mode sip-dip-sport-dport-protocol(五元组)。 可以修改哈希因子,比如改为仅源 IP 哈希,同网段不同终端更容易分流:

policy-based-route fenliu node 20 permit apply loadshare hash-mode sip

核心问题 3:Dialer 接口(PPPoE 拨号)的特殊限制

Dialer 是虚拟拨号接口,使用 PBR apply loadshare output-interface 把 Dialer + 物理 GE 一起做负载分担有两个坑:

  1. Dialer 接口必须保证拨号在线,Dialer 接口协议 up;如果 PPPoE 掉线,负载分担会自动切换到存活接口;
  2. PBR 负载分担是转发层面重定向不会自动处理 NAT!两个出口必须分别配置 NAT,否则 G0/0 出去的流量无法做地址转换,能分流但是业务不通。

⚠️重点:PBR 只是控制出接口,不会自动选对应出接口的 NAT,必须基于出接口做 NAT 策略。

核心问题 4:ACL、策略应用位置检查

  1. acl 3002,确认匹配的流量确实命中 node20:
display policy-based-route fenliu statistics

看 node20 的 hit 计数是否在增长;如果 hit=0,ACL 匹配失败,流量直接走普通路由表。 2. PBR 必须应用在内网入接口(流量进入路由器的方向),不能应用在外网出口接口。

interface GigabitEthernet0/1 #内网口 policy-based-route apply fenliu

完整修正后配置

policy-based-route fenliu permit node 10 if-match acl 3001 apply output-interface Dialer0 #node20:acl3002流量,Dialer0 + G0/0负载分担 policy-based-route fenliu permit node 20 if-match acl 3002 apply loadshare output-interface Dialer0 GigabitEthernet0/0 apply loadshare hash-mode sip #可选,基于源IP哈希,多终端分流更明显

配套检查命令

#查看PBR命中统计 display policy-based-route fenliu statistics #查看接口状态,确认Dialer协议UP display interface brief #查看PBR配置 display policy-based-route fenliu

补充:故障排查顺序

  1. 修改 PBR node20 的apply loadshare为正确单行多接口格式,保存。
  2. 查看display policy-based-route fenliu statistics确认 node20 有报文命中。
  3. 确认 Dialer0 PPPoE 在线、G0/0 外网链路正常。
  4. 确认两个出口都配置对应的 NAT。
  5. 多台终端同时上网测试(单条流不会切换链路,属于正常机制)。

备选方案(推荐生产双出口,比 PBR 负载分担更稳定)

MSR3620 推荐用NQA + 静态路由 + 等价路由 ECMP做双出口负载,自带链路健康检测,链路故障自动切流;PBR 的 loadshare 在混合 Dialer 虚拟接口场景下稳定性弱于 ECMP。

简短总结

  1. 语法错误:多条apply output-interface分行写,后面接口无效;正确写法apply loadshare output-interface Dialer0 GigabitEthernet0/0写在一行。
  2. PBR 负载分担是按流(五元组)分担,不是按数据包轮询,单条长连接不会切链路,多终端才能看到分流。
  3. Dialer 虚拟接口 + 物理 GE 做 PBR 负载分担,两个出口都要配置 NAT;PBR 只管出接口,不会自动匹配 NAT。
  4. display policy-based-route fenliu statistics看命中计数,确认流量是否匹配 node20。

1、[R-01-pbr-fenliu-20]apply loadshare output-interface ? <cr> 写法上 [R-01-pbr-fenliu-20]apply loadshare output-interface 后面加不能接口 2、我接口当时是一条写完的(不确定,但应该)但最后显示是分开显示 3、两个接口都是up,都能跑的,都是试过单独存活一条链路的时候,都能正常上网 4、acl是中了的 5、apply loadshare hash-mode sip 算法问题,这里没有这条命令 6、nat两条链路都做了

zhiliao_qOB6R8 发表时间:2小时前 更多>>

1、[R-01-pbr-fenliu-20]apply loadshare output-interface ? <cr> 写法上 [R-01-pbr-fenliu-20]apply loadshare output-interface 后面加不能接口 2、我接口当时是一条写完的(不确定,但应该)但最后显示是分开显示 3、两个接口都是up,都能跑的,都是试过单独存活一条链路的时候,都能正常上网 4、acl是中了的 5、apply loadshare hash-mode sip 算法问题,这里没有这条命令 6、nat两条链路都做了

zhiliao_qOB6R8 发表时间:2小时前
粉丝:15人 关注:9人

请按以下步骤排查H3C MSR3620路由器PBR节点20未负载的问题:
1. 修改配置顺序与命令:
必须在指定完出接口后,再使能负载分担。
修改后的配置建议为:

policy-based-route fenliu permit node 20
if-match acl 3002
apply output-interface Dialer0 // 建议把主用或稳定链路放前面
apply output-interface GigabitEthernet0/0
apply loadshare output-interface // 此命令放在接口列表之后

2. 检查出接口状态:
确认 GigabitEthernet0/0 的物理/协议状态是否为 UP,且必须有有效的路由(不能是缺省路由依赖本身)。
display interface brief
display ip routing-table
3. 检查是否配置了快速转发:
PBR 基于流(Flow)负载,默认情况下如果配置了 Fast Forwarding,同一条流只会走第一个接口。
display ip fast-forwarding cache
如需逐包负载(性能会下降),可在接口下关闭: undo ip fast-forwarding
4. 验证数据流:
确认流量是否确实匹配了 ACL 3002 而不是 ACL 3001。
display acl 3002
display policy-based-route

粉丝:31人 关注:1人

你的观察是准确的,在当前的 PBR 配置下,流量确实不会在 Dialer0 和 GigabitEthernet0/0 之间做负载分担。问题的根源在于,对以太网接口(GigabitEthernet0/0)使用 apply output-interface 是无效的,这导致了负载分担逻辑无法成立

为什么 loadshare 没有生效?

H3C 的策略路由中,apply output-interface 和 apply next-hop 的使用场景有严格区分:

  • 对于以太网接口:必须使用 apply next-hop 来指定下一跳 IP 地址,不能直接用 apply output-interface 指定出接口。系统无法为一个以太网接口“直接”指定出接口,它需要明确的下一跳 IP 来解析二层地址(ARP)。

  • 对于 PPP 类接口(如 Dialer):可以使用 apply output-interface,因为 PPP 是点对点协议,不需要下一跳 IP。

你的 node 20 中混合使用了两种接口类型:

text
apply output-interface Dialer0 apply output-interface GigabitEthernet0/0 # 这一条是无效的 apply loadshare output-interface

由于 GigabitEthernet0/0 的 output-interface 配置无效,系统实际上只识别到了一个有效的出接口 Dialer0loadshare 命令的前提是需要有多个有效的下一跳或出接口。只有一个有效出接口时,负载分担自然无法启动,所有流量都从 Dialer0 发出。

如何修正配置

方案一:改为 apply next-hop(推荐)

将 GigabitEthernet0/0 的配置改为指定其下一跳 IP。假设 GigabitEthernet0/0 连接的对端网关 IP 为 x.x.x.x

text
policy-based-route fenliu permit node 20 if-match acl 3002 apply output-interface Dialer0 apply next-hop x.x.x.x # 将 GigabitEthernet0/0 替换为其下一跳 IP apply loadshare next-hop

注意,当混合使用 output-interface 和 next-hop 时,loadshare 命令需要同时指定 output-interface 和 next-hop,或者根据实际情况调整。更清晰的做法是,如果两个出口都可以用下一跳表示,就统一使用 next-hop

text
policy-based-route fenliu permit node 20 if-match acl 3002 apply next-hop <Dialer0对端的IP> <GigabitEthernet0/0对端的IP> # 如果Dialer0能确定对端IP apply loadshare next-hop

但 Dialer 接口的对端 IP 可能是动态的,所以混合使用是常见的。正确的混合配置格式应为:

text
apply output-interface Dialer0 apply next-hop <GigabitEthernet0/0的下一跳IP> apply loadshare output-interface next-hop

这样系统才能识别到两个有效的转发路径。

方案二:调整快速转发表项

在某些场景下,即使配置正确,快速转发(Fast Forwarding)也可能导致负载分担行为不符合预期。可以尝试在系统视图下关闭快速转发的负载分担功能:

text
system-view undo ip fast-forwarding load-sharing

该命令可以避免因快速转发表项导致的路径选择异常,但在某些网络拓扑中可能会引入三层环路风险,建议在测试环境验证后使用

替代思路:基于用户的负载分担

如果 PBR 的负载分担配置始终难以达到预期,可以考虑使用 H3C 针对多出口场景提供的基于用户的负载分担功能。该功能可以在 Dialer 接口下直接开启,让系统自动根据用户(源 IP)进行负载均衡,无需复杂的 PBR 匹配规则。

text
interface Dialer0 ip user-based-sharing enable

这种方法配置更简单,适用于多个 PPPoE 出口的典型负载分担场景。

按照第一个写法,顺序改变了,我现在也不确定是否走了分流,但单台机测试,数据好像默认走了nexthop的,没有走拨号口policy-based-route fenliu permit node 20 if-match acl 3002 apply loadshare next-hop apply loadshare output-interface apply next-hop 119.145.136.93 apply output-interface Dialer0 2、interface Dialer0 ip user-based-sharing enabl 没有这命令

zhiliao_qOB6R8 发表时间:2小时前 更多>>

按照第一个写法,顺序改变了,我现在也不确定是否走了分流,但单台机测试,数据好像默认走了nexthop的,没有走拨号口policy-based-route fenliu permit node 20 if-match acl 3002 apply loadshare next-hop apply loadshare output-interface apply next-hop 119.145.136.93 apply output-interface Dialer0 2、interface Dialer0 ip user-based-sharing enabl 没有这命令

zhiliao_qOB6R8 发表时间:2小时前
粉丝:12人 关注:7人

① 出接口 G0/0 必须有完整路由 + NAT

  • GigabitEthernet0/0 这条出口,必须有默认路由 / 明细路由,不能只靠 PBR
  • 两条出口都要配置 NAT,ACL3002 的网段在 G0/0 转发时,必须匹配 nat 策略,否则包出去回不来,你肉眼看到流量只走 Dialer0。

② Dialer 口特殊注意

Dialer 是虚拟拨号口,使用apply loadshare output-interface引用 Dialer 时:

  • Dialer 接口状态必须Up
  • 拨号获取到公网 IP;
  • 注意:PBR 指定出接口方式,不做 ARP 代理,G0/0 如果是静态 IP 直连运营商,必须确保对端可达

建议优先用下一跳负载 apply loadshare next-hop x.x.x.x y.y.y.y,比直接绑定出接口更稳(Dialer 动态获取 IP 场景推荐 next-hop)

③ PBR 应用位置

PBR 要在内网入接口应用:ip policy-based-route fenliu

interface Vlanif 10 ip policy-based-route fenliu

不是在外网出口接口。 本地路由器自身产生的流量,需要额外全局:ip local policy-based-route fenliu(内网用户不需要这条)

④ ACL 检查

acl 3002:确认是permit 内网需要负载的网段,没有 deny;display acl 3002看命中计数。

粉丝:6人 关注:1人

双出口都做缺省路由默认就是负载均衡

如果你是有规划的,A,段走1出口,B段走2出口

acl 3000     AB互访流量

rule permit source A des  B   

acl 3001

rule permit source A

acl 3002

rule permit source B

policy-based-route fenliu permit node 1
if-match acl 3000
policy-based-route fenliu permit node 2

if-match acl 3001

apply next-hop 1出口ip

policy-based-route fenliu permit node 3

if-match acl 3002

apply next-hop 2出口ip

然后接口下调用就行


如果没有负载就看看是接口调用的对不对,还有就是acl配置这两点

编辑答案

你正在编辑答案

如果你要对问题或其他回答进行点评或询问,请使用评论功能。

分享扩散:

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作

举报

×

侵犯我的权益 >
对根叔社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明