计算机网络——29ISP之间的路由选择:BGP

ISP之间的路由选择:BGP

层次路由

一个平面的路由

  • 一个网络中的所有路由器的地位一样
  • 通过LS,DV,或者其他路由算法,所有路由器都要知道其他所有路由器(子网)如何走
  • 所有路由器在一个平面

平面路由的问题

  • 规模巨大的网络中,路由信息的存储、传输和计算代价巨大
    • DV:距离矢量很大,而且不能收敛
    • LS:几百万个节点的LS分组的泛洪传输,存储以及最短路径算法的计算
  • 管理问题:
    • 不同的网络所有者希望按照自己的方式管理网络
    • 希望对外隐藏自己网格的细节
    • 希望和其他网络互联

层次路由:将互联网分成一个个AS(路由器区域)

  • 某个区域内的路由器集合,自治系统“autonomounts systems(AS)
  • 一个AS用AS Number(ASN)唯一标识
  • 一个ISP可能包括1个或者多个AS

路由变成了:2个层次路由

  • AS内部路由:在同一个AS内路由器运行相同的路由协议
    • “intra-AS” routing protocol:内部网关协议
    • 不同的AS可能运行着不同的内部网关协议
    • 能够解决规模和管理问题
    • 网管路由器:AS边缘路由器,可以连接到其他AS
  • AS间运行AS间路由协议
    • “inter-AS” routing protocol:外部网关协议
    • 解决AS之间的路由问题,完成AS之间的互联互通

层次路由的优点

解决了规模问题

  • 内部网关协议解决:AS内部数量有限的路由器相互到达的问题,AS内部规模可控
    • 如AS节点太多,可分割AS,使得AS内部的节点数量有限
  • AS之间的路由的规模问题
    • 增加一个AS,对AS之间的路由从总体上来说,只是增加了一个节点=子网(每个AS可以用一个点表示)
    • 对于其他AS来说只是增加了一个表项,就是这个新增的AS如何走的问题
    • 拓展性强:规模增大,性能不会减的太多

解决了管理问题

  • 各个AS可以运行不同的内部网关协议
  • 可以使自己网络的细节不向外透露

互联网AS路由:BGP

BGP:自治区域间路由协议“事实上的”标准

  • “将互联网各个AS粘在一起的胶水”

BGP提供给每个AS以以下方法:

  • eBGP:从相邻的ASes那里获得子网可达信息
  • iBGP:将从获得的子网可达信息传播到AS内部所有的路由器
  • 根据子网可达信息和策略来决定子网的“好”路径

允许子网向互联网其他网络通告“我在这里

基于距离矢量算法(路径矢量)

  • 不仅仅是距离矢量,还包括到达各个目标网络的详细路径(AS序号的列表)能够避免简单DV算法的路由环路问题

eBGP,iBGP连接

在这里插入图片描述

BGP基础

BGP会话:2个BGP路由器在一个半永久的TCP连接上交换BGP报文:

  • 通告向不同目标子网前缀的“路径”(BGP是一个“路径矢量”协议)

在这里插入图片描述

当AS3网管路由器3a向AS2的网管路由器2c通告路径:AS3,X

  • 3a参与AS内路由运算,知道本AS所有子网X信息
  • 语义上:AS3向AS2承诺,它可以向子网X转发数据报
  • 3a是2c关于X的下一跳(next hop)

路径的属性 & 路由

当通告一个子网前缀时,通告包括BGP属性

  • prefix + attributes = “route”

两个重要的属性

  • AS-PATH:前缀的通告所经过的AS列表:AS 67 AS 17
    • 检测环路:多路径选择
    • 在向其他AS转发时,需要将自己的AS号加载路径上
  • NEXT-HOP:从当前AS到下一跳AS有多个链路,在NEXT-HOP属性中,告诉对方通过那个I转发
  • 其他属性:路由偏好指标,如何被插入的属性

基于策略的路由

  • 当一个网关路由器接收到了一个路由器通告,使用输入策略来接受或过滤
    • 过滤原因例子
      • 不想经过某个AS,转发某些前缀的分组
      • 已经有了一条往某前缀的偏好分组
  • 策略也决定了是否向它别的邻居通告接收到的这个路由信息

BGP路径通告

在这里插入图片描述

  • 路由器AS2.2c从AS3.3a接收到的AS3,X路径通告(通过eBGP)
  • 基于AS2的输入策略,AS2.2c决定接收AS3,X的通告,而且(通过iBGP)向AS2的所有路由器进行通告
  • 基于AS2的策略,AS2路由器2a通过eBGP向AS1.1c路由器通告AS2,AS3,X路由信息
    • 路径上加上了AS2自己作为AS序列的一跳

在这里插入图片描述

网关路由器可能获取有关一个子网X的多条路径,从多个eBGP会话上:

  • AS1网关路由器1c从2a学习到路径:AS2,AS3,X
  • AS1网关路由器1c从3a学习到路径:AS3,X
  • 基于策略:AS1路由器1c选择了路径:AS3,X,而且通过iBGP告诉所有AS1内部的路由器

BGP报文

使用TCP协议交换BGP报文
BGP报文:

  • OPEN:打开TCP连接,认证发送方
  • UPDATE:通告新路径(或者撤销原路径)
  • KEEPALIVE:在没有更新的时候保持连接,也用于对OPEN请求确认
  • NOTIFICATION:报告以前消息的错误,也用来关闭连接

BGP、OSPF,转发表表项

路由器是如何设置到这些远程子网前缀的转发表表项的?

在这里插入图片描述

回顾:1a,1b,1c从1c那里通过iBGP学习到了子网X,“到往子网X的要通过1c”
1d:通过OSPF内部网关协议,为了到达1c,必须通过本地接口1

BGP路径选择

路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:

  1. 本地偏好值属性:偏好策略决定
  2. 最短AS-PATH:AS的跳数
  3. 最近的NEXT-HOP路由器:热土豆路由
  4. 附加的判据:使用BGP标识

一个前缀对应着多种路径,采用消除规则直到留下一条路径

热土豆路由

在这里插入图片描述

2d通过iBGP获知,它可以通过2a或者2c到达X
热土豆策略:选择具备最小内部区域的代价的网关作为往X的出口(如:2d选择2a,即使X可能有比较多的AS跳数),不要操心域间的代价

为什么内部网关协议和外部网关协议如此不同

策略

  • Inter-AS:管理员需要控制通信路径,谁在使用它的网络进行数据传输
  • Intra-AS:一个管理者,所以无需策略
    • AS内部的各子网的主机尽可能的利用资源进行快速路由

规模

  • AS间路由必须考虑规模问题,以便支持全网的数据转发
  • AS内部路由规模不是一个大的问题
    • 如果AS太大,可将AS分成小的AS:规模可控
    • AS之间只不过多了一个点而已
    • 或者AS内部路由支持层次性,层次性路由节约了表空间降低了更新的数据流量

性能

  • Inter-AS:策略可能比性能更重要
  • Intra-AS:关注性能

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

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

相关文章

数据结构与算法 双链表的转置

一、实验内容 有一个带头结点的双链表L,设计一个算法将其所有元素逆置,即第一个元素变为最后一个元素,第2个元素变为倒数第2个元素,最后一个元素变为第1个元素。 二、实验步骤 1、dlinklist.cpp 2、reverse.cpp 三、实验结果 四…

JAVA 源码分析Integer的128陷阱

128陷阱介绍及演示 首先什么是128陷阱? Integer包装类两个值大小在-128到127之间时可以判断两个数相等,因为两个会公用同一个对象,返回true, 但是超过这个范围两个数就会不等,因为会变成两个对象,返回fal…

《Vision mamba》论文笔记

原文出处: [2401.09417] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model (arxiv.org) 原文笔记: What: Vision Mamba: Efficient Visual Representation Learning with Bidirectional St…

啥也不会的大学生看过来,这8步就能系统入门stm32单片机???

大家好,今天给大家介绍啥也不会的大学生看过来,这8步就能系统入门stm32单片机,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 对于没有任何基础的大学生来…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

状态模式实战运用

目录 前言 UML plantuml 类图 实战代码 Form State Client 前言 通常一个完整的业务流程中&#xff0c;会经历多个阶段&#xff0c;每个阶段即一个业务状态&#xff0c;不同状态下对应这不同的业务处理逻辑。 无脑堆砌 if else 做判断然后选择对应的业务处理其实也能…

【MySQL】6.MySQL主从复制和读写分离

主从复制 主从复制与读写分离 通常数据库的读/写都在同一个数据库服务器中进行&#xff1b; 但这样在安全性、高可用性和高并发等各个方面无法满足生产环境的实际需求&#xff1b; 因此&#xff0c;通过主从复制的方式同步数据&#xff0c;再通过读写分离提升数据库的并发负载…

Adobe最近推出了Firefly AI的结构参考以及面向品牌的GenStudio

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数据结构七大常见的排序

数据结构七大常见的排序 常见排序算法分类1.插入排序2.希尔排序(缩小增量排序)3.选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序 常见排序算法分类 1.插入排序 基本思想&#xff1a;把待排序的数组按大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的数据插入…

Django 评论楼创建

Django 评论楼创建 【零】最终效果预览 【一】介绍 &#xff08;1&#xff09;情况说明 在Django模型层中有这么个字段 parent models.ForeignKey(toself, on_deletemodels.CASCADE, verbose_name"父评论ID", nullTrue, blankTrue)这个字段是一对多的外键字段 其…

linux中查看内存占用空间

文章目录 linux中查看内存占用空间 linux中查看内存占用空间 使用 df -h 查看磁盘空间 使用 du -sh * 查看每个目录的大小 注意这里是当前目录下的文件大小&#xff0c;查看系统的可以回到根目录 经过查看没有发现任何大的文件夹。 继续下面的步骤 如果您的Linux磁盘已满&a…

快速上手Spring Cloud 十五:与人工智能的智慧交融

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

【scala】使用gradle和scala构建springboot程序

零、版本说明: springboot: 2.7.18 使用log4j2&#xff0c;不使用springboot自带的logback scala版本&#xff1a;2.11 jackson版本&#xff1a;2.16.0 一、依赖&#xff1a; buildscript {dependencies {// using spring-boot-maven-plugin as package toolclasspath("…

FIBEX文件详细解析

文件概况 FIBEX文件是flexray的数据库文件&#xff0c;相当于CAN的DBC。 首先得了解这种文件的架构&#xff0c;就像下图那样&#xff0c;所以本文也是按照这个架构来进行展开讲解。project和PROCESSING-INFORMATION都是次要的&#xff0c;最重要的是ELEMENTS里面的5个元素。…

【Redis教程0x08】详解Redis过期删除策略内存淘汰策略

引言 Redis的过期删除策略和内存淘汰策略是经常被问道的问题&#xff0c;这两个机制都是做删除操作&#xff0c;但是触发的条件和使用的策略是不同的。今天就来深入理解一下这两个策略。 过期删除策略 Redis 是可以对 key 设置过期时间的&#xff0c;因此需要有相应的机制将…

SPDZ基础使用手册(深度学习视角)

基本类型 深度学习中最常使用的便是秘密定点数sfix&#xff0c;有关定点数的高级运算协议请参阅Paper: Secure Computation With Fixed-Point Numbers. 容器类型 SPDZ的深度学习框架主要基于TensorFlow实现&#xff0c;其中使用的容器是张量Tensor&#xff0c;在库中的定义如下…

[LeetCode]516. 最长回文子序列[记忆化搜索解法详解]

最长回文子序列 LeetCode 原题链接 题目 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a…

java回溯算法笔记

回溯算法综述 回溯用于解决你层for循环嵌套问题&#xff0c;且不剪枝的回溯完全等于暴力搜索。 回溯算法模板https://blog.csdn.net/m0_73065928/article/details/137062099?spm1001.2014.3001.5501 组合问题 不能重复使用的组合问题&#xff08;startindex i1&#xff09…

centos7.9安装mysql

1. 概述 官网&#xff1a;https://www.mysql.com/ MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management S…

Kubernetes Gateway API 介绍

Kubernetes Gateway API 诞生背景 在 kubernetes 中&#xff0c;流量的治理主要分为两个部分&#xff1a; 南北向流量东西向流量 南北向流量&#xff08;NORTH-SOUTH traffic&#xff09; 在计算机网络中&#xff0c;南北向流量通常指数据流量从一个**内部网络&#xff08;…