源地址:
https://www.juniper.net/techpubs/software/junos-security/junos-security10.2/junos-security-swconfig-mpls/topic-47253.html
正文:
这个案例向我们展示了如何使用RSVP作为signaling协议来路由器之间的IP网络里创建LSP。(译者按:我所理解的所谓signaling协议,就是用于分发label,确定哪个LSR在哪个口用哪个label的协议。如Cisco 的LDP,Juniper常用的RSVP。)
必备条件:
在开始本实验之前,删除设备上的安全服务。具体参考 https://www.juniper.net/techpubs/software/junos-security/junos-security10.2/junos-security-swconfig-mpls/topic-47168.html
概述和拓扑:
典型的RSVP-signaled LSP
在MPLS网络中,若想在路由器之间建立起LSP来,你必须亲自手动激活MPLS family、在每个transit接口上配置RSVP(本例展示了如何激活MPLS以及在ge-0/0/0口上配置RSVP)。另外,你必须在这个网络中所有的接口上都激活MPLS(译者按:也就是说不管是不是transit接口都要激活MPLS)。
这个案例展示了如何:在ingress路由器(R1)上,使用R7的loopback口地址(10.0.9.7)定义一个从R1至R7的LSP。下面的配置里为MPLS预留了10Mbps带宽。另外,这个配置禁用了CSPF算法,以确保主机C1和C2所用RSVP-signaled LSP是和IGP网络的最短路径是一致的。
配置
CLI快速配置
快速配置RSVP,请复制以下命令粘贴到CLI中
[edit] set interfaces ge-0/0/0 unit 0 family mpls set protocols rsvp interface ge-0/0/0.0 set protocols mpls label-switched-path r1-r7 to 10.0.9.7 set protocols mpls label-switched-path r1-r7 bandwidth 10m set protocols mpls label-switched-path r1-r7 no-cspf set protocols mpls interface all
分解步骤
下面的例子需要你定位到不同的配置层级当中再做配置。关于CLI层级请看 https://www.juniper.net/topics/reference/general/cli-editor-configuration-mode-quick-reference-using.html
配置RSVP:
1. 在所有transit接口上激活MPLS family
user@host# set interfaces ge-0/0/0 unit 0 family mpls
2. 在每个transit接口上激活RSVP
user @host# set protocols rsvp interface ge-0/0/0
3. 为所有接口激活MPLS进程。(译者按:这个其实就是在protocol mpls下做的配置,和第一步里unit 0 family mpls做一个区分,第一步是在interface下做配置,这一步是在protocol下做配置)
user@host# set protocols mpls interface all
4. 在ingress路由器上定义LSP
user@host# set label-switched-path r1-r7 to 10.0.9.7
5. 给LSP留10Mbps的带宽
user @host# set label-switched-path r1-r7 bandwidth 10m
6. 禁用CSPF算法
user@host# set label-switched-path r1-r7 no-cspf
结果
通过在configuration 模式下show命令确认你的配置无误。如果输出的不是你想要的配置,再过一遍这个例子中的配置指南来改正它(编者按:Juniper的文档的废话还真多...)。
简洁起见, 下面这个show命令的输出只包含了和这个例子有关的配置,无关的都用...略去了。
user@host# show ... interfaces { ge-0/0/0 { family mpls; } } } ... protocols { rsvp { interface ge-0/0/0.0; } mpls { label-switched-path r1-r7 { to 10.0.9.7; bandwidth 10m; no-cspf; } interface all; } } ...
配置完了之后记得commit。
验证
目的:
验证每台设备建立起了相应的RSVP邻居。例如,在拓扑图中,路由器R1会列出R2 R3这两个RSVP邻居。
命令:
在CLI里,输入 show rsvp neighbor 命令。
输出:
user@r1> show rsvp neighbor RSVP neighbor: 2 learned Address Idle Up/Dn LastChange HelloInt HelloTx/Rx 10.0.6.2 0 3/2 13:01 3 366/349 10.0.3.3 0 1/0 22:49 3 448/448
意义:
输出里可以看到邻居路由器的IP地址。请验证结果里列出来了每个建立了RSVP邻居的路由器的loopback地址。
验证RSVP会话
目的:
验证在RSVP邻居之间,RSVP会话成功建立了,另外验证带宽预留的值是不是和设定的一样。
命令:
在CLI里,输入 show rsvp session detail命令。
输出:
user@r1> show rsvp session detail Ingress RSVP: 1 sessions 10.0.9.7 From: 10.0.6.1, LSPstate: Up, ActiveRoute: 0 LSPname: r1–r7, LSPpath: Primary Bidirectional, Upstream label in: –, Upstream label out: - Suggested label received: -, Suggested label sent: – Recovery label received: -, Recovery label sent: 100000 Resv style: 1 FF, Label in: -, Label out: 100000 Time left: -, Since: Thu Jan 26 17:57:45 2002 Tspec: rate 10Mbps size 10Mbps peak Infbps m 20 M 1500 Port number: sender 3 receiver 17 protocol 0 PATH rcvfrom: localclient PATH sentto: 10.0.4.13 (ge-0/0/1.0) 1467 pkts RESV rcvfrom: 10.0.4.13 (ge-0/0/1.0) 1467 pkts Record route: <self> 10.0.4.13 10.0.2.1 10.0.8.10
意义:
输出的详细信息里,包含了session ID,以及对每个session的带宽预留,下一跳地址。请验证如下信息:
- 每个RSVP邻居地址以loopback地址的形式列出。
- 每个RSVP会话的状态是up的
- 对于Tspec(译者按:Tspec即traffic specification),对应的带宽值是10Mbps如上面所显示的。
验证RSVP-signaled LSP确实发挥了作用
目的:
验证ingress路由器上的路由表已经存在了你配置的其他路由器的loopback地址。例如,验证图中R1的inet.3路由表里有你配给R7的LSP。
命令:
在CLI里,输入 show route table inet.3 命令。
输出:
user@r1> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.0.9.7/32 *[RSVP/7] 00:05:29, metric 10 > to 10.0.4.17 via ge-0/0/0.0, label-switched-path r1–r7
意义:
从输出里可以看到RSVP路由存在于inet.3路由表。在MPLS网络里,请验证RSVP-signaled LSP和出口(egress)路由器R7的loopback口是关联的。