BGP协议

1.BGP相关概念

1.1 BGP的起源

不同自治系统(路由域)间路由交换与管理的需求推动了EGP的发展,但是EGP的算法简单,无法选路,从而被BGP取代。

自治系统:(AS)

IGP:自治系统内部协议,ospf,rip,is-is,发现和计算路由信息

EGP:自治系统外部协议,传递路由信息,缺点:只负责传路由信息,不进行路由控制。

-AS号:

*任何一个运行BGP协议的路由器,都需要指定一个AS号,AS号就是用来在BGP协议中来表示不同的公司。AS号取值:0-65535

&AS号的空间有限,随着网络的发展有可能会快速的耗尽,为了能够让AS号能够用,所以又有了“私有AS号”

&私有AS:

    -这类AS不需要花钱购买,可以随意使用,但是只能在公司内部使用

    -取值范围:64512-65535

&公有AS:

    -这类AS需要花钱购买,需要找当地的运营商。可以在公网上运行!

    -取值范围:0-64511

-route-id

-作用:在BGP网络中标识唯一的路由器

-确定方式:

      1.手动指定

      2.自动选举

1.2 BGP协议特性(单播传输)

1.3BGP的优点

BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:

最终目的:在公司之间,以稳定的方式,长时间的,传输大量的路由,最终计算一个无环的路径同时,还能实现对路由的灵活控制。

1.4 BGP的工作原理

-建立邻居表

       包含的是BGP的邻居设备

-同步数据库

        包含的是自己本地宣告的BGP路由,以及从其他邻居学习过来的BGP路由

-计算路由表

         包含的是从数据库中按照一定的BGP选路规则,选举出来的最好的路由。

1.5 BGP的报文类型

-open报文,用于BGP邻居的建立,通过报文协商很多BGP协议的参数

-update报文:即更新报文,用于在BGP邻居之间同步数据库

-keep-alive报文:用于在BGP邻居之间周期性的发送,维护BGP的邻居关系

-notification报文:通知报文,即在BGP邻居之间传递报错信息和警告信息

-refresh报文:刷新报文。即BGP的路由策略改动之后,为了能够让策略快速生效,需要使用路由器的刷新能力,就会使用该报文。

1.6 原理详解

-邻居的类型

         1.内部邻居:如果两个BGP协议的路由器,在同一个公司

          2.外部邻居:如果两个BGP协议的路由,在不同的公司

-邻居的建立过程

          1.首先设备之间建立稳定的TCP连接

                     &TCP的建立:3次握手

                     &TCP的断开:4次挥手

           2.在TCP连接之上,互相发送open报文,比较open报文中的参数,协商成功后建立BGP邻居关系

1.7 BGP的状态机:

①Idle状态(空闲状态):此状态为初始状态,不接受任何BGP连接,等待start事件产生。如果start事件(TCP连接)产生则系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态改为Connect。

②Connect状态(连接状态):在Connect状态,系统会等待TCP的连接建立完成。如果TCP状态为Established(已完成),则拆除ConnectRetry定时器,并发送Open信息,将状态变

③Opensent;如果TCP建立失败则重置ConnectRetry定时器,转为Active状态。如果定时器超时,重新连接。

④Active状态(活跃状态):如果已经启动事件但TCP未完成,则处于Active状态

⑤Open-sent状态(Open消息已发送):此状态 表明系统已经发出Open消息,在等待BGP邻居发给自己的Open消息。

⑥Open-confirm(Open消息确定):此状态表明系统已经发出keepalive消息,并等待BGP邻居的Keepalive消息。

⑦Established状态(连接建立):如果处于Established状态,则说明BGP连接建立完成,可以发送Update消息交换路由信息。

2.BGP相关配置

2.1 bgp对等表

也叫BGP的邻居表, 就是对等体邻居列表

  • Peer: 对等体地址;
  • V: version, 版本号;
  • AS: 对等体AS号;
  • Up/Down: 该对等体已经Up或Down的时间;
  • State: 对等体状态, 这里显示的为BGP状态机的状态;
  • PrefRcv: prefix received, 从对等体收到的路由前缀数目.

查看对等体表的命令:

display bgp peer

2.2 BGP路由表

BGP的路由信息数据库, 该数据库中, 有一些路由需要加入路由表, 有一些路由信息发送给其他设备做路由更新.

  • network: 路由的目的网络地址和网络掩码;

  • Nexthop: 下一跳地址;

  • MED: 路由度量值;

  • LocPrf: 本地优先级;

  • PrefVal: 协议首选值;

  • Path/Ogn: 显示传递路由信息的设备的AS路径号和Origin属性.

查看BGP路由表情况的命令:

display bgp routing-table [ipv4-address {mask|mask-length}]

2.3 BGP的基本配置

1.启动BGP进程:

[R1]bgp {as-number-plain|as-number-dot}
[R1-bgp]router-id ipv4-address

启动BGP, 指定本地AS编号, 并进入BGP视图, 使用router-id命令配置BGP的Router ID, 建议将BGP的RID配置为环回口地址.

2.配置BGP对等体:

[R1-bgp]peer {ipv4-address|ipv6-address} as-number {as-number-plain|as-number-dot}

创建BGP对等体, 指定对等体的地址和AS号.

3.配置建立对等体使用的源地址, EBGP对等体最大跳数, IBGP修改下一跳属性:

[R1-bgp]peer ip-address connect-interface interface-type interface-number [ipv4-source-address]
[R1-bgp]peer ipv4-address ebgp-max-hop hop-count
[R1-bgp]peer ipv4-address next-hop-local

指定发送BGP报文的源接口, 并可指定发起连接时使用的源地址.

指定建立EBGP连接允许的最大跳数, 缺省情况下, EBGP连接允许的最大跳数为1, 即只能在物理直连链路上建立EBGP连接;

设备B在收到EBGP A的路由再传递给IBGP C时, C下一跳默认为A, 但是可以通过命令修改这个配置.

3.配置案例

举例1:

1.创建BGP:

bgp 100router-id 1.1.1.1

创建AS 100内设备的BGP进程, 设备RID为1.1.1.1;

两边对等体都要配置.

2.指定对等体信息:

bgp 100peer 10.1.1.2 as-number 100

邻居的IP地址为10.1.1.2, 且对方的AS号码是100;

这里如果Open报文在交互报文时, My as字段不是100, 就会导致对等体关系失败, 这里如果对对等体建立过程遗忘的可以倒回去看.

默认情况下BGP指定了peer命令之后, 设备会根据对等体信息查找路由表, 找到通往该对等体的路由, 该接口的IP地址用于作为TCP源地址和对方通过TCP连接建立对等体关系.

但如果当前设备想要用的TCP源地址和对等体指定的源地址不一致, 那就需要采用其他方法配置.

3.指定TCP源地址配置对等体:

peer route-id connect-interface interface-type interface-number

比如:

peer 1.1.1.1 connect-interface loopback0

4.建立EBPG对等体

peer 1.1.1.1 ebgp-max-hop 5

将建立EBGP时的open报文的TTL置为5.

不同于建立IBGP关系(TTL=255), 建立EBGP的open报文中TTL=1. 所以指定环回口建立EBGP对等体的时候, TTL需要改大一点(ebgp-max-hop).

所以EBGP关系建立的时候一般采用物理接口, IBGP关系建立的时候一般使用环回口(优势: 冗余、稳定)作为TCP源地址.

5.将EBGP学来的路由下一跳属性置为自己, 然后再传递给其他IBGP对等体.

peer 4.4.4.4 next-hop-local

所以IBGP之间通常会加上这条命令:将下一跳指定为自己, 但这条命令只能在对等体刚开始建立时才能生效, 否则需要重置BGP进程.

从EBGP学来的路由, 传递给IBGP时不会修改下一跳属性, 比如A--EBGP-->B--IBGP-->C, C学习到这条路由的下一跳是A, 但C不一定用通往A的路由, 所以这条路由可能会无法使用.

6.重置bgp进程:

reset bgp 200

一般情况下, 为设备配置bgp属性时, as-number、connect-interface、next-hop-local这三条命令是必须的.

举例2:

       BGP对等体关系、AS号、设备互联地址如图所示, 所有设备的Loopback1接口地址为10.0.x.x/32, 其中x为设备编号, 所有设备都使用Loopback1地址作为Router ID. R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系, R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系. ospf已经预配完成.

R1:

bgp 100
router-id 10.0.1.1
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface loopback1

R3:

bgp 100
router-id 10.0.3.3
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loopback1
peer 10.0.34.4 as-number 200

R4:

bgp 200
router-id 10.0.4.4
peer 10.0.34.3 as-number 100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/253626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】gdb调试与make/makefile工具

目录 导读 1. make/Makefile 1.1 引入 1.2 概念 1.3 语法规则 1.4 示例 2. Linux调试器-gdb 2.1 引入 2.2 概念 2.3 使用 导读 我们在上次讲了Linux编辑器gcc\g的使用,今天我们就来进一步的学习如何调试,以及makefile这个强大的工具。 1. mak…

OpenCV-32 膨胀操作

膨胀是与腐蚀相反的操作,基本原理是只要保证卷积核的锚点是非0值,周边无论是0还是非0值,都变为0。 使用API---dilate(img, kernel, iterationms 1) 示例代码如下: import cv2 imp…

【图论】基环树

基环树其实并不是树,是指有n个点n条边的图,我们知道n个点n-1条边的连通图是树,再加一条边就会形成一个环,所以基环树中一定有一个环,长下面这样: 由基环树可以引申出基环内向树和基环外向树 基环内向树如…

学习VR全景拍摄,如何选择适合的VR全景设备?

随着VR全景技术的不断成熟和发展,VR全景已经成为摄影爱好者、地产行业、中介经纪人、广告、企业宣传等行业从业者们乐于尝试的新领域、新手段。 如何选择合适的VR全景设备成为了一个重要的问题。今天,和大家聊一聊,不同行业、人群和用途更适合…

【Qt】Android上运行keeps stopping, Desktop上正常

文章目录 问题 & 背景背景问题 解决方案One More ThingTake Away 问题 & 背景 背景 在文章【Qt】最详细教程,如何从零配置Qt Android安卓环境中,我们在Qt中配置了安卓开发环境,并且能够正常运行。 但笔者在成功配置并完成上述文章…

【蓝桥杯冲冲冲】[NOIP2017 提高组] 宝藏

蓝桥杯备赛 | 洛谷做题打卡day29 文章目录 蓝桥杯备赛 | 洛谷做题打卡day29[NOIP2017 提高组] 宝藏题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示题解代码我的一些话[NOIP2017 提高组] 宝藏 题目背景 NOIP2017 D2T2 题目描…

ChatGPT辅助编程,一次有益的尝试

如果大家想学习PCIe,搜索网上的信息,大概率会看到chinaaet上Felix的PCIe扫盲系列的博文 Felix-PCIe扫盲 每次看这个系列博文的时候,我都在想有没有什么方法可以把这个系列的博文都保存到一个pdf文件中,这样方便阅读。于是有了下…

tkinter绘制组件(41)——菜单按钮

tkinter绘制组件(41)——菜单按钮 引言布局函数结构按钮部分菜单显示完整代码函数 效果测试代码最终效果 github项目pip下载结语 引言 TinUI5的新控件,菜单按钮,menubutton。 这是一个与TinUI菜单(menubar&#xff0…

算法之双指针系列1

目录 一:双指针的介绍 1:快慢指针 2:对撞指针 二:对撞指针例题讲述 一:双指针的介绍 在做题中常用两种指针,分别为对撞指针与快慢指针。 1:快慢指针 简称为龟兔赛跑算法,它的基…

上海泗博HART转ModbusTCP网关HME-635应用案例之组态王和超声波液位计通信

如今工业现场的应用也逐渐把现场的不同应用协议转换成以太网,以此来提升现场的通信速度和质量。Modbus TCP是工业以太网协议的一种,也是现场应用中最常使用的。本应用案例是基于Modbus TCP的组态王和基于HART的超声波液位计之间数据通讯的具体应用。 应用…

STM32F407 CAN参数配置 500Kbps

本篇CAN参数适用 芯片型号:STM32F407xx系统时钟:168MHz,CAN挂载总线APB1为42M波 特 率 :500Kpbs引脚使用:TX_PB9,RX_PB8;修改为PA11PA12后,参数不变。 步骤一、打勾开启CAN&#xf…

vector类的模拟实现

实现基本的vector框架 参考的是STL的一些源码&#xff0c;实现的vector也是看起来像是一个简略版的&#xff0c;但是看完能对vector这个类一些接口函数更好的认识。 我们写写成员变量&#xff0c;先来看看STL的成元变量是那些 namespace tjl {template<class T>class …

无损音乐下载,最新音乐下载,mp3格式音乐下载,一键下载mp3格式音乐,我只用这个软件,歌曲资源丰富,全网音乐免费下载,稳定运行,告别收费

一、软件简介 现在很多支持一键下载mp3音乐/无损音质音乐的音乐播放器通常都是解析接口套了一个壳&#xff0c;一旦解析接口失效&#xff0c;软件就不能下载音乐了&#xff0c;因此一个稳定的解析接口是这类软件最大的保障。本次小编推荐的音乐下载软件接口非常稳定&#xff0…

C语言:函数

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、函数的概念 数学中我们见过函数的概念&#xff0c;例如ykxb&#xff0c;k和b都是常数&#xff0c;给任意一个x就可以得到y 而C语言也引入了函数&#xff08;function&#xff09;这个概念&#xff0c;C语…

利用LLM大模型生成sql的深入应用探究

Chat2DB 是一款有开源免费的多数据库客户端工具,和传统的数据库客户端软件Navicat、DBeaver 相比 Chat2DB 集成了 AIGC 的能力&#xff0c;能够将自然语言转换为 SQL&#xff0c;也可以将 SQL 转换为自然语言&#xff0c;可以给出研发人员 SQL 的优化建议&#xff0c;极大地提升…

初识C语言·预处理详解

目录 1 预定义符号 2 define定义常量 3 #define定义宏 4 带有副作用的宏 5 宏替换的规则 6 宏和函数的对比 7 # 和 ## i) #运算符 ii) ##运算符 8 命名约定 9 命令行定义 10 条件编译 条件编译1&#xff1a; 条件编译2&#xff1a; 条件编译3&#xff1a; 条件…

单片机学习笔记---LED点阵屏的工作原理

目录 LED点阵屏分类 LED点阵屏显示原理 74HC595的介绍 一片74HC595的工作原理 多片级联工作原理 总结 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之ScrollBar组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、ScrollBar组件 鸿蒙&#xff08;HarmonyOS&#xff09;滚动条组件ScrollBar&…

Logback - 日志框架

引言 在当今的企业级应用开发中&#xff0c;日志管理是一个不可或缺的部分。它不仅帮助我们进行错误跟踪&#xff0c;还能有效监控应用程序的运行状态&#xff0c;为性能优化提供数据支撑。Spring Boot作为一个简化Spring应用开发的框架&#xff0c;自带了强大的日志管理功能。…

如何用python进行数据分析?

前言 很多人可能会有这样的疑问&#xff0c;数据分析Excel挺强大的&#xff0c;会Excel就行&#xff0c;为什么还要去学python&#xff1f; 是的&#xff0c;Excel和python对于数据分析而言&#xff0c;这两者都只是不同的工具而已。 但&#xff0c;有一点我们要考虑&#x…