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路径选择
路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:
- 本地偏好值属性:偏好策略决定
- 最短AS-PATH:AS的跳数
- 最近的NEXT-HOP路由器:热土豆路由
- 附加的判据:使用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:关注性能