HCNP路由交换学习指南丨学习笔记丨07.BGP

news2024/11/24 16:34:05

07.BGP

  • 1. BGP 的基本概念
    • 1.1 BGP 对等体关系类型
    • 1.2 IBGP 水平分割原则

1. BGP 的基本概念

关于 自治系统(Autonomous System,AS) 的传统定义:由一个单一的机构或组织所管理的一系列 IP 网络及其设备所构成的集合。

自治系统的简单理解:可以简单地将 AS 理解为一个独立的机构或者企业所管理的网络,例如一家网络运营商的网络等。另一个关于 AS 的例子是,一家全球性的大型企业在其网络的规划上将全球各个区域划分为一个个的 AS,例如中国区是一个 AS,韩国区是另一个 AS。

根据工作范围不同,动态路由协议可分为两类

  • IGP(Interior Gateway Protocol,内部网关协议),例如 RIP、OSPF、IS-IS 等。

    IGP 协议用于帮助路由器发现到达本 AS 内各个网段的路由,从而实现 AS 内部的数据互通,一个 AS 通常采用一种 IGP 协议,也有许多大型的网络,会在一个 AS 中采用多种 IGP 协议以便支撑该网络多元化的需求。

  • EGP(Exterior Gateway Protocol,外部网关协议),例如 BGP 等。

    在一个由多个 AS 构成的大规模的网络中,还需要 EGP 协议来完成 AS 之间的路由交互。BGP 就是最为熟知和使用得最为广泛的一种 EGP 协议。

    在这里插入图片描述

BGP(Border Gateway Protocol,边界网关协议) 几乎是当前唯一被用于在不同 AS 之间实现路由交互的 EGP 协议。BGP 适用于大型的网络环境,例如运营商网络,或者大型企业网等。BGP 支持 VLSM、支持 CIDR(Classless Inter-Domain Routing,无类域间路由),支持自动路由汇总、手工路由汇总。

BGP 使用 TCP(端口号 179)作为传输层协议,以确保协议报文的交互更加可靠和有序。两台互为对等体的 BGP 路由器首先会建立 TCP 连接,随后协商各项参数并建立对等体关系。初始情况下,两者会同步双方的 BGP 路由表,在 BGP 路由表同步完成后,路由器不会周期性地发送 BGP 路由更新,而只发送增量更新或在需要时进行触发性更新。

增量更新/触发性更新:这大大地减小了设备的负担及网络带宽损耗,由于 BGP 往往被用于承载大批量的路由信息,如果依然像 IGP 协议那样,周期性地交互路由信息,显然是相当低效和不切实际的

BGP 定义了多种 路径属性(Path Attribute) 用于描述路由,就像一个人拥有身高、体重、学历、特长和经历等属性一样,一条 BGP 路由同样携带着多种属性,路径属性将影响 BGP 路由的优选。BGP 还定义了丰富的路由策略工具,这些工具使得 BGP 具有强大的路由操控能力。

BGP 的发展经历了数个版本,目前在 IPv4 环境中,BGPv4(BGP Version 4)被广泛使用,该版本在 RFC4271(A Border Gateway Protocol 4)中被描述。本章基于 BGPv4 进行讲解。

1.1 BGP 对等体关系类型

IGP 协议要求需要建立邻居关系的两台路由器必须是直连的,然而 BGP 则不相同。

BGP 的对等体关系并不要求设备必须直连,BGP 采用 TCP 作为传输层协议,两台路由器只要具备 IP 连通性,并且能够顺利地基于 TCP179 端口建立连接,就可以建立 BGP 对等体关系,因此 BGP 的对等体关系是可以跨设备建立的。建立 BGP 邻居关系的路由器称为 BGP 对等体(Peer)。

BGP 有两种对等体关系,一种是 EBGP,另一种是 IBGP。

  1. EBGP 对等体关系(External BGP Peer)

    如果建立对等体关系的两台 BGP 路由器位于不同的 AS,那么它们之间的关系被称为 EBGP 对等体关系。通常情况下,EBGP 对等体关系必须基于直连接口建立,因为缺省情况下,EBGP 对等体之间发送的 BGP 协议报文的 TTL 值为 1。

  2. IBGP 对等体关系(Internal BGP Peer)

    如果建立对等体关系的两台 BGP 路由器位于相同的 AS,那么它们之间的关系被称为 IBGP 对等体关系。在两台路由器之间建立 IBGP 对等体关系时,并不要求它们必须直连。

1.2 IBGP 水平分割原则

每条 BGP 路由都携带着多个属性,这些属性被称为路径属性,其中一个非常重要的路径属性就是 AS_Path。AS_Path 是每条 BGP 路由都会携带的属性,它描述了一条 BGP 路由在传递过程中所经过的 AS 的号码,AS_Path 的长度会影响路由器对 BGP 路径的优选。

此外,AS_Path 还用于防止出现路由环路。如图所示,R2 从 R4 收到该路由后,会忽略这条路由更新,因为它在收到的路由中看到了自己本地的 AS 号码,便意识到网络中出现了环路。

在这里插入图片描述
AS_Path 属性可以防止 BGP 路由在 EBGP 对等体之间传递时发生环路,然而当路由在 IBGP 对等体之间传递时,AS_Path 属性的值是不会发生改变的。即 BGP 路由在一个 AS 内传递时,是无法依赖 AS_Path 提供的防环能力的,那么此时路由环路就有可能发生。

针对这类问题,BGP 提供了一种解决方案——IBGP 水平分割

下图中,当 R2 收到 R1 通告的 10.1.1.0/24 路由后,它将这条路由通告给自己的 IBGP 对等体 R3 及 R4,R4 会将该路由通告给 IBGP 对等体 R3,而 R3 又会将该路由通告给 R2,这就容易引发路由环路。

在这里插入图片描述
BGP 规定,当路由器从一个 IBGP 对等体学习到某条 BGP 路由时,它将不能再把这条路由通告给任何 IBGP 对等体,这就是 IBGP 水平分割规则。在本例中,R4 从 IBGP 对等体 R2 学习到的路由将不能再通告给 R3,因为 R3 也是它的 IBGP 对等体。同理,R3 从 R2 学习到的 BGP 路由也不能通告给 R4。

IBGP 水平分割也会带来问题。在这个网络中,R4 增加了一个 IBGP 对等体 R5。由于 IBGP 水平分割规则的限制,R4 是无法将学习自 IBGP 对等体 R2 的 10.1.1.0/24 路由再通告给另一个 IBGP 对等体 R5 的,因此这将造成 R5 无法学习到去往 AS 64512 的路由。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jsp羽毛球场馆管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 羽毛球场馆管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,…

通达信MACD面积背离指标公式,思路来自于缠论背驰

MACD面积背离指标公式的思路来自于缠论的MACD面积背驰,但是背驰的定义有一些限制条件,编写指标不一定能满足,这里就不纠结了,编写的指标称为MACD面积背离。另外编写这个指标公式需要对缠论有一些了解,如果没有相关基础…

数据结构笔记堆

1.堆的定义//堆是一颗完全二叉树,堆一般由优先队列来实现堆分为两种:1.大顶堆中父亲结点的值大于或者等于孩子结点的值,以它为根结点的子树,它是最大值(顶点是最大值,顶点指的是树的根结点或者子树的根结点)2.小顶堆的父亲结点的值…

详解 matplotlib.pyplot ,Python 初学者真能看懂

Matplotlib 是一个 Python 中的 2D 绘图库, pyplot 模块是一个方便使用 Matplotlib 的接口。 下面是 pyplot 模块中的五个重要的知识点: 【创建图形】: pyplot 模块提供了许多简单易用的函数来创建图形,如 plot、scatter、bar、h…

Python语言零基础入门教程(十)

Python 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ’ 或 " ) 来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 Hello World! var2 "Python Runoob"Python 访问字符串中的值 Python 不…

TCP连接的状态详解以及故障排查(五)

同时打开 两个应用程序同时执行主动打开的情况是可能的,虽然发生的可能性较低。每一端都发送一个SYN,并传递给对方,且每一端都使用对端所知的端口作为本地端口。例如: 主机a中一应用程序使用7777作为本地端口,并连接到主机b 888…

【Python入门第四天】Python 注释

开始之前,先给大家讲个笑话… 程序员最讨厌的两种人:写代码不写注释的人和让自己写注释的人。 注释可用于解释 Python 代码。 注释可用于提高代码的可读性。 在测试代码时,可以使用注释来阻止执行。 创建注释 注释以 # 开头&am…

低代码开发平台|生产管理-生产加工搭建指南

1、简介1.1、案例简介本文将介绍,如何搭建生产管理-生产加工。1.2、应用场景在主生产计划列表中下达加工后,在加工单列表可操作领料、质检。2、设置方法2.1、表单搭建1)新建表单【产品结构清单(BOM)】,字段…

32单片机矩阵键盘-同列组合键不能识别故障-已解决

一、电路原理 1.1. 矩阵键盘电路 1.2. gd32f103单片机端是iic,中间经过一个pca9535芯片。 1.3 pca9535 的功能请参考相关文档 这里主要用到的是设置输入输出模式,读取输入值,输出高或者输出低等功能。 二、基本要求 2.1 单个按键识别 2.2 组合键识别…

米尔基于ARM嵌入式核心板的电池管理系统(BMS)

BMS全称是Battery Management System,电池管理系统。它是配合监控储能电池状态的设备,主要就是为了智能化管理及维护各个电池单元,防止电池出现过充电和过放电,延长电池的使用寿命,监控电池的状态。 图片摘自网络 电池…

【C++入门】命名空间,输出输入,缺省参数,函数重载

文章目录命名空间C输入与输出缺省参数函数重载命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标 识符的名称进行本地化&#xff0…

电子技术——共源共栅放大器

电子技术——共源共栅放大器 之前我们提到过,提高基础增益单元(共源放大器)的一种方法是提高其 ror_oro​ 的阻值,之后我们学过共栅放大器作为电流缓冲器可以做到这一点,自然地我们就得到了终极解决方案,也…

Fluid-数据缓存亲和性调度原理解析

前言在Fluid中,Dataset资源对象中所定义的远程文件是可被调度的,这意味着你能够像管理你的Pod一样管理远程文件缓存在Kubernetes集群上的存放位置。另外,Fluid同样支持对于应用的数据缓存亲和性调度,这种调度方式将应用(e.g. 数据…

iOS 导航条isTranslucent几个注意点(iOS11及iOS13的变化)

文章主要针对11及13之后的导航变化进行总结,主要是设置透明度时对转场,包括标题,背景透明,图片,颜色等设置的影响。 每一个iOS版本的发布苹果最不稳写的可能就数这个导航条了吧,改了又改。 因此isTranslu…

Prometheus监控Java-JMX

一、什么是 JMX Exporter ? JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。 那么,JMX 又是什么呢?它的全称是&a…

【Redis场景4】单机环境下秒杀问题

单机环境下的秒杀问题 秒杀下单功能及并发测试 完整代码GitHub:https://github.com/xbhog/hm-dianping/tree/20230130-xbhog-redisSpike 秒杀条件分析: 秒杀是否开始或结束,如果尚未开始或已经结束则无法下单库存是否充足,不足…

【体验测评】ChatGDP

前言 今天在去打针之前测试了下比较火的ChatGPT,总得来说还是比较好用的,尤其是跟浏览器搭配可以当摘要看,然后再进行细化查阅。 ​针对可以写论文跟交作业,我觉得查重率这一关比较麻烦,不现实,尤其是参与人增多的时…

php宝塔搭建部署实战易优养殖基地网站源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的易优养殖基地网站源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码,宝…

选择游戏开发工具的原则

本文首发于微信公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。嗨!大家好,我是小蚂蚁。昨天为了给我的精致1010游戏方便的增加更多关卡,我用 Unity 做了个关卡编辑器&a…

pycharm的terminal与Project interpreter 配置环境不一致的问题

考虑自己的项目名中是否出现了中文,我是因为这个原因导致Terminal 前面出现了PS,用第2条解决切换终端环境后还是安装包不一致。终端出现PS,考虑在settings中搜索找到Terminal,修改其Shell path为cmd.exe,关闭重新打开T…