mpls vpn为啥要使用MP-bgp?
发布时间:2020-11-09作者:小编阅读:0
使用vpnv4来封装所以用MPbgp,使用vpnv4来封装的原因是因为有可能存在对端不同vrf表内相同的路由条目 所以通过rd加ip的vpnv4格式进行区分。那么前缀本身community属性携带的rt值已经足够区分到底该条目属于哪个vrf了啊 ,为啥还要使用mp-bgp呢?
BGP是路由协议,对吗?
是的,但是在我眼里它更是一个数据库技术。
BGP,发送端(SendingPeer)分享自己的数据库表项,接收端(Receiving Peer)负责接收,问题来了:接收端是否要接收?
如果按照题主的假设,只要比较数据库表项(路由表条目)的community 携带的RT,与本地配置的RT是否相同。
如果相同,接收。否则,不接收。这听起来是一个很不错的主意。
如果接收端支持1000+个客户(VRF),有的客户是IPv4、有的客户是IPv6、有的客户是Ethernet,有的兼而有之,试问需要多少个RT可以区分他们?
至少要几千个RT,对吗?
意味着每一条路由需要匹配几千次,才能决定是否接收,不是吗?
举例
一个路由10.1.1.0/24(RT=10000)过来,至少要匹配几千次才能有结果。
如果过来1万条路由呢,意味着几千万次的匹配查找。这都是纯路由器CPU计算。
据我所知,一个运营商PE路由器有几百万、甚至上千万条路由,则意味着几十亿次的匹配计算,这个计算负担并不轻松。
怎么做可以实现更高效的匹配查找呢?
很简单,分级(二级)查找。
而要实现数据库分级查找,需要定义一级关键字、二级关键字。关键字在数据库里叫键(Key)。
一级键(业务分类)
BGP目前能够承载的业务,可以细分为:
IPv4、IPv6、VPNv4、VPNv6、EVPN、MVPN
每一种业务使用独一无二的ID来区分,这个ID就是AddressFamily + Sub Address Family。这样可以大大缩小的查找的范围。
一级查找的次数 = 路由条目的总数 *6
6代表业务种类的数量。一级键代表业务分类,那么二级键代表的就是客户分类。
二级键(客户分类)
二级键代表不同的客户,每一个客户使用独一无二的ID,这个ID就是大名鼎鼎的RT值。通俗地说,RT就相当于妈妈桑手机里的电话本:小胖子老李,丑八怪老王。维护的是客户名单。
二级查找的次数 = 路由条目的总数* 客户总数
分级查找的总次数 = 一级查找的次数 + 二级查找的次数
= 路由条目的总数 *6 + 路由条目的总数* 客户总数
不分级的查找总次数 = 业务种类 * 路由条目的总数* 客户总数
很显然,分级查找效率更快!
而实现分级查找的正是MP-BGP,当MP-BGP协商握手建立连接时,会通过capability来告知彼此,自己配置的address-family,那么一旦连接建立。对方只会将自己支持的address-family的表项传输过来,至于其它的,压根不会传输过来,这样的效率是不是更高呢?
分类查找这种技术就在我们身边,我们一直没有注意到它的存在。
一艘万吨货轮上运输N多客户的货物,货物的种类有M种,有鞋子、袜子、衣服,巧克力等等。
你是将这些货物不分青红皂白混装在一起,还是将不同种类的货物分别装在不同的集装箱里?
到目的地又是谁的分拣效率高呢?
答案自然是后者!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,请联系站长邮箱:shawn.lee@eliancloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
标题:mpls vpn为啥要使用MP-bgp?
TAG标签:MPLS
地址:https://www.elinkcloud.cn/article/20201109161542.html