【BGP基础】(建bgp邻居、邻居状态机、报文)
一、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邻居、邻居状态机、报文)相关推荐
- BGP协议学习笔记——BGP基础
BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...
- bgp 建立邻居发送的报文_大型网络BGP之IBGP和EBGP邻居关系基础配置
一.BGP拓扑 说明:BGP一般用于大型企业及国际出口.运营商.大型数据中心 二.BGP基本配置 1.IBGP配置(IBGP属于同一个BGP AS号内部建立邻居关系) 我们在R2 和 R4 之间配置简 ...
- BGP——邻居状态机+报文分析(总结)
一.BGP邻居状态机: 1.1 idle状态:空闲状态,对方邻居没有起来 1.2 connect: 正在建立TCP连接(被动),如果一旦建立好就进入open-sent状态,如果建立不成功进入 acti ...
- 锐捷BGP基础配置(邻居建立、路由重发布、路由聚合、认证)
目录 配置IBGP邻居 配置EBGP邻居 配置BGP重发布OSPF BGP路由聚合 BGP其它配置 配置IBGP邻居 R2.R3.R4底层IGP互通,此处IGP互通配置不做介绍 R2与R4通过Loop ...
- 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
系列文件 BGP(Border Gatreway Protcol)边界网关路由协议 BGP基本配置 BGP实战拓扑 外部BGP基础配置 内部BGP邻居 EBGP基本配置 CCNP综合实验拓扑 文章目录 ...
- 网络基础之BGP(边界网关协议)
这里写目录标题 一.BGP概念 1.自治系统AS 2.BGP路由协议的特点 3.BGP分类 4.BGP的路由器号(Router-ID) 5.BGP工作原理 1)BGP的5种报文 2)BGP的6种状态机 ...
- 大型企业及运营商国际出口使用的BGP技术,BGP基础配置
一.BGP基础 BGP属于边界网关协议,用于不同的AS之间,对于不同的运营商或企业可以使用不同的AS号,一般运营商配合MPLS常用的技术. 早些年是EGP属于外部网关协议,而EGP不能进行路由优选环路 ...
- BGP 基础与概述-2
说明:该篇笔记作为 BGP 基础-1 的补充,以及 BGP Border Gateway Protocol,边界网关路由协议的一些更为重要的基础理论. 参考视频:红茶三杯) 0x01 中转 AS 中的 ...
- BGP基础配置(3)——解决数据黑洞
目录 前言 一.实验拓扑图 二.实验目的 三.探究问题 四.解决方法 1.路由引入 2.Full-mesh(全互联) 3.Tunnel 总结 前言 请先阅读下面的文章 BGP基础配置(2)http:/ ...
最新文章
- 浅析python 中__name__ = '__main__' 的作用
- .NET程序性能的基本要领
- Python处理pdf文件库 - PyPDF2详解
- 0079-简单的循环
- TensorFlow前向传播
- Vue 项目调试总结
- composer中文阿里云镜像地址
- 可见性、原子性和有序性问题
- 将javascript嵌入项目中
- win7 微软语音服务器,win7 TTS修复工具(微软tts语音引擎修复)
- hiprint使用初体验,模板设计经验分享
- 自学python能干些什么副业-她把摄影当副业:月薪3000,副业收入上万
- jQuery-动画排队
- python模块datetime_Python模块-datetime
- python学习笔记011——检查变量类型type()
- 终于解决了!Windows 10打开SecoClient 提示网络扩展启动失败
- 域计算机策略软件安装方法,windows域软件下发策略
- 怎么删除日历每日重复提醒事项
- 销售书籍推荐:做销售你究竟该看什么书?
- 彻底搞懂弹性布局flex