BGP 是一种路径矢量路由协议,用于传输自治系统间的路由信息,BGP 在启动的时候传播整张路由表,以后只传播网络变化的部分触发更新它采用 TCP 连接传送信息,端口号为 179 在 Internet 上,BGP 需要通告的路由数目极大,由于 TCP 提供了可靠的传送机制,同时 TCP 使用滑动窗口机制,使得 BGP 可以不断地发送分组,而无需像 OSPF 或 EIGRP 那样停止发送并等待确认。
1、使用 BGP 一般有如下情况:
1). 一个 AS 允许包穿越它,到达其他的 AS
2). 一个 AS 连接多个 AS
3). 必须对数据流进入和离开 AS 进行控制
2、不使用 BGP 一般有如下情况:
1). AS 只有一个出口
2). AS 的所有出口均为 1 个 ASP
3). 路由性能不高,内存较小,CPU 较慢,带宽不大
3、认识BGP AS-Path
BGP 是路径矢量协议,它使用一个 AS 号列表,数据包必须通过这些 AS 才能到达目的,同时对产生的 AS-path 做一定的策略。AS-Path 对于路由环路非常容易检测到,如果路由器接受到一条含有本地 AS 号的 AS-path,说明出现环路。BGP 没有给出每个 AS 域内的拓扑结构,因此 BGP 只能看到 AS 树,而 IGP 只能看到 AS 域内拓扑结构.
R2>show ip bgp//查看路由表
当某个特殊目的网络有并列的,等开销的路径时,Cisco 缺省执行 EBGP 只选择一条路径,但可以使用 maximum-paths改变并行路径缺省的最大数目,但仅对 EBGP 有效
1. Open
TCP 对话建立以后,两个邻居都要发送一个 Open 消息,每个邻居都用该消息来标示自己,并规定自己的 BGP 运行参数。
1)、BGP version
它明确了发起者正在运行的 BGP 版本号(2,3,4),可以通过 neighbor version 修改,缺省版本号为 4。如果版本号不相同,路由器将自动降低版本号重发 Open 消息,直到版本一致
2)、AS number
发起会话路由器的 AS 号,用于确认 EBGP 或者 IBGP 会话
3)、Hold time
路由器必须收到一个 keepalive 或者更新消息之前允许经过的最大秒数。Holdtime 必须是 0(在这种情况下,必须是没有发送 Keepalive)或者至少 3s Cisco 默认的 holdtime 为 180s,如果两个邻居间 holdtime 不一致,选较短的那个做为两者可接受的时间
4)、BGP router-ID
选取方式和 OSPF 相同,使用数值最大的 loopback 口地址,没有 loopback 则使用物理接口上数值最大的地址
5)、Optional parameters
用于一些可选功能的支持.例如鉴别,多协议支持及路由刷新等
2. Keepalive
如果路由器接受了他在邻居的 Open 消息中的参数,它就会发送一个应答的 Keepalive 消息。
默认情况 Keepalive 间隔 60s,或者是达成一致的保持时间的 1/3
3. Update
Update message 用来公布可用的路由,撤销的路由或者两者兼顾Network Layer Reachability Information (NLRI)用来公布 IP 地址前缀和前缀长度的字节组,例如<19,198.24.160.0>Path Attributes该属性为 BGP 提供了选择最短路径,检查到路由环路以及决定路由策略的信息Withdrawn Routes用来描述已经变成不可达并正从业务中撤销的目的地址字节组(长度和前缀)虽然 NLRI 字段可以包含多个前缀,但每一个更新消息只描述一条 BGP 路由(因为路径属性只描述一条路径,但该路径可能会到达多个目的地)
4. Notification
当检测到差错的时候就会发送 Notification 消息,通常会导致 BGP 连接终止。