Spa*_*iff 1 load-balancing juniper
我想弄清楚如何在 JUNOS 中使用 ECMP 负载平衡。我知道这不是负载平衡的最佳方法,但它快速而肮脏,并且可以完成我需要的工作。在 ScreenOS 中,这很容易。
设备:SRX220 JunOS:10.3R2.11
这是我到目前为止所得到的:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
maximum-paths 2;
Run Code Online (Sandbox Code Playgroud)
会这样做吗?
汤姆
你绝对不想要maximum-paths
. 这将限制您的路由表大小,与 ECMP 无关。
所以只需:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你会看到的:
lab@router> show route 0.0.0.0/0
...
0.0.0.0/0 *[Static/5] 00:01:28, metric 10
> to 1.1.1.1 via ge-0/0/0.0
to 1.1.1.2 via ge-0/0/0.0
Run Code Online (Sandbox Code Playgroud)
两个下一跳都出现在路由表中,但是要查看转发表中实际发生的情况,您必须深入挖掘:
lab@router> show route forwarding-table destination 0.0.0.0/0
...
Destination Type RtRef Next hop Type Index NhRef Netif
0.0.0.0/0 user 0 1.1.1.1 ucst 558 3 ge-0/0/0.0
Run Code Online (Sandbox Code Playgroud)
默认情况下,当路由器将路由表下推到转发表时,它会随机选择一个下一跳。要更改该行为,您可以定义“转发表导出”策略,该策略控制从路由表构建转发表时发生的情况:
routing-options {
static {
route 0.0.0.0/0 {
next-hop [ 1.1.1.1 1.1.1.2 ];
metric 10;
}
}
forwarding-table {
export LOAD-BALANCE;
}
}
policy-options {
policy-statement LOAD-BALANCE {
then {
load-balance per-packet;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,路由表看起来仍然相同:
lab@router> show route 0.0.0.0/0
...
0.0.0.0/0 *[Static/5] 00:07:28, metric 10
> to 1.1.1.1 via ge-0/0/0.0
to 1.1.1.2 via ge-0/0/0.0
Run Code Online (Sandbox Code Playgroud)
但是转发表(重要的地方)有两条路线:
lab@router> show route forwarding-table destination 0.0.0.0/0
...
Destination Type RtRef Next hop Type Index NhRef Netif
0.0.0.0/0 user 0 ulst 262142 2
1.1.1.1 ucst 558 3 ge-0/0/0.0
1.1.1.2 ucst 540 3 ge-0/0/0.0
Run Code Online (Sandbox Code Playgroud)
现在您正在负载平衡!
但是,要记住的一件事是,尽管有令人难以置信的误导性 load-balance per-packet
陈述,但具有此配置的所有瞻博网络路由器实际上都在按流进行负载平衡。每个数据包都基于(src-ip、dst-ip 和协议编号)进行散列。因此,如果您只有几个流量流,它们很可能都使用相同的下一跳。一旦你增加了流的数量,你应该会看到更均匀的加载。
(实际上,第一个硬件确实会按数据包进行负载平衡,但您可能永远不会遇到)
归档时间: |
|
查看次数: |
11484 次 |
最近记录: |