BGP协议是一种距离矢量(Distance vector)的路由协议,可是比起RIP等典型的距离矢量协议,又有不少加强的性能。BGP使用TCP做为传输协议,使用端口号179。在通讯时,要先创建TCP会话,这样数据传输的可靠性就由TCP协议来保证,而在BGP的协议中就不用再使用差错控制和重传的机制,从而简化了复杂的程度。另外,BGP使用增量的、触发性的路由更新,而不是通常的距离矢量协议的整个路由表的、周期性的更新,这样节省了更新所占用的带宽。BGP还使用“保留”信号(Keepalive)来监视TCP会话的链接。并且,BGP还有多种衡量路由路径的度量标准(称为路由属性),能够更加准确的判断出最优的路径。
BGP使用TCP做为其承载协议创建链接。所以与IGP逐跳路由器创建邻居不一样,BGP能够跨越多跳路由器创建邻居关系。ide
IGP(Interior gateway protocols)——内部网关协议,定义为在一个自治系统内部使用的路由协议(包括动态路由协议和静态路由)。IGP的功能是完成数据包在AS内部的路由选择,或者说,是讲述数据包如何穿过本地AS的。RIPv1&v2,OSPF,ISIS都是典型的IGP。
EGP(Exterior gateway protocols)——外部网关协议,定义为在多个自治系统之间使用的路由协议。它主要完成数据包在AS间的路由选择,或者说,讲述数据包为了到达目的IP,须要经过哪些AS。BGP就是一种EGP。
2字节长度的AS号码,即1-65535。其中1-64511为公有AS,64512-65534为私有AS。在2009年1月以后,IANA决定使用4字节长度AS,范围是65536-4294967295oop
IGP只做用于本地AS内部,而对其余AS一无所知。它负责将数据包发到主机所在的网段(segment)性能
EGP做用于各AS之间,它只了解AS的总体结构,而不了解各个AS内部的拓扑结构。它只负责将数据包发到相应的AS中,余下的工做便交给IGP来作。3d
一、open报文:负责和对等体创建邻居关系
二、update报文:被用来在对等体之间传递路由信息(包括可达路由或者不可达路由)
三、Notification报文:检测到错误的时候,就发送该消息给对等体
四、Keepalive报文:周期性每60秒发送,用来维护TCP/IP链接
五、Route-refresh报文:表示本身支持路由刷新能力code
里面比较重要的字段
version v4版本
My AS 表明是我该设备的AS号码
router id 表明该设备的BGP的router id
Hold time时间 从0开始一直增长到180s,最小能够为0,这种状况下BGP链接被认为永远是up,对等体之间
不会发送keepalive报文来检测邻居是否失效
可选字段和可变长字段router
缺省状况下,发送KeepAlive 的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到KeepAlive 报文将重置Hold Time定时器,若是Hold Time定时器超时,就认为对等体Down掉。blog
KeepAlive报文主要用于对等体路由器间的运行状态以及链路的可用性确认。KeepAlive 报文的组成只包括一个BGP数据报头。接口
前面两部分表示路由撤销信息,后面三部分表示路由可达信息
路由可达信息携带各类属性
可是路由撤销信息就不须要携带各类属性了,由于这时候是撤销了事件
Notification报文主要在发生错误或对等体链接被关闭的状况下使用,该消息携带各类错误码(如定时器超时等),以及错误子码和错误信息。ip
能够在不中断BGP链接的状况下,对BGP路由表进行动态刷新,并应用新的路由策略
运行在相同AS内的BGP路由器创建的邻居关系为IBGP(Internal BGP)邻居关系
bgp 345 router-id 1.1.1.1 peer 2.2.2.2 as-number 345 peer 2.2.2.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization ###默认配置 peer 2.2.2.2 enable ###默认生成
bgp 345 router-id 2.2.2.2 peer 1.1.1.1 as-number 345 peer 1.1.1.1 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 1.1.1.1 enable ###默认生成
IBGP的关系 通常建议用loopback创建
loopback比较稳定
能够实现冗余备份
运行在不一样AS之间的BGP路由器创建的邻居关系为EBGP(External BGP)邻居关系
bgp 345 router-id 1.1.1.1 peer 12.1.1.2 as-number 200 # ipv4-family unicast undo synchronization peer 12.1.1.2 enable ###默认生成 #
# bgp 200 peer 12.1.1.1 as-number 345 # ipv4-family unicast undo synchronization peer 12.1.1.1 enable ###默认生成 #
通常创建ebgp关系的时候 建议你们用物理接口创建 若是用loopback的话 须要修改ttl的数值
peer 1.1.1.1 ebgp-max-hop 2
默认状况下创建ebgp的时候,咱们发送数据包的TTL值为1
Idle:空闲状态,BGP系统发出start事件(就是管理员配置BGP的过程),BGP初始化资源,复位链接计时器(32s),发起TCP链接,同时转入Connect状态
Connect:在此状态,BGP发起第一个TCP链接,若是TCP链接成功,就转入OpenSent状态,若是TCP链接失败,就转入Active状态。(TCP链接失败两种状况:1.收到TCP参数协商失败的回复,则进入Active状态,2.对方长时间没有回复,超时,则保持在Connect状态
Active:BGP老是在试图创建TCP链接,若是链接计时器超时,就退回到Connect状态,若是TCP链接成功,就转入OpenSent状态,若是TCP链接失败,就继续保持在Active状态,并继续发起TCP链接。
OpenSent:BGP也已经发送了第一个Open报文,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,若是有错误,系统就会发送一条出错通知消息并退回到Idle状态,若是没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器(180s),开始计时。同时转入OpenConfirm状态。
OpenConfirm:BGP等待一个Keepalive报文,若是收到了一个Keepalive报文,就转入Established阶段
Established:BGP对等体交换update、keepalive、route-refresh报文
之后会周期性发送keepalive报文(60s)
若是收到notification报文或者收到TCP拆除连接通知,BGP转至idle状态
Network命令是逐条将IP路由表中已经存在的路由引入到BGP路由表中
经过display命令在RTC上查看是否学到BGP发布的路由条目
Import命令是根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时import命令还能够引入直连和静态路由
经过display命令在RTC上查看是否学到BGP引入的路由条目