BGP Basic

命令:
1、因为通过IBGP路由转发从EBGP收到的路由不改变路由下一跳,会造成路由不可达, 敲入命令peer x.x.x.x next-hop-local,可以使发往x.x.x.x的路由下一跳改为自己;
2、用loopback口建立邻居需要敲入命令peer x.x.x.x connect-interface loopback0;
3、ebgp使用环回口建立邻居时需要输入 peer 1.1.1.1 ebgp-max-hop 2,ebgp默认一跳;
4、AS域内运行IGP则需要引入。如AS域内走OSPF,则AS内所有走ospf的路由器都要在OSPF界面敲入命令import-route bgp;
4、bgp中的network可以宣告自己路由表中的路由。

IGP:内部网关路由协议,发现与计算路由,多运行于AS内部
BGP是一种增强的距离矢量路由协议,也是拥有丰富的策略控制技术的EGP(外部网关路由协议),常用于在 AS之间进行路由 控制和优选

BGP的邻居叫做BGP对等体(peer)

其他的IGP路由协议,如OSPF、EIGRP等,都只能处理几万条以内的路由,再大的化数据库过大,协议就不能正常工作了。
BGP的设计中不需要每条路由路径的细节信息,只处理大范围的路由情况,所以可以使用在大型网络边界 处。

BGP只用来 传递和控制路由,不发现路由
 而OSPF中是OSPF的链路状态把各个路由器把自己直连的接口的信息转换成路由信息传给对方

BGP可跨多个路由器建立邻居关系,而IGP只能和直连路由器建立邻居

BGP是增量更新,增量更新指的是刚开始的时候设备与设备之间是把所有信息进行交互,设备与设备之间的路由信息同步完成之后,只有当路由发生变化的时候只发送相应的变化信息,且没有所谓的周期性更新

EBGP:不同AS域之间
IBGP:相同AS域之间
IBGP通常使用路由器环回口的IP地址作为建邻居关系的目的地址和源地址,  用Loopback接口一个是因为,Loopback接口不会DOWN,二是因为,只要IGP路由可达,就算前面建立邻居的链路DOWN了,还可以通过其他的路径继续保持邻居关系,就不会引起路由的震荡。同时还可以通过BGP迭代等开销的IGP路径实现负载分担。

在EBGP中一般使用直连接口建立邻居,因为EBGP大多数用直连,用环回口也可以,不过要写静态
EBGP中默认为一跳,如果使用loopback建立邻居则需要加如下命令:peer x.x.x.x ebgp-max-hop   2

B GP邻居关系的建立与配置:
BGP之间建立邻居,需要经历如下几个过程:
Idle—BGP进程被启动或被重置,这个状态是等待开始,比如等于指定一个BGP peer,当收到TCP连接请求后,
便初始化另外一个事件,当路由器或peer重置,都会回到idle状态。

Connect—检测到有peer要尝试建立TCP连接。

Active—尝试和对方peer建立TCP连接,如有故障,则回到idle状态

OpenSent— TCP连接已经建立,BGP发送了一个OPEN消息给对方peer,然后切换到OpenSent状态,如果失败,
则切换到Active状态。

OpenReceive— 收到对方peer的OPEN消息,并等待keepalive消息,如果收到keepalive,则转到Established
状态,如果收到notification,则回到idle状态,比如错误或配置改变,都会发送notification而回到idle状
态。

Established— 从对端peer收到了keepalive,并开始交换数据,收到keepalive后,hold timer都会被重置,
如果收到notification,就回到idle状态。


BGP有五种报文
Open报文(协商bgp参数)和Keepalive报文(保持邻居关系)类似Hello报文
Update报文(交换路由信息):有路由变化时出现,抓包时报文中的Withdrawn routes是要撤销的路由,ALRI是更新路由。
Notification报文(差错通知):出现错误时出现。
Route-refresh报文(用于改变路由策略后请求对等体重新发送路由信息):执行新的策略时出现,让对端设备重新发送一次路由,使本地路由策略能够生效,而路由承载在Update报文中,所以一定会发送Update报文。

BGP的六种状态:

ospf以及isis的状态机只与报文有关
bgp的状态机中的状态不只是与报文有关,前三个状态(Idle/Connect/Active)与TCP的连接建立有关

OpenSent状态:设备互相发送open报文(携带需要协商的参数),收到open报文并认可了其中的参数后,设备进入OpenConfirm状态。

OpenConfirm状态:设备发送keepalive报文进行保活从而进入Establieshed状态,邻居状态建立完成。

Establieshed状态:周期性出现keepalive报文,出现错误时出现 Notification报文,需要执行新的策略时出现Route-refresh报文,有路由变化时出现
Update报文

BGP的生成方式:
BGP引入路由的两种方式如下:
   

管理员手动宣告自己路由表内的网段

ospf中的宣告是将接口宣告进自己的ospf进程中,启用在ospf协议中
bgp中的宣告不是启用协议,而是把ip路由表中已经存在的路由引入到bgp路由表中

        



BGP通告原则和路由处理:
BGP邻居关系建立之后才开始通告路由信息
BGP路由封装在 Update报文中通告给邻居

BGP通告原则:1、仅将自己最优路由发布给邻居
                       2、通过EBGP获得的最优路由发布给所有的BGP邻居(AS-path属性实现AS之间不会环路)
                         3、通过IBGP获得的最优路由不会发布给其他的 IBGP邻居(水平分割)(因为在IBGP中AS号相同,AS-path不生效)
                       4、BGP speaker将BGP路由发布给EBGP邻居时确保BGP路由表和IGP路由表同步
,若不同步可能会出现如下图情况(把BGP路由表导入IGP。防止路由黑洞和环路,而现在网络IGP已经承载不了BGP的路由条目,华为设备默认关闭)
                       5、只发送更新的BGP路由
                       
BGP的丰富属性(常用的几个):
一. 公认必遵(括号里说明是路由器最基本的所以是公认必遵):
1、Origin(路由是怎么产生):定义路径信息的来源,标记一条路由怎么成为BGP路由的,且 i优于e优于?(network标识为i,import标识为?,已经淘汰的EGP标识为e)
2、AS_Path(路由怎么过来的):AS之间防环,基本思想是: AS_Path属性按矢量顺序记录了某条路由从本地到目的地所要经过的所有AS号,如果某台BGP路由器从其外部对等体收到某条路由的AS_Path列表中包含有自己的AS号那么该路由器就知道出现了环路,因而丢弃该路由,AS_Path属性只有在离开本AS才会赋加,且AS号是有序的,记录时是有顺序的,所以是有序AS号如下图。 且AS_Path 长度越短越优(但是AS号可以自行赋加用以选路)

                            AS_Path又细分为四种属性:
                             AS-Sequence:记录路由在AS之间的行走路径,来避免AS之间的环路
                             AS-Set:避免AS聚合路由出现的环路
                             AS-Comfed-Seq:记录路由在联盟中的行走路径以及避免联盟内部的成员之间的环路
                             AS-Comfed-Set:应用于联盟AS内部的聚合的环路问题
3、Next_ hop(访问时直连的接口是多少):BGP Speaker将路由发布给BGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址;BGP在向IBGP通告从其他EBGP得到的路由时,不改变路由的下一跳属性 (敲入命令peer x.x.x.x next-hop-local,可以使发往x.x.x.x的路由下一跳改为自己)
二、公认任意:
4、Local_Preference:控制选路的属性, 华为设备 默认为100,越大越优。仅在IBGP邻居之间有效,不通告给其他AS。表明路由器BGP优先级,用于 判断出站流量(流量离开AS时)的最佳路由(和MED的区别:在本AS操作,传递范围在本AS内,影响本端AS的出站)
三、可选过渡
5、Community:团体属性,把一系列路由器加标签,便于符合相同条件的路由进行统一处理,限定路由的传播范围。
四、可选非过渡
6、MED:多协议出口鉴别器,类似cost值, 默认为0,越小越优先。仅在相邻的AS之间传递,收到此属性的AS不会通告给第三方AS,用于 判断入站流量(流量后进入AS时)的最佳路由,即用来影响邻居AS流量进入本AS的最佳路径。实际可用于 如:通过在AS100内做med配置,影响AS200的出站,进而影响AS100的入站,达到修改选路的目的(在本AS内做,影响对端AS的出站,进而本AS的进站)。



BGP选路原则: