
open报文:
邻居建立和能力参数协商,(至少有一个地址簇能力要一致)
keepalive报文:
默认每隔60s周期性发送,如果180s没有收到keepalive报文,则认为BGP邻居失效
断开TCP连接。
update报文:
BGP路由传递以及撤销
Route-refresh报文:
用于手动进行BGP路由的触发更新,或者用于ORF功能。
Notificationn报文:
通知报文,用于报错,收到该报文会断开TCP连接。
BGP的状态机:
Idle:
产生原因:
1、没有去往邻居地址的路由,无法发起TCP三次握手,也无法完成TCP的三次握手。
2、发起TCP连接请求后被对端拒绝,发起TCP报文的源地址,不是本端指定的邻居地址。
Connect(连接):
产生原因:发起TCP连接路由器,无法收到邻居的TCP回应报文时会变为connect状态,并且5s后重传一次TCP连接请求,再等待32s左右,重新发起TCP连接请求。
Active状态:
产生原因:
本节我们继续从BGP建立邻居前的TCP三次握手到发送Open报文、Keepalive报文。邻居建立之后,我们对现网的 *** 作可能会产生update报文。
现在我们谈一谈Update报文
BGP通过Network和Import两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居,BGP在邻居关系建立后才开始通告路由信息。
Update消息主要用来发布可用路由和撤销路由,Update中包含以下信息:
1、网络层可达信息(NLRI):用来公布IP前缀和前缀长度。
2、路由属性:为BGP提供环路检测,控制路由优选。
3、撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
再通告BGP路由时,由于各种因素的影响,为了避免路由通告过程中出现的问题,BGP路由通告需要遵守一定的规则,下面进行详细分析。
BGP路由信息中如何看一条邻居是最好的路由?
在BGP路由表中,带>的路由是最优的路由。
这是IBGP中重要的防止环路规则之一,又称之为IBGP的水平分割。
这个只会产生在BGP非全互联的拓扑中,即同一个AS内存在没有做BGP处理的路由器中,才会进行BGP与IGP的同步。
我们看以下实验:
在这个拓扑图中,BGP传播路由是可以跨路由器传递的,A路由器可以将路由通过EBGP传递给B,B可以通过IBGP传递给D,因为B路由器到D路由器有运行OSPF协议,路由可达,D再次通过EBGP传递给E。
但是C路由器上却没有A路由器1000oo的路由,因为C路由器没有运行BGP协议。
这样就会导致E路由器在回包的时候,将1000oo的路由先发送给D,D继续转发给C,C直接丢弃。这就出现了BGP的路由黑洞。最终导致路由不通。
这种又该怎么处理呢?
其实,我们的D路由器会在IBGP报文发送过来之后,查询自己的IGP路由表中是否存在该路由,如果存在,则认为在这个区域内,其他路由器都存在该条路由,就认为是同步了,继续通过EBGP传递给E路由器,反之,则认为在这个区域内,其他路由器都不存在该条路由,直接丢弃。
1、将EBGP路由引入到IGP协议中,(基本被淘汰)比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议,增加的IGP协议计算路由负担。BGP路由震荡,IGP路由也会产生震荡。
2、AS内部所有路由器均运行BGP协议,即IBGP全互联。主流架构,此时不再需要同步检测。
从IBGP邻居得到的路由不会传递给IBGP邻居
从IBGP邻居得到的路由同步检测后传递给EBGP
1、AS内部防患,IBGP的水平分割:通过IBGP获得的最优路由不会发布给其他的IBGP邻居。BGP的路径属性描述了BGP路由的路径信息,是每个Update数据包的一部分;
一、BGP路径属性可分成4大类:
1、公认必遵 BGP路由器必须识别这类属性,Update报文必须携带这类属性;
如果收到的更新报文中缺少这类属性,BGP邻居关系会被重置;
2、公认任意 BGP路由器必须识别这类属性,Update报文可选携带这类属性;
3、可选过渡 BGP路由器可选识别这类属性,不识别也可以转发这类属性;
4、可选非过渡 BGP路由器可选识别这类属性,不识别不转发这类属性;
二、BGP常用的路径属性有13个
1、origin 公认必遵
用来代表BGP路由的起源,标记一条路由是如何进入BGP,有3种类型:
(1)IGP
IGP学到的路由,通过network方式注入到BGP中的路由或者聚合路由,用i表示;
(2)EGP
EGP学到的路由,EGP协议几乎没有使用,只能手工调整,用e表示;
(3)incomplete
来源未知的路由,通过import方式引入到BGP中的路由或者聚合路由,用?表示;
聚合路由的起源属性依赖于成员路由的起源属性:
(1)成员路由的起源属性都是IGP,聚合路由的起源属性是IGP;
(2)成员路由的起源属性都是incomplete,聚合路由的起源属性是incomplete;
(3)成员路由的起源属性既有IGP,又有incomplete,聚合路由的起源属性是incomplete;
origin属性3种路由比较优先级:
IGP起源的路由优于EGP起源的路由,优于incomplete起源的路由;
2、as_path 公认必遵
用于记录路由沿途所经过的AS,路由在离开AS时,当前的AS号会自动添加到AS_PATH序列的前面(最左面);
路由在AS内传递时,不对路由的AS_PATH属性做任何改动;
BGP的AS_PATH属性内容由segment构成,有4种segment类型:
(1)AS_SET AS号的无序集合
(2)AS_SEQUENCE AS号的有序列表
(3)AS_CONFED_SET 联盟中成员AS号的无序集合
(4)AS_CONFED_SEQUENCE 联盟中成员AS号的有序列表
每种segment类型在AS_PATH属性中仅能出现一次;
AS_PATH中可能仅携带一种segment类型,也可能同时携带多种segment类型;
AS_SET和AS_CONFED_SET一定是聚合路由的才会包含的segment类型;
多种segment类型同时出现在AS_PATH中,则前后顺序一定是AS_CONFED_SEQUENCE、AS_CONFED_SET、AS_SEQUENCE、AS_SET;
AS_PATH的长度是由AS_SEQUENCE这种segment的AS号数量来决定的,而AS_CONFED_SEQUENCE、AS_CONFED_SET和AS_SET的长度都不计入AS长度计算;
不论何种类型的segment,若其中携带的AS号等于接收设备所在的AS号,则该路由都将因为环路问题而被丢弃,可通过peer xxxx allow-as-loop使接收设备接收含有自己AS号的路由;
3、next_hop 公认必遵
用来记录BGP路由的下一跳信息,BGP设备会忽略下一跳地址不可达的BGP路由;
BGP下一跳属性遵循如下规则:
(1)BGP设备将本地始发路由发布给所有BGP对等体时,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址;
(2)BGP设备向EBGP对等体发布路由时,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址;
(3)BGP设备在IBGP对等体发布从EBGP学来的路由时,不改变路由信息的下一跳属性;
可以通过如下两条命令修改下一跳属性缺省行为:
peer next-hop-local
peer next-hop-invariable
关于下一跳带来的问题:
区别于IGP中下一跳是直连路由器的IP地址,BGP路由的下一跳往往都是非直连设备的IP地址,所以出现了下一跳地址不可达问题、路由黑洞问题以及负载分担问题;
(1)下一跳地址不可达问题
下一跳是非直连地址,必须保证路由表存在到达下一跳地址所在网络的路由;
(2)路由黑洞问题
从数据平面分析,如果数据流访问目标BGP网络,R5根据下一跳发给R2,但中间IGP路由器R3和R4没有对应的BGP路由,所以会出现路由黑洞;
方法1:
全都运行BGP,运营商网络中使用较多,IBGP全互联、RR、联盟;
方法2:
IGP同步,将BGP路由引入IGP,保证路由全网可达。
此种方法不建议使用,过量的BGP路由会加重IGP路由器的负荷,同时IGP路由也不适合承担过大的AS间数据流量,可以根据需要引入少量路由或对引入的路由做必要的汇总;
方法3:
开启MPLS标签交换,在运行BGP的设备R2和R5之间为下一跳地址所对应的路由创建LSP隧道,所有发往下一跳地址的数据包执行标签转发,中间设备不需要存在相应的BGP路由;
方法4:
把运行BGP的设备直连,这样AS间的数据流量将不需要经过IGP路由器;
(3)负载分担问题
默认情况下,BGP只把最佳路由放进IP路由表,即BGP缺省没有等价路由;
如果下一跳地址路由是负载分担的路径,可以保证R5到R2的数据流量负载分担;
4、local_pref 公认任意
Local_Pref属性用来判断流量离开AS时的最佳路由,仅在IBGP邻居间传递,不通告给其他AS;
当AS内BGP设备通过不同的IBGP对等体得到目的网段相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由;
Local_Pref属性将会在整个AS内传递,在本AS内的所有路由器都将收到该优先级,如果路由没有配置Local_Pref属性,将按缺省值100来处理;
5、med 可选非过渡
MED属性用来判断流量进入AS时的最佳路由,仅在两个相邻的AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三发AS;
MED值越小,路由的优先级越高;
BGP路由器默认只对相同的AS传递过滤的路由进行MED的比较,不会比较不同AS传递的路由,可以使用命令compare-different-as-med来使其比较不同AS传递的路由;
如果路由没有配置MED属性,将按照缺省值0来处理;
6、originator_id 可选非过渡
专为RR开发,用来在AS内防环,由RR添加到路由更新中,并随路由在AS内传递,离开AS时会被剥离;
OriginatorID属性值为AS内第一台通告该路由的BGP设备的RouterID;
如果路由器接收路由时,路由携带的OriginatorID与自身RouterID相同,丢弃该路由,实现集群内防环;
7、cluster_list 可选非过渡
专为RR开发,用来在AS内防环;
Cluster_List是路由经过RR反射时由RR添加的一个集群列表,记录路由经过的Cluster_ID;
如果RR在接收到路由的Cluster_List中存在自身Cluster_ID,丢弃该路由,实现集群间防环;
8、atomic_aggregate 公认任意
用于路由聚合时,告知对等体,原始的明细路由AS_Path出现了丢失,只在抑制明细路由时携带;
如果聚合路由将所有明细路由抑制了,就会为聚合路由生成该属性;
9、aggregator 可选过渡
聚合后的路由一定携带aggregator属性,指明聚合路由设备所在的AS号和RouterID;
10、community 可选过渡
Community团体属性用来标识具有相同特征的BGP路由,提高路由策略使用效率;
可以用十进制和十六进制来表示该属性,范围0x00000000(0)-0x0000FFFF(65535)和0xFFFF0000-0xFFFFFFFF是被保留的,其中定义了4中公认团体属性:
(1)Internet 0x00000000
设备收到具有此属性的路由后,可以向任何BGP对等体发送该路由,路由的缺省属性;
(2)No_Advertise 0xFFFFFF02
设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由;
(3)No_Export 0xFFFFFF01
设备收到具有此属性的路由后,将不向AS外发送该路由;
(4)No_Export_Subconfed 0xFFFFFF03
设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发送该路由;
除了公认团体属性外,如果需要定义私有团体属性控制BGP路由时,可以利用团体属性的前2个字节作为AS号,用后面的2个字节定义与该AS相关的数值;
多条路由可以拥有相同的团体属性,bgp路由器需要对这些路由实施策略时,只需匹配该团体属性;
一条路由也可以拥有多个团体属性,BGP路由器可以根据其中的一部分或全部属性进行匹配;
11、MP_Reachable 可选非过渡
12、MP_Unreachable 可选非过渡
13、扩展团体属性
除了标准团体属性外,扩展团体属性是对BGP团体属性的扩展,长度8字节,主要用于MPLS 的Route Target(前面2字节代表类型,后面6字节代表数值);IBGP水平分割,从IBGP邻居学到的路由不会再通告给其他的IBGP邻居;
在一个大型的AS当中收到IBGP水平分割的影响,出现了BGP路由无法通过IBGP邻居接收的问题,解决办法有三种:
1、全互连的IBGP邻居
2、路由反射器RR
3、BGP联盟
一、全互连的IBGP邻居
建立全互连的IBGP邻居将会需要更多的资源,每建立一个BGP邻居就需要一个TCP连接,这样会极大地消耗CPU资源,TCP连接数计算公式:n(n-1)/2;
在大型的BGP网络中,一般不采用全连接方式,通常会采用路由反射器RR和联盟来解决
二、路由反射器RR
多台路由器只与一台中心路由器建立邻居关系,不需要全互连的邻居,这台中心路由器允许从IBGP邻居学来的路由被反射出去,打破了IBGP水平分割限制的中心路由器就是路由反射器RR;
1、路由反射器RR的几种角色:
(1)路由反射器route reflector
允许把从IBGP邻居学到的路由反射给其他IBGP邻居的BGP设备;
(2)客户机client
与RR形成反射邻居关系的IBGP设备,由RR决定哪台设备作为客户机;
(3)非客户机non-client
既不是RR也不是客户机的IBGP设备;
在AS内部所有的非客户机与RR必须建立全互连的IBGP邻居;
(4)始发者Originator
在AS内部始发路由的设备,Originator-ID属性用于防止集群内产生路由环路;
(5)集群Cluster
路由反射器及其客户机集合,Cluster-List属性用于防止集群间产生路由环路;
2、路由反射原理
同一集群内的客户机只需要与该集群的RR交换路由信息,所以客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少IBGP连接数量;
RR打破了IBGP水平分割的限制,并采用Originator-ID属性和Cluster-List属性防止路由环路;
RR向IBGP邻居发布路由规则:
(1)从非客户机学来的路由,反射给所有的客户机;
(2)从客户机学来的路由,反射给其他所有的客户机和非客户机;
(3)从EBGP学来的路由,反射给所有的客户机和非客户机;
3、Originator-ID属性和Cluster-List属性
当网络中只部署一台RR时,如果该RR设备发生故障,将会导致其他所有的路由器无法收到路由,因此部署多台RR可以提供更好的冗余;
在一个AS内部署了两台RR设备,都能够用于路由的反射,其他设备同时与两台RR建立IBGP邻居关系,及时一台出现故障,另外一台也可以工作;
但是部署过多的RR以及复杂的拓扑也可能带来环路的隐患,AS-Path无法检测到AS内的环路,因此在部署路由反射器时,BGP提供了两种属性,用于检测AS内的环路问题,分别是Originator-ID和Cluster-List属性,这两个属性仅存在当RR将从IBGP邻居收到的路由向另一个IBGP邻居通告时,用于防止环路而添加的仅在AS内起作用的属性,这两个属性不会出现在AS外;
(1)Originator-ID:可选非过渡属性,RR反射路由时,为该路由添加Originator-ID属性(内容是路由始发者客户机的RouterID),用于防止集群内路由环路;
集群内环路现象:
一个集群中部署两个RR(两个RR使用相同的Cluster-ID),每个RR和集群中每个客户机建立IBGP邻居关系,两个RR之间建立IBGP邻居关系(如果存在EBGP邻居的话需要建立IBGP邻居关系);
客户机Client1通告一条路由给RR1,RR1将该路由反射给RR2,RR2继续反射该路由给客户机Clent1,路由回到始发路由器,Client1如果使用该路由则环路产生;
在反射集群内使用Originator-ID属性解决环路过程如下:
客户机Client1通告一条路由给RR1;
RR1反射该路由时为该路由添加Originator-ID属性,内容是路由始发者客户机Client1的RouterID,然后反射给RR2;
RR2反射该路由时,发现路由已经携带Originator-ID属性,继续反射给客户机Client1;
客户机Client1收到该路由后,发现路由携带OriginatorID属性且与自身RouterID一致,丢弃该路由;
说明:此场景仅用于阐述Originator-ID原理,实际上RR1反射路由给RR2时,除了添加Originator-ID属性外,还添加了Cluster-List属性,RR2发现路由携带Cluster-List属性且包含自身Cluster-ID(两个RR属于同一集群,Cluster-ID相同),就会丢弃该路由;
(2)Cluster-List:可选非过渡属性,RR使用该属性记录路由经过每个集群的Cluster-ID,用来在集群间避免环路;
AS内的每个集群都由唯一的Cluster-ID来标识,默认为BGP的RouterID,可以使用命令Cluster-ID来修改;
当一条路由被RR反射的时候,RR会把本地Cluster-ID添加到Cluster-List的前面;
当RR接收到一条路由时,会检查Cluster-List,如果Cluster-List中已经有本地Cluster-ID,丢弃该路由,否则把本地Cluster-ID添加到Cluster-List的前面,然后反射出去;
集群间环路现象:
RR1、RR2、RR3是三个反射集群中的路由反射器,假设任意两个RR都是另一个RR的客户机,并部署全互连的IBGP邻居关系;
客户机Client1通告一条路由给RR1,RR1反射给RR2,RR2反射给RR3,RR3重新将该路由反射给RR1,一旦RR1接收并使用该路由则产生环路;
在反射集群之间使用Cluster-List属性解决花露过程如下:
客户机Client1将一条路由通告给RR1;
RR1收到该路由发现没携带Cluster-List属性,为路由添加Cluster-List属性并把自身集群Cluster-ID添加进去,然后反射出去;
RR2收到该路由发现携带Cluster-List属性,不包含自身集群Cluster-ID,把自身集群Cluster-ID添加进去,然后反射出去;
RR3收到该路由发现携带Cluster-List属性,不包含自身集群Cluster-ID,把自身集群Cluster-ID添加进去,然后反射出去;
RR1收到该路由发现携带Cluster-List属性,包含自身集群Cluster-ID,丢弃该路由;
4、路由反射器的设计部署
(1)备份路由反射器方案
为增加网络的可靠性,避免单点故障,需要在一个集群中配置一个以上的RR,同一集群中的所有RR必须使用相同的Cluster-ID;
路由反射器RR1和RR2在同一个集群内,配置了相同的Cluster-ID;
客户机Client和相同Cluster-ID的RR都建立IBGP邻居关系,RR之间建立IBGP邻居关系;
客户机Client学到EBGP路由后,同时向RR1和RR2通告这条路由;
RR1和RR2收到该路由后,将本地Cluster-ID添加到Cluster-List前面,然后向其他客户机反射,同时相互反射;
RR1和RR2收到该反射路由后,检查Cluster-List发现包含自身的Cluster-ID,丢弃该路由,能避免同集群内路由反射器间互相学习源自同一客户机的路由,节省内存空间;
由于集群内RR之间不互相学习Client的路由,所以如果RR上没有EBGP邻居关系,则RR间可以没有IBGP邻居关系;
(2)同级路由反射器方案
一个骨干网被分成多个集群,各集群的RR之间互为非客户机关系,建立IBGP全连接;
每个客户机只与所在集群的RR建立IBGP连接,所有RR和客户机都能收到全部路由信息;
(3)分层路由反射器方案
一个AS内可以存在多个集群,各个集群的RR之间建立IBGP邻居;
当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR;
每个路由反射器既可以作为该集群的反射器角色,也可作为其他集群的客户机角色;
三、BGP联盟
1、联盟概念
在一个AS中,受IBGP水平分割的影响,如果IBGP会话数量较多,管理起来将会显得麻烦,为了解决该问题,除了使用路由反射器外,还可以使用BGP联盟Confederation;
联盟的概念就是将一个AS划分为若干个子AS,每个子AS内部建立IBGP全连接关系(联盟IBGP邻居),子AS之间建立EBGP连接关系(联盟EBGP邻居),但联盟外部AS仍认为联盟是一个AS;
AS100被分成三个子AS(65001、65002、65003),使用AS100作为联盟ID,此时不需要采用IBGP全互连,连接数从10条减少到4条,如果没有配置联盟,AS100内部都是IBGP邻居,配置联盟以后形成了联盟EBGP邻居和联盟IBGP邻居,在联盟子AS内部可以使用全互连或RR,而在联盟子AS之间使用联盟AS-Path来避免环路;
2、联盟的特点
配置联盟后,原AS号将作为每个路由器的联盟ID;
通告给联盟内的路由,MED属性在整个联盟范围内保留;
Local Preference属性在整个联盟范围内保留,而不只是在通告的成员AS内;
在联盟内保留联盟外部的next-hop属性;
在联盟内将子AS号加入AS-Path中,但不会将联盟内子AS号通告到联盟之外;
联盟内的子AS号在AS-Path属性中用单独的两种类型AS-CONFED-SEQUENCE和AS-CONFED-SET表示,默认联盟将子AS号以AS-CONFED-SEQUENCE的形式在AS-Path中列出,如果在联盟内配置了聚合,AS号将以AS-CONFED-SET形式列出;
AS-Path中的联盟子AS号用于避免环路,不计算在AS-Path长度中;
联盟EBGP邻居和联盟IBGP邻居都被看作IBGP类型邻居,不存在联盟EBGP路由优于联盟IBGP路由,即在其他条件相同的情况下,同时从EBGP邻居学到、联盟EBGP或联盟IBGP学到同一条路由,从EBGP邻居学到的路由更优;
联盟内相关属性传出联盟时将会自动删除,不用配置策略过滤子AS号等信息;
3、联盟配置举例
R1为AS100,R2/R3/R4拥有联盟ID为200,R2和R3在联盟子AS65001中,R4属于联盟子AS65002,R5属于AS300;
通过命令confederation id配置BGP联盟,指定联盟ID;
通过命令confederation peer-as指定联盟内子AS号;
R2配置:
bgp 65001
confederation id 200
peer 12111 as-number 100
peer 23113 as-number 65001
R3配置:
bgp 65001
confederation id 200
peer 23112 as-number 65001
confederation peer-as 65002
peer 34114 as-number 65002一、BGP路由信息决策过程
1、Adj-RIB-In 存放从对等体接收到的更新
当从对等体接收到Update报文时,路由器会把Update报文存储到路由信息库RIB,并指明是来自哪个对等体的;
Update报文经过BGP输入策略引擎路由过滤或修改属性;
路由器执行路径选择算法,来为每一条前缀确定最佳路径;
2、Loc-RIB 存放经过输入策略引擎、路径选择处理过的路由
得出的最佳路径被存储到本地BGP RIB中,然后将loc-RIB的路由加载到IP-RIB中;
3、Adj-RIB-Out 存放经过输出策略引擎处理过的路由
Loc-RIB中的路由在被通告给其他对等体之前,必须通过输出策略引擎,只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB中;
二、BGP选路规则
1、忽略下一跳不可达的路由;
2、优选prefer-value数值大的路由; 缺省值0
3、优选Local-preference数值大的路由; 缺省值100
----------------------------------------------------4、5、6三条规则用于比较自身产生的路由
4、聚合路由优于非聚合路由;
5、手工聚合路由优于自动聚合路由;
6、network发布的路由优于import发布的路由;
7、优选as-path长度短的路由;
8、IGP起源的路由优于EGP起源的路由优于未知起源的路由;
9、优选MED数值小的路由; 缺省值0,命令compare-different-as-med修改缺省比较行为
10、EBGP路由优于IBGP路由;
11、优选下一跳IGP开销小的路由;
============================满足以上条件可选实现负载分担;
12、优选cluster-list长度短的路由; 有的有,有的没有,没有的优先
13、优选Originator-ID或RouterID小的路由; 二选一,优先比较Originator-ID
14、优选对等体地址小的路由;
三、BGP的负载分担
1、BGP路由的负载分担
到达同一目的地通常会存在多条有效路由,但是BGP只将最优路由发布给对等体;
前11个属性完全相同的情况下,可通过命令maximum load-balancing ebgp|ibgp配置BGP负载分担的最大等价路由条数,实现下发多条不同下一跳的BGP路由到IP路由表中,缺省值为1,不进行BGP路由负载分担;
如果满足负载分担条件的BGP路由数大于定义的BGP负载分担规格,继续从第12条规则比较下去;
到达同一目的地的eBGP路由和iBGP路由不能形成负载分担,如果最优路由是ibgp路由,则只是ibgp路由形成负载分担;如果最优路由是ebgp路由,则只是ebgp路由形成负载分担;
缺省情况下,BGP只对AS-path属性完全相同的路由进行负载分担,也适用于联盟内部的自治系统之间,可通过命令load-balancing as-path-ignore配置路由在形成负载分担时不比较路由的as-path属性,但是该方式可能会引起路由环路;
2、下一跳路由的负载分担
BGP区别于IGP协议的一点是其下一跳地址可以是非直连路由的接口IP,非直连的下一跳在路由器上会执行迭代路由进行查找路由表,BGP依赖下一跳路由来转发数据,所以如果下一跳地址所对应路由在IP路由表中是负载分担的(IGP的ICMP),也就间接实现了BGP报文转发的负载分担;
BGP同步
在华为VRP平台中,BGP同步默认是关闭的,并且不能手动开启;
BGP同步指BGP路由器必须与IGP同步,AS内的路由器不仅要通过BGP学习到此路由,并且要从IGP协议学习到该路由,才会将该路由通告给eBGP邻居;
除了BGP同步外,避免路由黑洞问题的方法还有IBGP全互连、RR、联盟、MPLS ;
四、BGP路由及默认路由
1、生成BGP路由,BGP协议自身是不能发现路由的
(1)通过network方式生成来自IGP的路由
将IP路由表中存在的路由注入进BGP,注入的路由要和IP路由表中路由的前缀和掩码一致;
network方式注入的路由,origin属性为igp;
(2)通过import-route方式引入外部路由
import-route方式引入外部路由,origin属性为incomplete;
(3)通过aggregate进行聚合的路由
自动聚合
自动聚合只能对import引入的路由进行有类聚合,不能对network方式注入的路由进行自动聚合;
自动聚合通过命令summary automatic实现,只能在引入路由的设备上生效,缺省未启用;
手动聚合
手动聚合通过命令aggregate可以对BGP路由表中的路由进行聚合;
如果聚合路由中所包含的明细路由的origin属性各不相同,那么聚合路由的origin属性按照优先级incomplete>egp>igp;
聚合路由会继承原明细路由中的所有团体属性;
聚合时可以携带关键字:
detail-suppressed 缺省手工聚合后通告所有明细路由,此参数抑制明细路由;
suppress-policy 用来实现部分抑制,部分不抑制,匹配route-policy的明细才抑制;
as-set 聚合路由as-path继承成员明细路由的AS号,缺省聚合路由会丢失明细的AS信息;
与普通as-path的segment类型as-sequence不同的是,as-set类型是一种AS号的无序集合;
对明细路由做聚合时,把所有明细路由AS-Path由前向后相同的部分放在()的前面,其余部分去重后放入();
origin-policy 有条件的聚合,只有满足route-policy匹配条件时,才生成聚合路由;
attribute-policy 用来修改聚合路由的属性;
2、默认路由
如果一台设备在网络中有多个EBGP邻居,或者存在多个路由反射器,那么该设备将会从邻居或者反射器接收全网的路由,该设备也会向本AS内的IBGP对等体发布路由,这样会极大地增加路由表的容量,通过向对等体发布缺省路由,减少对等体路由表的数量。
通过命令peer xxxx default-route-advertise向对等体发布一条默认路由,可以通过route-policy来设置默认路由的属性;
参数conditional-route-match-any/all用来设置匹配条件,如果满足条件则发布默认路由;
(1)any指当匹配任一条件时,发布默认路由;
(2)all指当匹配所有条件时,发布默认路由;同步的改练是在互联网早期为了防止路由黑洞和路由环路设计的一个规则(保证AS内防止路由环路,和BGP路由上所有路由器都知道如何将数据包转发到目的地),IGP中的路由必须与BGP中的保持一致,而现在网络IGP已经承载不了BGP的路由条目,所以要关闭
、现在解决的办法有
Full
Mesh
IBGP
Or
MPLS汇总关闭就很好想咯,不过BGP的汇总
是针对重分布的路由,
肯定关闭了更加精确咯
查看原帖>>1、不明白你说的什么意思。
2、ibgp全连接指的是:AS内所有路由器均互相两两建立ibgp邻居,跟运行igp没任何关系,目的是保证没有路由黑洞。也可以采用路由反射器或者联盟来实现。
3、应该用在出口处。
4、在R3和R5上做vrrp。因为BGP与IGP同步检查默认是不开启而导致的。路由黑洞一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,第四条线路原则会出现黑洞路由是因为BGP与IGP同步检查默认是不开启而导致的。黑洞路由,网络技术语言,将所有无关路由吸入其中,使它们有来无回的路由。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)