梅利333

从无到有,自有至精

导航

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成长之路   --- 梅利 

posted on 2020-09-24 10:58  梅利333  阅读(558)  评论(0编辑  收藏  举报