【HCIP学习】BGP基础

一、BGP产生背景

BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议,是一种外部网关协议。

自治系统AS:一组同一个管理机构进行管理,对外呈现统一选路策略的路由器的集合。

自治系统编号:

       2字节AS编号:取值范围0-65535,其中0和65535保留

                         公有AS:1-64511

                         私有AS:64512-65535

       4字节AS编号:2的32次方的编号数量

二、路由协议的分类

IGP:RIP、OSPF、IS-IS

EGP:BGP

三、BGP协议特性

1、BGP 只负责把路由从一个AS传到另一个AS;从其他AS传递过来的路由在本AS内部的扩散依靠IGP;

2、BGP是路径矢量协议,一跳是一个自治系统;

当一条路由传入某个AS,该路由的下一跳会变为上个AS的出接口的IP地址;当一条路由在某个AS内部的路由器之间传递时,下一跳不变。

3、AS防环机制:

路径矢量路由协议,从设计上避免了环路的发生

当一条路由每从一个AS传出,会把该AS的编号按照从右至左的顺序依次记录在AS_PATH属性中;

一个路由器从其他AS收到一条路由通告,会检查本路由器的AS标号是否出现在该路由条目的AS_PATH属性中,如果出现了则该条目不学习;

例如:一条路由从AS 200中的R3传出,则其AS_PATH=(300,400,500,100,200),当这条路由回传给AS200时,R4会检查AS_PATH,发现重复路径则不接收。

4、BGP基于TCP协议传输,端口号179;必须手动配置邻居;

5、BGP第一次发送完整的路由表,后续只发送增量更新;

6、BGP有多种属性可以控制路由选择。(难点)

7、支持CIDR和路由聚合;

8、路由过滤和路由策略;

四、BGP基本术语

1、

BGP Speaker:运行BGP协议的路由器称为BGP发言者

BGP Peer:相互之间存在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体

2、BGP对等体:BGP邻居可以直连,也可以非直连

(1)EBGP对等体:跨AS之间的邻居,一般情况下EBGP对等体是物理上直连的。

BGP发言者从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)

(2)IBGP对等体:同一个AS内部的邻居

(3)BGP邻居非直连的情况

思考:哪些路由器需要跑BGP?(R2\R3\R5\R6)

思考:(R2\R3\R5\R6)邻居关系怎么建立?

思考:R3-R4之间,R6-R7之间,路由怎么传?

五、BGP规划问题(规划不当容易产生路由黑洞)

R2:peer 5.5.5.5 next-hop-local

R5:peer2.2.2.2 next-hop-local

目标IP:6.6.6.6/32 源IP:1.1.1.1/32+数据

路由黑洞产生原因:由于IBGP邻居之间没有运行BGP协议的路由器,无法获得BGP的路由;从而导致的数据包进入路由器被丢弃。

路由黑洞解决方法:

(1)BGP引入IGP(上图可以在R2和R5上把bgp引入ospf),这个方法有可能会造成引入BGP后,外部网络的路由太多了,内网的路由器承载不住。

(2)在黑洞路由器上配置目的网段的静态路由(不现实,比如:需要配置的目的网段太多的情况,累死网络管理员了)

(3)IBGP全连接   -----IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居

为啥有这种防环机制,看下图

IBGP全连接(full-fresh)

注:要是邻居太多,手工配置邻居,会导致工作量比较大

(4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)

以R2作为反射器:

(5)BGP联盟(完美的避开了IBGP全连接的坑------IBGP水平分割限制)

六、BGP环路问题(水平分割)

1、EBGP水平分割(过AS_PATH)

通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路

2、IBGP水平分割

当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。

造成问题:一些路由器无法学到去往其他AS的路由

解决方法:路由反射器和联盟

七、BGP消息种类(数据包可抓包看)

(1)BGP头部信息:

标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义

长度(length):指示BGP报文的长度(字节数)

类型(Type):该字段指示了BGP报文的类型,就是前面提到的BGP5种数据包类

(2)数据包种类

open:用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id;

Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双方可接收的保持时间。

可选参数长度:指示了BGP报文中可选参数的长度

可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些能力特征。

Keepalive:周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保持时间的1/3为周期发送Keepalive消息。默认60s,超时180s。

Update:携带的是路由更新(删减、增加)信息

notfication:当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP连接会立即被关闭(邻居关系结束了)

router-refresh:用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。

地址族:典例:BGP版本不同,进入的地址族不同

BGP-----普通BGP,跑IPV4

BGP4+----适用于跑IPV6

MP-BGP---用于MPLS VPN的一个扩展版的BGP

组播版本的BGP

注:不管啥版本,都在同一个BGP进程中做配置,只是建立的邻居关系的方式不同而已。

用于改变路由策略后:

八、BGP状态机

Idle:空闲状态,停留30秒,初始化开始准备TCP连接并监视远程对等体,启动BGP时,同时建立邻居关系,此状态持续30秒;

connect:TCP连接中状态,本端为TCP被动连接方,若连接建立失败则进入Active状态,反复尝试连接;

Active:活跃状态,本端为TCP主动连接方,TCP连接没建立成功,反复尝试连接;

open-sent:开始发送状态,成功建立TCP连接,发出open报文,open报文中携带参数协商对等体的建立,正在等待接受对方open报文;

open-confirm:开始确认状态,收到open报文,发出Keepalive报文,等待第一个Keepalive报文;

established:已连接状态,收到Keepalive报文,最终成功建立邻居;

九、BGP邻居建立条件

IBGP:对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回口地址来指定IBGP邻居;

更新源地址必须和指定的邻居地址一致,需要修改更新源为环回;[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0

IBGP邻居关系不需要直连;

EBGP:对方接口要有IP地址,TCP可达,且需要直连;

             可通过修改EBGP最大跳数来使EBGP非直连;

              建议使用直连接口地址(物理地址)来指定EBGP邻居;

             更新源地址必须和指定的邻居地址一致;

注意: 默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立TCP三次连接

没修改跳数前:

修改跳数后:

[r4-bgp]peer  5.5.5.5 ebgp-max-hop 2    //修改TTL值(最大跳数值)

十、BGP基本配置

1、启动BGP并创建BGP连接

[huawei]bgp 'as-number'     启动BGP

[huawei-bgp]router-id 'router-id'   配置router-id;(可选配置)

[huawei-bgp]peer 'ip-address' as-number 'as-unmber'    指定BGP对等体及AS号;

[huawei-bgp] address-family ipv4  unicast   创建BGP地址族,并进入相应地址族视图。----华三

[huawei-bgp-ipv4] peer ip-address enable   使能本地路由器与指定对等体交换路由信息的能力

2、优化BGP连接:

[huawei-bgp]peer 'ip-address' connect-interface ‘interface’    指定建立TCP连接使用的源接口

[huawei-bgp]peer 'ip-address ebgp-max-hop 'hop-count'       指定EBGP对等体最大跳数;默认跳数是1,配置允许同非直接相连网络上的邻居建立EBGP连接

3、配置BGP生成路由

将本地路由发布到BGP路由表中:

[Router-bgp] network ip-address [ mask | mask-length ] [route-policy route-policy-name ]

引入其它路由协议的路由:

[Router-bgp] import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ]  ]

4、查看命令:

[router]display bgp peer

[router]display bgp routing-table

*-- 代表可用,可用路由会参与路由信息的优选

>--  代表优选

i:代表该路由信息通过IBGP对等体学到

起源码:

I:代表这条路由信息起源于AS内部,使用network通告的;

e:代表来自于EGP协议;

?:代表除了以上两种方式,其他获取的路由信息都是?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值