JUNOS Qualified Next-Hop静态路由

之前我介绍了JUNOS静态路由常见的几个扩展参数,而JUNOS同样拥有多种不同类型的静态路由。JUNOS的灵活性便体现在实现的过程中,往往需要选取合适的静态路由类型,并且配合恰当的扩展参数,从而达成预想中的结果。当然,将所有的静态路由类型与其扩展参数逐一搭配起来的话可能有接近100种不同的组合,一般的工程师往往会直接引用经典的配置组合安装到现实的网络环境当中。而且这样做在绝大部分情况下都是没有问题的,正是由于这个原因这些配置才会成为经典。然而网络工程师的工作并不应该如此乏味,对于高段的网络专家而言,网络配置,网络设计同时也是一种极富创造力的工作。这也是我在《互联自由之路》当中所倡导的观点。从另一个极端来说,严格的遵循各种经典配置典范,不允许参杂任何个性化的构思,尽管枯燥乏味,而这也是使你成为网络专家的另一种途径。怕的是在缺乏创造力的同时,经典典范又掌握得不上不下的。有感而发多说了几句。

今天介绍的是JUNOS静态路由中的其中一种极具特色的类型:Qualified Next-Hop。Qualified Next-Hop静态路由能够为各种静态路由设置独立的优先级。类似于IOS的浮动路由,然而相比起只能作为动态路由协议备份的浮动路由,Qualified Next-Hop静态路由的优势在于它同时还能够充当已有的静态路由备份的浮动路由,甚至你可以利用Qualified Next-Hop同一个目的IP网段设置多条分别拥有不同的优先级或者Metric值的静态路由。而路由器则根据优先级与Metric的比较选择出当前拥有最优Qualified Next-Hop的静态路由,作为数据转发路径。Qualified Next-Hop静态路由对于IPv4以及IPv6,甚至Unnumbered以太网接口均同样有效。

junos_101_qualified-next-hop

在本实验中,我们将在R3上对R1的环回接口IP网段10.0.6.1/32同时设置两条静态路由,Qualified Next-Hop分别是通过R2发送: 10.0.4.2, Preference=100, 出站接口为fxp1.23;以及直接到达R1: 10.0.4.14, Preference=200, 出站接口为fxp2.13。这样设计的目的是为了:使这两条Qualified Next-Hop静态路由先后充当我们在预配置中R3已经通过OSPF路由协议学习到的10.0.6.1/32目标的备份浮动路由。

[edit logical-routers r3]
nigel@itaa7.2# set routing-options static route 10.0.6.1/32
qualified-next-hop 10.0.4.2 preference 100

[edit logical-routers r3]
nigel@itaa7.2# set routing-options static route 10.0.6.1/32
qualified-next-hop 10.0.4.14 preference 200

[edit logical-routers r3]
nigel@itaa7.2# show routing-options
static {
    route 10.0.6.1/32 {
        qualified-next-hop 10.0.4.2 {
            preference 100;
        }
        qualified-next-hop 10.0.4.14 {
            preference 200;
        }
    }
}
router-id 10.0.3.3;

在配置中可以发现,JUNOS同时认为这两条Qualified Next-Hop静态路由均指向10.0.6.1/32网段,因此它们的配置均被归纳入10.0.6.1/32的配置层次底下。同时查看R3上10.0.6.1/32的路由,两条Qualified Next-Hop静态路由随同原有的OSPF均被装入路由表当中,只是由于当前OSPF路由的Preference值为10,因此被优选为最佳路径。

nigel@itaa7.2# run show route logical-router r3 10.0.6.1 

inet.0: 11 destinations, 13 routes (11 active, 0 holddown,
0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.6.1/32        *[OSPF/10] 00:00:06, metric 10
                    > to 10.0.4.14 via fxp2.13
                    [Static/100] 00:00:06
                    > to 10.0.4.2 via fxp1.23
                    [Static/200] 00:00:06
                    > to 10.0.4.14 via fxp2.13

我们可以通过关闭R3上的整个OSPF进程,观察第一条Qualified Next-Hop静态路由成为有效的最佳路径,并且R3通过R2向R1的环回接口发送数据包。

[edit logical-routers r3]
nigel@itaa7.2# deactivate protocols ospf 

[edit logical-routers r3]
nigel@itaa7.2# commit
commit complete

[edit logical-routers r3]
nigel@itaa7.2# run show route logical-router r3 10.0.6.1 

inet.0: 8 destinations, 9 routes (8 active, 0 holddown,
0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.6.1/32        *[Static/100] 00:08:54
                    > to 10.0.4.2 via fxp1.23
                    [Static/200] 00:07:26
                    > to 10.0.4.14 via fxp2.13

[edit logical-routers r3]
nigel@itaa7.2# run traceroute logical-router r3 10.0.6.1
traceroute to 10.0.6.1 (10.0.6.1), 30 hops max, 40 byte
packets
 1  10.0.4.2 (10.0.4.2)  0.449 ms  0.468 ms  0.384 ms
 2  10.0.6.1 (10.0.6.1)  0.655 ms  0.682 ms  0.614 ms

当我们启用第二条测试的时候需要注意一点,与其他JUNOS路由表内的路由一样,优先级较低的路由取代优先级较高的路由成为最佳路径的前提,便是拥有较高优先级的路由成为非活跃从路由表中消失。对于JUNOS静态路由而言,其失效的其中一个原因在于出站接口进入down状态。因此,假如我们关闭的是R2上与R3直连的接口fxp2.23,由于以太网基于Carrier侦测缘故,R3上的接口fxp1.23并不会因此而进入down的状态。指向10.0.4.2的静态路由依然存在于R3的路由表中,这将造成发送到10.0.6.1的数据包丢失。

[edit logical-routers]
nigel@itaa7.2# deactivate r2 interfaces fxp2.23

[edit logical-routers]
nigel@itaa7.2# commit
commit complete

[edit logical-routers]
nigel@itaa7.2# run show route logical-router r3 10.0.6.1  

inet.0: 8 destinations, 9 routes (8 active, 0 holddown,
0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.6.1/32        *[Static/100] 00:23:17
                    > to 10.0.4.2 via fxp1.23
                    [Static/200] 00:21:49
                    > to 10.0.4.14 via fxp2.13

[edit logical-routers]
nigel@itaa7.2# run traceroute logical-router r3 10.0.6.1
traceroute to 10.0.6.1 (10.0.6.1), 30 hops max, 40 byte
packets
 1  * * *
 2  * * *
 3  * * *
^C

这样的情况往往出现在错误的在仅有一个出站接口而通过多路访问共享链路连接两个出口的路由器上配置两条Qualified Next-Hop静态路由的情形底下。在这样的环境中,你应该考虑的是诸如VRRP这样的技术。而我们测试的时候应该将R3上与R2直连的fxp1.23接口关闭掉。

[edit logical-routers]
nigel@itaa7.2# deactivate r3 interfaces fxp1.23             

[edit logical-routers]
nigel@itaa7.2# commit
commit complete

[edit logical-routers]
nigel@itaa7.2# run show route logical-router r3 10.0.6.1    

inet.0: 6 destinations, 6 routes (6 active, 0 holddown,
0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.6.1/32        *[Static/200] 00:36:24
                    > to 10.0.4.14 via fxp2.13

[edit logical-routers]
nigel@itaa7.2# run traceroute logical-router r3 10.0.6.1
traceroute to 10.0.6.1 (10.0.6.1), 30 hops max, 40 byte
packets
 1  10.0.6.1 (10.0.6.1)  0.418 ms  0.428 ms  0.376 ms

2 thoughts on “JUNOS Qualified Next-Hop静态路由

  1. 孟老师,

    我不是您的学生,但是在学习JUNOS的路上,您的文章让我受益不少。从这个角度来说,我算是您的一个学生:)

    您发在这里的文章样样都是精品,能否把这些文章搬到国内网站上啊?或者做个国内镜像?如果有更多的人能够拜读到这些文章,他们在学习JUNOS的路上可以少走一些弯路!国内很多人想学习Juniper技术,但是能够获得的资料太少,而且遇到疑惑时很难得到有效地帮助,所以很多人都是浅尝辄止
    ,即便是有心人想深入,却因为种种限制(如缺乏硬件环境,高级指点)而不得不放弃。您的文章无疑为我们点亮了一盏明灯,有幸发现了这个宝库,真的很想share给国内的朋友!

    regards

    Jovoris

发表评论

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