网络层 | 您所在的位置:网站首页 › 路由器的选择协议位于 › 网络层 |
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取! 目录BGP 协议BGP 的作用BGP 的任务BGP 路由信息路由选择BGP 属性热土豆路由选择路由选择算法路由选择策略情景模拟双宿网络提供商网络BGP 报文为什么有 AS 内/间路由选择协议?策略规模性能参考资料 BGP 协议 BGP 的作用上一篇博客谈了 OSPF 协议,该协议是 AS 内部路由选择协议,但是当分组需要跨越多个 AS 进行路由时,涉及到了多个 AS 之间的协调,就需要自治系统间的路由选择协议。在因特网中,所有的 AS 运行相同的路由选择协议——边界网关协议(BGP)。BGP 协议和 IP 协议在所有的互联网中,都是极其重要的协议,因为 BGP 协议能够将因特网数以千计的 ISP 粘合起来。
BGP 协议起到了什么作用呢?对于一个 AS 和 AS 内的某一个路由器,在路由器中有一个转发表,用于选择和确定分组在路由器的输出链路。对于分组需要发送到 AS 之外时,BGP 提供的并不是特定的目的地址,而是提供了一个通过 CIDR 得到的网络前缀,这个网络前缀能够标志一个子网或一个子网的集合。概括起来,BGP 的作用是:容许子网向路由器其余部分通告它的存在。
BGP 对于每一台路由器来说,需要完成 2 个任务: 从临近的 AS 获得前缀可达性信息:BGP 允许每个子网向因特网的其他部分告知自己的存在,同时 BGP 确保在因特网中所有的 AS 都知道该子网; 确定到达子网的最佳路由:路由器将在本地允许 BGP 路由选择过程,此时 BGP 协议需要基于网络前缀的可达性信息,向路由器提供最佳路由。 BGP 路由信息现在我们的问题是:转发表需要 AS 内部路由算法与 AS 间路由算法共同配置,则不同的自治系统之间如何通信?首先考虑简单的情况,将整个 AS 看做一个整体,假设现在需要向所有路由器通告 3d 的可达性信息。首先 AS3 向 AS2 发送 BGP 报文,告知 3d 为与 AS3 中,接着 AS2 向 AS1 发送 BGP 报文告知 AS1 可以通过 AS2 访问 3d。通过这种我们熟悉的交互方式,就可以使所有 AS 知晓 3d 的存在并得到路径。
如上文所述,从一个路由器到达一个目的子网可能存在多条路径,BGP 是怎么在这些路径中选择路径呢? BGP 属性BGP 连接通告前缀时,前缀及其属性被称之为路由,前缀中包含一些称之为“属性”的信息。我们着重关注 2 个重要的属性: AS-PATH:包含前缀通告所经过的 AS 序列,例如在上文中的 “AS2 AS3”。同时这个属性还可以用于检测和防止通告环路,尤其是路由器在该属性中发现包含了自己所在的 AS,这种通告会被直接拒绝; NEXT-HOP:即下一跳,这个属性表示的是 AS-PATH 起始路由器接口的 IP 地址。有了这 2 个属性,对于一条 BGP 路由就包含了 3 个重要的组件:AS-PATH、NEXT-HOP 和目的前缀。 热土豆路由选择对于 AS 间的路由选择,路由器要如何学习到那些网络可供转发?BGP 路由选择的原理是热土豆路由选择,即从所有路由中选择到开始该路由的 NEXT-HOP 路由器具有的最小开销作为学习的信息。通过热土豆路由选择添加 AS 外前缀的步骤如图所示,当 路由表学习可达性信息时,BGP 协议和 AS 内路由选择协议(OSPF 协议)需要协同工作。
BGP 路由选择的原理是热土豆路由选择,下面就看一下 BGP 实际使用的路由选择算法。首先如果只有一条路由,则 BGP 只能选择这条路由进行传输。当存在多条路由时,按照下面的消除规则,直到剩下一条路由: 比较本地偏好:路由会拥有一个本地偏好属性,该属性的值是一种策略性决定,它取决于 AS 的网络管理员。本地偏好信息可能从该路由器设置,或者相同 AS 中的其他路由器学习到,拥有较高本地偏好的路由会被选择; 选择最短 AS-PATH:值得一提的是若 BGP 只使用这个规则来选择路由的话, BGP 会使用 DV 算法来决定路径,此时度量路径的是 AS 的跳数; 使用热土豆路由选择:选择具有最靠近 NEXT-HOP 路由器的路由; 如果仍然剩下多条路由,参考 BGP 标识符选择。通过这种算法,BGP 的路由选择可以考虑到尽可能低的开销,而不是自私的路由选择。 路由选择策略 情景模拟我们可以看到在路由选择算法中,首先是根据本地偏好来选择路由,本地偏好将由本地 AS 策略来决定。为了理解本地偏好起到的作用,我们来看一个情景。其中 A、B、C 是提供商网络,X、W、Y 是客户网络,其中 W、Y 由于只和一个 AS 相连接被称之为桩网络,X 连接 2 个 AS 被称之为双宿网络。
首先我们关注双宿网络 X。由于提供商网络会提供 AS 间的路由服务,因此它们会交互彼此之间知道的路由信息。由于 B->C 的路由有 2 条,可以是 B->X->C,但是 x 作为一个客户只想要享受服务,而不愿意转发 B->C 的流量。此时 X 将不会通告 B 或 C 关于存在 B->X->C 路径的事实,规避转发 B->C 流量。 提供商网络接下来关注提供商网络 B、C。由于提供商网络会提供 AS 间的路由服务,因此 A 会向 B 通告路径 A->W,而 X 是 B 的客户,B 会向 X 通告路径 B->A->W。 此时 B 会向 C 通告 B->A->W 路径吗?绝对不会,因为 W 和 C 都不是 B 的客户,B 转发非客户的数据报不会产生任何收益,B 希望强制 C 向 W 转发数据报时不通过 B。 虽然没有强制主干 ISP 之间的路由选择标准,但是商业运行的 ISP 们拥有约定俗成的规则——任何穿越 ISP 主干网的流量必须是源或目的位于该 ISP 的某个客户网络中。通俗的说,就是 ISP 仅为自己的客户提供服务,否则会出现蹭网络的“白嫖”行为。具体的协定,由 ISP 双方自行磋商,而且往往是对外保密的。 BGP 报文BGP-4 共使用四种报文: 打开 (OPEN) 报文,用来与相邻的另一个网关路由器建立关系。 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。 通知 (NOTIFICATION) 报文,用来发送检测到的差错。通用首部如下:
最后我们解决一个问题:为什么所使用的的 AS 间和 AS 内路由选择协议是不同的?对于这个问题,我们从以下 3 个方面展开。 策略在 AS 之间,策略会起到主导作用。一个给定的 AS 产生的流量不能穿过另一个特点的 AS,一个给定的 AS 也许会向控制它承载的其他 AS 之间穿越的流量。在一个 AS 内部,一切都是在相同的管理控制下进行的。 规模通过层次路由可以节省路由表的大小,减少路由产生的流量。通过将单个较大的 ISP 分成多个 AS,可以适应大规模的互联网。 性能AS 间路由选择是面向策略的,因此路由的性能问题往往不是首要的。但是在一个 AS 内部就可以忽视策略问题,把重心放在选择性能更好的路由上。 参考资料《计算机网络(第七版)》 谢希仁 著,电子工业出版社 《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社 |
CopyRight 2018-2019 实验室设备网 版权所有 |