HCIP的学习(15)

第六章,BGP—边界网关协议

自治系统—AS

定义:由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合

​ AS的来源:

  • 整个网络规模过大,会导致路由信息收敛速度过慢,设备对相同目标认知不同。
  • AS之间可能是不同的机构或企业,相互之间无法完全信任,使用IGP协议会存在暴露网络信息的风险。

AS号,16bit和32bit。---->IANA组织进行分配

  • 取值范围1-65534(0和65535保留)(常用16bit)
    • 1-64511---------公有AS号
    • 64512-65534-----------私有AS号

BGP基础

在这里插入图片描述

运行了BGP协议的路由器,其所维护的路由表,是包含了整个互联网的所有路由信息

BGP特点

  • BGP是基于TCP协议进行数据传输,必须先建立TCP连接,再建立BGP会话连接。
  • 仅具备触发更新,而不再进行周期更新。
  • BGP协议只传递路由信息,不会暴露AS内部的拓扑信息。
  • 通常BGP被称为无类别的路径矢量协议
    • 无类别----传递时携带掩码信息
    • 矢量----方向性:谁传递给我的路由信息,谁就是我的下一跳。
    • 路径矢量----将一个AS看做一个整体,从而计算下一跳。

BGP与IGP协议有本质上的区别,IGP协议主要的任务是将AS内部的未知网段信息计算获取到路由信息,而BGP则主要是将通过IGP协议计算出的路由信息进行搬运,并不会计算路由信息

BGP特征

  • 可控性
    • BGP使用大量的路径属性,取代了IGP协议中的Cost,来对路由信息进行管控。
  • 可靠性
    • 依靠TCP完成可靠性建设。TCP端口179
    • 两台运行BGP协议的设备,需要网络管理员手工配置邻居的IP地址,从而实现数据通讯。
  • AS-BY-AS
    • 在BGP的视角当中,会将一个AS看做为一个整体
    • 因为BGP是将一个AS看做一个整体,但是在该整体内部数据传输时,并非相同,故BGP默认不支持负载均衡功能

BGP的对等体关系

​ BGP因为传输层使用的是TCP协议,所以,只要在TCP协议可以正常建立会话的基础上就可以完成BGP会话的建立工作-------BGP支持非直连建邻。----前提网络可达。----->BGP协议的搭建是建立在IGP协议之上

​ 对等体关系可以简单理解为邻居关系,建立连接。

  • EBGP
    • 位于不同自治系统的BGP路由器之间的BGP对等体关系。
    • EBGP对等体一般使用直连方式建立邻居关系,故而,TTL数值被设定为1
    • 两台路由器之间要建立EBGP对等体关系,需要满足如下条件
      • 两台路由器所属的AS不同—>判别方式:本地设备通过网络管理员的配置知晓对端的AS,从而判断是否处于相同AS。
      • 配置EBGP时,peer命令所指定的邻居IP地址必须为网络可达(因为有时不一定代表直连数据可通,可能直连串口线,另一端借用环回IP),保证TCP连接可以正常建立。
  • IBGP
    • 位于相同自治系统的BGP路由器之间的BGP对等体关系。
    • IBGP对等体一般使用非直连建邻,故而TTL数值被设定为255

​ 缺省情况下,BGP协议使用报文出接口作为TCP连接的本地接口IP。但是在某些情况下,我们可以指定BGP对等体之间的会话IP地址;例如,在IBGP对等体关系中,常使用环回接口地址作为通讯的源地址。原因是因为loopback接口非常稳定,而且可以借助AS内的IGP协议实现冗余来保证可靠性。

总结:

  • 无类别路径矢量协议
  • BGP使用单播更新来发送数据,基于TCP实现通讯。
  • 增量更新(触发更新(删除/修改)是直接发一条新的路由信息,而增量更新是发送两条,第一条用于删除,第二条用于添加)
  • 具有丰富的路径属性来取代IGP中的度量值参数,从而控制选路。
  • 可以在控制层流量的出入口通过路由策略实现可控性
  • 默认不被用于负载均衡-----会通过各种选路规则选择出一条最优路径信息。
  • BGP支持认证以及路由聚合。

BGP数据包

在这里插入图片描述

Marker(标记位):全为1,代表开始接收BGP报文

Length:整个BGP报文长度

Type:1-5表示后面5种报文类型(按顺序)

在这里插入图片描述

Route-refresh-----路由刷新包

作用:用来要求对等体重新发送指定地址族(IPv4、IPv6)的路由信息

​ 一般为本端修改了相关路由策略之后让对方重新发送update报文,本端执行新的路由策略重新计算BGP路由。----前提提交为双方均支持路由刷新功能。

open包

​ 是TCP建立之后发送的第一个BGP报文,用于建立BGP对等体之间的连接关系。该过程无非就是进行参数协商的过程。

在这里插入图片描述

  • Version :版本BGP4
  • AS号(My AS:发送者出于的AS区域)
    • 不管接收到的open报文中的AS号是否与本地AS号相同,都不会影响到BGP对等体关系的建立。
    • 但是,如果open报文中的AS号,与本地建邻时由网络管理员编写的AS号不同,则邻居关系无法建立
      • BGP对等体在建立邻居时,会配置对等体所在的AS号,如果对端发送的open报文中所包含的AS号与本地配置不同,才会导致建邻失败。
  • RID(= BGP Identifier:BGP标识符)
    • 如果两端RID相同,则对等体关系建立失败。
  • Opt Parm Len:可选项字段长度
  • Optional parameters:可选项字段
  • 认证字段
    • 如果认证方式或者认证数据不同,则导致建邻失败。
    • 该字段永远以MD5形式,存储在TCP的选项字段中。
  • Hold Time----保活时间
    • BGP在建立对等体关系时两端需要协商该参数,并保持一致。但是该参数并不会影响BGP对等体关系的建立
    • 如果两端的保活时间不同,则按照较小的一端数值来执行。
    • 如果在该时间内未收到对端发送来的报文信息,则认为BGP连接断开。该时间默认为180S,报文的周期发送时间为保活时间的三分之一,即60S。
    • 该参数可以设置为0,此时代表不发送keepalive报文周期保活。
    • 因为BGP会话是基于TCP会话建立,只要TCP判断连接断开,则BGP会话断开,故保活机制对于BGP而言并不那么重要,而设定保活机制原因仅仅是因为TCP判断会话断开所需要的时间过长,为了加快收敛速度,添加保活机制。
  • 路由刷新功能(在可选项字段携带,支持就携带)

keepalive包与notification包

作用:主要用来进行周期保活,临时充当确认报文

​ keepalive报文没有数据部分,只有头部19字节,类型中是4。

​ keepalive报文发送时间默认为保活时间的三分之一。

keepalive报文的确认实际上是针对open报文中的参数信息进行确认。而非open报文本身。TCP协议进行确认的目的是为了保障数据传输的可靠性,而keepalive报文确认的目的是为了告知对端本地认可你的参数内容。

​ 当收到的open报文中的参数通过验证,则回复keepalive报文;如果未通过验证,则回复notification报文

Update包-----更新包

作用:用于在对等体之间传递路由信息,可以用于发布和撤销路由(不能更改,更改只能两次Update包)

在这里插入图片描述

  • 撤销路由字段长度(撤销路由列表的长度)
  • 撤销路由列表
    • length---->待撤销路由的掩码信息
    • perfix---->传输的IP地址前缀信息。
  • 路径属性字段长度
  • 路径属性列表
  • NLRI---->网络层可达信息(无条件学习)
    • 内容与撤销路由列表相同

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HCIP 6(BGP综合实验)

一、实验拓扑 二、实验要求 1.AS1中存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告;AS3中存在两个环回,一个地址为192.168.2.0/24,该地址不能在任何协议中宣告,最终要求这两个环回可以…

批量文本高效编辑神器:轻松拆分每行内容,一键保存更高效!轻松实现批量拆分与保存

文本处理成为我们日常工作中的一项重要任务。然而,面对大量的文本内容,传统的逐行编辑方式往往显得繁琐且效率低下。那么,有没有一种更高效、更便捷的解决方案呢?答案是肯定的——批量文本高效编辑神器,让您的文本处理…

用命令运行Java程序

1、创建一个类 2、在类文件路径下执行命令(编译),生成.class javac 类名.java 3、运行.class文件 java 类名

机器学习案例:加州房产价格(二)

参考链接:https://hands1ml.apachecn.org/2/ 设计好系统后,要开始在工作区编写代码来解决问题了。 下载数据 首先我们需要先得到数据集。 一般情况下,数据是存储于关系型数据库(或其它常见数据库)中的多个表、文档、…

WSL——Centos7.9安装

1. 下载cenos镜像包 centos7.9下载地址 下载CentOS7.zip 2. 安装 将下载的zip文件解压至安装目录(这个目录就是安装centos的目录,可以是c盘之外的盘) 双击CentOS.exe 安装完成后,在安装目录下会多出一个ext4.vhdx 3. 启动 使用 wsl --list 可以查…

linux学习:linux视频输出+FRAME BUFFER+jpeg库+lcd上显示

目录 概念 使用 struct fb_fix_screeninfo{ } struct fb_bitfield { } struct fb_var_screeninfo{ } 例子1 例子2 例子3 jpeg库 步骤 概念 framebuffer 是一种很底层的机制,在 Linux 系统中,为了能够屏蔽 各种不同的显示设备的具体细节&#…

使用 scrapyd 部署 scrapy

1.scrapyd 是什么? Scrapyd 是一个用于部署和运行 Scrapy 爬虫项目的服务器应用程序。它使得你可以通过 HTTP 命令来部署、管理和执行多个 Scrapy 爬虫,非常适合持续集成和生产环境中的爬虫部署。 2.安装scrapyd 并使用 2.1 安装 scrapyd F:\scrapydTes…

CSS之高级技巧

目录 CSS高级技巧精灵图(精灵技术)字体图标iconfontCSS三角CSS用户界面样式vertical-align属性应用溢出的文字省略号显示常见布局技巧 CSS高级技巧 精灵图(精灵技术) 为什么? 目的:有效减少服务器接受和…

vs code中如何使用git

由于本地代码有了一些储备,所以想通过网址托管形式,之前一直使用了github,但是鉴于一直被墙,无法登录账号,所以选择了国内的gitee来作为托管网站。 gitee的网址:Gitee - 基于 Git 的代码托管和研发协作平台…

【论文阅读笔记】MapReduce: Simplified Data Processing on Large Clusters

文章目录 1 概念2 编程模型3 实现3.1 MapReduce执行流程3.2 master数据结构3.3 容错机制3.3.1 worker故障3.3.2 master故障3.3.3 出现故障时的语义 3.4 存储位置3.5 任务粒度3.6 备用任务 4 扩展技巧4.1 分区函数4.2 顺序保证4.3 Combiner函数4.4 输入和输出的类型4.5 副作用4.…

如何自定义Linux命令

说明:本文介绍如何将自己常用的命令设置为自定义的命令,以下操作在阿里云服务器CentOS上进行。 修改配置文件 修改配置文件前,先敲下面的命令查看当前系统配置的shell版本 echo $SHELL或者 echo $0区别在于,$SHELL查看的是系统…

房屋出租管理系统需求分析及功能介绍

房屋租赁管理系统适用于写字楼、办公楼、厂区、园区、商城、公寓等商办商业不动产的租赁管理及租赁营销;提供资产管理,合同管理,租赁管理, 物业管理,门禁管理等一体化的运营管理平台,提高项目方管理运营效率…

Java继承学习笔记

Java的继承能保证子类拥有父类的方法的同时,还能有自己的方法,然后也是研究了一下super和this的用法: super的用法: (1)、super关键字有两个用法:super()和super. ,super()这个用法…

C++string 类的常用方法

string (构造函数) (1) default 构造长度为零字符的空字符串。 (2) copy 构造 str 的副本。 (3) substring 复制从字符位置 pos 开始并跨越 len 字符的 str 部分(如果任一 str 太短或 len 为 string::npos,则复制 str 的末尾…

智慧粮库/粮仓视频监管系统:AI视频智能监测保障储粮安全

智慧粮库视频监管系统是一种基于物联网、AI技术和视频监控技术的先进管理系统,主要用于对粮食储存环境进行实时监测、数据分析和预警。TSINGSEE青犀智慧粮库/粮仓视频智能管理系统方案通过部署多区域温、湿度、空气成分等多类传感器以及视频监控等设施,对…

AI漫改头像生成漫画,轻松日入1000+,操作简单好上手,互联网新项目新风口

AI漫改头像也差不多火了大半年了,一般流水的项目都活不过三个月,目前该项目至少存活了七个月了。 利用AI 软件将真人照片生成漫画形象,这看起来简单的方法,却在小红书上大伙大热。这完全是一个0成本的项目,漫画形象制作…

windows窗口消息队列与消息过程处理函数

在Windows窗口应用程序中,消息队列和窗口过程函数是实现消息驱动机制的核心组件。 消息队列(Message Queue): 消息队列是用于存储窗口消息的缓冲区。当用户与应用程序交互时,系统会将生成的消息插入到消息队列中&…

报告!Golang冲上来啦!

今天又来讲Go语言,根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名,令人瞩目的是,Go语言已经跃升至历史最高位,位列排行榜第七名,并且Go语言是前十榜单中最年轻的编程语言。这一成绩不仅彰显了Go语…

驾驭多云环境,加速AI创新丨Animbus Cloud 8.3.0 算力调度平台升级发布

大模型开启全球新一轮AI浪潮,伴随算力规模的爆发增长以及计算技术的多元创新,需要更稳定、高效、敏捷的异构计算基础设施,才能充分发挥对算力能力的重要支撑。 作为开放智能云边架构引领者,九州未来凭借多年的技术积累、实践沉淀…

Libcity 笔记:自定义模型

在/libcity/model/trajectory_loc_prediction/,我们复制一份Deepmove.py,得到DM_tst.py,我们不改变其中的机制,只动class name 然后修改相同目录下的__init__.py: 修改task_config文件: 在config/model/tra…