您的位置:首页 > 理论基础 > 计算机网络

随想-BGP,方圆网络的规矩

2009-04-24 01:37 225 查看
很久没有发表过Blog了,一是因为没有什么进取心,懒了;二是因为忙,新领导上来了,事情多;三是实在不知道写啥。一个单位只管一台路由器和几台交换机的网管写有关网络技术方面的blog只会贻笑大方。那就当做是随想来写吧,一笑泯之的态度与我与人也会觉得容易接受一些吧。

言归正传了。想侃BGP,是因为它很特别。从它身上不仅看得到互联网络的技术,而且看到互联网络的规则。如果说ospf是一种网络技术,那么bgp就是一套网络规则。

BGP很功利,几乎所有的命令参数都是为了isp甚至nsp的利益而设的,天知道哪位神人在想出dampening后,无奈的网管们只能每天敲着一遍又一遍show ip bgp,然后忍无可忍的甩出那台接听键已经褪色的手机,机械的拨号到你的ISP技术支持:“have you dampened my f***ing route?”

BGP很傻,还带点天真。作为一个路由协议,居然以tcp可达为前提,好吧我有Igp;ebgp娇气得只跟直连邻居交往,还好我可以设multi-hop;network命令的网段必须与路由表一摸一样,这从根源(输入)在一定程度上限制了/32位路由的注入;最狠的是iBGP居然不传iBGP学到的路由,美其名曰“水平分割”,然后建议“iBGP全连接”,换句话说,用一条条pvc和E1把我的口袋水平分割,然后“全连接”到ISP里。终于发现了,最傻最天真的人,其实在部署BGP。

BGP很娇气,只要你有一点不满足它的要求,哪怕是近乎不合情理的要求,它就撒手不干。最明显的莫过于同步规则:你明知道就是因为IGP没有办法处理如此大量的路由才交给BGP处理的,结果它要求你的IGP也要处理同样的工作。

BGP很不近人情,直接表现在于其实在太复杂了。你完全不能理解这是一种类似于RIP性质的距离矢量协议(准确说是路径path矢量协议)。为了体现其复杂性,路由信息称为NLRI,里面包含有:withdraw(丢弃?我不会翻译)路由,属性和路由前缀。你能想象你的RIP在广播完有效地路由表后继续广播失效的路由表吗?你撑着灯笼、悬梁刺股的想,能为一条路由想出其10余种属性、想出一套10条以上的选择顺序吗?现在你知道,原来EIGRP用5个metric参数来选路已经够给面子了。

是的,这就是BGP,它天生就是板着脸,不屑于理会网管员对它深情的眼眸。

因为,它所要完成的,是任何网管员都无法独立完成的任务:维护Internet的路由稳定。它必须对它的职能负责。Internet是一场Global Game。参与这场游戏,就必须理解游戏的规则,而BGP,就是这些规则。

互联网络的维护需要哪些规则呢?我试着总结了两点:
1、每个管理者有义务确保自己的网络是有效地,稳定的;
2、每个管理者有权利决定源自本身的数据流转发,也有权利建议源自其他AS的数据流转发,但以对方自身选择为优先。

你可以狠心的投诉你的ISP,认为它随意的惩罚了你的路由。但在你的路由被批准连接到Internet之前,恳请你试想一下,你的一条路由翻滚一次,整个Internet的网络就被刷新一次,当然这种不稳定可能在你的ISP之内就被限制,但还是会影响ISP的其他客户。为了确保网络的稳定性,ISP需要对该路由进行惩罚。

你可以对BGP的TCP底层技术嗤之以鼻,只是请试想一下,BGP要处理数以万计的路由,并且需要确保传输的可靠性。这些都是TCP可以提供的,为何不直接以其作为底层协议来使用呢?关于EBGP的多跳,更多是出于管理的考虑:两个EBGP peers之间的区域,很多时候是管理上的真空带,若存在有多条的情况,如何维护每跳路由,使其能够正确的转发这些TCP流量都需要考虑,因此EBGP在刚开始时没有让EBGP使用多条,况且现在可以使用ebgp multihop来解决;关于network命令,更加体现了BGP的非技术特性:维护路由的有效性。若某个AS发布一条并不存在的路由,从而使得ISP网络内部产生路由黑洞,其后果如何呢?关于iBGP水平分割的问题,首先是技术上BGP并没有考虑到AS内部的环路问题,因而要避免iBGP peers之间循环转发NLRI,只能依靠水平分割的方式;而现在所使用的反射和联邦等技术,从客观上降低了网络全连接的需要。

关于BGP的同步问题,实际上并不是BGP的问题,而是IP路由的问题。每一跳的IP路由都是独立的,也就是说,在TCP层,路由器之间没有任何方法确保对方能够转发某条路由的数据。但为了维护整个互联网络路由的有效性,BGP只能依托于每个AS内的IGP检验其iBGP中间各跳是否有路由转发iBGP之间的数据。实际上,iBGP之间建立全连接后允许关闭同步,实际上减少中间路由器的参与,也是对所管理的网络有效性的负责。

关于BGP的属性和选路,实际上体现了互联网络的游戏规则。origin所确定的顺序,就体现了路由本身的稳定性;as-path确保了无环路并为选路提供了客观参考因素;next-hop确保对于BGP路由器来说每一条路由均可达;MED的选路级别低于local-pref,体现了AS的自主选路特性;出于减少路由表体积及提高路由表稳定性而使用的atomic-aggregate属性标示汇聚路由......等等方面,无不体现了BGP为维护互联网络的正常运行所费尽周折提出的。

回头看看,BGP所完成的,就是为了确保互联网内其他使用者,尽可能的从规则上管理好每一条AS内部路由的通告。无规矩不成方圆,对每一个AS进行的限制,才成就了今天互联网络的飞速发展。同样的定律至于人与社会,不知道是否也合适呢?本文出自 “苦瓜” 博客,请务必保留此出处http://golehuang.blog.51cto.com/7499/152778
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: