BGP概述:自治系统之间进行路由学习及选路的协议
1、 自治系统:运行同一种路由协议的路由器的集合
a) 自治系统编号:1~65535
b) 公有AS号:1~64511
c) 私有AS号:64512~65535
2、 动态路由分类:
a) 按自治系统分类:IGP、EGP
- IGP:自治系统内部的路由协议:作用:发现计算路由
- EGP:自治系统之间的路由协议:作用:控制路由的传播,选择最优路由
b) 按协议类型分类:
- 距离矢量路由协议:RIPV1、RIPV2、BGP、EIGRP
- 链路状态路由协议:OSPF、ISIS
3、 BGP的概念
a) 作用:在AS之间自动交换无环路由信息
b) 解决自治系统之间的路由学习问题
4、 BGP的特征
a) 传输协议:TCP,端口号179
b) BGP是外部路由协议,用在AS之间传递路由信息
c) 是一种增强的路径矢量路由协议
d) 拥有可靠的路由更新机制
e) 具备丰富的metric度量方法
f) 无环路协议设计
g) 为路由条目附带多种属性信息
h) 支持CIDR(无类别域间选路)
i) 丰富的路由过滤和路由策略
j) 无须周期性更新
k) 路有更新时只发送增量路由
l) 周期性发送keepalive报文,以保持TCP连通性
BGP邻居关系
发言者:运行BGP的路由器
对等体:相互之间传递报文的speaker之间互称为对等体
1、 BGP报文
a) Open报文:第一个报文,用于建立连接关系
b) Update报文:更新路由信息
c) Notification报文:当BGP检测到错误时,发送报文返回idle状态,立即断开连接——不允许错误出现的一种路由协议
d) Route-refresh:路由刷新
e) Keepalive:保持连接,默认周期60s,保持180s
2、 BGP状态机
a) Idle状态:拒绝任何进入的连接请求,是BGP的初始状态,还没运行BGP
b) Connect状态:连接状态,建立连接
c) Active状态:尝试进行TCP连接,是BGP的中间状态
d) Opensent状态:等待对等体的open报文,并对收到的open报文进行检查,没有问题,发送keepalive报文,并进入openconfirm状态,如果有错,则进入idle状态
e) Openconfirm状态:等待keepalive或notification报文,
- 收到keepalive报文——进入established状态
- 收到notificaton报文——进入idle状态
f) Established状态:BGP可以在对等体之间交换update、keepalive、route-refresh和notification报文
BGP对等体双方都为established状态,BGP邻居关系才能成立
3、 BGP数据库
a) Ip路由表:全局路由数据库,包括所有最优的IP路由信息
b) BGP路由表:BGP发言者通告的路由信息
c) 邻居表:对等体邻居清单列表
d) Adi-RIB-In:对等体宣告给本地发言者的未处理的路由信息库
e) Adj-RIB-Out:本地发言者宣告给指定对等体的路由信息库
4、 BGP邻居关系类型
a) IBGP邻居:同一个AS内部的BGP邻居关系
b) EBGP邻居:AS之间的BGP邻居关系
c) AS号相同为IBGP邻居,AS号不同为EBGP邻居
d) Display bgp peer:查看BGP邻居信息
通告BGP路由的方法
1、 network方式
a) 可以将当前设备路由表中的路由(非BGP)发布到BGP路由表中,并通告给邻居
b) Network的对象是路由条目
2、 import方式
a) 将所学习到的路由信息重分发到BGP路由表中,是BGP宣告路由的一种方式
b) Import的对象是某种动态路由协议,而不是路由条目
Display bgp routing-table 查看BGP路由表
BGP对等体配置
BGP设备会将最优路由加入BGP路由表,形成BGP路由,
1、 EBGP多跳
a) 默认BGP中EBGP邻居之间的TTL值为1,所以要用EBGP多跳来解决非直连的邻居关系
b) Peer 12.0.0.1 ebgp-max-hop 2
2、 更新源建立邻居关系
a) 使用环回接口建立BGP邻居的方法称为更新源建邻居
b) Peer 3.3.3.3 connect-interface lo 0
c) 本地loopback接口先要让对等体可达,需要手动添加对等体环回接口的路由条目,或者IGP自动学习对方环回接口路由
保证IBGP下一跳可达
1、 在AS内传播IBGP时,改变下一跳信息
2、 Peer 34.1.1.4 next-hop-local
BGP的属性
1、 BGP属性的分类
a) 公有必遵:所有BGP路由器都可以识别,且必须存在于update报文中
b) 公认任意:所有BGP路由器都可以识别,但不要求必须存在于update消息中,可以根据具体情况决定是否添加到update消息中
c) 可选过渡:BGP路由器可以选择是否在update消息中携带这种属性,接收的路由器如果不识别这种属性,可以转发给邻居路由器
d) 可选非过渡:BGP路由器可以选择是否在update消息中携带这种属性,接收的路由器如果不识别这种属性,将丢弃这种属性。
2、 BGP属性的介绍
a) Origin(起源)属性:
- 公有必遵,作用:标记一条路由怎么成为BGP路由的
- IGP(i):优先级最高。Network注入
- EGP(e):优先级次之。通过EGP得到
- Incomplete(?):其他方式学习到(如:import-route引入)。
b) AS-PATH(AS路径)属性:
- 按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。
- 始发路由时:
- 通告给EBGP对等体时,在update报文中创建一个携带本地AS号的AS-PATH列表
- 通告给IBGP对等体时,在update报文中创建一个空的AS-PATH列表
- 转发路由时:
- 通告给EBGP时,会把本地AS编号添加在AS-PATH列表的最前面(最左面)
- 发布给IBGP时,不会改变AS-PATH的属性
c) Next-hop(下一跳)属性:
- IGP下一跳描述的是下一个路由器,BGP下一跳描述的是下一个AS(不一定是直连设备地址)。
- 向IBGP对等体发布从EBGP对等体学来的路由时,不改变路由的信息的下一跳属性
d) Local-pref属性:
- 标识BGP路由的优先级,判断流量离开AS时的最佳路由
- 在AS内,多条路由到目的地址,local-pref属性值越大越优先,默认值为100.
- 配置
e) MED属性:
- 判断流量进入邻居AS时的最佳路由。
- 两个AS之间有多条路由时,MED值越小越优先,默认值为0.
- 配置
BGP的选路原则
1、 若去往目的网络的下一跳不可达,则可以忽略此路由
2、 Preferred-value优先级以数值高的路由优先
3、 Local-preference优先级以数值高的路由优先
4、 聚合路由优先级高于非聚合路由
5、 本地手动聚合路由的优先级高于本地自动聚合的路由
6、 本地通过network命令引入的路由的优先级高于本地通过import-route命令引入的路由
7、 AS路由长度最短(最少个数)的路由优先级高
8、 比较origin属性,IGP优先级高于EGP,EGP优先级高于incomplete
9、 比较MED优先级较小的路由
10、 EBGP路由优先级高于IBGP
11、 BGP优先选择到BGP下一跳的IGP度量低的路径
当以上全部相同,则为等价路由,可以负载分担,当负载分担时,以下三条原则无效
1、 比较cluster-list长度,短者优先
2、 比较originator_ID(如果没有originator_ID,则比较router DI),选择数值较小的路径。
3、 比较对等体的IP地址,选择IP地址数值最小的路径。