BGP 基础知识学习笔记

news2024/10/5 14:36:06

    今天海翎光电的小编为大家介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学。

    BGP(边界网关协议)是将互联网联合在一起的路由协议,海翎光电的小编将解释在哪些情况下我们需要 BGP 以及它是如何工作的。在您继续阅读之前,我应该告诉您“忘记”迄今为止您对RIP、OSPF和EIGRP等路由协议的了解……这三种路由协议有一个共同点:它们都是 IGP(内部网关协议)。我们只在我们的自治系统中使用它们,但它们不可扩展以用于像 Internet 这样大的网络。

    RIP、OSPF 和 EIGRP 都不同,但它们有一个共同点……它们都想找到到达目的地的最短路径。当我们查看 Internet 时,我们并不关心找到最短路径,而是能够操纵流量路径更为重要,我们目前在 Internet 上使用的路由协议只有一种,即 BGP。

    为什么需要BGP?

    让我们先看一些场景,以便了解为什么以及何时需要 BGP:

    现在几乎所有东西都连接到互联网,在上图中,我们有一个连接到 ISP(Internet 服务提供商)的客户网络,我们的 ISP 正在确保我们可以访问 Internet,我们的 ISP 为我们提供了一个可用于访问 Internet 的公共 IP 地址。为了确保客户方 LAN 上的每个人都可以访问 Internet,我们使用NAT/PAT(网络/端口地址转换)将我们的内部私有 IP 地址转换为这个单一的公共 IP 地址。当您只有需要访问 Internet 的客户端时,此方案非常适合。在我们的客户 LAN 上,我们只需要一个指向 ISP 路由器的默认路由,我们就完成了。对于这种情况,我们不需要 BGP...

    也许客户有几个需要从 Internet 访问的服务器……也许是邮件服务器或网络服务器,我们可以使用端口映射并将正确的端口转发到这些服务器,因此我们仍然只需要一个 IP 地址,另一种选择是从我们的 ISP 获取更多公共 IP 地址,并使用这些地址来配置不同的服务器。对于这种情况,我们仍然不需要 BGP……

    如果我想要更多的冗余怎么办?出现单点故障并不是一个好主意,我们可以在客户端添加另一个路由器并将其连接到 ISP,可以将主链接用于所有流量,并使用另一个链接作为备份,这种情况我们还是不需要BGP,可以用默认路由解决:

    1、在客户主路由器上面配置低优先级的默认路由;

    2、在客户的备路由器上面配置高优先级的默认路由;

    这将确保您的 IGP 使用主链路发送所有流量,一旦链路出现故障,您的 IGP 将确保所有流量都沿备用链路发送,你可以考虑一下......我们可以在这两个链接之间做任何负载平衡吗?会很难么?

    除非出现故障,否则您的 IGP 将沿主链路发送所有流量,而不会沿备用链路发送任何流量。您可以使用相同的度量发布默认路由,拥有 50/50% 的负载分担。如果我想在主链路上发送 80% 的出向流量,在备用链路上发送 20% 怎么办?上面的方法不会实现此需求,但使用 BGP 是可能的。

    一、BGP 含义

    Border Gateway Protocol,边界网关协议,协议优先级为 255,目前所使用的版本为 v4。边界网关路由协议,EGP 网关协议,适用于大型路由网络结构,以 AS 为一个节点,每个 AS 有唯一确定的 AS-ID 用于标识。 

    二、BGP 版本

① 2006 年定义单播 IPV4 网络 MP-BGP

② MP-BGP 在 IPv6 单播网络上的应用称为 BGP4+

③ 在 IPv4 组播网络上的应用称为 MBGP(Multicast BGP)

    三、BGP 分类

    ① IBGP:Internal Border Gateway Protocol ,内部边界网关协议,用于在 AS 内部的 BGP协议

    ② EBGP:External Border Gateway Protocol,外部边界网关协议,用于在 AS 之间的 BGP协议,默认数据包中的 TTL 值为 1 跳,邻居建立使用直连端口建立,通常两个 AS 之间是不存在 IGP 路由协议的,所以 AS 之间使用直连链路建立邻居

    四、BGP 特性

    BGP 路由具有以下特点:

① 可靠的路由更新机制

② 丰富的 Metric 度量方法

③ 从设计上避免了环路的发生

④ 为路由附带属性信息

⑤ 支持 CIDR

⑥ 丰富的路由过滤和路由策略

⑦ 支持认证

⑧ 默认不使用附载分担

    01、可靠的路由更新机制

    BGP 使用 TCP 进行路由更新,保证路由传递的可靠性,源端口号随机,目的端口号为179。

    02、丰富的 Metric 度量方法

    BGP 使用 TCP 进行路由更新,保证路由传递的可靠性,源端口号随机,目的端口号为179。

    03、从设计上避免了环路

    IBGP 使用水平分割,EBGP 使用 AS-Path 属性。

    04、为路由附带属性信息

    路由信息携带不同的 BGP 路由属性,为 BGP 选路提供了多种多样的方式。

    05、支持 CIDR、手动聚合

    BGP 支持无类域间(CIDR)路由,支持手工汇总和自动汇总。

    (1)、自动聚合:默认情况下,自动聚合时关闭的。自动汇总不会自动汇总 BGP 邻居发送的路由以及使用 Network 命令通告的路由,只能聚合自身 import 注入的路由条目。当开启自动聚合后,BGP 路由默认会以主类路由进行聚合。此时聚合路由的属性为 Aggregate 属性使用以下命令进行自动聚合:

[H******-bgp]summary automatic

R1:

Ø [H*****-bgp]network 1.1.1.1 32

Ø 只引入 loo2 到 loo4

Ø 启用路由聚合

    (2)、手动汇总:BGP 手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等,手动路由聚合又有 两种方式:

① network 静态路由

② aggregate 宣告

③ network 静态路由:

   首先创建静态路由将网段聚合并指向 null0,BGP 采用 network 方式通告出去,由于直连优先级高于静态,优先选择直连的下一跳接口,当直连网段出现问题,匹配静态送往 Null0。

    在 R1 上配置静态路由:[Huawei]ip route-static 172.16.0.0 255.255.0.0 NULL 0preference 254

    使用 network 宣告出去:[Huawei-bgp]network 172.16.0.0 16

④ aggregate 宣告

    直接在 BGP 试图下进行汇总

    使用以下命令进行 aggregate 汇总:

[H****-bgp]aggregate 172.16.0.0 255.255.0.0 detail-suppressed

    注 1:默认聚合路由只继承 Community 属性和起源属性(如果明细都为 i,则为 i,有一个为?,则为?)

    注 2:默认聚合后的路由不会携带任何的 AS-path 属性,为了防止环路,如果想要携带 AS-path

   属性,后面增加命令 as-set,此时汇总路由会继承所有明细路由的 AS 号,为无序的AS 号,如果增加了 AS-SET 之后,聚合路由会将明细路由的 AS-Path 放入 AS-SET 属性中,如果明细路由消失或属性修改都会造成聚合路由的抖动增加;如果明细路由的AS-PATH id 完全一致,此时聚合路由的 AS-PATH 类型为 AS-Sequence

    注 3:如果不加 detail-suppressed,会将明细路由和汇总路由全部发送出去,使用detail-suppressed 命令只通告汇总路由,此时汇总路由的属性为ATOMIC_Aggregate,用于通告下游的路由器成员信息被抑制,此时的汇总路由不会携带 Community 属性

   注 4:为了让聚合后的路由继承明细路由的路由属性,聚合命令后面增加attribute-policy 1,此时在定义 Route-policy,规划属性值

  注 5:origin-policy 的作用,定义 route-policy,当满足 if 条件中的路由条目时,聚合路由才会生效,如果定义的路由消失,则聚合路由为 ATOMIC_Aggregate

    注 6:suppress-policy 的作用是用于过滤掉某些明细路由,定义 route-policy,当满足 if 条件中的路由条目,明细路由就会被过滤掉,如果只抑制了一部分明细路由,属性依旧为 Aggregate;如过抑制了全部的明细路由,属性为 ATOMIC_Aggregate

    注 7:同 IGP 路由手动聚合对比,BGP 路由聚合,默认明细汇总都发布,IGP 只发布汇总路由;汇总之后 IGP 不会自动生成一条指向 Null0 的路由,而 BGP 路由汇总之后会自动生成一条指向 Null0 的汇总路由

    (3)、默认路由发布

    在 peer 对等体的时候,可以使用命令发布默认路由给对端邻居:[H******-bgp]peer 192.168.1.1 default-route-advertise

    五、丰富的路由过滤和路由策略

BGP 携带了大量的属性信息,并支持 13 种选路规则。 

    六、支持认证

    BGP 支持 MD5 认证方式,如果是 MD5 方式,路由器会根据 BGP 报文的某些字段和密钥计算出一个 128bit 的散列值,然后将 BGP 报文连同散列值发送给邻居。邻居路由器收到以后,会在本地基于收到的 BGP 报文和相同的密钥在进行一次 HASH 运算。如果计算出的散列值与接收到的散列值相同,则认证通过。

使用以下命令进行密码认证:

[H******-bgp]peer 192.168.1.1 password cipher h******/h*****

    七、默认不使用附载分担

    BGP 默认不使用附载分担,即使存在多条路径也会使用选路规则选出一条“最优路由”将其放入路由表中。开启附载分担方式:

① 选路规则前 9 条一模一样(AS ID 顺序也一样),可以使用命令 maximumload-balancing bgp 进行附载分担,当比较到下一跳的 IGP 开销值一样时,会进行流量的负载分担

② 当 BGP 路由中的下一跳地址在 IGP 路由表中存在附载分担,此时流量会附载分担

③ 使用属性值对多个目标流量对半分流实现附载分担

    八、EBGP 特性

EBGP 默认存在以下特性:

① 在通告给 EBGP 邻居时会将 NEXT_Hop 属性设置为自身的接口 IP 地址

② 将 Local_PREF 值清空

③ 将 MED 数值除 0

③ 在 AS_PATH 属性中增加自己的 AS-ID

    九、扩展性强

    BGP 扩展性强,在承载多协议路由时,在 MP NLRI 中增加属性值(TLV)进行扩展。

    上面海翎光电的小编介绍了BGP的含义、BGP版本、BGP分类、BGP 特性等,接下来咱们继续这个话题。

BGP收敛状态

BGP 收敛主要经过以下几种状态:

① Idle 初始状态

② Connect 连接状态

③ Active 失败等待状态

④ Open Sent 协商状态

⑤ Open confirm 连接确立状态

⑥ Established 确定建立状态

① Idle 初始状态

BGP 初始状态。在 Idle 状态下,BGP 拒绝邻居发送的连接请求。只有在收到本设备的Start 事件后,BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect状态。

Start 事件是由一个操作者配置一个 BGP 过程,或者重置一个已经存在的过程或者路由器软件重置 BGP 过程引起的。

② Connect 连接状态

连接状态,双方配置命令后,谁先配置完成谁先主动发起建立 TCP,源端口随机,目标端口 179,在 Connect 状态下,BGP 启动连接重传定时器,等待 TCP 完成连接

建立状态:

Ø 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态

Ø 如果对方无响应,则 5S 后发送第二份组播报文,依旧没有响应,等待大约 25S 时候周期后开始下一轮的 TCP 报文发送,对方一直无响应,则停留在 Connect(对端没有去往本端的路由)

Ø 如果对方回应拒绝建立 TCP 连接,则不在继续发送 TCP 报文,在大约 25S 后进入Active 状态

注:如果控制 TCP 的主动端和被动端可以使用命令 peer listen-only,此时设备只侦听对端,而不主动建立;或者控制主动端的连接端口地址

③ Active 失败等待状态

失败等待状态,huawei 设备依旧为主动建立连接,Active 状态一个时间周期(大约25S)只发送一次 TCP 报文。

建立状态:

Ø 如果建立成功,进入 OPENSENT 状态

Ø 如果收到拒绝建立 TCP 报文(没有启用 BGP),则一个时间周期只发送一次,并停留在此状态

Ø 如果对方无响应(无本端路由,比如进入 Active 状态,对端路由撤销掉了),一个时间周期后回到 Connect 状态

④ Open Sent 协商状态

协商状态,TCP 连接建立成功后,发送 open 报文后,进入 OPENSENT 状态,开始等待对端接收对端的 Open 报文

Ø 根据 Open 报文中的 AS 号、版本号、认证码等进行检查。当接收到对端的 Open报文后,发现 Open 报文无误,会立刻发送 Keep alive 报文,并进入下一状态 。

建立状态:

Ø 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至 Idle 状态OPEN 检测不通过的原因:

① Version 不相同

② Route ID 冲突

③ TTL 跳数

④ 源 IP 与 Peer 地址不一样

注:BGP Hold-Timer 时间不一致不影响邻居的建立

⑤ Open confirm 连接确立状态

等待对端的 keep alive 报文,当收到对端的 keep alive,进入下一状态。

⑥ Established 确定建立状态

当成功接收对端 Keep Alive 报文后,进入 Established 状态,是一种稳态,并周期的发送 Keep Alive 报文。

BGP表

BGP 协议中,连接一旦建立,BGP Speaker 将把自己产生的所有 BGP 路由通告给对等体,有多条路径时,BGP Speaker 只会选最优的给自己使用放入 IP 路由表中,BGPSpeaker 只会选最优的给邻居对等体。

BGP 一共包含三张表:

① 邻居表

② IP 路由表

③ BGP 路由表

① 邻居表

用来查看当前的邻居,使用 display bgp peer 查看:

① Peer Rcv:对端 IP

② V:版本

③ AS:对端 AS 号

④ MsgRcvd:收到了几条 BGP 消息

⑤ MsgSent:发出了几条 BGP 消息

⑥ OutQ:等待发送指定对等体的消息

⑦ State:状态

⑧ Pref Rcv:从邻居学到多少 BGP 路由条数

② IP 路由表

全局路由表,包含目前可用的 BGP 路由

③ BGP 路由表

BGP 路由表发送原则:

① IBGP 路由,只发送给 EBGP 对等体

② EBGP 路由,发布给所有 EBGP 和 IBGP 对等体

③ 只将最优路由发布给对等体

④ 只发送增量更新的 BGP 路由

BGP 路由表无效:

① 下一跳不可达(不加入到 IP 路由表中)

② IGP 同步开启,无相应的 IGP 路由(不加入 IP 路由表中)

③ 存在相同的 IGP 路由(不加入 IP 路由表中)

④ AS ID 相同(不接受此 BGP 路由)

⑤ Cluster List 中包含本 RR 的簇 ID(不接受此 BGP 路由)

⑥ Originator ID 和本路由器的 Router ID 相同(不接受此 BGP 路由)

⑦ 使用 BGP 命令 bgp-rib-only(最优 BGP 路由不会放入 IP 路由表中)

① >为最佳路由,存在多条路径时,BGP 会选择最佳路由放入路由表并传递给邻居

② *为最优化路由,表示当前路由有效,当没有*标明此路 由不是最优

③ i 为 IBGP 邻居学到的路由条目,如果位空表示本地产生或 EBGP 学到的路由

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

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

相关文章

为什么你工作很努力却没有晋升?分析晋升的关键点!

见字如面,我是军哥! 昨天有一位二线大厂的程序员读者和我吐槽,说马上公司一波人晋升,可是晋升名额并么有他,但是他在这家公司已经干了三年了,工作也很努力,996 更是家常便饭,难道是大…

C语言小游戏的实现——扫雷(使用C语言基础语法)

前言 结合前边我们所学的C语言知识,本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同,游戏开始时…

109.(cesium篇)cesium椎体上下跳动+旋转

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en…

python+django高校疫情防控管理系统vue

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;高校疫情防控管理系统也不例外&#xff0c;但目前国内的有些学校仍都使用人工管理&#xff0c;学校规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化…

屏幕挂灯是不是智商税?明基ScreenBar Halo屏幕挂灯初体验

目录 一、屏幕挂灯是不是智商税&#xff1f;二、文心一言眼里的屏幕挂灯1、明基ScreenBar Halo屏幕挂灯2、屏幕挂灯和普通台灯哪个好&#xff1f; 三、屏幕挂灯初体验四、使用体验五、无线控制器六、专业角度分析1、屏幕工作照明&#xff0c;不是随便一盏灯就可以2、引导光线照…

记录--超长溢出头部省略打点,坑这么大,技巧这么多?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 在业务中&#xff0c;有这么一种场景&#xff0c;表格下的某一列 ID 值&#xff0c;文本超长了&#xff0c;正常而言会是这样&#xff1a; 通常&#xff0c;这种情况都需要超长省略溢出打点&#xff0…

2023网络安全工程师面试宝典(附答案)

2023年即将过去一半&#xff0c;先来灵魂三连问&#xff1a; 年初定的目标完成多少了&#xff1f;薪资涨了吗&#xff1f;女朋友找到了吗&#xff1f; ​好了&#xff0c;不扎大家的心了&#xff0c;接下来进入正文。 1、SQL注入的原理是什么&#xff1f; SQL注入攻击是通过将…

1722_PolySpace Bug Finder的几种启动方式

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

【算法】使用数位算法生成0至某个数之间的整数(for循环之外的另一种实现方式,蛮长见识的)

导入&#xff1a; 对某个整数进行遍历&#xff0c;按常规的编程思维都是 for(int i0;i<number;i){} 但是如果这个数比较大&#xff0c;大到无法的话&#xff0c;可能使用普通for循环方式进行遍历就有些吃力了。 那么针对这个问题&#xff0c;可以考虑深度搜索算法dfs来辅助完…

Linux--ServerProgramming--(1)TCP\IP协议族

1.TCP/IP 协议族 1.1 TCP/IP协议族及主要协议 TCP/IP 协议族是一个四层协议系统。自上而下为&#xff08;如下图所示&#xff09;&#xff1a;应用层传输层网络层数据链路层 应用层负责处理应用程序逻辑&#xff0c;在用户空间实现。&#xff08;少数服务器程序在内核中实现。…

快速上手kettle(一)壶之简介

Linux核心命令系列文章目录 快速上手kettle&#xff08;一&#xff09;&#xff1a;壶之简介 快速上手kettle&#xff08;二&#xff09;&#xff1a;Kettle初体验&#xff08;博主正在玩命更新中&#xff09; 快速上手kettle&#xff08;三&#xff09;&#xff1a;Kettle转换…

艾迪普发布新一代国产化“3D引擎+工具+平台”,加速释放数字内容生产力

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 艾迪普的2023新产品发布会在5月20日在北京隆重举行&#xff0c;该发布会以"向新出发 智见未来"为主题&#xff0c;艾迪普重磅推出了新一代实时三维图形图像引擎IDP Engine 4.0、iVis无代码编程数字孪生应用开发工…

谷歌云开启GPU算力狂飙,驱动AIGC时代加速到来

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着人工智能的飞速发展&#xff0c;尤其是大型AI模型、AIGC的崛起&#xff0c;对AI算力产生了巨大的需求。以GPU为核心的算力供给&#xff0c;已经成为大模型、AIGC乃至整个智能产业发展的关键基础设施。因此&#xff0c;对…

springboot+vue基于java的用户行为的个性化新闻推荐系统

使用个性化新闻服务平台相对传统个性化新闻服务方式具备很多优点&#xff1a;首先可以大幅提高个性化新闻服务信息检索&#xff0c;只需输入新闻相关信息就能在数秒内反馈想要的结果&#xff1b;其次可存储大量的个性化新闻服务信息&#xff0c;同时个性化新闻服务安全性有更高…

Java内存模型 JMM

并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 线程之间如何通信&#xff1a;共享内存&#xff0c;消息传递线程之间如何同步通信是指线程之间以何种机制来 交换信息同步是指程序中用于控制不同线程间 操作发生相对顺序 的机制在共享内存的并发模型里&a…

案例21:Java农产品供求信息系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

腾讯、头条 | 算法岗详细面经

作者 | 常青czq 整理 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本硕华南某985&#xff0c;有过两段实习经历&#xff0c;一段是大厂的算法实习&#xff0c;另一段是招行Fintech实习&#xff0c;虽然…

如何在Linux桌面上创建快捷方式?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一般而言&#xff0c;Linux环境下在命令行上通过软件包管理工具安装软件&#xff0c;或者从网站直接下载已经编译好的二进制软件包&#xff0c;软件安装好之后不会在桌面上创建快捷方式。接下来如果想要在桌…

iOS推送播放语音播报更新

接上篇如何让iOS推送播放语音&#xff0c;之前的结论是iOS如果需要送审商店只能播放本地的mp3文件&#xff0c;这里更新一下&#xff1a; 更新 语音的播放&#xff0c;最终调用的方法是UNNotificationSound(named: xxx)&#xff0c;而这个方法官方文档注释如下&#xff1a; // …

chatgpt赋能python:Python写Kafka:介绍及优势

Python写Kafka&#xff1a;介绍及优势 Kafka是目前互联网企业使用最广泛的消息队列系统之一&#xff0c;广泛应用于应用程序之间的异步通信、数据采集、日志收集等领域。Python作为一门通用且易学易用的编程语言&#xff0c;在和Kafka结合时也展现出了其独特的优势。本文将介绍…