TCP/IP 边界网关协议
BGP 协议
在自治系统之间进行路由的协议
任何一个单一的路由协议都无法解决因特网这么大规模包含这么多路由器的这种环境下进行路由交换的路由需求。
所以需要对其进行划分成一些独立的组,称为AS。它们相互独立,由不同的管理机构来管理。
1 路由协议
路由更新协议
在单一的主干(单一的网络)上工作
在主干核心网中工作,但是不能进行扩展
原因:随着网络站点的增加,影响路由更新协议正常工作
- 每个路由器处理接收转发的流量会增加
- 同时因特网上的网络数量也会增加
- 这些网络由不同的机构管理,是相对独立的
在巨大的网络中使用一个单一的路由更新协议是不实际的
将路由器分成一些独立的组
原因:
- 考虑到流量增加问题
- 路由器间是间接通信的
- 网络和路由器非单一机构管理
组的大小限制
需要考虑的因素:
- 交换路由信息的算法
- 网络容量、带宽等
- 路由协议的细节
涉及到的两个问题:1 延迟 2 额外开销
额外跳
访问一个网络时使用默认路由导致额外的跳数
自治系统 AS
定义:由一个单一的管理机构管辖的一组网络和路由器。
内部路由器使用的路由协议:由管理机构决定
内部:路由协议由管理机构决定
区分不同AS:属于两个不同的AS的路由器间交换路由信息时,应该包含对方AS的编号
2 外部网关协议及其可达性问题
EGP 外部网关协议
指的是一类协议,能够在不同的自治系统中传递可达性信息的协议,使用较多的是BGP协议。
BGP:边界网关协议
- 目前流行使用的版本是第四版,称为BGP4
- 在自治系统内部包含很多路由器,从中选出一个作为边界路由器。两个自治系统的边界路由器之间交换路由信息时,使用BGP
BGP 边界网关协议
只是用于传递网络可达性,而非作为路由信息来进行传递
特性
- 用于AS与AS之间的通信
- IBGP:内部BGP,对于特定的AS有多个边界路由器,IBGP保证通过不同的边界路由器传播出去的本地AS路由信息一致(协调内部信息)
- 能向外传播可达性的消息(包括中间AS作为转发等)
- 下一跳方式进行每个目标通告
- BGP支持策略路由
- 使用可靠传输服务
- 以增量方式更新(只发送新的路由信息,节约带宽)
- 支持无类别的寻址方案
- 路由汇聚(多条路由压缩成一条)
- 认证身份
功能:
- 能够进行邻居(对等方 peer)发现与邻居之间连接创建
- 任何一方可以向另一方发送正向(可达的合法目标)或负向(先前公布的目标已失效)的可达性信息(使用UPDATE)
- 在维持的过程中不断进行验证,确保连接 (使用KEEPALIVE)
报文类型
- OPEN:双方建立连接
- UPDATE:路由信息更新报文
- NOTIFICATION:进行差错处理(例如拆除连接)
- KEEPALIVE:不断验证保证连接
- REFRESH:动态向对方申请相应路由信息
BGP报文首部
- 3个固定长度字段,19个字节
字段:
- MARKER:用于定界,表示报文的开始与结束的位置
- LENGTH:表示整个报文的长度,最大长度为4096字节
- TYPE:报文类型
BGP OPEN报文
用于创建BGP对等体之间的连接
HOLD TIME
一对BGP peers之间连接的有效期,时钟超时间隔,超时终止(接收方两个连续的报文的最大时间间隔)
将HOLD TIME的值设为0,表示双方不进程保持连接的交换,则不需要KEEPALIVE报文
KEEPALIVE的时间间隔是hold timer的1/3,KEEPALIVE是以秒为单位的,所以hold timer的值不少于3
s
BGP IDENTIFIER
用于唯一区分一个AS的编号:一般使用IP地址进行标识(多接口路由器从则中选取一个作为ID)
Optional Parameter
可选参数
收到OPEN报文,则以KEEPALIVE报文进行响应
BGP UPDATE报文
由于连接建立后的数据交换
传递的信息:
- 可达的新的目标
- 需要撤销的原来的现在不可用的目标
WITHDRAWN:需要撤销的现在非法的老的目标
PATH ATTR:路径属性
新的目标前都带有公共的路径属性。所以路径属性不一样时需要发多个UPDATE报文。
BGP KEEPALIVE报文
作为连接创建的确认,作为连接维持的报文
报文后不带数据,只包含报文首部:19字节
使用的理由:
1 BGP使用TCP传输服务
2 考虑节约带宽:报文中不带有数据,报文长度最短,有利于保持连接的传输
KEEPALIVE的时间间隔是hold timer的1/3
BGP Notification报文
主要是用于差错处理
一旦发生错误,发送Notification报文关闭TCP连接
报文格式:
错误码:
- 1:报文首部出错
- 2:OPEN报文出错
- 3:UPDATE报文出错
- 4:Hold timer超时
- 5:有限状态机出错
- 6:拆除连接
子类型错误码:
BGP Refresh报文
- Marker,Length,Type
- Address family identifier
- Reserved
- Subsequent address family identifier
BGP 压缩形式掩码地址对
适应于无类别的寻址方案
传输方式:采用LENGTH-PREFIX方法:
- LEN:掩码长度
- PREFIX:长度可变,根据LEN的值来确定长度
当LEN为零时,表示默认路由
3 BGP 路径属性
路径属性信息
通过路径属性可以提供额外的属性,比简单的DV包含更多信息,包括
- Next hop
- 从本地到达目标的某个路径(路径上每个自治系统的编号)
- 可以得知路径的来源(来源于EGP还是IGP)
BGP路径属性在UPDATE报文格式出现,在attributes后面跟了多个目标(一对多的关系)。这些attributes是后面这些目标公用的,目标的attributes不一样那么必须要分多个UPDATE报文进行通告。
使用路径属性的理由
- 可以检测到路径中是否包含回路:列出了路径上所有的AS号,若其中有两个号码相同则存在回路
- 可以帮助接收方实现策略上的约束
- 可以使得接收方了解到所有路由信息中每一条路由的源(路径是EGP还是IGP获取的)
路径属性包含的内容
包含了如下结构的列表
(type, length, value)
- type:2字节
- length:1~2字节(取决于type中的一个标志)
- value:总的表项的值由value来确定
type字段
标志位
- 0:属性是否必须
- 1:属性是否可以转发
- 2:属性是否完整
- 3:属性长度length字段的字节数
- 5-7:未使用,置零
type值
- 1:指出路径信息的源
- 2:到达目标路径上的AS列表
- 3:到达目标的下一跳
- 4:MED:自治系统包含多个边界路由器,告知其中较优的
- 5:本地AS有多个出口,告知其中较优的
- 6:表示路由汇聚
- 7:路由汇聚的自治系统的ID
- 8:通告目标的共有ID
6 BGP 多协议扩展(MBGP)
扩展中的属性
- 可选属性
- 不能转发
两种扩展属性的Type
(放在BGP Path Attributes中传输)
NLRI(type14)可达 - 网络层可达信息
- SNPA:子网协议地址(具体的每一个目标,到达这些目标都是通过Next Hop到达)
NLRI(type15)不可达
4 BGP存在的问题
- BGP不能同时使用到达一个目标的多条路径,对于某个可达的目标网络路径中只能选择一个
- BGP不支持自治系统间的负载均衡(这只能将一个AS拆成多个)
- 针对广域网环境很难做出最优的路由(需要通过管理人工设置)
- 在通告可达性的时候所有自治系统需要一致同意这个方案,BGP很难保证全球一致性
5 因特网路由的体系结构与注册的数据库
目标:保证路由信息的全球一致性
当前因特网路由的体系结构
大的服务商连到NAP(网络访问点)上,通过NAP来接入到因特网。
NAP也成为IXP(因特网交换节点)。
通过NAP相连,不同的因特网服务商通过相互之间建立的对等关系来交换路由信息。
不同的服务商之间的关系:上下游关系,中间转发关系
采用路由注册数据库服务
(使用局部数据库)
但是会出现“黑洞”现象:通告了不可达的地址
参考资料:
- INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER