1.BGP——边界网关协议:是运行于 TCP 上的一种自治系统的路由协议。
IGP——内部网关协议:RIP,EIGRP,ISIS,OSPF
EGP——外部网关协议:BGP,EGP
AS自治系统:范围自治,由单一组织或者机构独立维护搭建的一系列网络的集合
AS号——16位二进制组成,0~65535,可用1~65534;私有AS号为64512~65534,公有AS号为1~64511
拓展版AS号——拓展了AS号的范围,将原本16位二进制拓展到32位二进制
2.
BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。 BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。
BGP传递的是路由信息
BGP,RIP,OSPF的比较:
BGP的特性:
(1)可控性:BGP设计了很多的路径属性控制选路
(2)可靠性:利用TCP确保BGP数据包的可靠传输
(3)AS-BY-AS:BGP默认是不支持负载均衡的,BGP将一个AS看作一个整体
BGP的对等体关系——邻居
IBGP对等体:一个AS内部设备建立的对等体关系,并且BGP支持非直连建邻
EBGP对等体:AS之间建立的对等体关系,建议使用直连建邻
BGP为了保证EBGP对等体之间使用直连建邻,将EBGP之间发送的数据包TTL值设置为1。IBGP内部使用非直连建邻,所以BGP将IBGP之间传递的数据包TTL值设置 为255。
3.BGP的数据包
BGP发现对等体的过程是需要手工指定的,因此必须指定TCP会话的对象,因为TCP建立的是一对一的通讯。
(1)open报文——用来建立对等体使用的数据包
AS号: 1.用来确定是AS之间的通信(EBGP)还是AS内部传递BGP的信息(IBGP)
2.建立对等体过程中会协商对端发送的AS号和我本地指定的AS号是否一致,如果不一致,则建立对等体失败。
保活时间---默认是180S 注意:用来周期保活的数据包不是Open报文,BGP设计了单独的保活数据报文, open报文仅协商保活时间,如果两边保活时间不一致,不会导致建立对等体失 败,只会采用更小的时间去执行。
BGP中的RID与OSPF中完全一样
认证:更新源地址必须一致——建立对等个的IP地址双方都统一
(2)Keepalive报文
1.用来BGP周期保活的报文,周期发送的时间默认是保活时间的1/3
2.用来做open报文的临时确认包,用来确认对端是否认可open报文的参数
(3)Update报文——BGP用来承载路由信息的数据包
(4)Notifvation报文——携带一些告警信息
(5)Route-refresh——同步报文,用于同步策略
4.BGP的状态机——6种
Idle:准备发送TCP三次握手
Connect:做TCP三次握手(如果TCP建立成功了会进入opensent状态,反之则进入Active状态)
Active:会一直尝试建立TCP连接,这里有一个连接重传计时器,如果超时了则会返回Connect状态。成功也会进入opensent。
Opensent:协商参数要一致,(例如AS要指对,router-id不冲突,版本要一致之类的)协商完成之后进入openconfirm状态
Openconfirm:进入Openconfirm后会像对端发送keepalive报文,也从对端收到一个correct keepalive报文 则进入established
Established: 如果这其中后五种报文出现错误会发送notification报文,会重新回到Idle状态 。
5.BGP的工作过程
1,基于IGP(静态、直连、RIP、OSPF...)实现路由可达,原因:BGP需 要建立TCP会话(单播) 2,指定对等体关系,邻居之间单播传输,通过三次握手,建立TCP会话 通道。之后所有的BGP通信都将基于TCP会话通道来传输。并且依靠TCP提供传输的 可靠性
3,使用OPEN报文和Keeplive报文进行邻居关系的建立。OPEN报文用来携 带建邻使用的参数,keeplive报文用于OPEN报文参数的确认和BGP对等体的保 活。最终完成对等体关系的建立。生成邻居表,存储BGP对等体关系信息。
4,建立邻居关系后,使用update报文来共享路由条目信息。信息中将携 带目标网络号,掩码及路径属性;之后,将发送以及收集到的路由信息记录在一 张表中 --- BGP表。
5,之后,会将BGP表中最优的一条路由信息(通过路径属性选择的结 果)加载到路由表中。
6,收敛完成后,将使用keeplive报文进行对等体之间周期保活,默认的 保活时间为180S(hold time),发送周期为60S。
7,如果这个过程中出现任何问题,都将使用notification报文进行告 警。
8,如果出现结构突变(网段消失或者新增网段),则将使用update报文 进行触发更新,并通告给其他的对等体。
6.BGP的路由黑洞
BGP的路由黑洞—控制层面可达但是数据层面不可达
1.mpls解决---真正解决BGP路由黑洞问题的是MPLS
2.重发布---在AS边界设备(运行BGP也允许IGP协议)进行重发布将BGP的路由 信息发布到IGP协议中
3.在AS内部构建全连的BGP网络
延申—BGP设计了同步原则,默认设备是关闭的,从IBGP对等体处学的一条BGP路 由,如果本地IGP路由表没有该网段信息,则不会转发给其他的EBGP。
7.BGP的防环
EBGP的防环 AS_PATH属性----BGP设计用来传递AS间路由信息防环的属性,当一条路由信息 发出本AS就会添加本地的AS号,之后路由传递如果路由信息中携带本地的AS 号,那么设备将不在学习该路由信息。
IBGP的防环--- IBGP水平分割--- 设备从一个IBGP对等体处学到一条ibgp路由,不能传递给自身的其他IBGP对等 体关系。
8.反射器和联邦
路由反射器---RR--router reflecter ---一种路由器的身份 Reflecter client--反射器客户,至少需要选择一个反射器的对等体成为客 户 非客户 反射簇---将反射器和客户之间形成的集体称为反射簇,并且用形成该反 射簇的路由器RID作为反射簇的簇ID
反射器的反射规则:
1.如果路由反射器从自身的客户处学习到一条IBGP路由,则会传递给自 身的客户和非客户
2.如果路由反射器从自身的非客户处学习到一条IBGP路由,则会传递给 自身的客户
3.反射器反射的路由必须是可用且优的路由
反射器的防环
属性--- 起源者ID originator---在一个AS内部产生这条反射路由的源设备的RID 生成规则:如果反射器反射一条路由种没有originator,则会由该设备自 动生成起源者ID,如果路由中已经存在originator则只反射该路由 如果设备收到一条路由信息中携带的originator-id是自身的RID,那么将 拒绝学习该路由。
簇列表--每经过一个反射器的反射就会加入该反射器的RID到簇列表中 ,如果设备收到了一条路由信息中簇列表中携带自身的RID那么同样将拒 绝学习该路由。
9.BGP的选路规则
1、W ,即属性 Weight( 思科的私有属性,本地有意义,越大越优先,默认情况下从邻居学到的weight值为0,只能用在in方向)
A、针对邻居修改来自该邻居的所有路由的Weight
B、明细的用Route-map修改某些路由
2、L ,即Local Preference (本地优先级)
通常情况用于离开本AS的选路,默认为100,可以在IBGP邻居之间传递,不会更新真正的EBGP邻居
全局修改;Route-map
3、O ,即属性Sourced(本地起源)
4、A,即属性AS-PATH
5、O ,即“Origin”(起源代码)
6、M,即属性MED(多出口分离器)
7、E,属性EBGP(优于IBGP)
8、M,即属性代表到达更新源的Metric值小的进行下一跳
9、L,即属性负载均衡
10、O,即属性建立时间更久的EBGP邻居
11、R,属性更小的RID
12、C,属性更短的Cluster-list
13、优选来自用最低地址建立BGP连接的邻居的路由条目
【Next-hop 可达是选路的前提】