边界网关协议学习指引( 四 )


采用这种方案 , 我们就可以适应任何网络了:在广播网络中 , 我们不需任何配置 , 路由器根据实际情况修改下一跳 , 在非全连通的NBMA网络(注重是非全连通的 , 全连通的情况下不会产生该问题)中 , 我们可以通过配置命令强制路由器修改下一跳为通告接口 。
到此为止 , 我们已经很完善的解决了下一跳问题 , 我们在解决该问题的时候 , 给通告的每条路由都附加了一个数据:下一跳的IP地址 。这样在通告路由的时候 , 必须按照下面的格式:
{IP网络号 , 掩码位数 , 下一跳IP地址...}
我们之所以在下一跳IP地址后边加了一个省略号 , 是因为在后面的时候 , 我们还要在通告的每条路由后边添加其他的数据 。为了方便 , 我们把添加的这些为解决某些问题的数据称为属性 。在这里我们第一次引入了属性的概念 , 读者一定要理解 , 因为在BGP中 , 不论怎样强调属性的概念都不过分 。记住 , 属性就是跟路由束缚在一起的一些数据 , 这些数据为了解决某些问题(比如下一跳等) 。
引入属性的概念后 , 我们就可以把解决下一跳问题而跟路由束缚在一起的这个下一跳称为下一跳属性 。
& 本部分有下列要点:
1、为了解决下一跳问题 , 我们引入属性的概念 , 并在通告路由的时候附加下一跳属性;
2、一般情况下 , 路由器在通告路由的时候 , 根据实际情况修改下一跳(主要是看通告的接口的IP地址是不是跟通告的路由的下一跳位于同一个网络 , 假如是 , 则不修改下一跳 , 否则把下一跳修改为通告的接口) , 但为了适应某些非凡的情况 , 比如非全连接的NBMA网络 , 我们引入一个命令 , 该配置命令强迫路由器修改下一跳为自己;
3、一定要把握本部分介绍的属性的概念 , 并足够重视这个概念(在BGP中 , 不论怎样重视这个概念都不过分) 。
2.3 需求之三—自环问题
在RIP协议中 , 最大的一个问题就是自环问题 , 为了解决该问题 , 引入了许多机制 , 比如毒性逆转 , 水平分割 , 抑制时间 , 最大跳数等 , 这些机制只能部分的解决自环问题 , 而不能从根本上避免自环问题 。当我们把RIP进行扩展 , 来传播ISP之间的路由的时候 , 这个自环问题依然存在 , 但在这样高端的场合 , 部分解决自环问题不是我们需要的 。我们必须寻找合适的办法来从根本上解决自环问题 。
首先看一下在我们的扩展RIP协议中 , 自环是怎样产生的 , 如下面的图形所示:
三个ISP通过三台高端路由器进行三角形连接 , 三台路由器两两之间都建立我们这里的扩展RIP连接 。假设在ISP1中有一条路由192.168.16.0/24 , RT1把该路由通告给了RT3 , RT3又通告给了RT2 , RT2重新通告给RT1 。这时候假如由于某种原因 , 192.168.16.0/24路由在RT1中消失了 , RT1会重新安装从RT2获得的路由 。这样环路就产生了:在RT3中 , 192.168.16.0/24的下一跳是RT1 , 在RT2中 , 192.168.16.0/24的下一跳是RT3 , 在RT1中 , 192.168.16.0/24的下一跳是RT2 。
可以看出 , 路由自环发生的根本原因就是192.168.16.0/24这条路由的起源和经过的ISP是不明确的 。假设我们给192.168.16.0/24路由附加一系列数值 , 这些数值反映了该条路由经过的每个ISP , 这样就不会有自环了:假设在RT1上 , 为该路由附加一个起始数值 , 该数值代表ISP1 , 然后通告给RT3 , 在RT3望外通告给路由的时候 , 在原来的基础上再加上一个数值 , 该数值代表ISP3 , 然后通告给ISP2 , 同样的道理 , RT2通告给RT1的时候 , 也附加上一个针对ISP2的数值 。这样当RT1接收到192.168.16.0/24这条路由后 , 检查附加的代表具体ISP的数值列表 , 假如在列表中发现了自己 , 则不接收该路由 。

推荐阅读