MPLS-10 LDP 标签分发控制
作者:互联网
LDP控制标签通告(条件通告)
顾名思义,就是向外发送指定的标签
Advertise-labels
Router(config)#mpls ldp advertise-labels for acl/prefix to acl
For:针对于哪些前缀
To:针对地某一个LDP的neighbor的routerid
特别注意
想要使用advertise-labels,就必须要输入一条命令,默认情况下所有设备都默认通告所有标签。所以,你需要手动的关闭这一功能,才可以使用这个条件通告。
No mpls ldp advertise-labels
否则是不生效的。
所以一个完整的分发控制命令应该是这样儿的 1 access-list x per x.x.x.x //抓取具体的前缀 2 access-list y per y.y.y.y //指定具体的LDP 邻居 查看具体的邻居rid,可以使用show mpls ldp discovery来查看,里面写着的LDP ID就是RID 3 mpls ldp advertise-labels for x to y // for 前缀,to 邻居 4 no mpls ldp advertise-labels //一定要记住,要关闭默认的发送所有
实例1
需要:
在R2上进行分发控制,R2只给R3发送一个192.168.1.0的标签,其它不发,
另外,在R1上可以看到所有的R2发过来的标签
如何操作?
思路
1 肯定是要先抓取前缀,以及具体的邻居
mpls ldp advertise-labels for1 to 2
然后在R2上指定这个邻居发送特写的捆绑标签
mpls ldp advertise-labels for 1 to 2
将acl 1 抓取的前缀发给ACL 2 指定的邻居
最后的最后,千万不要忘了,那条命令
好了,我们来看一下结果如何
如何查看呢?
Show mpls ldp bindings,查看lib表是最直观的了
因为可以很简单的看到一个前缀分别有哪几个邻居发来了标签,内容是什么
下图为原有LIB表,
经过分发控制之后,是这样的
在R3上可以看出,只有192.168.1.0/24的这个前缀有2.2.2.2的标签,
看来第一个要求我们是满足了,那第二个要求呢?
我们先来分析一下R2上的配置,
抓取192.168.1.0/24这个前缀,然后指定邻居通行标签,
那么没有指定的邻居呢?是不是就不通行标签了?
是的,没错,
所以,如果想要完成要求的第二步,让R2为R1通告所有标签
但是如果你按上面的操作,不针对r1进行单独处理的话,就会出现这样的情况
在R1上根本看不到R2发过来的任何标签
分析一下为什么?
因为我们在前面进行了no mpls ldp advertise-labels,不发送全部标签,
而只permit了R3,
针对这一情况我们可以这样做
针对于1.1.1.1的这个邻居,通告所有的标签,
为这操作是为了不影响之前的那条命令
Mpls ldp advertise-labels for 1 to 2
这样一来,我们看一下实际的效果会是什么样的吧
可以看到,标签全部发送到R1上了.
实例2
针对于某一些/全部邻居,只发送某一个/多个指定的前缀,
什么意思?
比如 R2现在只想给R1和R3通告192.168.1.0 这个网段的标签,其它的不进行通告
要如何操作呢?
动脑筋想一下,是不是很简单,
想一下刚刚讲到的for x to y
X 是针对的具体的前缀
Y 是针对的具体的邻居,
刚才的要求是,只通行192.168.1.0 这个前缀给R1和R3,而此时R1和R3是我的全部邻居,我可不可以用any 来代替呢?当然可以,
那我的命令是不是就可以这样写了
Access-list 1 per 192.168.1.0 Access-list 2 per any Mpls ldp advertise-labels for 1 to 2 No mpls ldp advertise-labels
我这里再次强调的目的就是为了让你加深印象,而不是只会命令,一定要明白它里面的含义是什么,再有,就是要理解题目的真正意途。
总结
其实,在我看来,这个advertise-label和之前学习的那个BGP的community 属性中no-advertise值还是很像的。
反正就是一句话,关闭全部通告,指定前缀给特定的邻居(RID)
LDP 入站标签过滤
控制自己所接收的标签,这个人个人理解,有点儿像distribute-list xxx in 的效果
Mpls ldp neighbor x.x.x.x labels accept acl-number
和上面的那个正好相反,是我想接收指定的前缀标签
实际的来看一下吧
还是上面的环境
在所有的LSR上运行MPLS
然后在R1上新宣告一个接口10.0.0.1 /24 进入到网络
在R2上是可以看到这个前缀被捆绑标签并发送到R2上的,
现在我们在R2上用标签过滤技术来控制一下,
需要如下,
只接收10.0.0.0这个前缀的标签,不接收R1其它的前缀标签
先来想一下,这样的操作是不是我们想要的,
首先需要明确一点,在标签过滤的过程中,ACL的作用是什么?
ACL中的permit,和deny,其意义在于接收/过滤,
刚才我们用permit 10.0.0.0,那也就意味着我们接收10.0.0.0这个前缀,
而ACL的最后隐藏着deny any 会将其它的全部干掉。
咱们来验证一下
看到了吧,除了这个10.0.0.0这个前缀,其它的标签全都没有1.1.1.1 发来的了。
在此图中R3按理来说是不可能收到R1的标签的,因为我们做了非直连ldp邻居,也就是targeted 了,所以会收到。
那要是我只拒收10.0.0.0,而放行其它 的呢?
我们可以不可以这样
Access-list 1 deny 10.0.0.0 Access-list 1 per any
?
可不可以呢?
试一下就知道了
所有的标签又都过来了,
不过好像有些慢,
如果想要加快它的收敛速度,可以像BGP那样,清除一下邻居表
Clear mpls ldp neighbor *
-----------------------------------------
CCIE成长之路 --- 梅利
标签:10,LDP,R2,标签,labels,MPLS,ldp,advertise,前缀 来源: https://www.cnblogs.com/meili333/p/13723048.html