> 内部BGP协议(iBGP)的主要作用是向你的内部路由器提供更多信息。上期关于BGP的讲座中我们关注的是stub配置,即单独一台路由器为一个自治系统(AS)内的所有BGP会话服务。这次我们将深入研究BGP的实际应用:iBGP和怎样实现多宿主(multi-homing)网络。 如果你准备又增加一台BGP路由器,并把它与另一个对等互联伙伴相连,那么你的网络并不会得到多少改善,除非你自动系统的内部网关协议(IGP)知道面对这种情况该做些什么。这时有几种做法,而其中之一是严重错误的。你不能简单的把所有的Internet路由信息都发送给给自治系统内运行内部网关协议的路由器并指望得到最好的结果。实际上这样做是很可笑的,因为通常OSPF的运算过程会让你的路由器死机。同样,你必须让一台边界路由器收到的路由信息也让另一台边界路由器收到,但是除非两台边界路由器都采用BGP协议,否则信息就会丢失。 解决办法是在你的AS内所有的边界路由器之间建立一个内部BGP对等互联。传统上明智的做法是,你的网络要包含一个运行iBGP的核心网络(或者叫骨干网),并且在内网采用的IGP协议(OSPF或其它)路由中指定一条缺省路由。只要内部网关协议将数据包传送给主干网络,那里的路由器就能选择最佳的出口策略。 主干网络可能十分复杂,并且BGP中提供的AS-Path属性也不足以保证不会导致路由环回。这表示iBGP不会广播任何它从对等互联伙伴那里获得的路由信息,这似乎令iBGP无用武之地?并不尽然:这一限制意味着每台iBGP路由器都必须与其它所有iBGP路由器建立对等互联关系。这也被称为一个全网状(full mesh)结构,但实现起来同样困难重重。 当网络变得足够庞大时,每增添一台BGP/iBGP会话路由器都意味着你必须为之与其它每一台路由器都建立一个连接。为解决这些问题,我们的装备库为你提供了几样很便利的工具:路由反射器(route reflector)和联盟(confederation)。 谢天谢地,这些术语都可以望文生义。一个路由联盟其实就是一个单独的内部AS,其概念是将内部AS分解成几个小系统,并且利用外部BGP把它们连接在一起。每个内部小系统仍然是全网状(full mesh)结构,不过它的规模是你可以控制的程序。要实现路由联盟,配置起来相当麻烦,所以大多数人都选择另一种方案:路由反射器,这是一台iBGP路由器,它可以向其它iBGP路由器广播路由信息。具体做法是先创建几个iBGP路由器簇(cluster),然后把它们与一台路由反射器相连。 反射器并不会发送每一条路由信息,而只向其对等互联伙伴发送最佳的路径信息。当采用路由反射器时,存在一个收敛的问题,称之为“收敛”意思是网络中每一台路由器都有相同的信息,或者更准确地说,它们都对网络拓扑结构有一致的看法。 |