一.BGP用于大规模网络
EBGP用于AS之间,IBGP用于AS内部
执行拓扑发现,需要周期性的更新确保路由选择信息的精确性。

二.AS autonomous system 自治系统
指在同一个管理下使用策略的设备集合,AS号相同。
1.AS范围 1-65535 私有AS号:64512-65535。公有AS号需要想机构申请,
2.BGP是路径矢量协议,对于BGP来说,一个AS就是一条,在BGP的路由矢量信息中有一个BGP AS号列表。
3.BGP路由器不接受路径列表中包含其AS号的路由更新(防环机制),如果数据包中AS列表中包含(300,200,100),当AS100收到该数据包,会丢弃,因为AS列表中已经含有AS号100。
4.BGP支持BGP AS 路径应用路由策略。
5.BGP路由器只能将其使用的路由通告给邻接自治系统的对等体。

三、BGP 报文
1.BGP路由器之间建立TCP连接,这些路由器也称之为BGP对等体,BGP邻区:EBGP、IBGP。
2.端口号 179,而OSPF使用组播hello包发现邻区。一般来说AS内会存在IBGP和OSPF、ISIS,因为BGP需要OSPF保证IBGP邻区间的路由可达。
PS:组播技术的初衷是在IP网络中,以"尽力而为"的形式发送信息到某个目标组,这个目标组称为组播组,这样在有源主机向多点目标主机发送信息需求时,源主机只发送一份数据,数据的目的地址是组播组地址,这样,凡是属于该组的成员,都可以接收到一份原主机发送的数据的拷贝,此组播方式下,只有真正信息需要的成员会收到信息,其他主机不会收到。
3.对等体之间交换整个BGP路由表,BGP路由器只发送增量更新或触发更新。
BGP报文格式:

bgp的as号可以配置一样吗 bgp修改as号_组播


Maker:用于检测BGP对等体之间同步丢失情况,并且在支持验证功能的情况下进行消息验证如果消息类型为open或open消息中没有包含验证消息,标志字段被置为全1,否则标志字段通过某些计算得到(作为验证进程的一部分)

length:表示 BGP报文的全部长度,包括头部

type:报文类型,

1、Open报文 用于对等体参数协商;

2、Keepalive报文 用于维护对等体邻居;

3、Update报文 用于通告可达路由和不可达路由;

4、Notification报文 用于错误信息通告,断开对等体邻居;

5、Route-refresh报文 用于请求对等体重新发送路由信息;

BGP有限状态机
BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。
dle状态是BGP初始状态。在Idle状态下,BGP既不发送TCP连接请求,也拒绝邻居发送的TCP连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。
任何状态中收到Notification报文或TCP拆除链路通知等Error事件后,BGP都会转至Idle状态。
在Connect状态下,BGP启动连接重传定时器(Connect Retry,缺省为32秒),等待TCP完成连接。
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态;
如果TCP连接失败,那么BGP转至Active状态;
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
如果发生其他事件(由系统或者操作人员启动的),则退回到Idle状态。
在Active状态下,BGP总是在试图建立TCP连接。(实际上是被动的建TCP)
如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态;
如果TCP连接失败,那么BGP停留在Active状态;
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态;
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
Route-refresh报文不会改变BGP状态。
如果收到Notification报文,那么BGP转至Idle状态。
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。

BGP 同步规则
BGP路由不应该使用通过IBGP获悉的路由将其通告给外部领区。除非路由是本地的或者通过IBGP学习到的。

BGP水平分割原则(防环)
AS内部一个路由器从IBGP学到的路由,不会通告给其他IBGP邻区,这需要IBGP邻区全连接。(部分连接会导致路由黑洞)
解决这个问题:1.路由反射器,2、联邦

BGP路由通告规则
1.当存在多条路径时,BGP Router会选择最佳路由来使用。(无负载均衡)
2.BGP只会把自己使用的路由也就是最佳路由传递给BGP peer
3.BGP speaker 从EBGP获得的路由会向它所有相邻体通告(EBGP、IBGP)
4.BGP 同步规则
5.BGP水平分割原则(防环)

BGP Tables
1.BGP邻区表(dis bgp peer )
2.BGP表
3.路由表