为何选BGP

既然BGP的前提是网络层是通的,那还需要BGP做什么用呢?BGP对等体需要TCP:端口建立邻居关系,也就是3层以下(包括网络层的路由)都是通的,那既然网络都已经通了,那还要BGP干什么用呢?你可能没有意识到一点,互联网上任意两台计算机要想通信,必须拥有彼此的路由表。你要想Ping8.8.8.8这台主机,你的计算机必须要有“8.8.8.8”的路由表。你可能会说不对吧,你的电脑上并没有直接指向“8.8.8.8”的路由表!是的,不光你的电脑,地球上几乎所有的电脑都没有直接指向“8.8.8.8”的路由表!可是你的电脑一定有一条神奇的路由,它就是“0.0.0.0”!知道0.0.0.0这条路由的真实含义吗?它包含地球上所有的路由,其中自然包括8.8.8.8。所以相当于你的电脑上拥有了8.8.8.8的路由。而且这个路由指向通向互联网的上游设备,即运营商。读者可能会迷惑不解,以上的文字和题主的问题好像并没有什么联系啊。太有联系了,不光互联网上的计算机之间要有彼此的路由,互联网上的路由器同样也要有彼此的路由,还包括计算机的路由。如果不,你们的计算机又有何德何能彼此通信呢?如果有不同意见,可以评论区讨论。既然互联网上的路由器需要同步彼此的路由表,是不是每个路由器都要与其他路由器建立邻居关系,分享彼此的路由表?无论是理论上,还是真实网络上都没有这种实现,因需要N*(N-1)/2邻居关系,假设全球路由器有N=万台,需要多少邻居关系大家一下就可以算出来。这是不可能的实现的任务。通常的做法是,每个运营商选出几个功能强大的边缘路由器PE。假设电信选出的PE是老王,联通选出的PE代表是老李。它们使用一根光纤直连,老王和老李在一个相同的网段,问老王和老李能通信吗?当然可以,因为老王和老李网络层是连通状态,对吗?可是电信里还有其他路由器小王,能和联通的老李通信吗?不能啊,因为小王和老李没有彼此的路由表啊。怎么才能让两者通信呢?只要在老王与老李上运行BGP路由协议,老王把电信内部所有的路由告知老李。老李呢,把联通内部所有的路由都告知老王。是不是就可以完成双向的路由同步,那么电信内部所有的路由器(网段),其中包括老王、小王,都可以与联通的所有路由器(网段)通信,其中包括老李、小李。互联网由好几百个运营商组成,分享彼此路由的原理,并最终完成互联网路由同步都在上文描述中。如果路由出现了短暂的不同步,用户直观感受就是断网了。为什么一定要BGP,难道OSPF、ISIS这些路由协议不能替代BGP?BGP最大的好处是粗线条,什么意思呢?BGP只告知对方自己有小王、小美、小丽…,但是不告知小王、小美、小丽之间藕断丝连、勾肩搭背的暧昧状态。但是OSPF、ISIS却恰恰相反,它一一告知对方,小王和小美牵小手,小王和小丽还有一腿,小丽和小美还暗恋彼此。。。正是因为BGP考虑的是宏观视野,兼容并蓄,海纳四方,所以容纳几乎无上限的路由表条目,上限取决于路由器CPU、内存的上限。OSPF/ISIS着眼微观细节,设计之初为了不让OSPF/ISIS陷于海量计算难难以自拔(影响同步/收敛速度),通常对容纳的路由条目做了最大数目的限制。综上所述,OSPF/ISIS的使用场合是运营商内部的路由同步,BGP用于运营商之间的路由同步。当前互联网全局路由表的条目接近万条,对于BGP来说小菜一碟,换OSPF/ISIS试试,压根就容纳不了。车小胖谈网络

上善若水



转载请注明地址:http://www.jipujeep.com/jpkb/12150.html
  • 上一篇文章:
  • 下一篇文章: