初识BGP

BGP是一种增强型的距离矢量协议,建立在tcp之上,端口号为179,只发送增量路由,无需周期性更新,因为bgp的路由信息太多了,周期性更新会消耗资源,开销太大。bgp作为一种外部路由网关协议,负责大量路由信息的传递和过滤并且负责在AS之间进行选择最优的路径,与OSPF、RIP等内部网关协议(IGP)不同,其着眼点不在于发现和计算路由,而在于在AS之间选择最佳路由和控制路由的传播。
BGP的几种报文类型和作用:
open报文:类似与ospf的hello报文,用来协商邻居参数如AS号、router-id等等
keepalive报文:用来确认和维护邻居关系
NOTIFICATION报文:用来进行差错校验,发现错误信息
ROUTE-REFERSH报文:用来通过邻居支持路由刷新 

bgp邻居的建立过程:BGP没有发现邻居的功能,只能手动指定邻居。两台bgp设备互相发送tcp的同步报文进行tcp的三次握手,三次握手建立之后才会发送open报文来进行相应的参数协商,如果双方协商成功,则发送keepalive报文进行确认。邻居关系建立起来之后,就发送update报文来传递路由信息。接着就是发送keepalive来进行邻居关系的维护。bgp的状态机如下:

BGP的邻居关系只能通过手工指定并且单播发送。BGP存在两种邻居关系,一种是IBGP(在AS内的BGP路由器建立关系),特点是一般都是用非直连建立,通过环回口来建立邻居关系,因为IBGP之间往往会有IGP路由,通过环回口建立的话,可以提高链路保障;一种是EBGP(不同AS的BGP路由器建立关系),一般使用直连接口,因为EBGP邻居之间一般不存在IGP协议,通过环回口无法保证路由可达且EBGP发送的报文TTL值为1,无法直接到达环回口。

BGP可以通过 peer 10.1.1.1.2 as-number 200 来手动指定对等体,但是这种通过物理接口来建立的关系不稳定。因为一旦物理接口shutdown,那tcp连接就会断开。所以在ibgp之间我们一般都用环回接口来建立。但是要注意:ibgp之间通过环回口建立邻居关系时,必须要指定发送的源端口为环回接口才行,因为我们默认发送的接口地址是物理接口,如果我们直接配置这条命令:peer 1.1.1.1 as number 200 那么邻居关系是建立不起来的,因为发送端和接收端的原地址和目的ip地址都是物理接口地址,而不是我们指定的环回口地址,所以还要添加一条命令,手动修改更新源为环回口才行。添加命令如下:

peer 1.1.1.1 as-number 200                                    指明对端邻居AS号与要连接的地址
peer 1.1.1.1 connect-interface LoopBack 0                     修改源地址由环回口发出 
如果是在ebgp的直连接口之间建立邻居关系可以直接配置如下命令:
bgp 200                                                          进入编号为200的AS
router-id 1.1.1.1                                             设置router-id
peer 10.1.1.1 as-number 100                          指向对端端口为10.1.1.1AS号为100
但是,如果ebgp之间要通过环回口来建立连接的话:那么就必须要注意下面几点:
第一保证两台ebgp之间指定的网络是可达的,例如环回口此时互相不可达,那就要手动配置静态路由
第二要修改TTL的值,因为ebgp的TTL值为1,而ibgp的TTL值为255,ebgp默认只能到达直连网段,即使我们添加了静态路由,如果不修改TTL的值,那么也到达不了目标网段!配置命令如下:
bgp 300                                                                    进入编号为200的AS
router-id 3.3.3.3                                                        设置router-id
peer 4.4.4.4 as-number 100                                      指向对端端口为10.1.1.1AS号为100
peer 4.4.4.4 ebgp-max-hop 10                                 修改ebgp之间的跳数即修改ttl值
peer 4.4.4.4 connect-interface LoopBack0                修改源地址由环回口发出 

BGP最重要的特性就是选路,选路的过程需要比较路由不同的属性,比如优先级和cost值等等,为了提高链路利用率,控制BGP选路,常常需要用到路由策略。那什么是路由策略,很多人会把路由策略等同于route-policy,也有人会可能会说filter-policy也属于路由策略的范畴,其实这些理解都有点不太准确。实际上,路由策略不是一个特定的技术,也不是一个特定的特性。路由策略是通过一系列工具或方法对路由进行各种控制的“策略”。这种策略能够影响到路由产生、发布、选择等,进而影响报文的转发路径。这些工具包括ACL、route-policy、ip-prefix、filter-policy等,这些方法包括对路由进行过滤,设置路由的属性等。

如图1所示,我们把所有的工具划分成三类:

条件工具:用于把需要的路由“抓取”出来。

策略工具:用于把“抓取”出来的路由执行某个动作,比如允许、拒绝、修改属性值等。

调用工具:用于将路由策略应用到某个具体的路由协议里面,使其生效。

也就是说我们通过条件工具例如ACL、ip-prefix来匹配符合对应条件的数据流,然后通过策略工具例如router-policy来调用对应的条件匹配工具去做一些路由过滤,或者路由属性修改,最后由最上层的调用工具来调用这个策略工具。除了路由策略我们常常也能听到另外一个名字:策略路由。这两者的区别如下:

路由策略的操作对象是路由信息。路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。

策略路由的操作对象是数据包,在路由表已经产生的情况下,不按照路由表进行转发,而是根据需要,依照某种策略改变数据包转发路径。

所以这样可以看出,策略路由是在路由表之前起作用,如果报文匹配了策略路由,那么这个报文就不会再去查路由表了,而是直接按照策略路由的“指引”进行转发。所以策略路由是一个不太按照套路出牌的“家伙”,也正因为这样,策略路由的应用会更加灵活一点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值