计算机网络——29ISP之间的路由选择:BGP

ISP之间的路由选择:BGP

层次路由

一个平面的路由

  • 一个网络中的所有路由器的地位一样
  • 通过LS,DV,或者其他路由算法,所有路由器都要知道其他所有路由器(子网)如何走
  • 所有路由器在一个平面

平面路由的问题

  • 规模巨大的网络中,路由信息的存储、传输和计算代价巨大
    • DV:距离矢量很大,而且不能收敛
    • LS:几百万个节点的LS分组的泛洪传输,存储以及最短路径算法的计算
  • 管理问题:
    • 不同的网络所有者希望按照自己的方式管理网络
    • 希望对外隐藏自己网格的细节
    • 希望和其他网络互联

层次路由:将互联网分成一个个AS(路由器区域)

  • 某个区域内的路由器集合,自治系统"autonomounts systems(AS)"
  • 一个AS用AS Number(ASN)唯一标识
  • 一个ISP可能包括1个或者多个AS

路由变成了:2个层次路由

  • AS内部路由:在同一个AS内路由器运行相同的路由协议
    • "intra-AS" routing protocol:内部网关协议
    • 不同的AS可能运行着不同的内部网关协议
    • 能够解决规模和管理问题
    • 网管路由器:AS边缘路由器,可以连接到其他AS
  • AS间运行AS间路由协议
    • "inter-AS" routing protocol:外部网关协议
    • 解决AS之间的路由问题,完成AS之间的互联互通

层次路由的优点

解决了规模问题

  • 内部网关协议解决:AS内部数量有限的路由器相互到达的问题,AS内部规模可控
    • 如AS节点太多,可分割AS,使得AS内部的节点数量有限
  • AS之间的路由的规模问题
    • 增加一个AS,对AS之间的路由从总体上来说,只是增加了一个节点=子网(每个AS可以用一个点表示)
    • 对于其他AS来说只是增加了一个表项,就是这个新增的AS如何走的问题
    • 拓展性强:规模增大,性能不会减的太多

解决了管理问题

  • 各个AS可以运行不同的内部网关协议
  • 可以使自己网络的细节不向外透露

互联网AS路由:BGP

BGP:自治区域间路由协议"事实上的"标准

  • "将互联网各个AS粘在一起的胶水"

BGP提供给每个AS以以下方法:

  • eBGP:从相邻的ASes那里获得子网可达信息
  • iBGP:将从获得的子网可达信息传播到AS内部所有的路由器
  • 根据子网可达信息和策略来决定子网的"好"路径

允许子网向互联网其他网络通告"我在这里"

基于距离矢量算法(路径矢量)

  • 不仅仅是距离矢量,还包括到达各个目标网络的详细路径(AS序号的列表)能够避免简单DV算法的路由环路问题

eBGP,iBGP连接

BGP基础

BGP会话:2个BGP路由器在一个半永久的TCP连接上交换BGP报文:

  • 通告向不同目标子网前缀的"路径"(BGP是一个"路径矢量"协议)

当AS3网管路由器3a向AS2的网管路由器2c通告路径:AS3,X

  • 3a参与AS内路由运算,知道本AS所有子网X信息
  • 语义上:AS3向AS2承诺,它可以向子网X转发数据报
  • 3a是2c关于X的下一跳(next hop)

路径的属性 & 路由

当通告一个子网前缀时,通告包括BGP属性

  • prefix + attributes = "route"

两个重要的属性

  • AS-PATH:前缀的通告所经过的AS列表:AS 67 AS 17
    • 检测环路:多路径选择
    • 在向其他AS转发时,需要将自己的AS号加载路径上
  • NEXT-HOP:从当前AS到下一跳AS有多个链路,在NEXT-HOP属性中,告诉对方通过那个I转发
  • 其他属性:路由偏好指标,如何被插入的属性

基于策略的路由

  • 当一个网关路由器接收到了一个路由器通告,使用输入策略来接受或过滤
    • 过滤原因例子
      • 不想经过某个AS,转发某些前缀的分组
      • 已经有了一条往某前缀的偏好分组
  • 策略也决定了是否向它别的邻居通告接收到的这个路由信息

BGP路径通告

  • 路由器AS2.2c从AS3.3a接收到的AS3,X路径通告(通过eBGP)
  • 基于AS2的输入策略,AS2.2c决定接收AS3,X的通告,而且(通过iBGP)向AS2的所有路由器进行通告
  • 基于AS2的策略,AS2路由器2a通过eBGP向AS1.1c路由器通告AS2,AS3,X路由信息
    • 路径上加上了AS2自己作为AS序列的一跳

网关路由器可能获取有关一个子网X的多条路径,从多个eBGP会话上:

  • AS1网关路由器1c从2a学习到路径:AS2,AS3,X
  • AS1网关路由器1c从3a学习到路径:AS3,X
  • 基于策略:AS1路由器1c选择了路径:AS3,X,而且通过iBGP告诉所有AS1内部的路由器

BGP报文

使用TCP协议交换BGP报文

BGP报文:

  • OPEN:打开TCP连接,认证发送方
  • UPDATE:通告新路径(或者撤销原路径)
  • KEEPALIVE:在没有更新的时候保持连接,也用于对OPEN请求确认
  • NOTIFICATION:报告以前消息的错误,也用来关闭连接

BGP、OSPF,转发表表项

路由器是如何设置到这些远程子网前缀的转发表表项的?

回顾:1a,1b,1c从1c那里通过iBGP学习到了子网X,"到往子网X的要通过1c"

1d:通过OSPF内部网关协议,为了到达1c,必须通过本地接口1

BGP路径选择

路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:

  1. 本地偏好值属性:偏好策略决定
  2. 最短AS-PATH:AS的跳数
  3. 最近的NEXT-HOP路由器:热土豆路由
  4. 附加的判据:使用BGP标识

一个前缀对应着多种路径,采用消除规则直到留下一条路径

热土豆路由

2d通过iBGP获知,它可以通过2a或者2c到达X

热土豆策略:选择具备最小内部区域的代价的网关作为往X的出口(如:2d选择2a,即使X可能有比较多的AS跳数),不要操心域间的代价

为什么内部网关协议和外部网关协议如此不同

策略

  • Inter-AS:管理员需要控制通信路径,谁在使用它的网络进行数据传输
  • Intra-AS:一个管理者,所以无需策略
    • AS内部的各子网的主机尽可能的利用资源进行快速路由

规模

  • AS间路由必须考虑规模问题,以便支持全网的数据转发
  • AS内部路由规模不是一个大的问题
    • 如果AS太大,可将AS分成小的AS:规模可控
    • AS之间只不过多了一个点而已
    • 或者AS内部路由支持层次性,层次性路由节约了表空间降低了更新的数据流量

性能

  • Inter-AS:策略可能比性能更重要
  • Intra-AS:关注性能
相关推荐
ServBay13 小时前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户9623779544816 小时前
CTF 伪协议
php
BingoGo3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack5 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo5 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack6 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理6 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php