请画一个小人游戏:利用虚拟下一跳实现IBGP的负载均衡

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 11:41:38
         在一个较复杂的大型网络中,一般采用IBGP(内部边界网关协议)协议承载用户路由,一方面IBGP协议属性较多,利于实现各种复杂的路由控制策略,另一方面IBGP协议较为稳定,不会因为用户路由和其他AS(自治系统)路由的波动引发内部网络的不稳定性。但大型网络中流量很大,冗余性和冗灾性要求很高,因此从一个节点到另一个节点之间通常有多条路径实现冗余备份,如何在不同路径之间实现负载均衡也显得十分重要。
  IBGP负载均衡存在的问题和局限性
  在一个复杂的大型网络中打开IBGP负载均衡可能会带来很难预料的结果。众所周知,在存在多条冗余路径时,IBGP按Weight(权重)、 Local Preference(本地优先)、AS-path(自治系统路径)、Origin Code(起源)、MED(公制值)、ROUTER_ID(路由器标识)等条件进行比较选路。假设每条路由的Weight、Local Preference、AS-path、Origin Code完全一样,全网打开IBGP负载均衡,则从源到目的的所有路径上只要MED路径相同,均可实现负载分担,如此带来的弊端是一方面从源到目的的流量在大量路由器之间穿透,各路径之间的流量难以控制,另一方面目前INTERNET全网路由约20万条,各路由器路由转发表将十分庞大,对设备资源消耗过多,影响路由器的性能。
  如果不打开IBGP的负载均衡,将会引发另外一个问题——如果目的网络有两台负载均衡路由器,假设源到目的路由的Weight、Local Preference、AS-path、 Origin Code、MED均相同,则根据IBGP选路顺序,在Weight、Local Preference、 AS-path、Origin Code、MED均相同的情况下,根据ROUTER_ID大小进行选路,因此从源到目的流量只选择ROUTER_ID小的路由器,不能做到负载均衡。
  利用虚拟下一跳实现IBGP的负载均衡具体实现
  针对以上问题,可以采取利用虚拟下一跳实现IBGP的负载均衡办法。假设网络中用IBGP承载用户路由,IGP(内部网关协议)为IS-IS(中间系统至中间系统),在两台目的路由器中分别设置一个虚拟相同的地址,在与其他IBGP邻居路由器宣告路由时,将该地址作为到达下一跳地址,在两台目的路由器上再分别配置一条静态路由,将该虚拟地址的下一跳指向真实的网络地址。采用该方式后,再看从源到目的的流量将如何选路。由于Weight、Local Preference、AS-path、Origin Code、MED均相同的情况下,强行将到达目的的路由下一跳指向相同的虚拟地址。该地址对于源路由器在选路时完全相同,将以负载均衡的方式分别发送到两台目的路由器。
  采用此方法,还可以在目的路由器建立IBGP邻居中设置Route-map(路由图) 控制虚拟路由下一跳指向具体路由数量,而其他路由下一跳不变,提高路由的可控性。
  通过采用虚拟下一跳的技术实现IBGP的负载均衡,对设备性能几乎无影响,实现简单,对于复杂网络有利于控制策略的部署。