2019-12-09

BGP

BGP建立邻居采用有限状态机,有6种状态(基于TCP协议)

1. IDLE状态:BGP协议初始时的状态,在这个状态时,系统不分配任何资源,也拒绝所有BGP接入。收到StraEven时开始分配BGP资源,启动ConnectRetry计时器,同时侦听是否有来自其它对等体的连接请求

2. connect:这个状态下,BGP等待TCP完成连接,若连接成功,本地清空计时器,并向对等体发送OPEN报文然后改变状态为OpenSent状态,若连接不成功,本地重置计时器,侦听是否有对等体启动连接,并移至Active状态

3. Active:BGP初始化TCP连接来获得一个对等体,如果连接成功,清空本地清空计时器,并向对等体发送OPEN报文,并转至OpenSent状态

4. OpenSent:BGP等待对等体OPEN报文,收到报文后检查报文,如果发现错误,本地发送notification报文给对等体,并改状态为IDLE。如果报文正确,BGP发送keepalive报文,并转至OpenConfirm状态

5.OpenConfirm:BGP等待Keepalive报文或NOTIFICCATION报文。如果收到keepalive报文,则进入established状态,如果收到notification报文,则变为IDLE状态

6. Established:BGP可以和其它对等体交换update,NOTIFICATION,KEEPALIVE报文。

如果收到正确的update或keepalive报文就认为对端正常运行,本地重置Hold Timer

如果收到错误的UPDATE,本地发送notification报文通知对端,并改变状态为IDLE

如果收到notification报文,本地转IDLE状态

如果收到TCP拆链通知,本地关闭BGP连接,转回IDLE状态


BGP对等体间通过5种报文进行交互:(keepalive报文为周期性发送,其余为触发式发送)

Open报文:用于建立BGP对等体连接

Update报文:用于在对等体之间交换路由信息

Notification报文:用于终端BGP连接

Keepalive报文:用于保持BGP连接

Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息,只有支持路由刷新能力的BGP设备才会发送和响应此报文

BGP对等体之间的交互原则:

1. 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体

2. 从EBGP对等体获得的BGP路由,BGP设备发布给它的所有EBGP和IBGP对等体

3. 当存在多条到同一目的地路由时,只选最优路由发布给对等体

4. 路由更新时,路由设备只发送更新的BGP路由

5. 所有对等体发送的路由,BGP设备都会接收

缺省情况下Keepalive报文时间间隔为60s,timeout为180s


Notification报文错误码:

-1:消息头错误   -2:open消息错误    -3:update消息错误    -4:hold计时器溢出  -5:FSM错误   -6:终止

错误子码:

(消息头错误子码)

1  - 连接未同步  2 - 错误消息长度  3 -错误消息类型

(open 消息错误子码)

1 - 不支持版本号  2 - 错误对端AS  3 - 坏的BGP标示  4 - 不支持的选项参数  5 - 认证失败  6 - 不支持的hold时间

(update消息错误子码)

1 - 畸形属性链表  2 -不认识公认属性  3 - 缺少公认属性  4 - 属性标志错误  5 -属性长度错误  6 - 无效origion属性  7 - AS路由环路  8 - 无效的next-hop  9 - 可选参数错误  10 - 无效网络域  11 - 畸形AS_PATH

BGP属性分类:

公认属性:1. 公认必遵    2. 公认可选

可选属性:1. 可选过渡    2.可选非过渡

origin: 标示路径信息的来源,是公认必遵属性(三种值:IGP-EGP-INCOMPLETE)

AS_PATH: 由一系列AS路径组成,是公认必遵属性

next_hop: 它定义了到达目的地的下一跳的设备IP地址,是公认必遵属性

LOCAL_PREF: 用来通告路由优先程度,是公认可选属性

ATOMIC_AGGREGATE: 用来通告路由接收者,该路由是经过聚合的,是公认可选属性

aggregator: 是atomic_aggregate属性的补充,是可选过渡属性

community: 是一组共享相同属性的目的地集合,是可选过渡属性

originator_id: 用于标识路由反射器,是可选非过渡属性

cluster_id: 用于标识路由反射器组,是可选非过渡属性

multi_exit_disc: 用来区分同一个邻接AS的多个接口,是可选非过渡属性(MED)

BGP公认团体属性:

1. NO-Export   2. No_advertise   3. Internet   4. Local_AS

BGP的MED属性值,类似于ospf的cost值,默认值为0,值越小越优先,只能是对于同一个AS来说,不同AS无法比较,可以传递出AS,控制数据进入AS

Local-preference默认本地优先级为100,值越大越优先,只能在AS内传递,控制数据出AS

BGP Speaker 从EBGP获得的路由会向它所有的BGP对等体通告(包括EBGP,IBGP)

peer 10.1.12.1 next-hop-local    当BGP路由下一跳不可达是使用

peer 1.1.1.1 connect-interface loopback 0 本设备使用loopback 0 接口做为更新源地址

IBGP一般使用Loopback 建立对等体关系

EBGP一般使用直连链路建立对等体关系

缺省时,EBGP对等体间的BGP报文的TTL值为1,所有缺省EBGP使用Loopback 建立对等体将失败

使用peer ebgp-max-hop 改变TTL值,值必须大于1

路由反射器:

从非客户对等体学到的IBGP路由将会反射给所有客户

从客户对等体学到的IBGP路由将会反射给所有非客户,以及除了该客户之外的其他客户(华为路由器支持关闭路由在客户之间的反射行为,使用undo reflect between-clients)

执行路由反射时,只会将自己使用的最优的BGP路由进行反射

peer 2.2.2.2 reflect-client 将自己配置为路由反射器, 2.2.2.2 配置为客户(只需在反射器配置)

你可能感兴趣的:(2019-12-09)