距离矢量路由协议,TCP179端口
有多条通往INTERNET的路时有必要使用BGP
AS类型:
单出入口AS
传输AS
多出入口AS
邻居类型:IBGP EBGP
BGP使用原则:
1.多条路径时,BGP Speaker 只选最优的给自己使用
2.BGP Speaker 只把自己使用的路由通告给相邻体
3.BGP Speaker 从EBGP 获得的路由会向它所有的BGP相邻体通告
4.BGP Speaker 从IBGP 获得的路由不向它的IBGP相邻体通告
5.BGP Speaker 从IBGP 获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定
6.连接一建立,BGP Speaker 将把自己所有BGP路由通告给新相邻体
成为BGP路由的三条途径:
1.纯动态注入
RTB(config)#router bgp 200
RTP(config-router-bgp)#redistribute ospf ------将IGP的路由动态的注入到BGP路由表中
2.半动态注入:
RTB(config)#router bgp 200
RTB(config-router-bgp)#network 18.0.0.0 mask 255.0.0.0
3.静态注入:
RTB(config)#ip route 18.0.0.0 255.0.0.0 serial 0
RTB(config)#router bgp 200
RTB(config-router-bgp)#network 18.0.0.0
BGP的四种报文:
Notification报文发出意味着BGP连接的中断
BGP路由属性:
1.表达了路由的特征
2.过渡和非过渡
3.必遵(必须带的属性)和可选的(可带可不带)
4.便于扩展(256种属性)
5.截至目前共16种属性(已经使用)
Origin属性:路由是怎么来的
As-Path属性:指出路由顺序经过的AS
矢量路由从这里来的!!
as set 后面的as号不一定是按顺序的
Next Hop属性:
点到点网络中下一跳指的是As的下一跳
广播网上下一跳是路由产生的那个AS
在配联盟时要用到私有AS号
私有AS号:64512-65535
BGP的过滤功能
1.可按照路由的IP地址过滤
2.可依照路由经过的AS-PATH过滤
3.可以依照路由的属性过滤
4.可以依照路由到来的接口过滤
5.可以按照过滤的结果设置路由的属性
RTB(config-router-bgp)#neighbor A.B.C.D route-map deny18
RTB(config-router-bgp)#exit
RTB(config)#route-map deny18 permit 10 out
RTB(config-router-bgp)#match ip address 1
RTB(config-router-bgp)#set metric 888
RTB(config-router-bgp)#exit
RTB(config)#access-list 1 deny 18.0.0.0 255.0.0.0
RTB(config)#access-list 1 permit any
BGP路由器对路由的处理过程
BGP处理大规模网络路由条数问题手段
1.路由表庞大----超过10万条路由
BGP聚合
只通告聚合路由
通告聚合路由和具体路由
通告聚合路由和部分具体路由
2.IBGP相邻体过多,逻辑全连接不现实
BGP联盟
BGP反射
3.复杂网络环境中路由变化十分频繁
BGP衰减:对频繁更新的路由,惩罚值到一定程度后抑止该路由,直至其恢复稳定方可重新投入使用
BGP 三张表:
1.邻居关系表--所有的BGP邻居——show ip bgp summary
2.转发数据库--记录每个邻居的网络,包含多条路径运往同一目的地,通过不同属性判断最好路径,数据库包括BGP属性——show ip bgp
3.路由表--最佳路径放入路由表中,EBGP路由(从外部AS获悉的BGP路由)的管理距离为20,IBGP路由(从AS系统获悉的路由)管理距离为200——show ip route bgp
BGP消息的类型:
1.open:打开消息:主要是利用此报文建立邻居,运行BGP的路由器打开与邻居的TCP连接,并发送打开报文,如果邻居接受这种邻居关系,由响应保活报文。
2.keealive:对等体之间周期性的交换这些消息以保持会话有效。(默认60秒)
3.update:对等体之间使用这些消息来交换网络层可达性信息更新报文是BGP协议的核心,路由器使用它来撤销以前已通知的终点和宣布到一个新终点的路由,或两者都有,应该注意:BGP可以撤销好几个在以前曾通知过的终点,但在单个更新报文中则只能通知一个新终点
4.notification:这些消息用来通知出错信息
帧格式:所有的BGP有公共的首部:标记(16个字节),长度(两个字节),类型(一个字节)
BGP邻居建立过程:
Keepalive计时器是保持时间(Hold Time)的三分之一(建议保持时间设为90S,keepalive时间为30S)
BGP的状态机
Idle:在此状态下不分配网络资源,不允许传入的BGP连接。当在持续性差错条件下,经常性的重启会导致波动。因此,在第一次进入到空闲状态后,路由器会设置连接重试定时器,在定时器到期时才会重新启动BGP,思科的初始连接重试时间为60秒,以后每次连接重试时间都是之前的两倍,也就是说,连接等待时间呈指数关系递增。
Connect:(已经建立完成了TCP三次握手),BGP等待TCP连接完成,如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,根据失败的原因,状态机可能演变到Active,或是保持Connect,或是返回Idle。
Active:在这个状态下,初始化一个TCP连接来建立BGP间的邻居关系。如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,可能仍处在Active状态或返回Idle状态。
OpenSent:BGP发送OPEN分组给对方之后,BGP在这一状态下等待OPEN的回应分组,如果回应分组成功收到,BGP状态变为OpenConfirm,并给对方发送一条Keepalive分组,如果没有接到回应分组,BGP状态重新变为Idle或是Active。
OpenConfirm:这时,距离最后的Established状态只差一步,BGP在这个状态下等待对方的Keepalive分组,如果成功接收,状态变为Established,否则,因为出现错误,BGP状态将重新变为Idle。
Established:这是BGP对等体之间 可以交换信息的状态,可交换的信息包括UPDATE分组、KeepAlive分组和Notification分组。
connect和active都是TCP连接阶段,ACTIVE是发起方,connect是应答方。可以使用命令show ip bgp summary、debug ip bgp events、debug ip bgp来查看
5、建立IBGP邻居
IBGP运行在AS内部,不需要直连。IBGP有水平分割,建议使用Full Mesh,由于Full Mesh不具有扩展性,为了解决IBGP的Full Mesh问题,使用路由反射器(RR)和联邦两种方法来解决。主要减少了backbone IGP中的路由。
Neighbor后所指的地址可达。发起方不能是缺省路由,应答方不能是缺省路由。
可以使用下面两种方法来建立IBGP邻居:
1.邻居之间可以通过各自的一个物理接口建立对等关系,该对等关系是通过属于它们共享的子网的IP地址来建立的。
2.邻居之间也可以通过使用环回接口建立对等关系。
在IBGP中,由于假定了IBGP邻居在物理上直接相连的可能性不大,所以将IP分组头中的TTL域设置为255。
6、建立EBGP邻居
EBGP运行在AS与AS之间的边界路由器上,默认情况下,需要直连或使用静态路由,如果不是直连,必须指EBGP多跳,Neighbor x.x.x.x ebgp-multihop [1-255] 不选择为最大值,255跳。
可以使用下面两种方法来建立EBGP邻居:
1.邻居之间可以通过各自的一个物理接口建立对等关系。
2.邻居之间也可以通过使用环回接口建立对等关系。
7、neighbor ip-address remote-as number命令
例:neighbor 10.1.1.1 remote-as 100
指定对方属于哪一个AS。所指的10.1.1.1地址,必须在IGP中可达。
允许邻居用这个地址来访问我的179端口,但没有指明访问本路由器的哪个地址,只检查源地址。
本路由器以更新源地址去访问neighbor后面这个地址的179端口,是否可以建立TCP链接要看对方是否允许我的更新源来访问它。