Labs: JUNOS per-packet load balancing

junos-per-packet-load-balancing.png

实验演示: JUNOS per-packet load balancing 第一部分

点击上文↑链接至YouTube收看高清版本实验视频

在默认情况下,对于路由表当中某条活跃路由,即便路由器拥有到达相同的目的网段的多条同等开销链路。在我们的演示案例中,我们使用OSPF,到达 192.168.99/30及192.168.100/30网段,R3上均拥有两条Metric值为20的链路。JUNOS将采用一种hash-key算法来随机选择其中一条链路,同时将该链路的下一跳从RIB表安装至FIB表当中。假如由于路由抖动等原因,改变了到达目的网段的下一跳,此时 JUNOS将采用相同的hash-key算法重新选择新的下一跳。我们可以通过配置JUNOS,将该活跃路由所有的下一跳地址全部给安装到FIB表当中。Juniper将这种特性称之为“JUNOS per-packet load balancing”。这样一来,我们可以将流量分流到多个不同的路由器(下一跳)上面。然而,“per-packet load balancing”这个特性却在不同版本的Internet Processor application-specific integrated circuit (ASIC)上有不同的行为,取决于你的设备配置。

nigel@hongkong# run show route logical-router r3
192.168.99.0/30 *[OSPF/10] 00:01:10, metric 20
                 to 10.1.23.1 via fxp1.23
               > to 10.1.13.1 via fxp2.13
192.168.100.0/30 *[OSPF/10] 00:01:10, metric 20
               > to 10.1.23.1 via fxp1.23
                 to 10.1.13.1 via fxp2.13

nigel@hongkong# run show route forwarding-table
192.168.99.0/30 user 0 10.1.13.1 ucst 386 2 fxp2.13
192.168.100.0/30 user 0 10.1.23.1 ucst 383 2 fxp1.23

在一代ASIC-I上,当“per-packet load balancing”配置完成以后,被“per-packet load balancing”的流量将在所有可用接口上采用hash-key算法进行运算。然后,FIB将这些到达相同目的网段,被均衡的流量采用轮询机制在多个下一跳上进行分流。最多可用8条同等开销的链路进行负载均衡,这是最最基本的“per-packetload balancing”机制。

在二代ASIC-II上,当“per-packet load balancing”配置完成以后,被均衡的流量将被根据:包括:源IP地址+源端口+目标IP地址+目标端口+传输协议+进入接口+TOS位,路由器将把以上参数全部一致的流量区分为其中一种独立的数据流,从而区分出多种独立的数据流,在最多16条同等开销的链路上负载传输。譬如到达同一个网段的 TCP,UDP,ICMP数据将被区分为三种独立的数据流。而每种独立的数据流将保持在单一的接口上进行传输。从而保证每种独立的数据流中的每一个数据包以本来应有的顺序到达目的地,而不会产生到达顺序混乱的问题。注意:此特性需要7.0以上版本支持,通过配置以下命令实现 ――

[edit forwarding-options hash-key]
family inet {
layer-3;
layer-4;
}

实验演示: JUNOS per-packet load balancing 第二部分

点击上文↑链接至YouTube收看高清版本实验视频

让我们回到原有的案例,我们将在R3上采用“per-packet load balancing”策略,使得192.168.100.0/30这个网段将两个同等开销的链路下一跳全部安装到FIB表当中,而192.168.99.0/30将保持默认状态!让我们回到原有的案例,我们将在R3上采用“per-packet load balancing”策略,使得192.168.100.0/30这个网段将两个同等开销的链路下一跳全部安装到FIB表当中,而192.168.99.0/30将保持默认状态!

nigel@hongkong#show policy-options policy-statement
per-packet-load-balancing
from {
route-filter 192.168.100.0/30 exact;
}
then {
load-balance per-packet;
}

然后将策略安装到FIB表当中;

nigel@hongkong# set routing-options forwarding-table export
per-packet-load-balancing

重新检查一下FIB表:

nigel@hongkong# run show route forwarding-table
192.168.99.0/30   user   0 10.1.23.1  ucst   383  3 fxp1.23
192.168.100.0/30  user   0            ulst   389  2
                           10.1.23.1  ucst   383  3 fxp1.23
                           10.1.13.1  ucst   386  2 fxp2.13

在FIB表当中,我们可以看到仅仅为我们策略中定义的前缀安装了多条链路;我们分别在R3上traceroute六个数据包至192.168.99/30及192.168.100/30网段观察。

Advertisements

One thought on “Labs: JUNOS per-packet load balancing

  1. JUNOS 101实验台配置及Juniper/Cisco互操作测试 « 互联自由之路

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s