文章目录
简介
- 外部网关协议(Exterior Gateway Protocol,EGP)是一个在自治系统网络中两个邻近的网关主机(每个都有它们自己的路由)间交换路由信息的协议。EGP常常被用来在英特网的两个主机间交换路由表信息。
- 路由表包括已知的路由器清单、它们能到达的地址以及与每个路由的路径相关的成本度量,以便选出最好的可用路径。每个路由器按照一定的时间间隔,通常在120秒到480秒之间,就给它的邻近路由发送信息,然后邻近路由就会将自己的完整路由表发回给它。EGP-2是EGP的最新版本。
1.外部网关路由协议
- 外部网关协议(Exterior Gateway Protocol)是AS之间使用的路由协议,最初于1982年由BBN技术公司的EricC.Rosen及DavidL.Mills提出。其最早在RFC827中描述,并于1984年在RFC904中被正式规范。EGP是一种简单的(网络)可达性协议,其与现代的距离-矢量协议和路径-矢量协议不同,它仅限适用于树状拓扑的网络。
- 由于EGP存在很多的局限性,IETF边界网关协议工作组制定了标准的边界网关协议(BGP),当前被广泛使用。
2. EGP协议具有三个基本功能
- 支持邻居获取机制,即允许一个路由器请求另一个路由器同意交换可达路由信息;
- 路由器持续测试其EGP邻居是否有响应;
- EGP邻居周期性地传送路由更新报文来交换网络可达路由信息。
3.BGP的介绍
- BGP是外部网关路由协议,用来在AS之间传递路由信息;BGP协议属于TCP协议,端口号为179
3.1BGP特点
(1)是一种增强的路径矢量路由协议,拥有可靠的路由更新机制;
(2)具备丰富的Metric度量方法;
(3)无环路协议设计;
(4)为路由条目附带多种属性信息;
(5)支持CIDR(无类别域间选路);
(6)丰富的路由过滤和路由策略;
(7)无需周期性更新:
(8)路由更新时只发送增量路由;
(9)周期性发送KeepAlive报文以保持TCP的连通性。
扩展:
- BGP邻居关系就是对等体关系;
- BGP邻居就是BGP对等体(peer)。
3.2BGP消息类型
- 运行BGP的路由器称之为BGP Speaker,BGP Speaker之间将会交换五种类型的报文,其中OPEN报文,KEEPALIVE报文以及NOTIFICATION报文用于邻居关系的建立和维护。
3.2.1BGP的五种报文如下:
- Open:负责和对等体建立邻居关系;主要包括BGP版本、AS号等信息;试图建立BGP邻居关系的两个路由器在建立了TCP会话连接之后开始交换OPEN信息以确认能否形成邻居关系。
- KeepAlive:该报文在对等体之间周期性的发送,用于判断对等体之间的可达性,实现BGP邻居关系的维护;
- Update:该报文用于在BGP对等体之间用于交换路由信息。其中包括撤销路由信息和可达路由信息及其各种路由属性;
- Notification:BGP的差错检测机制;一旦检测带任何形式的差错,BGP Speaker会发送一个NPTIFICATION报文,随后与之相关的邻居关系将被关闭;
- Route-refresh:用来通知BGP对等体自己支持路由刷新能力。
3.2.2BGP数据库类型:
- IP路由表--------------IGP
- BGP路由表-----------EGP
3.3BGP的6个状态机
- Idle–空闲:Idle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器,发起一条TCP连接,同时转入Connect状态;
- Connect–连接:在Connect状态,BGP发起第一个TCP连接,如果连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态;
- Active–活跃:在Active状态,BGP总是在试图建立TCP连接,如果连接重试计时器超时,就会退回到Connect状态,如果连接TCP成功,就转入OpenSent状态。如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接;
- OpenSent–打开消息已发送:在OpenSent状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时。同时转入OpenConfirm状态;
- OpenConfirm–打开消息确认:在OpenConfirm状态,BGP发送一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Established阶段,BGP邻居关系就建立起来了。如果TCP连接中断,就退回到Idle状态;
- Established–连接已建立:在Established状态,BGP邻居关系已经建立,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。
4.BGP对等体配置
对等体交互原则:
- 从IBGP对等体获得的BGP路由,BGP设备只传递给它的EBGP对等体;
- 从EBGP对等体获得的BGP路由,BGP设备传递给它所有EBGP和IBGP对等体(对等体是IBGP只能传递一跳,对等体是EBGP则不限制);
- 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体;
- 路由更新时,BGP设备只发送更行的BGP路由;
- 所有对等体发送的路由,BGP设备都会接收;
- 所有EBGP对等体在传递过程中下一跳改变;
- 所有IBGP对等体在传递过程中下一跳不变;
- 默认EBGP传递时TTL值为1;
- 默认IBGP传递时TTL值为255。
BGP邻居关系类型:
IBGP和EBGP两种类型
5.BGP属性介绍与BGP策略的选择
5.1BGP属性介绍
起源(origin)属性;
- AS路径(AS-PATH)属性--------越短越优;
- 下一跳(Next-Hop)属性;
- Local-pref 属性;
- MED属性;MED是可选非过渡属性,区别到达同一邻居AS的多条入口链路(MED值越小。链路越优先),通过EBGP发送MED值给对等体
5.2BGP策略三种实现方法的选择
路由协议 | 属性方法 |
---|---|
IBGP,EBGP | AS-PATH |
IBGP | local-preference |
EBGP | med |
6.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度量低的路径
当以上全部相同,则为等价路由,可以负载分担(注:AS-PATH必须一致),当负载分担时,以下3条原则无效
(12) 比较Cluster-List长度,短者优先;
(13) 比较Originator_ID(如果没有Originator_ID,则用Router ID比较),选择数值较小的路径;
(14) 比较对等体的IP地址,选择IP地址数值最小的路径。
7.BGP命令的示例
7.1通告BGP路由的两种方法:
- Network方式和Import方式
(1) Network方式:
[R1] bgp 100
[R1-bgp] router-id 1.1.1.1
[R1-bgp] peer 12.0.0.2 as-number 100
[R1-bgp] network 1.1.1.1 32
[R1-bgp] network 2.2.2.2 32
命令解释:R1将自身的1.1.1.1/32和2.2.2.2/32通过Network的方式发布到BGP中;
注:BGP通告的是路由而不是接口
(2) Import方式:
[R2-bgp] import-route ospf 110 //通过Import将学习的OSPF路由信息发布到BGP
[R2] display bgp routing-table //命令查看BGP路由
注意:Network方式优先于Import方式
7.2 更新源建立邻居关系
[R3] bgp 100
[R3-bgp] route-id 3.3.3.3
[R3-bgp] peer 1.1.1.1 as-number 100
[R3-bgp] peer 1.1.1.1 connect-interface LoopBack0
- 本地LoopBack接口先要让对等体可达
7.3 保证下一跳可达与EGP多跳
[R3] bgp 300
[R3-bgp] route-id 3.3.3.3
[R3-bgp] peer 23.0.0.2 as-number 200
[R3-bgp] peer 34.1.1.4 as-number 300
[R3-bgp] peer 34.1.1.4 next-hop-local
[R3] bgp 200
[R3-bgp] route-id 3.3.3.3
[R3-bgp] peer 12.0.0.1 as-number 100
[R3-bgp] peer 12.0.0.1 ebgp-max-hop 2 //通过设置TTL值为2,使得邻居下一跳可达