边界网关协议BGP

网友投稿 784 2022-11-16

边界网关协议BGP

边界网关协议BGP

目录

​​BGP​​

​​BGP的邻居​​

​​BGP路由的注入方式​​

​​BGP的通告原则和选路原则​​

​​BGP的属性​​

​​BGP的防环机制​​

​​BGP的同步​​

​​BGP的负载均衡​​

​​路由反射器​​

​​华为模拟器中的设置 ​​

BGP

BGP(Border Gateway Protocol)边界网关协议是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。 BGP属于EGP(外部网关路由协议),可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议

BGP的邻居

AR4与AR3的邻居关系是IBGP(Internal BGP) AR3与AR2的邻居关系是EBGP(External BGP)

完成TCP三次握手后的状态是Connect,发送完Open报文的状态是Opensen,收到对方的Open报文的状态是OpenComfirm,收到对方的Keepalive报文的状态是Established。建立好了邻居关系之后,通过发送Update报文更新路由信息

BGP邻居关系的配置

IBGP关系(邻居设置为对方的环回口地址)[AR4]bgp 200 [AR4-bgp] router-id 44.4.4.4 [AR4-bgp]peer 33.3.3.3 as-number 200[AR4-bgp]peer 33.3.3.3 connect-interface lo0[AR3]bgp 200[AR3-bgp] router-id 33.3.3.3[AR3-bgp]peer 44.4.4.4 as-number 200[AR3-bgp]peer 44.4.4.4 connect-interface LoopBack 0

EBGP关系(邻居设置为与对方的接口ip)[AR3]bgp 200[AR3-bgp]peer 23.1.1.2 as-number 100[AR2]bgp 100[AR2-bgp]router-id 22.2.2.2[AR2-bgp]peer 23.1.1.3 as-number 200

BGP路由的注入方式

1.Network Network命令是逐条将IP路由表中已经存在的路由引入到BGP路由表中

[AR3]bgp 200[AR3-bgp]ipv4-family unicast [AR3-bgp-af-ipv4]network 44.4.4.4 32

2.Import import注入是用前缀列表匹配出路由条目,然后注入路由策略

[AR3]ip ip-prefix F index 10 permit 144.1.3.1 32 [AR3]route-policy F2 permit node 10[AR3-route-policy]if-match ip-prefix F[AR3]bgp 200[AR3-bgp]ipv4-family unicast [AR3-bgp-af-ipv4]import-route rip 1 route-policy F2

3.aggregate(路由聚合) aggregate是将本地的收到路由条目的明细做一个汇总

R1把三台路由条目注入bgp中

[AR1]bgp 100[AR1-bgp]ipv4-family unicast [AR1-bgp-af-ipv4]network 111.1.1.1 32[AR1-bgp-af-ipv4]network 111.1.2.1 32[AR1-bgp-af-ipv4]network 111.1.3.1 32

在R2中的bgp routing-table中会显示三条路由条目

然后进入R2中的bgp中,对以上路由条目做汇总

[AR2]bgp 100[AR2-bgp]ipv4-family unicast[AR2-bgp-af-ipv4]aggregate 111.1.0.0 22 detail-suppressed (抑制明细)

BGP的通告原则和选路原则

BGP路由通告原则

BGP只会将本地最优的BGP路由通告给自己的BGP对等体(peer)BGP只会将本地最优的BGP路由加到本地路由表中作为转发依据IBGP通告获得的最优路由不会发布给其他的IBGP邻居EBGP通告获得的最优路由发布给所有BGP邻居BGP与IGP同步

BGP路由优选原则

BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:该路由是到达目的地的唯一路由,直接优选。对到达同一目的地的多条路由,优选优先级最高的。对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。一般来说,BGP计算路由优先级的规则如下:丢弃下一跳不可达的路由。优选Preference_Value值最高的路由(私有属性,仅本地有效)。优选本地优先级(Local_Preference)最高的路由。优选手动聚合>自动聚合>network>import>从对等体学到的。优选AS_Path短的路由。起源类型IGP>EGP>Incomplete(i > e > ?)。对于来自同一AS的路由,优选MED值小的。优选从EBGP学来的路由(EBGP>IBGP)。优选AS内部IGP的Metric最小的路由。优选Cluster_List最短的路由。优选Orginator_ID最小的路由。优选Router_ID最小的路由器发布的路由。优选具有较小IP地址的邻居学来的路由

注:Orginator ID 和 Router ID 只在路由反射器中存在

BGP的属性

公认必遵( Origin , AS_path , next_hop) origin:起源代码,有三个  i-IGP    e-EGP     ?- incomplete。  i 表明是network进来的 e 表明是EGP学过来的路由,EGP现在已经不用了,所以基本看不到e, ? 表明是import进来的 AS_path:AS路径,别的AS发过来的话就有,本AS发过来的话就是空,AS路径会叠加

next_hop:下一跳,0.0.0.0表示本地就存在的路由(可以是直连的,静态的,rip或者ospf学到的),然后network出去的,127.0.0.1的路由是基于明细产生的。

下一跳属性在被EBGP邻居传过去后会被自动修改成EBGP接口地址。在默认情况下,IBGP邻居之间传递EBGP路由时,下一跳属性不发生变化,除非手动修改,比如设置默认下一跳 比如,AR3宣告33.3.3.3的路由,在R1上收到的BGP信息是这样的

可是如果在R2上指定peer 11.1.1.1 的下一跳是本地的话,下一跳地址的话,就会发生变化了,那么下一跳地址就是R2了

[AR2-bgp] peer 11.1.1.1 next-hop-local

公认任意(Local Preference、Atomic_aggregate) :

Local Preference

本地优先级,默认值为100,数值越大,BGP路由被优选的可能性越高,但是这个属性不能跨AS传递。比如这里R2给R3传路由的时候,LocPrf这个属性不传给R3。R3重新给这个路由赋予本地优先级。本地优先级可以影响本地路由传递出去的方向

比如,R1通告了一条路由,在R1上这条路由没有本地优先级,然后R1传给R2,R1赋予这条路由本地优先级为100,所以在R2上可以看到这条路由的本地优先级为100。R2传给R3,跨AS传递,本地优先级不传递,所以在R3上看不到本地优先级,R3传给R4,R3重新赋予这条路由本地优先级为100,所以在R4上看到这条路由的本地优先级还是100   Atomic_aggregate 原子聚合: 这个属性代表的是这条BGP路由是曾经被聚合而产生的。要抑制路由明细了才会显示原子聚合

可选过渡(Community )意思就是这个属性可以选择支持也可以选择不支持

可选非过渡(MED),类似于BGP的cost值,数值越小,优先级越高,也是影响流量转发方向。当把IGP路由导入BGP中时,如果IGP本身就有cost值,那么BGP中就会继承成MED值。MED属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由

修改BGP的属性值

第一步: 用前缀列表匹配出该路由条路

ip ip-prefix  NAME1  permit   xx.xx.xx.xx  0-32

第二步: 设置路由策略,匹配该路由,给该路由施加策略

route-policy  NAME2  permit  node  10

ifmatch  ip-prefix   NAME1

apply   XXXXX

第三步: 调用到进程下 (BGP / ospf / RIP)

peer  xx.xx.xx.xx   route-policy  F2  import/export

例如修改属性

[AR7]ip ip-prefix F permit 144.1.1.1 32[AR7]route-policy F2 permit node 10[AR7-route-policy]if-match ip-prefix F[AR7-route-policy]apply preferred-value 1 apply local-preference 110 apply as-path 100 100 additive apply cost 1 (修改Med值)[AR7-bgp]ipv4-family unicast[AR7-bgp-af-ipv4]peer 27.1.1.2 route-policy F2 import

BGP的防环机制

BGP的防环机制主要有2条: 第一是AS内部防环: 通过IBGP水平分割来实现的,IBGP水平分割的基本思想是不把从IBGP邻居学到的路由传递给其他IBGP邻居,但是这样也有一个弊端,就是AS内部的所有路由器都要两两之间建立邻居关系(full-mash),如果有N个路由器,那么就要建立N(N-1)/2个邻居   第二是AS间的防环: 通过属性AS-PATH来实现,基本思想是:如果某台BGP路由器从其外部对等体收到某条路由的AS_PATH中包含有自己的AS号那么该路由器就知道出现了环路,因而丢弃该路由

BGP的同步

1.BGP同步规则的定义: 在bgp同步打开的情况下,一个BGP路由器不会把那些通过ibgp邻居学到的bgp路由通告给自己的ebgp邻居;除非自己的igb路由表中存在这些路由,才可以向ebgp路由器通告.2.BGP同步规则的目的: 防止一个AS(不是所有的路由器都运行bgp)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由.3.BGP同步规则的基本需求 如果一个AS内部存在非bgp路由器,那么就出现了bgp和igp的边界,需要在边界路由器将bgp路由发布到igp中,才能保证AS所通告到外部的bgp路由在AS内部是连通的.实际上是要求bgp路由和igp路由的同步.4.满足BGP同步规则的基本需求的结果 如果将bgp路由发布到igp中,由于bgp路由主要是来自AS外部的路由(来自internet),那么结果是igp路由器要维护数以万计的外部路由,对路由器的cpu和memeory以及AS内部的链路带宽的占用将带来巨大的开销.  BGP同步规则的总结 1.在所有的方案中, 既要保证传递bgp路由,还要保证bgp路由的连通性. 2.关闭同步能够实现bgp路由的传递,不一定能保证AS内部连通性,除非AS内所有路由器都运行bgp才可以保证连通性;否则,仍然需要路由再发布(bgpàigp) 3.最后,在AS内部一般需要部署igp来维持AS内部网络路径的连通性,以保证AS内部的所通告的bgp路由的下一跳的可达性.这样bgp网络就具有更好的灵活性和扩展性. 4. BGP同步默认是开启的,可以手工关闭它,但是只有当一个AS内部的路由器都运行了BGP时,关闭同步功能才是安全的。

BGP的负载均衡

在IBGP中设置负载均衡 如果,AR1 network进BGP里面 111.1.1.1  32的路由,传到AR2,AR2-->AR3-->AR5、AR2-->AR4-->AR5、这条路由到达AR5有两条路径,而不配置负载均衡的情况下,AR5会选出一条路由作为最优路由。现在在AR5上配置IBGP里面的负载均衡 [AR5-bgp] ipv4-family unicast  [AR5bgp-af-ipv4] maximum load-balancing  ibgp

这是没配置负载均衡的路由表

这是配置了负载均衡的路由表

在EBGP中设置负载均衡 [AR2-bgp] ipv4-family unicast  [AR2-bgp-af-ipv4] maximum load-balancing  ebgp 2

路由反射器

在这个图中,R2、R4、R5是reflect-client  , R3是RR,R6是普通的IBGP邻居

RR收到R2发的IBGP路由会将该路由反射给RR的其他client(R4、R5),这就是路由反射器,还会传递该路由给RR的其他IBGP对等体(R6)。路由反射器打破了水平分隔原则(即收到的IBGP通告不会发给其他的IBGP邻居这个原则)

路由反射器防环

那么,路由反射器打破了水平分隔原则后怎么防止环路呢?如下图,可以设立两个RR。

R2、R4、R5是reflect-client ,R3、R6是RR,R7、R8是普通IBGP邻居

防环一:

当R2给R6传递IBGP路由的时候,R2会在路由中加入自己的router-id作为起源ID,传给R6,这个起源ID一直存在于该路由中。这样当R3给R2反传该路由时,R2发现这个起源ID就是自己,所以对该路由拒收。

防环二:

R6给R3传递IDGP路由的时候,会在路由中加入自己的router-id作为cluster-id传递给R3,在一个簇内,RR应该具有相同的cluster-id,即R3和R6应该具有相同的cluster-id,这样当R3收到R6传给自己的路由信息中的cluster-id和自己的一样,则拒收。cluster-id需要手工指定,如果不手工指定,默认等于其router-id。

在RR上配置路由反射器客户端:

[AR3] bgp 200

[AR3-bgp] ipv4-family unicast

[AR3-bgp-af-ipv4] peer  22.2.2.2  reflect-client

修改簇ID:

[AR3] bgp 200

[AR3-bgp-af-ipv4] reflector cluster-id 111.111.111.111

华为模拟器中的设置

查看bgp邻居: display bgp peer查看bgp表: dis bgp routing-table给IGP邻居宣告下一跳本地: peer XX.XX.XX.XX next-hop-local给EGP邻居宣告默认路由: peer XX.XX.XX.XX default-route-advertise

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AppScan扫描器的用法
下一篇:Windows Server中企业证书服务的安装
相关文章

 发表评论

暂时没有评论,来抢沙发吧~