一、BGP背景

之前学的ospf和isis都是igp都是用来计算路由,选一条最优路径

bgp只负责路由传递

二、BGP基本概念

1)bgp因为基于TCP,既可靠又快

2)bgp是距离矢量,只会传路由,压根不会传拓扑信息。距离矢量不怎么占资源,有什么路由传什么路由,不会像链路状态一样,先计算拓扑信息再传路由。

3)bgp只能触发式更新,不能周期性更新,因为bgp一般用在Internet上,在这样一个大环境下,周期更新几十万条路由,特别消耗资源,顶不住啊~~(节约资源)

小疑问?为啥bgp这么好,当初设计ospf的人不用tcp作为网络协议 ??

因为tcp是面向连接的,假如已经有tcp了,就不需要ospf邻居自动发现了。

能建立tcp连接,就说明早就已经知道邻居IP地址了,那还要ospf自动发现邻居关系干嘛,手动建算了

bgp:职业传递路由

大规模路由传递,上bgp

bgp很好很稳,但是用bgp需要AS,而AS号是要钱的,蛮贵的

EBGP:在AS之间建立的bgp

IBGP:在AS内部建立的bgp

bgp对等体:与ospf的邻居差不多的意思

小问题?AS之间用bgp是因为,传递的路由量大,那为啥在AS内部还要用bgp呢??

假设,AS内部不做bgp,那么AS内部的运行的是ospf协议,AS外面的是bgp协议,那么两个协议传递路由的时候,需要做路由引入。将AS外部的bgp引入到ospf,再将ospf路由引入回BGP。。

此时就会产生之前,我们学路由引入时的问题:环路、次优路径等。。

那么bgp此时就没有存在的意义了,所以为了保留bgp的一些属性(优势),在AS内部也会做bgp。

以前学习igp的时候,一般我们看前缀、掩码、开销、优先级

但是bgp有很多很多属性特性

一般电信。移动、联通这些用的AS都是共有AS。

企业内部用AS,用的一般为私有AS。

bgp虽然好,但不是所有场景都适合bgp的

1)bgp传递大量的路由,所以对设备有一定要求。如果设备不太行,不建议使用,风险太大。

2)访问AS外部,是单出口、单链路的情况下不要用bgp(无选路不要用bgp)。以为一条链路去访问,不需要选路,直接一条静态路由,OK了。

3)管理员技术有限

假如公司花了很多钱,提高公司网络的效率,技术人员把bgp也配好了,也通了。但是由于配置不完善,导致原本不该本公司处理的数据,跑到链路上来,就很浪费资源,也浪费钱。

**注意:!!!bgp的进程不要随便重启!!(根本就不能重启!)

bgp容错率比ospf还要低(基本不允许错),因为bgp承载的业务量是极大的,重启进程,会带来许多位置的麻烦,例如:重启之后就再也起不来了,就算邻居起来了,之前重启这段时间丢失的数据量,也没了;也有可能,重启之后,之前没生效的路由策略又生效了;又或者出现环路或次优路径...等

所以,在配置之前,考虑清楚bgp配好之后会发生什么,配完之后会有什么效果,想清楚再配置,一旦配置错误就麻烦了(ospf配错顶多瘫痪整个公司,bgp配错至少毁掉一整座城市)。。一重启一配错,准备写离职报告吧。。。bgp弄完了,可能就玩完了。。三思而后行!!!

三、BGP建立邻居

1. 邻居建立小知识

1)bgp邻居建立:

ibgp:一般用loopback建立。
ebgp:一般用直连接口建立。

**bgp基于tcp协议
在bgp建立建立邻居时,就不一定必须要在对端接口配置了,
因为只要tcp协议能建立tcp连接,能通,bgp就可以通。

2)用loopback环回口建立ibgp的原因:环回口增加链路的冗余性。因为直连建立ibgp,会存在链路断掉,bgp邻居就没了的风险。用环回口的话,链路断一条没事,只要能通就能建立bgp邻居。

3)不用loopback环回口建立ebgp的原因:

ebgp之间TTL值默认为1。

假如用loopback建立ebgp,当R4把包丢给R3时,R3没法再传递给自己的loopback了(可以修改TTL值来建立ebgp邻居),为了便捷,一般就用直连的接口建立ebgp了。

2.实验

1)拓扑

2)bgp建立邻居配置

在R1和R3上建立ibgp,在R3和R4上建立ebgp

**BGP支持ipv4和ipv6(默认为ipv4,所以配置里面有个ipv4-family unicast)

3)查看bgp邻居表

di bgp peer

发现:两边邻居都建立成功(Established)!!

可以从表中能看到:

当前BGP的router id(改router id 选举参考ospf)、自身所处的AS号;BGP邻居的状态、AS号;默认版本为BGPv4。

通过邻居的AS号和自己的AS号,可以判断自己是否和邻居处于同一AS。

AS相同,代表同一AS内,说明邻居关系为ibgp。

AS不同,代表不在同一AS,说明邻居关系为ebgp。

四、BGP建立邻居的详细过程

1.BGP邻居建立:(跨设备建立)基于tcp,只要tcp能到,ping的通,就能建立。

例如:本实验的isis就是为了让两个loopback能互通,这样tcp就通了,bgp邻居才能顺利建立。

2.BGP邻居协商参数

引入路由

[R4-bgp]network 150.1.4.4 32

1)open报文

keeplive:60s。

hold time:180s超时时间。(类似ospf的dead time,超过一定时间,就认为邻居挂掉了)

例如:

2)keepalive报文

用来保持tcp连接(与ospf的hello包类似)

3)update报文

携带前缀和路径属性

4)notification报文

提供bgp报错信息

例如:管理员手动重启进程(现网不要重启!!这里是实验所以没啥事。)

5)route-refresh报文

一般见不到这个报文,在改变路由策略后能看到。

例如:

4.BGP状态机(5种状态机)

1)idle状态:

最开始配置时的bgp状态。指完邻居之后,会等待32s。进入下一个状态。

2)connect状态:

主动发起TCP连接的过程。(此过程有可能会成功,也有可能失败)

tcp建立成功->顺利进入下一个opensent状态。

tcp建立失败->有主动变为被动模式(active状态),又对方发起TCP连接(对方发起的tcp来接成功->可以进入opensent状态;失败->等待一会再重新主动发起tcp连接)

3)opensent状态:

open包来协商AS号、router id、版本号等等。

4)openconfirm状态:

代表open包协商成功。当收到邻居的keepalive报文,进入最终状态established。

5)established状态:

bgp邻居建立成功的最终状态!

***注意:其中任何地方错误error,直接回到起点idle。32s后会重新来一遍这个bgp建立过程。

5.必须用loopback建立ebgp的情况

当我们希望这个ebgp能备份时,我们加一条链路,实现冗余备份,这时我们才用环回口loopback来建立ebgp邻居。

那么建立bgp邻居,最首要的一点:tcp建立,那么路由要可达。

配一条静态路由 ,然后用环回口建邻居。

 

查看bgp邻居表

发现:邻居一直起不来?

原因是ebgp的TTL值为1。

所以修改ebgp的跳数为2,让环回口可达。

查看bgp邻居表。

邻居建立成功。

6.***检查bgp邻居建立:

1)路由是否ok

2)bgp参数是否完整(邻居的AS号、ebgp的跳数、router id等)

四、路由传递

1.bgp路由的生成

路由引入的方式有两种:

1)network(精确匹配一条路由)

2)import-route(运用ACL、ip前缀等做路由引入)

但是network引入时,必须要精确、严格匹配网络的前缀和掩码

2.假设:我们此时新建一个环回口10.1.4.4/32的网络,将这条直连宣告进bgp。

那么我们用network宣告的时候,只能是network 10.1.4.4 32,而不能是network 10.1.4.4 24,因为只有路由表里有的路由才能传递,此时路由表里根本没有掩码为24的10.1.4.4的网络,无法生效。

只能是 10.1.4.4/32。

只有这条路由在我的路由表里,不管是不是我本地直连,我都可以传进bgp里,但是没有的路由,一定无法传进去。

比如:现在我的R1的路由表上有一条150.1.2.2的环回口,就可以将它宣告进bgp

查看R4的bgp路由表

发现:刚150.1.2.2/32的路由已经传入bgp了

3.假如:我要一次性引入很多条命令呢?用import-route路由引入

查看R4的bgp路由表

发现:的确引入了150网段的多条路由,但是150.1.1.1却不见了

> 代表这条路由可以传递的

查看R1的bgp路由表

发现:10.1.4.4这条路由前面没有带 >,它不可传,而且下一跳很奇怪,是150.1.4.4。

4.bgp 传递:只有在路由传递给ebgp邻居时,下一跳会改变。但路由传递给ibgp时,下一跳不变。

例如R2的150.1.2.2的路由到R3再到R4时,在R4上查看会发现,下一跳为R3。

也就是,10.1.4.4->155.1.34.4->155.1.34.3->..->最终目标,这个过程中下一跳一直在起始路由器上(R4)

R1ping R4的10.1.4.4的下一跳不可达(10.1.34.4),于是在R3上修改下一跳,告知AS内的ibgp邻居,自己是去往R4的下一跳。

peer 150.1.1.1 next-hop-local 

查看R1的bgp路由表

发现:下一跳变为R3了

但是R2无法与R4通信,因为R2没有R4的路由,R2本身没有bgp邻居,传路由根本传不到它那。

5.import-route带来的问题

把150.1.0.0所有网段都引入的时候,150.1.1.1没法传递路由。

因为在华为里,超网是无法传递的(前缀和下一跳相同),例如150.1.1.1/32这个网段的掩码,下一跳恰巧也是150.1.1.1,是超网,无法传递。

小总结

【BGP基础】(建bgp邻居、邻居状态机、报文)相关推荐

  1. BGP协议学习笔记——BGP基础

    BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...

  2. bgp 建立邻居发送的报文_大型网络BGP之IBGP和EBGP邻居关系基础配置

    一.BGP拓扑 说明:BGP一般用于大型企业及国际出口.运营商.大型数据中心 二.BGP基本配置 1.IBGP配置(IBGP属于同一个BGP AS号内部建立邻居关系) 我们在R2 和 R4 之间配置简 ...

  3. BGP——邻居状态机+报文分析(总结)

    一.BGP邻居状态机: 1.1 idle状态:空闲状态,对方邻居没有起来 1.2 connect: 正在建立TCP连接(被动),如果一旦建立好就进入open-sent状态,如果建立不成功进入 acti ...

  4. 锐捷BGP基础配置(邻居建立、路由重发布、路由聚合、认证)

    目录 配置IBGP邻居 配置EBGP邻居 配置BGP重发布OSPF BGP路由聚合 BGP其它配置 配置IBGP邻居 R2.R3.R4底层IGP互通,此处IGP互通配置不做介绍 R2与R4通过Loop ...

  5. 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步

    系列文件 BGP(Border Gatreway Protcol)边界网关路由协议 BGP基本配置 BGP实战拓扑 外部BGP基础配置 内部BGP邻居 EBGP基本配置 CCNP综合实验拓扑 文章目录 ...

  6. 网络基础之BGP(边界网关协议)

    这里写目录标题 一.BGP概念 1.自治系统AS 2.BGP路由协议的特点 3.BGP分类 4.BGP的路由器号(Router-ID) 5.BGP工作原理 1)BGP的5种报文 2)BGP的6种状态机 ...

  7. 大型企业及运营商国际出口使用的BGP技术,BGP基础配置

    一.BGP基础 BGP属于边界网关协议,用于不同的AS之间,对于不同的运营商或企业可以使用不同的AS号,一般运营商配合MPLS常用的技术. 早些年是EGP属于外部网关协议,而EGP不能进行路由优选环路 ...

  8. BGP 基础与概述-2

    说明:该篇笔记作为 BGP 基础-1 的补充,以及 BGP Border Gateway Protocol,边界网关路由协议的一些更为重要的基础理论. 参考视频:红茶三杯) 0x01 中转 AS 中的 ...

  9. BGP基础配置(3)——解决数据黑洞

    目录 前言 一.实验拓扑图 二.实验目的 三.探究问题 四.解决方法 1.路由引入 2.Full-mesh(全互联) 3.Tunnel 总结 前言 请先阅读下面的文章 BGP基础配置(2)http:/ ...

最新文章

  1. 浅析python 中__name__ = '__main__' 的作用
  2. .NET程序性能的基本要领
  3. Python处理pdf文件库 - PyPDF2详解
  4. 0079-简单的循环
  5. TensorFlow前向传播
  6. Vue 项目调试总结
  7. composer中文阿里云镜像地址
  8. 可见性、原子性和有序性问题
  9. 将javascript嵌入项目中
  10. win7 微软语音服务器,win7 TTS修复工具(微软tts语音引擎修复)
  11. hiprint使用初体验,模板设计经验分享
  12. 自学python能干些什么副业-她把摄影当副业:月薪3000,副业收入上万
  13. jQuery-动画排队
  14. python模块datetime_Python模块-datetime
  15. python学习笔记011——检查变量类型type()
  16. 终于解决了!Windows 10打开SecoClient 提示网络扩展启动失败
  17. 域计算机策略软件安装方法,windows域软件下发策略
  18. 怎么删除日历每日重复提醒事项
  19. 销售书籍推荐:做销售你究竟该看什么书?
  20. 彻底搞懂弹性布局flex

热门文章

  1. java comparable null_Java中Comparable和Comparator你知多少?
  2. 中冠百年|家庭财富如何管理
  3. 考研那些事——那些年,我们一起度过的猪狗不如的生活
  4. 同事孩子满月酒送诗十二首
  5. (23)固定翼架构概述
  6. sprin基础 - AOP
  7. 微信小游戏实战--cocos creator实现wordle游戏(一)
  8. 电脑病毒木马的清除和防范方法
  9. 什么是 MongoDB,为什么它是当今最受欢迎的数据库之一?
  10. 北邮OJ 141 虚数