本节书摘来自异步社区《bgp设计与实现》一书中的第2章,第2.8节,作者【美】randy zhang , micah bartell,更多章节内容可以访问云栖社区“异步社区”公众号查看
bgp设计与实现
如前面章节“比较控制层面和转发层面”所提到的一样,ip rib,或者称为ip路由选择表,是一个十分关键的数据库,它为控制层面和转发层面之间提供了重要的联系。一方面,不同的路由选择源,或路由选择协议,例如bgp和is-is,都将它们的路径加载到rib中。另一方面,rib为创建转发数据库(一些交换方法直接使用rib进行数据转发)提供信息。
当每一种路由选择协议接收路由更新或者其他信息时,它会选择到达任何给定目的地的最佳路径,并尝试把这条路径安装到路由选择表中。当多条到达同一条前缀/掩码的路径存在时,路由器会根据该协议所涉及的管理距离来决定是否安装路由。ios已经为不同的路由选择协议,或路由选择源预先定义了管理距离,但这些管理距离是可以被配置的。来自于较低管理距离的路由选择源的前缀优先。备份路由仍然被路由选择协议所维持——如果路由选择协议支持的话——当已存的最佳路由失效时,备份路由可以被用作最佳路由。
注意:
当bgp在ip rib中安装路由失败时,将会在路由器的bgp rib中报告一条rib失败的消息。失败的代码将标识出原因。请查阅附录b以了解更多的信息。
ip rib被组织成网络描述符块(network descriptor block,ndb)的集合。每一个ndb就是路由选择表中的一个表项,它代表了通过下列3种来源之一获取的网络前缀:
在路由器的本地接口上配置的一个地址/掩码对。这样就成为一条直连路由,它具有最高的优先级,或者说它的管理距离为0。
在路由器上配置的静态路由。静态路由的默认管理距离是1。
动态路由选择协议,例如bgp。
ndb包含的信息有网络地址、掩码、管理距离,还有动态路由选择协议操作所需要的信息,例如路由重分布。因为ndb中的每一条前缀可能通过多条路径到达,因此也使用了路由选择描述符块(routing descriptor block,rdb)。每一个ndb可以连接一个或多个rdb,这些rdb存储了实际的下一跳信息。当前,一个ndb最多可以连接8个rdb,这些rdb设定了基于每目的地(per destination)的负载分担链路数目的上限(也就是8条)。注意到,由于ndb受单个路由选择协议的控制,因此路由选择协议就决定了每个ndb可以关联多少个rdb。
en/us/tech/tk365/technologies_tech_note09186a0080094823.shtml):
无类(classless)——最长匹配前缀查找。如果没有找到匹配的前缀,就使用默认路由;如果有,就使用它。从cisco ios软件版本11.3开始就使用默认的ip无类查找了(虽然它仍然显示在运行配置中)。
有类——最长匹配查找。如果路由选择表包含了目的主网络(major network)(由目的地址解析出的有类网络)的子网,那么将不考虑选择超网(supernet)和默认路由。