上一篇文章只是讲述了多站点穿过mpls域进行通讯,本文专门从路由传输与数据传输两个维度详细讲解传输的过程,上文实验拓扑以下图所示,为了简单起见,只已客户A为例(紫色)进行描述 网络
当R1要把路由传给R3时,因为R3上也运行了vrf,因此就须要有一种判断机制来肯定将路由存放到那一个vrf中,而rt的引入就是结局这个问题,他做为只对vrf感兴趣的判断依据,存放于BGP updata的扩展community属性中,因此rt属于控制(路由传输)层面的参数 ide
关于rd值,以R1为例,不少解释说他是为了在R1上标识路由的惟一性,其实这个说法并不许确,再往深层次的挖,就算R1上instance A与instance B使用了相同的路由,但BGP updata报文中的rt值已经判断出要传输的路由属于哪一个vrf,因此rd值的做用并非在此体现 学习
仍是以R1为例,假设instance A与instance B上都有5.5.5.5/32,发送给R3后,因为有rt这个扩展属性,因此R3使能分辨出该放到哪一个vrf中的,但以后若是R1给R3发的是一种撤销报文(route reserve),这种报文与BGP的updata不一样,他不会去查看属性,因此此时的R3就不知道该撤销那个vrf中的5.5.5.5/32,rd也只是在这种场景下发挥做用。这也是为何rd是粘附在路由前缀以前,而rt在扩展属性中,rd与rt同样属于控制(路由传输)层面的参数 3d
首先要说明的是,label属于转发(数据传输)层面的参数。当R1将路由传递个R3后,R3将数据要发送给R1,此时他知道如何去往R1,但数据包送到R1的那个vrf中却没法断定,因此bgp在经过rt值将路由发送过来时,一并附带一个label值,就是用于告诉R3将数据发往哪一个vrf的 blog