计算机网络-04 网络路由

2023-11-16

第四讲:网络路由

给每次数据传输确定一个端到端的路径,通常是找到两点之间的最小代价路径,保存在路由器的转发表FIB中

基于分布式计算

网络模型用无向图表示,节点是网络设备(路由器),节点间链路是带权重的边,权重即链路开销,可以是延迟、拥塞程度、花销等等

目标是找到两点之间的最小代价转发路径

对于一个单一节点来说,到其他节点的最短路径会构成一个树

路由计算的方法包括集中式方法和分布式方法

集中式方法适用于小规模网络,集中收集拓扑信息,使用最短路径算法计算,并下发给各个节点

分布式方法适用范围更广,包括距离向量算法DV和链路状态算法LS

距离向量算法

基本思想是任何时刻节点都保存到目的节点的已知最优路径开销和下一跳节点,如果不可达则开销用∞表示

初始化只有到相邻节点的开销和下一跳信息

然后转发给邻居节点,邻居收到后计算对比选择更优的开销,并更新自己的路由转发表

本质上是一个分布式的bellman-ford最短路径算法

网络拓扑发生变化时节点检测到相邻链路带宽发生变化,更新自己的转发表并通知邻居

但是存在问题:节点开销增大时会造成更新一直迭代(因为都倾向于选小的,但是小的这时候已经不存在了,相当于选择保留了过时的信息)。开销增大的时候要过很久网络才能稳定下来,在这个过程中会存在路由环路。称为count-to-infinity

解决方法:水平分割和反向抑制

水平分割的方法是节点A不向节点B通告经过节点B的路径(告诉人家干啥啊……人家自己清楚的很),需要等待超时才能稳定(因为A没主动告诉人家B)

反向抑制的方法是节点A告诉节点B“我到C是不可达的,你不要试图经过我到C”(不需要等待超时,是主动告知的)

RIP

路由状态协议,最早的IP路由协议,特点是每一跳的开销都是1,最大跳数小于16

初始化是问邻居节点要当前的路由表副本,周期性是每30秒向邻居节点发自己的路由表副本,触发性是当自己的表发生变化的时候立即通告邻居

链路状态算法

基本思想是每个节点都获得整个网络的完整拓扑,各节点广播扩散拓扑关系,每个节点单独计算到其他节点的最短路径

获得完整网络拓扑的方法

创建链路状态LSP,包括该LSP的节点标识ID(标记这是谁的LSP),邻居节点和对应开销,还有序列号和生存周期

扩散的时候发给邻居,邻居收到以后,如果发现之前没有保存过这个ID的LSP,就存一份,如果之前存过但是新的序列号更大(更新),就存一份,然后更新,继续向外扩散,构成可靠泛洪

最短路径计算

dij算法,在未访问节点中选择离已访问节点最大的那个,最终生成的是一棵最短路径树

LS算法可能存在瞬时环路

RIP改进:OSPF

开放最短路径算法

链路开销可以自定义,比RIP收敛速度更快,适应范围更广

更大规模网络中

区域内每个节点单独计算,区域间节点只知道到其他区域的路由路径,先发到边界路由器再说,别的不管

所以区域间的路径可能不是最短路径(没事

距离向量DV和链路状态LS的对比

消息数目方面,DV是相邻节点之间交换信息,LS是所有节点之间都需要交换信息(可靠泛洪方式交换)

空间开销方面,DV只保存邻居节点,小;LS保存区域网内所有节点,大

收敛速度方面,DV慢,LS快

可扩展性方面,DV差,LS好

路由环路方面,DV会存在count-to-infinity路由环路;LS可能存在瞬时环路

路由协议方面,DV有RIP,BGP;LS有OSPF,IS-IS

域间路由

自治系统AS

单一实体管辖的路由器集合

内部使用内部网关协议和度量标准转发数据包,对外使用外部网关协议将数据包路由到其他AS

每个AS都有自己的标识

不能把域内路由协议直接应用到域间路由协议,因为域内的是性能为导向的,全网同一目标;域间的是策略为导向的,不同的AS目标不同

域间路由的难点:不同AS的度量指标不同,扩展性差,一个AS的错误配置可能导致下游好多AS故障

选距离向量的话,收敛慢,还会有路由环路

选链路状态的话,每个系统度量指标不一样,可能有环路,状态数据库太大,而且还会把自己的路由策略暴露给其他人

BGP边际网关协议

使用的是路径向量而不是距离向量,携带了整个路径的信息

AS在收到通告之后,检查自己在不在这个路径里头,如果在的话就直接扔了,如果不在再把自己加到路径里面,然后通告

这样避免形成环路,而且指标也不需要做全局统一

多连接AS可以:不帮别人转发、全帮别人转发、看情况帮一部分人转发不帮一部分人转发

路由消息交换可以使用TCP,简化了路由协议设计,不需要等着别人的确认,不需要定时更新,连接断开前一直有效,可以批量更新,但是链路负载很高的时候路由协议性能会受影响

路由更新消息包括撤销路由、路径属性、网络层可达信息,同一消息中通告的所有前缀都有相同的路径属性

内部BGP和外部BGP(iBGP和eBGP)

一个AS中的边界网关路由器之间建立连接,学习路由,称为iBGP,这个东西不能再通告其他节点(可能会引起路由环路)

不同AS中的边界网关路由器之间建立连接,学习路由,成为eBGP,这个东西可以通告给其他节点

总结

提供了分层的路由机制(AS内和AS间),有一定可扩展性,是策略决定的路由

路径向量机制(带路径的距离向量)可以快速检测环路,避免暴露自己的策略给其他AS

路由到移动主机

移动主机的ip经常变,但是服务器不知道,还是坚持把东西发到原来的ip,而ip协议假设了主机位置不变,我按照ip发过去了那就是收到了

但是移动用户希望能够不感知到在不同网络的切换,数据传输过程中也不更换ip地址(不然我啥也收不到了)

如果尝试通告新ip地址(告诉对方我变了,让他把数据发到新地址),但这样会有安全问题,攻击者可以冒充移动端发送通告,进行中间人攻击

IP地址的两个职责:标识符(标记我是谁)和定位符(怎么通过路由找到我)

解决方法:假设主机有一个永久的ip地址,称为本机地址,作为identifier,和移动前的网络有相同前缀;移动到新网络后获得一个新的Ip,作为locator,两个地址共存,locater负责接收数据,identifier负责解复用数据

构成

主要包括移动主机、本地代理、外地代理、转交地址和对端主机

移动主机:有一个分配的永久的ip地址,叫本地地址

本地代理:位于移动主机的本地网络,维护本地地址到转交地址的映射

外地代理:在本地代理和移动主机之间转发数据,周期性向外通告,提供转交地址

转交地址:标识移动主机的位置,通常是外地代理的地址,当移动主机加入时,由外地代理提供给本地代理

对端主机:服务器

发送过程
  1. 本地代理截取目标为移动主机的数据

    数据肯定会先到本地代理所在的网络,本地代理模拟移动主机收取数据

  2. 本地代理把这些数据发给外地代理

    本地代理使用转交地址将数据封装,发给外地代理,外地代理剥离封装的IP头,获取原始数据

  3. 外地代理把数据发给移动主机

    外地代理查询原始数据的IP地址,通过MAC地址发送给移动主机

移动端加入过程

告诉外地代理我想加→外地代理向本地代理申请映射,本地代理说可→外地代理告诉移动主机说可→完成

移动主机注册信息

mobility binding table记录移动主机的本地地址和外地代理的转交地址,由本地代理维护;visitor list记录移动主机的本地地址、本地代理的地址、移动主机的MAC地址,由外地代理维护

存在的问题

**三角路由:**绕路问题,因为数据包都是对端主机→本地代理→外地代理→移动端 或 移动端→外地代理→本地代理→对端主机,但有时候移动主机到对端主机比到本地代理还近,绕路了。解决方法是由本地代理告知对端主机,移动端对应的转交地址,让对端主机和外地代理直接通信(跳过本地代理)。

**单点失效:**本地代理坏了就无了。解决方法是多HA机制

主机一直动,频繁向HA注册:解决方法是多个HA协同构成HA组

安全问题balabala

基于拓扑编址的路由机制(联系DCN)

因为编址必须基于拓扑结构,所以可扩展性好,但是拓扑不是静止不变的,所以地址不能永久标识主机身份

主要问题还是那个,IP地址混合了网络地址+主机标识,但主机移动之后IP会发生变化,但网络应用在连接过程中IP又不能变化

扁平化标识

扁平化名字:使用DHT分布式哈希表代替DNS,但还是需要使用基于层次化地址的路由

扁平化地址:避免将名字翻译成地址

ROFL

设计目标:基于扁平化标识的可扩展路由

设计思路:基于DHT/Chord路由,维护到后继节点、指取节点的源路由,使得不需要聚合就可以提供可扩展的网络路由

本质上是一个全局的扁平标识到节点的映射和查找

使用的技术手段:

一致性hash

把一组文件存储到N个节点上,考虑节点的离开和新节点的加入

使用大型稀疏标识空间(比如128位),构成环形:

把文件按名字均匀hash到标识空间,为object_id,把节点也均匀hash到标识空间,为node_id

对于object_id,顺时针遍历,遇到第一个node_id,就把它存到这个节点里

节点加入时后一个节点的内容移到新结点中,节点离开时里面存的东西往后移一个节点

Chord

只支持一种操作:给一个名字,查询独赢的存储节点

分布式、去中心化的名字到节点的查询服务,考虑了节点的离开和加入,能够快速对应名字和节点

可应用于扁平化路由、P2P文件存储定位

所有节点通过后继结点指针形成环形单链表,给定key值,从任一节点开始依次遍历查找节点是否存储key值,只能保证正确但不能保证效率,最坏情况下要找遍历所有N个节点

加速查找:所有节点维护一个指取表,从任一节点开始遍历,如果节点中存储相应key值就结束查找,否则在指取表中找包含对应object_id的区间,跳转到相应的后继节点查找

特性:可证明的正确性和性能,每个节点只需要维护到少数几个节点的路由信息,通过向其他节点发送消息进行迭代/递归查找,当节点加入或离开时更新路由信息

总结

基于扁平化标识而非层次化地址

利用chord技术实现可扩展性较好的路由机制

在新型网络传输范式中有较大优势

需要实现新的标识空间,难以直接替换现有IP架构

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络-04 网络路由 的相关文章

  • 【华为OD机试真题2023 JS】取出尽量少的球

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 取出尽量少的球 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 某部门开展Family Day开放日活动 其中有个从桶里取球的游戏 游戏规则如下 有N个容量一样的小
  • 使用truss、strace或ltrace诊断软件的"疑难杂症"

    作者 李凯斌 2005 01 18 11 03 24 来自 IBM DW中国 进程无法启动 软件运行速度突然变慢 程序的 Segment Fault 等等都是让每个Unix系统用户头痛的问题 本文通过三个实际案例演示如何使用truss st
  • 安卓大作业 图书管理APP

    系列文章 安卓大作业 图书管理APP 文章目录 系列文章 1 背景 2 功能 3 源代码获取 1 背景 本次实验设计的是一个图书管理系统 系统的整体目录如下 2 功能 针对于每个java类或者Activity进行说明 1 Book java
  • 最坏的时刻已经过去,静待重新走向繁荣

    今年三 四 五 六 七月份 每周客户拜访数量一直比较低 期间和客户 友商 用户持续交流 大家普遍感受到今年特别难 难于上青天 可是 我和老家做小老板亲戚朋友沟通 他们的感受没那么明显 只是觉得今年比往年差些 没一二线城市感受那么明显 进入八
  • Cloud Native和微服务

    一 Cloud Native介绍 Cloud Native是Matt Stine提出的一个概念 它是一个思想的集合 包括DevOps 持续交付 Continuous Delivery 微服务 MicroServices 敏捷基础设施 Agi
  • linux实例显示blocked,(11)ceph 告警:1 slow ops, oldest one blocked for

    1 ceph告警提示 1 slow ops oldest one blocked for email protected ceph s cluster id 58a12719 a5ed 4f95 b312 6efd6e34e558 heal

随机推荐

  • Ubuntu与Windows系统之间进行远程访问和文件的传输

    Ubuntu16 04系统之间和ubuntu与Windows10之间进行SSH远程访问和文件互传 一 Ubuntu 系统之间进行文件互传 传输的是文件夹 传输的是文件 二 ubuntu与Windows10之间进行SSH远程访问和文件互传 补
  • bugku 文件包含2

    页面很正常 url里面有一个file参数 看一下源码 有一个upload php看一下 文件上传 题目是文件包含 就想到了前面做的的上传图片马 用文件包含连接 试一试 不知到哪里出问题了 看一下上传的内容
  • python 美国总统身高统计与分析

    美国总统身高统计与分析 1 安装依赖 2 下载数据集 3 数据处理 4 结果展示 1 安装依赖 pip install pandas pip install numpy pip install matplotlib 2 下载数据集 链接 h
  • PHICOMM路由器无线扩展的设置方法(吐槽一下)

    家里使用的是电信宽带 电信光纤猫有两个网口 网口1直连家里的电视 网口2连接了一部TPLINK路由器 设置了无线wifi 供家里的手机使用wifi 最近在卧室新增了一台台式电脑 用来在家里业余时间学习的 从客厅到卧室距离不长 但是因为家里面
  • 了解以及区分物理机,虚拟机(hypervisor/VMM) 和 容器(Docker)的适用场景

    了解以及区分物理机 虚拟机hypervisor VMM 和 容器Docker的适用场景 Abbreviations 物理机和虚拟机以及容器的区别 动机motivation 为什么要有虚拟机 物理机 虚拟机 容器 虚拟机的种类以及他们的本质区
  • 【Eigen】基本和常用函数

    文章目录 简介 找不到头文件 Eigen 中矩阵的定义 Eigen 中矩阵的使用方法 Eigen 中常用矩阵生成 Eigen 中矩阵分块 Eigen 中矩阵元素交换 Eigen 中矩阵转置 Eigen 中矩阵乘积 Eigen 中矩阵元素操作
  • Selenium自动化测试 —— 通过cookie绕过验证码的操作!

    验证码的处理 对于web应用 很多地方比如登录 发帖都需要输入验证码 类型也多种多样 登录 核心操作过程中 系统会产生随机的验证码图片 进行验证才能进行后续操作 解决验证码的方法如下 1 开发做个万能验证码 推荐 2 测试环境关闭验证码功能
  • Appium+Python自动化测试(一)--环境搭建

    Appium简介 Appium是一个自动化测试开源工具 支持IOS和Android平台上的移动原生应用 移动Web应用和混合应用 所谓的 移动原生应用 是指那些用IOS或者Android SDK写的应用 所谓的 移动Web应用 是指使用移动
  • VulnHub_Jangow: 1.0.1

    本文内容涉及程序 技术原理可能带有攻击性 仅用于安全研究和教学使用 务必在模拟环境下进行实验 请勿将其用于其他用途 因此造成的后果自行承担 如有违反国家法律则自行承担全部法律责任 与作者及分享者无关 主机信息 kali 192 168 31
  • Mysql超时重连解决方案3: 配置c3p0连接池(终极方案)

    前面的文章中 我介绍了修改mysql默认超时时间和配置proxool连接池的方法来解决Mysql超时重连的问题 方案1不推荐 它并没有从根本上解决问题 方案2可用 但配置相对复杂 所有才有了方案3 它既解决了关键问题 并且配置简单易懂 c3
  • Retrofit源码解析三——对接口方法参数注解的处理

    private Nullable ParameterHandler result null if annotations null for Annotation annotation annotations 核心就是这一句 实际上就是把前面
  • Firefox意外的服务器响应,WebSockets的无法解决的“意外地得到了延续帧”错误(Websockets unresolva...

    我知道了 事实证明 我当初采用的代码放在一个NULL字符后的握手响应报头的新行后 我没有注意到这一点 它看起来像一个 浏览器移动所有所接收的WebSocket消息通过离开单个NULL字符在前一次的认证响应被处理的字符缓冲区 以及b 这不是一
  • 2020美赛E题解题思路方法:淹溺在塑料中

    自20世纪50年代以来 由于塑料的用途多种多样 如食品包装 消费品 医疗器械和建筑等 塑料制造业呈指数级增长 虽然有显著的好处 但与塑料产量增加有关的负面影响也受到关注 塑料制品不易分解 难以处理 只有大约9 的塑料被回收利用 1 每年大约
  • Git命令参考手册

    git init 初始化本地git仓库 创建新仓库 git config global user name xxx 配置用户名 git config global user email xxx xxx com 配置邮件 git config
  • [NOIP1998 普及组] 阶乘之和

    题目描述 用高精度计算出 S 1 2 3 n n 50 其中 表示阶乘 定义为 n n n 1 n 2 1 例如 5 5 4 3 2 1 120 输入格式 一个正整数 n 输出格式 一个正整数 S 表示计算结果 输入输出样例 输入 1 3
  • 华为机试题:HJ107 求解立方根(python)

    文章目录 1 题目描述 2 Python3实现 3 知识点详解 1 input 获取控制台 任意形式 的输入 输出均为字符串类型 1 1 input 与 list input 的区别 及其相互转换方法 2 print 打印输出 3 whil
  • MyBatis中Like模糊查询的几种写法和注意点

    目录 友情提醒 第一章 Mybatis中SQL语句的模糊查询 1 1 第一种方式 直接双引号拼接 1 2 第二种方式 数据库为MySQL时用CONCAT 函数 1 3 第三种方式 bind元素 友情提醒 先看文章目录 大致了解知识点结构 直
  • spring cloud alibaba 学习(三)Nacos-NacosNamingService初始化流程

    1 NacosServiceManager 的创建 Configuration proxyBeanMethods false ConditionalOnDiscoveryEnabled ConditionalOnNacosDiscovery
  • linux shell脚本

    微信可以设置雪花昵称了 真漂亮 一 Shell中有许多预定义的特殊字符 n n是一个数字 大于10则用大括号括起来 12 代表程序的第n个参数 总共有多少个参数 指所有的参数 指所有的参数 上次命令执行的返回值 注意 我们发现 和 的意思是
  • 计算机网络-04 网络路由

    第四讲 网络路由 给每次数据传输确定一个端到端的路径 通常是找到两点之间的最小代价路径 保存在路由器的转发表FIB中 基于分布式计算 网络模型用无向图表示 节点是网络设备 路由器 节点间链路是带权重的边 权重即链路开销 可以是延迟 拥塞程度