BGP路由协议
课程内容
第一章 BGP路由协议的原理
第二章 BGP路由属性
BGP 协议概述
BGP是外部路由协议,用来在AS之间传递路由信息
是一种增强的距离矢量路由协议
可靠的路由更新机制
丰富的Metric度量方法
从设计上避免了环路的发生
为路由附带属性信息
支持CIDR(无类别域间选路)
丰富的路由过滤和路由策略
BGP 可靠的路由更新
传送协议:TCP,端口号179
无需周期性更新
周期性发送keepalive报文效验TCP的连通性
路由更新:只发送增量路由
自治系统( Autonomous System )
什么是自治系统(AS)?
为什么引入自治系统这一概念?
自治系统内部的路由协议--IGP
自治系统之间的路由协议 —— EGP
AS65001
AS65000
BGP
RIP
OSPF
BGP路由传递
BGP两种邻居-IBGP和EBGP
EBGP
EBGP
RTB
RTC
IBGP
RTA
RTD
RTE
BGP路由通告原则
多条路径时,BGP Speaker只选最优的给自己使用
BGP Speaker只把自己使用的路由通告给相邻体
BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP)
连接一建立,BGP Speaker将把自己所有BGP路由通告给新相邻体
BGP路由通告原则
2、注入直连路由
1、注入直连路由
BGP路由通告原则
BGP Speaker 从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定
AS 42
AS 12
AS 14
R-14
R-12
RTA
RTB
RTD
RT-C
X 12 …
EBGP
IBGP
X 12 …
X 12 …
在IGP路由更新中,BGP属性不做任何改变。
AS内的路由自环问题如何避免???
BGP路由通告原则
BGP Speaker 从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定
EBGP
EBGP
RTB
RTC
IBGP
RTA
RTD
RTE
RTF
S0:
E0:
S0:
S1:
S0:
AS100
AS200
AS300
IBGP Full-mesh
所有IBGP对等体物理意义的全连接
所有IBGP对等体逻辑意义的全连接
AS 12
AS 14
R-14
R-12
Rtr-A
Rtr-B
Rtr-D
Rtr-C
X 12 …
EBGP
IBGP
X 12 …
X 12 …
AS 42
成为BGP路由的途径之一:纯动态注入
OSPF
RTB
AS200
OSPF发现路由
把IGP(OSPF)发现的路由
纯动态地注入到RTB的
BGP路由表中
成为BGP路由的途径之二:半动态注入
RTB
AS200
OSPF
OSPF发现路由
把IGP(OSPF)发现的路由
半动态地注入到RTB的
BGP路由表中
成为BGP路由的途径之三:静态注入
AS200
人为配置静态路由
把人为配置的静态路由注入到
RTB的BGP路由表中
RTB
BGP报文种类
BGP报文有四种类型:
Open:打招呼“你好,跟我交个朋友吧!”
KeepAlive:我还活着呢,别不理我
Update:有新闻......
Notification:我不跟你玩了!
BGP报文头
BGP报文的格式是一样的,都是”报文头+报文体“的格式,下面给出的是BGP报文头:
Marker(16 byte)
Length(2 byte)
Type(1 byte)
Open报文
Open报文是由报文头加如下结构构成的。
Optional Paramenters
Length
Hold Time
Vision
My Autonomous System
BGP Identifier
Optional Paramenters
KeepAlive报文
KeepAlive报文只有报文头。
Marker(16 byte)
Length(2 byte)
Type(1 byte)
Update报文
Update报文由报文头加如下结构构成。
Withdrawn Routes
Unfeasible Routes Length
Path Attribute Length
Network Layer Reachability Information
Path Attribute
Notification报文
Notification报文由报文头加如下结构构成。
Data
Error Code
Error Subcode
错误代码
1
2
3
4
5
6
错误类型
消息头错
OPEN消息错
UPDATE消息错
保持时间超时
状态机错
退出
BGP协议的状态机
Active
Open-sent
Open-confirm
Established
Idle
Connect
Connect-Retry
timer expiry
TCP connection fails
Connect-Retry
timer expiry
Start
Others
TCP connection fails
Error
Error
Error
KeepAlive
timer expiry
KeepAlive packet
received
1. KeepAlive
timer expiry
2. Update received
3. KeepAlive received
Correct OPEN
packet received
TCP connection setup
TCP connection setup
Others
BGP协议中消息的应用
通过TCP建立BGP连接时,发送open消息
连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息
稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性
当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端
课程内容
第一章 BGP路由协议的原理
第二章 BGP路由属性
BGP的路由属性
表达了路由的特征
过渡和非过渡的
必遵和可选的
便于扩展
截至目前共16种属性
常见BGP路由属性
1、Origin
2、AS-Path
3、Next hop
4、MED
5、Local-Preference
6、Atomic-Aggregate
7、Aggregator
8、Community
9、Originator-ID
10、Cluster-List
11、Destination Pref (MCI)
12、Advertiser (Baynet)
13、Rcid-Path (Baynet)
14、MP_Reach_NLRI
15、MP_Unreach_NLRI
16、Extended_Communities
起点(Origin)属性
一般的,具体的实现按如下方式决定一条路由的Origin属性
某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP
路由是通过EGP得到的,则origin属性为EGP
其他情形下,Origin属性都为 Incomplete
AS路径(AS-Path)属性
D(
AS200
AS300
AS400
AS100
AS500
RTA
RTB
D,dl 400 300 200
D,d2 500 200
D,d1 400 300 200
>D,d2 500 200
问题???
AS 213
AS 387
Network=
AS-Path=213
RTA
RTC
RTB
Network=
AS-Path=387 213
?
RTA会学到这条路由吗???
预先规划AS-Path
AS 123
AS 462
AS 387
2 Mbps
64 kbps
最后路径
Network=
AS-Path=123
Network=
AS-Path=123 123 123
Network=
AS-Path=462 123
默认选择
用发送端的AS-number
来扩展 AS-path长度
下一跳(Next Hop)属性
RTA
RTC
RTB
RTD
AS100
AS200
IBGP
IBGP
EBGP
RTB
可经下一跳到达
可经下一跳到达
RTA
可经下一跳到达
可经下一跳到达
可经下一跳到达
RTC
可经下一跳到达
可经下一跳到达
本地优先属性
MED(Multi-Exit-DISC)属性
BGP典型案例
故障现象:
在RTC上没有选择通过RTA的链路(MED值较小)作为主链路
S0:
S1:
S0:
S0:
RTC
RTB
RTA
AS500
AS600
AS700
E0
E0
团体(Community)属性
团体是一组有相同性质的目的地的路由,一个团体不限于一个网络或一个自治系统,它没有物理边界。公认的团体:
no-export
不通告给联盟/AS外的BGP相邻体
no-advertise
不通告给任何BGP相邻体
local-AS
不通告给EBGP相邻体
Internet
通告给所有其他路由器
BGP路由选择过程
综合起来,本地BGP路由选择的过程为:
如果此路由的下一跳不可达,忽略此路由
选择本地优先级较大的路由
选择本地路由器始发的路由(本地优先级相同)
选择AS路径较短的路由
依次选择起点类型为IGP,EGP,Incomplete类型的路由
选择MED较小的路由
选择RouterID较小的路由
本章总结
BGP的通告原则
BGP的属性应用
BGP的选路原则
参考资料
1930 Autonomous System的创建,选择和注册指导
1774 BGP-4 协议分析
1773 BGP-4 路由协议改进
1772 BGP在Internet中的应用
1771 深入探讨Border Gateway Protocol 4 (BGP-4)
1745 BGP4与IGP---OSPF 的互操作
1675 BGP MIB
参考资料
1965 BGP 中Autonomous System 联盟
1997 BGP 团体属性
1998 BGP 团体属性在多宿主路由中的应用
2385 利用MD5验证保护BGP会话安全
2796 IBGP邻居的全连接 Vs. 路由反射器
参考资料
2842 BGP-4 路由通告
2858 BGP-4 的MP-BGP的扩展
2918 BGP-4的路由更新
RFCs of BGP4 扩展:
*
此为封面页,需列出课程编码、课程名称和课程开发室名称。
要求:每个子课程(6位编码的课程)要求做一个这样的胶片,胶片文件命名为“课程编码 课程名称.ppt”。
此页胶片仅在授课时使用,胶片+注释中不使用。
封面页按产品分为4个,各产品使用自己的封面,把其他封面直接删除即可。
*
此页为了让学员和老师对课程安排有一个大致的了解。
此页列出本课程的主要培训标题,列出每章的名称即可。如果章下面的节不多,在此页可以一并列出。
此页胶片仅在授课时使用,胶片+注释中有专门的目录和标题,不需要重复使用该页面。
*
点出与IGP的区别,
强调是DV协议同时有充分的办法避免路由自环问题,
*
路由更新的工作机制
路由存储在路由信息库(RIB)内:也就是the Adj-RIBs-In, the Loc-RIB, and the Adj-RIBs-Out. 将被通告到别的BGP发言者的路由放在Adj-RIB-Out里;在本地BGP发言者使用的路由放在Loc-RIB, 这些路由的下一跳信息保存在BGP发言者的转发信息库内;从别的BGP发言者收到的路由信息保存在Adj-RIBs-In内部。
*
自治系统的概念
*
描述自治系统传递路由工作中的不同角色,强调在BGP网络中,不同的自治系统中部署路由策略的重要性
*
描述两种邻居关系。
建立IBGP时需要注意的问题,建立EBGP时需要注意的问题。
*
这几条通告原则都是比较容易理解的,重点在于理解
BGP Speaker 知会选择最优的路由
*
若仅在RTD上import直连路由,RTA是无法接收到
因为尽管RTC上可以学到RTD通告的关于 bgp routing-table 时可以在BGP路由表中看到 ip routing-table时,显示的却是来源于直连的
*
IBGP 水平分割。
是在自治系统内传递路由时避免路由环路的重要手段。
*
重点!!!!!
首先说明,如果不同步会怎样?当然是RTC和RTD没有关于 RTB, RTE, RTF会有
继续说明,如何同步?何为同步?需要在RTB上把大量的外部路由注入到IGP中,然后IGP负责在AS内传播路由信息,而对于AS内那些低端路由器来说,是无法承载大量的外部路由的,同时同步会增加网络时延。所以我们不能同步。
最后说明,我们用什么办法来解决在不能同步的情况下的AS内转发的问题。这就引出了full mesh的下一张胶片
*
物理意义的全连接,在所有ASBR任意两点之间建立物理链路。实际组网不能保证。
逻辑意义的全连接,即是,AS内所有的设备都运行BGP所有ASBR何所有其他的路由器间建立IBGP邻居关系通告路由。这一点更不可能,只有存在理论的可能性。大多数的实际情况也就是ASBR上同时运行BGP和IGP,其他路由器仅运行IGP。
*
路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。纯动态注入方式没有对路由信息做任何过滤和选择,它会把路由器获得的所有IGP 路由信息都引入到BGP系统中。从另一角度来说,这样一种路由注入方式配置简单,一次性引入了所有的路由信息。当然,在实际工程中可以根据需要选择。
*
半动态注入是指:路由器有选择性的将IGP发现的动态路由信息注入到BGP系统中去。它和纯动态注入的区别在于不是将IGP发现的所有路由信息注入到BGP中去。
*
静态注入是指:路由器将静态配置的某条路由注入到BGP系统中。
*
BGP有4种类型的报文,分别为OPEN、UPDATE、NOTIFICATION和KEEPALIVE。
*
BGP报文头的格式如图所示,每行的宽度为4个字节。
Type 消息的类型:1 字节,指示报文类型,如OPEN、UPDATE报文等。
1 :OPEN
2 :UPDATE
3 :NOTIFICATION
4 :KEEPALIVE
Marker(标记):
本16字节的字段包含消息接收者可以预测的值。如果消息类型是OPEN,或者OPEN消息没有承载认证信息(作为可选参数),标记必须是全1。否者,标记的值要使用认证机制来计算(认证机制是通过认证信息的一部分来指定的)。标记可以用来探测BGP对端的同步丢失,认证进入的BGP消息。
长度(Length):
两字节无符号整数指定了消息的全长,包括头部字节。这也就是说,允许在
传输层数据流定位下一个消息(的标记字段)。长度的值必须最少19字节最大4096字节,同时由于不同的消息类型有更多的约束。不允许“填充”多余的数据在消息后,所以长度字段是需要有最小值。
*
Selects the highest common version number between peers
Identifies the local peer’s AS number
Negotiates the lowest Hold Time between peers.
Identifies the senders BGP ID
Setup optional facilities such as password authentication
*
Keepalives are sent every 60 seconds between peers
Hold time is 180 seconds
Keepalives will reset hold time
Peer is considered dead is hold time expires
Keepalive and hold time can be changed
Lowest hold time is negotiated when setting up BGP connection
Keepalive message is 19 bytes in length
*
Exchange routing updates
Advertise partial updates for unreachable routes
No updates are sent when the routes are stable
Updates will include route attributes
BGP提供了机制告诉对端先前的路由通告不再能使用。有三种方式供BGP发言者指示撤销某条路由的服务。
a) 对于先前通告的路由,在UPDATE消息的WITHDRAWN ROUTES字段内通告了到目的地IP前缀,这样相应的路由被标志为不再使用,
b)有相同网络层可达信息的替代路由能够被通告,
c)BGP发言者-发言者的连接能够关闭,这意味着从服务里撤销这一对发言者互相通告的所有的路由。
*
Notification 报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误代码(如定时器超时等),包括错误代码、辅助错误代码及错误信息。
*
重点强调ACTIVE和Establish两个状态。
*
此页标题禁止有多级标题,更不要出现所在章节的名称。
此页标题要简练,能直接表达出本页的内容。
内容页可以除标题外的任何版式,如图、表等。
该页在授课和胶片+注释中都要使用。
*
此页为了让学员和老师对课程安排有一个大致的了解。
此页列出本课程的主要培训标题,列出每章的名称即可。如果章下面的节不多,在此页可以一并列出。
此页胶片仅在授课时使用,胶片+注释中有专门的目录和标题,不需要重复使用该页面。
*
此页标题禁止有多级标题,更不要出现所在章节的名称。
此页标题要简练,能直接表达出本页的内容。
内容页可以除标题外的任何版式,如图、表等。
该页在授课和胶片+注释中都要使用。
*
此页标题禁止有多级标题,更不要出现所在章节的名称。
此页标题要简练,能直接表达出本页的内容。
内容页可以除标题外的任何版式,如图、表等。
该页在授课和胶片+注释中都要使用。
*
此页标题禁止有多级标题,更不要出现所在章节的名称。
此页标题要简练,能直接表达出本页的内容。
内容页可以除标题外的任何版式,如图、表等。
该页在授课和胶片+注释中都要使用。
*
强调两个主要作用:
1、在AS之前避免路由自环现象。
2、在AS之间选路的一个主要依据,类似于RIP中的“跳数”,而BGP把一个AS当作的一个大的路由器。
*
利用命令:peer peer-ip allow-as-loop
*
可以通过路由策略增加AS-PATH的值。
*
三点,比较复杂,注意讲解。详见教材。
*
影响本地AS选路。
RTA就会优先选择本地优先级高的local-pref2
*
影响邻居AS的选路属性
*
利用命令:compare different as med
*
一条路由可以具有一个以上的团体属性值,就像一条路由可以在其AS 路径属性中含有一个以上AS号码一样。在一条路由中看到多个团体属性值的BGP路由器可以根据一个、一些或所有这些属性值来采取行动。路由器在将路由传递给其他对等体之前可以增加或修改团体属性值。
*
此页标题禁止有多级标题,更不要出现所在章节的名称。
此页标题要简练,能直接表达出本页的内容。
内容页可以除标题外的任何版式,如图、表等。
该页在授课和胶片+注释中都要使用。
*