掌控互联网脉络:深入解析边界网关协议(BGP)的力量与挑战
BGP简介
边界网关协议(Border Gateway Protocol,BGP)是互联网上最重要的路由协议之一,负责在不同自治系统(AS)之间传播路由信息。BGP使得互联网中的不同网络可以互相通信,支持互联网的规模化扩展和复杂性管理。BGP的历史可以追溯到1989年,当时为了解决当时扩展性问题而被提出,并已经发展成为现代互联网基础设施的核心部分。
BGP的主要功能是允许不同的网络运营商(通过自治系统号标识)在彼此之间动态交换路由信息。这种能力确保了数据包能够找到从源头到目的地的最佳路径,即使在网络拓扑发生变化的情况下也是如此。
BGP的工作原理
边界网关协议(BGP)的核心功能是在互联网的不同自治系统(AS)之间交换路由信息。这一节将深入探讨BGP的工作原理,包括路由广告、路径选择和自治系统间的互连方式。
路由广告
BGP使用的是基于路径的路由选择协议,其中每个BGP路由器会向其邻居广播可达性信息,即它可以到达的网络和到达这些网络的最佳路径。这些路由信息包括了多种属性,如AS路径、下一跳IP地址和多种可选的路径属性。
- AS路径 :包含了到达目标网络所经过的自治系统序列。这有助于防止路由循环,并允许路由器根据策略做出决策。
- 下一跳 :指定了到达宣告网络的下一跳路由器的IP地址。
路径选择
当一个BGP路由器从多个邻居接收到到同一目的地的不同路由时,它需要使用BGP路由选择过程来决定最佳路径。BGP路由选择基于一系列标准,主要包括:
- 首选本地路由 :首先考虑由本地AS宣告的路由。
- 最短AS路径 :倾向于选择AS路径最短的路由。
- 最低起始IP地址 :如果存在多条具有相同AS路径长度的路由,选择下一跳IP地址最低的路由。
- 其他策略 :网络管理员还可以基于自己的需求配置其他选择标准,如基于策略的路由选择。
自治系统间的互连
自治系统(AS)是一组由单一策略和共同路由协议管理的IP网络和路由器的集合。BGP运行在这些AS之间,允许它们交换路由信息。BGP互连通常分为两种类型:
- eBGP(外部BGP) :在不同AS之间交换路由信息。
- iBGP(内部BGP) :在同一个AS内部的路由器之间交换路由信息,确保AS内部的路由器了解外部路由信息。
BGP会话
BGP路由器之间的交互通过建立BGP会话来完成,这通常需要在两个路由器之间手动配置邻居关系。BGP使用TCP端口179作为其传输层协议,保证了路由信息交换的可靠性。
BGP消息类型和路径选择
BGP定义了四种基本消息类型,用于在邻居之间建立和维护会话:
- OPEN :建立连接时使用,交换基本参数。
- UPDATE :传播路由信息,包括新路由的宣告和无效路由的撤销。
- KEEPALIVE :在邻居之间定期发送,以保持连接的活跃状态。
- NOTIFICATION :当检测到错误时发送,用于关闭不正常的连接。
BGP的路径选择过程是其最为核心的部分,它不仅考虑技术因素,如路径长度,还可能根据网络策略和协议间的协商结果进行调整。这种灵活性和强大的控制能力是BGP成为互联网主干路由协议的关键原因之一。
BGP会话建立和维护
BGP会话的建立是BGP路由器之间交换路由信息的前提。这一过程涉及到一系列精确的步骤,旨在确保两个BGP路由器可以安全且可靠地交换信息。
会话建立过程
- 配置邻居关系 :网络管理员在BGP路由器上配置邻居关系,指定要建立BGP会话的对端路由器的IP地址。
- 发送OPEN消息 :BGP路由器通过发送OPEN消息来尝试建立会话。OPEN消息包含了路由器的BGP版本号、AS号、Hold Time(保持时间)和BGP标识符等信息。
- 确认并建立会话 :对端路由器收到OPEN消息后,如果同意建立会话,则回复一个KEEPALIVE消息,表明会话已经成功建立。如果不同意,则发送NOTIFICATION消息终止会话。
会话维护
一旦BGP会话建立,路由器就会定期交换KEEPALIVE消息以维护会话的活跃状态。如果在配置的Hold Time内未收到对端的KEEPALIVE消息,会话将被认为已经断开,需要重新建立。
自治系统和BGP路由聚合
自治系统(AS)
自治系统是一组由单一组织管理的IP网络和路由器的集合,它们共享相同的路由策略。每个AS都被分配一个唯一的AS号(ASN),用于在BGP中标识自己。
BGP路由聚合
为了提高路由效率并减少全球路由表的大小,BGP允许路由聚合。路由聚合是一种技术,通过宣告一个单一的路由来代表多个具有共同前缀的网络。这不仅减少了路由表项的数量,还减少了BGP更新消息的数量,从而提高网络效率。
BGP的安全性和挑战
尽管BGP是互联网路由的基石,但它也面临着一系列的安全挑战,其中最突出的是路由劫持。在路由劫持攻击中,攻击者通过向BGP路由器宣告虚假路由,将流量重定向到恶意的目的地。为了应对这些挑战,社区提出了多种安全机制,包括:
- RPKI(资源公钥基础设施) :使用数字证书验证AS号和IP地址前缀的所有权,防止非法AS宣告不属于它的IP地址。
- BGPsec :为BGP消息提供加密和签名,确保消息的完整性和来源验证。
BGP扩展和改进
随着互联网的不断发展,BGP也在不断进化以满足新的需求。例如,多协议BGP(MP-BGP)扩展了BGP的能力,支持多种网络协议(如IPv6、MPLS),为VPN和其他高级网络服务提供了支持。
BGP在现实世界的应用案例
BGP在互联网中的应用广泛,从支持全球互联网的核心路由到使云服务提供商能够提供灵活的网络服务。通过精心设计的路由策略和BGP社区属性,网络运营商可以控制流量的流向,优化性能和成本。
BGP的未来展望
未来,BGP将继续适应互联网的发展,包括更好的安全机制和对新兴网络技术的支持。随着网络世界的不断演进,对BGP的改进和扩展将保持其作为全球数据交换基础设施的关键角色。
总结
BGP作为互联网的核心路由协议,不仅支持了全球互联网的运行,还使网络管理员能够根据策略调整路由决策,优化网络性能。尽管面临安全和管理挑战,但通过不断的技术创新和社区合作,BGP继续发展,满足日益增长的网络需求。
相关文章:
掌控互联网脉络:深入解析边界网关协议(BGP)的力量与挑战
BGP简介 边界网关协议(Border Gateway Protocol,BGP)是互联网上最重要的路由协议之一,负责在不同自治系统(AS)之间传播路由信息。BGP使得互联网中的不同网络可以互相通信,支持互联网的规模化扩…...
Vue2页面转化为Vue3
vue2element-ui转化为Vue3element plus 后台管理系统:增删查改 vue2页面: <template><div class"app-container"><div><el-form:model"queryParams"ref"queryForm"size"small":inline&qu…...
【课程作业】提取图中苹果的面积、周长和最小外接矩形的python、matlab和c++代码
提取图中苹果的面积、周长和最小外接矩形 在图像处理中,提取对象的关键属性是常见的任务之一。本文将演示如何使用三种流行的编程语言——Python、Matlab和C,利用相应的图像处理库(OpenCV或Matlab内置函数)来提取图像中苹果的面积…...
解决easyExcel模板填充时转义字符\{xxx\}失效
正常我们在使用easyExcel进行模板填充时,定义的变量会填充好对应的实际数据,未定义的变量会被清空,但是如果这个未定义的变量其实是模板的一部分,那么清空了就出错了。 在这张图里,上面的是模板填充后导出的文件&…...
在项目中使用CancelToken选择性取消Axios请求
Axios 提供了 CancelToken 类来创建取消标记。取消标记实际上是一个包含 token 标记和 cancel 方法的对象。 1、基本使用方法 const CancelToken axios.CancelToken; const source CancelToken.source();axios.get(/user/12345, {cancelToken: source.token }).catch(functi…...
[c++] 记录一次引用使用不当导致的 bug
在工作中看到了如下代码,代码基于 std::thread 封装了一个 Thread 类。Thread 封装了业务开发中常用的接口,比如设置调度策略,设置优先级,设置线程名。如下代码删去了不必要的代码,只保留能说明问题的代码。从代码实现…...
能不能节约百分之九十的算力来训练模型
Sora是由OpenAI开发的视频生成模型,它采用了多种先进的技术和架构,能够根据文本描述生成长达一分钟的高清视频。虽然OpenAI并未公开Sora的详细模型架构和实现细节,但我们可以根据公开的信息和参考论文来了解其技术架构。 Sora的核心技术架构主…...
LeetCode206: 反转链表.
题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 解题方法 假设链表为 1→2→3→∅,我们想要把它改成∅←1←2←3。在遍历链表时,将当前节点的 next指针改为指向前一个节点。由于节点没有引用其前一…...
高级统计方法 第1次作业
概念 1. 请解释什么是P值,怎么计算p值,p值结果怎么理解,p值有哪些应用......? (a)什么是P值 P值是一种用来判定假设检验结果的一个参数,它描述了在原假设为真的情况下,比所得到的…...
spinalhdl,vivado,fpga
https://spinalhdl.github.io/SpinalDoc-RTD/master spinal hdl sudo apt install openjdk-17-jdk scala curl echo “deb https://repo.scala-sbt.org/scalasbt/debian all main” | sudo tee /etc/apt/sources.list.d/sbt.list echo “deb https://repo.scala-sbt.org/scal…...
Tomcat线程池原理(下篇:工作原理)
文章目录 前言正文一、执行线程的基本流程1.1 JUC中的线程池执行线程1.2 Tomcat 中线程池执行线程 二、被改造的阻塞队列2.1 TaskQueue的 offer(...)2.2 TaskQueue的 force(...) 三、总结 前言 Tomcat 线程池,是依据 JUC 中的线程池 ThreadPoolExecutor 重新自定义…...
【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例
服务器数据恢复环境: 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列,操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障: 该服务器在工作过程中,raid6磁盘阵列中有两块磁盘先后离线,不知道是管理…...
LeetCode 2583.二叉树中的第 K 大层和:层序遍历 + 排序
【LetMeFly】2583.二叉树中的第 K 大层和:层序遍历 排序 力扣题目链接:https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/ 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k …...
element ui 安装 简易过程 已解决
我之所以将Element归类为Vue.js,其主要原因是Element是(饿了么团队)基于MVVM框架Vue开源出来的一套前端ui组件。我最爱的就是它的布局容器!!! 下面进入正题: 1、Element的安装 首先你需要创建…...
websoket
WebSockets 是一种先进的技术。它可以在用户的浏览器和服务器之间打开交互式通信会话。你可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应,比较典型的应用场景就是即时通讯(聊天)系统。 <!DOC…...
案例:微服务从Java/SpringBoot迁移到Golan
基于 Java 的微服务,特别是那些使用 Spring Boot 的微服务,长期以来因其强大的功能和广泛的社区支持而闻名。Spring Boot 的约定优于配置方法简化了微服务的部署和开发,提供了大量开箱即用的功能,例如自动配置、独立功能和简单的依…...
小波变换模拟
小波变换是一种信号处理技术,通过在时间-频率域中使用基于小波的函数进行信号分析。小波变换在处理非平稳信号和图像时特别有用,可以将信号分解为不同频率的成分。它在数据压缩、去噪、特征提取等领域有广泛应用。 MATLAB中提供了用于二维离散小波变换的…...
cv::Mat图像操作
图像读写 //include header #include <opencv2/imgcodecs.hpp>/** Currently, the following file formats are supported: Windows bitmaps - *.bmp, *.dib (always supported) JPEG files - *.jpeg, *.jpg, *.jpe (see the Note section) JPEG 2000 files - *.jp2 (s…...
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…...
2024年软件测试岗位-面试
第一部分: 1、自我介绍:简历写到的快速描述,学校、学历、工作经验等(注意:不要过度优化简历,你不写别人可能会问,但你写了别人一定会问!) 第二部分: 1、功能测…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
