你的错误配置:
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
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
同一个源目 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
Dialer 是虚拟拨号接口,使用 PBR apply loadshare output-interface 把 Dialer + 物理 GE 一起做负载分担有两个坑:
⚠️重点:PBR 只是控制出接口,不会自动选对应出接口的 NAT,必须基于出接口做 NAT 策略。
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
apply loadshare为正确单行多接口格式,保存。display policy-based-route fenliu statistics确认 node20 有报文命中。MSR3620 推荐用NQA + 静态路由 + 等价路由 ECMP做双出口负载,自带链路健康检测,链路故障自动切流;PBR 的 loadshare 在混合 Dialer 虚拟接口场景下稳定性弱于 ECMP。
apply output-interface分行写,后面接口无效;正确写法apply loadshare output-interface Dialer0 GigabitEthernet0/0写在一行。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两条链路都做了
你的观察是准确的,在当前的 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 中混合使用了两种接口类型:
由于 GigabitEthernet0/0 的 output-interface 配置无效,系统实际上只识别到了一个有效的出接口 Dialer0。loadshare 命令的前提是需要有多个有效的下一跳或出接口。只有一个有效出接口时,负载分担自然无法启动,所有流量都从 Dialer0 发出。
apply next-hop(推荐)将 GigabitEthernet0/0 的配置改为指定其下一跳 IP。假设 GigabitEthernet0/0 连接的对端网关 IP 为 x.x.x.x:
注意,当混合使用 output-interface 和 next-hop 时,loadshare 命令需要同时指定 output-interface 和 next-hop,或者根据实际情况调整。更清晰的做法是,如果两个出口都可以用下一跳表示,就统一使用 next-hop:
但 Dialer 接口的对端 IP 可能是动态的,所以混合使用是常见的。正确的混合配置格式应为:
这样系统才能识别到两个有效的转发路径。
在某些场景下,即使配置正确,快速转发(Fast Forwarding)也可能导致负载分担行为不符合预期。可以尝试在系统视图下关闭快速转发的负载分担功能:
该命令可以避免因快速转发表项导致的路径选择异常,但在某些网络拓扑中可能会引入三层环路风险,建议在测试环境验证后使用。
如果 PBR 的负载分担配置始终难以达到预期,可以考虑使用 H3C 针对多出口场景提供的基于用户的负载分担功能。该功能可以在 Dialer 接口下直接开启,让系统自动根据用户(源 IP)进行负载均衡,无需复杂的 PBR 匹配规则。
这种方法配置更简单,适用于多个 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 没有这命令
按照第一个写法,顺序改变了,我现在也不确定是否走了分流,但单台机测试,数据好像默认走了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 没有这命令
Dialer 是虚拟拨号口,使用apply loadshare output-interface引用 Dialer 时:
Up;建议优先用下一跳负载
apply loadshare next-hop x.x.x.x y.y.y.y,比直接绑定出接口更稳(Dialer 动态获取 IP 场景推荐 next-hop)
PBR 要在内网入接口应用:ip policy-based-route fenliu
interface Vlanif 10
ip policy-based-route fenliu
不是在外网出口接口。
本地路由器自身产生的流量,需要额外全局:ip local policy-based-route fenliu(内网用户不需要这条)
acl 3002:确认是permit 内网需要负载的网段,没有 deny;display acl 3002看命中计数。
双出口都做缺省路由默认就是负载均衡
如果你是有规划的,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配置这两点
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
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两条链路都做了