计算机网络自顶向下方法第四章笔记

前言:适逢期中考。。。。
本文参考自很多文章、课本、PPT等(其实仔细观察你会发现很多文字甚至图片都是一致的),如有雷同,纯属不巧合(抱拳)


四、网络层

4.1 概述

4.1.1 转发和路由选择

  • 网络层的作用:将分组从一台发送主机移动到一台接收主机。需要两种功能:
    • 转发:当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路
    • 路由选择:分组从发送方流向接收方时,网络层必须决定这些分组采用的路由或路径,路由选择算法
    • 转发是路由器本地动作,路由选择是网络范围过程。比如开车从北京到上海,转发相当于在某个路口选择某一条岔路,路由选择相当于规划从北京到上海所有线路的过程
  • 每台路由都有一张转发表。路由器检查分组首部字段值(可能是目的地址或所属连接,看网络层协议)来转发分组,使用该值在转发表索引查询。该值指出了该分组将被转发的路由器输出链路接口
  • 路由选择算法决定了插入路由器转发表中的值。路由器接收路由选择协议报文,来配置转发表。有两种算法:
    • 集中式
    • 分布式
  • 分组交换机:指一台通用分组交换设备,根据分组首部字段值从输入链路接口转移分组到输出链路接口。
    • 链路层交换机:基于链路层字段中的值做转发决定
    • 路由器:基于网络层字段值做转发决定
  • 连接建立:某些网络结构(ATM、帧中继、MPLS)除了转发和路由选择功能,还有连接建立功能。要求从源到目的地沿着所选择路径彼此握手,建立连接

4.1.2 网络服务模型

  • 定义了分组在发送与接收端系统之间的端到端运输特性
  • 网络层可以提供的服务(注意IP并没有这些服务!):
    • 运输层向网络层传递分组时:
      • 确保交付
      • 具有时延上界的确保交付
    • 为给定源和目的地之间的分组流提供服务:
      • 有序分组交付
      • 确保最小带宽:模仿发送方和接收方之间一条特定比特率传输链路的行为。发送速率低于该速率,分组不会丢失,且会在预定时延内到达
      • 确保最大时延抖动:确保发送方两个相继分组之间的时间 = 目的地接收到它们之间的时间
      • 安全性服务:使用仅由源和目的地主机知晓的密钥,加密数据报,源加密,目的主机解密。此外还有数据完整性和源鉴别服务
  • 因特网的网络层IP协议提供单一服务,尽力而为服务,无带宽保证,无丢包保证,无顺序保证,不定时,无拥塞指示

4.2虚电路和数据报网络

仅在网络层提供连接服务的计算机网络成为虚电路;仅在网络层提供无连接服务的计算机网络称为数据报网络

4.2.1 虚电路网络

  • 包括ATM、帧中继的体系结构是虚电路网络,在网络层使用连接。IP是数据报网络
  • 虚电路组成:
    • 源和目的主机之间的路径,一系列链路和路由器
    • VC号,该路径每段链路一个号码,属于一条虚电路的分组首部有VC号
    • 该路径每台路由器转发表表项。当跨越一台路由器创建一条虚电路时,转发表增加一个新表项,终止将会删除
  • 一条虚电路每条链路上可能有不同VC号,每台路由器必须用一个新的VC号更新每个分组的VC号(which can get from the forwarding tables)也就是一个分组经过一台路由器,首部VC号可能就变了,原因:
    • 逐链路代替该号码减少了分组首部VC字段长度
    • 大大简化虚电路建立。如果要求一个VC号,创建虚电路时路由器需要交换处理大量报文来约定VC号
  • 虚电路网络中的路由器必须为进行中的连接维护连接状态信息。创建一个连接,转发表加一项,释放一个连接,转发表删一项。该信息将VC号与输出接口号联系起来
  • 虚电路3个阶段:
    • 虚电路建立
      • 发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路
      • 网络层决定发送方和接收方之间的路径,即虚电路要通过一系列链路和路由器,为每条链路设置vc号
      • 网络层在路径上每台路由器的转发表增加一个表项
    • 数据传送
      • 发起呼叫—>入呼叫—>接收呼叫—>呼叫连接—>数据流开始—>接收数据
    • 虚电路拆除
      • 网络层通知网络另一侧端系统结束呼叫,更新删除路由器上转发表项以表明虚电路不存在(说明路由器转发表项是虚电路的物理体现)
  • 信令报文
    • 端系统向网络发送指示 虚电路启动与终止的报文
    • 路由器之间传递的用于建立虚电路(修改路由器表中的连接状态)的报文

4.2.2 数据报网络

  • 每当端系统要发送分组,为分组加上目的地地址,推进网络。
  • 分组从源到目的地传输,通过一系列路由器传递,每台都使用分组的目的地址转发该分组
    • 每个路由器有转发表,将目的地址映射到输出链路接口,路由器将分组向该接口转发
  • 目的地址(其实就是IP地址)32bit,转发表不可能对每个目的地址有一个表项,因此,路由器用分组的目的地址的前缀与表项进行匹配。当有多个匹配时,使用最长前缀匹配规则。
  • 数据包网络中路由器不维持连接状态信息,但是维护了转发状态信息。实际上每1-5分钟,路由选择算法更新一次转发表

4.2.3 虚电路和数据报网络的由来

  • 虚电路来源于电话界(真电路)
  • 端系统设备复杂,网络层服务模型应尽可能简单,复杂功能在更高级实现(按序、可靠数据传输、拥塞控制等)
    • 因为简单,所以互联各种链路(卫星、以太网、光纤、无线)和丢包特性的网络变得容易
    • 增加一个新服务器只需连接一台主机到网络,定义一个新的应用层协议即可,使得Web之类的新服务很快在因特网部署

4.3 路由器工作原理

  • 路由器的组成部分
    • 输入端口:
      • 执行将一条输入的物理链路与路由器相连接的物理层功能
      • 执行与位于入链路远端的数据链路层交互的数据链路层功能
      • 查找功能,查询转发表决定路由器的输出端口,将分组转发到输出端口
    • 交换结构
      • 将路由器的输入端口与输出端口相连
      • 分组通过交换结构转发到输出端口
    • 输出端口
      • 存储从交换结构接收的分组,执行必要的链路层和物理层功能在输入链路上传输这些分组。
      • 当链路是双向的时,输出端口与输入端口在同一线路卡成对出现
    • 路由选择处理器
      • 执行路由选择协议
      • 维护路由选择表、连接的链路状态信息,为路由器计算转发表
      • 网络管理
    • 路由转发平面
      • 一台路由器的输入端口、输出端口和交换结构共同实现了转发功能,并且用硬件实现(软件太慢,需以纳秒时间尺度运行)
    • 路由控制平面
      • 路由器的控制功能(执行路由选择协议、对上线或者下线链路进行响应、管理功能),在毫秒时间尺度上运行,用软件实现并在选择处理器上执行(一种cpu)

4.3.1 输入端口

  • 线路端接
  • 数据链路处理(协议、拆封)
  • 查找
    • 查找必须在纳秒级别执行,不仅要用硬件执行查找,而且要对大型转发表使用快速查找算法,而且需要更快的内存访问速度(DRAM、SRAM)。
    • 三态内容可寻址存储器TCAM常被用于查找。使用TCAM,一个32bit的IP地址放入内存,TCAM在基本常数时间内返回转发表项内容
  • 转发
    • 转发表由路由选择处理器计算和更新,从路由选择处理器经过独立总线复制到(输入)线路卡
    • 有了转发表副本,转发决策能在每个输入端口本地做出,无须调动路由选择处理器,避免集中式处理
  • 排队
    • 查找确定了某分组输出端口,分组就能发送进入交换结构。一个被阻塞的分组必须在输入端口处排队

4.3.2 交换结构

  • 通过交换结构,分组才能实际地从一个输入端口交换(转发)到一个输出端口中
  • 三种交换方式:
    • 经内存交换
      • 一个分组到达输入端口时,该端口会先通过中断方式向路由选择处理器发出信号
      • 分组从输入端口复制到处理器内存中(现代路由器查找交换进内存,是由输入线路卡处理的)
      • 早期路由选择处理器从首部提取目的地址,在转发表查找输出端口,将分组复制到输出端口
    • 经总线交换
      • 输入端口经一根共享总线将分组直接传送到输出端口,无需路由选择处理器的干预
      • 路由器的交换带宽受总线速率限制
    • 经互联网络交换
      • 纵横式交换机,2N条总线组成网络,连接N各输入端口和N个输出端口
      • 每条垂直的总线与每条水平的总线交叉,交叉点通过交换结构控制器开启闭合
      • 某分组到达端口A,需要转发到Y,交换机控制器闭合总线A和Y的交叉点,A在其总线上发送分组,仅由Y接收;同时B也能发分组到X,因为没有公用总线。纵横式网络能并行转发多个分组

4.3.3 输出端口

  • 排队(缓存管理)
  • 数据链路处理(协议、拆封)
  • 线路端接

4.3.4 何处出现排队

  • 输入、输出端口都能形成分组队列,取决于流量负载、交换结构
  • 随着队列增长,路由器缓存空间会耗尽,出现丢包
  • 需要路由器缓存吸收流量负载波动,需要多少缓存?
    • 少量TCP流:RTT * C(链路容量)
    • 大量TCP流:RTT* C/ (N^1/2)
  • 输出端口排队,需要分组调度程序选出一个分组发送。提供服务质量保证
  • 主动队列管理:
    • 缓存填满前丢弃(或首部加个标记)一个分组,向发送方提供一个拥塞信号
    • 随机早期检测算法:平均队列长度在某个范围内时,以某种概率被丢弃/标记
  • 线路前部阻塞

4.3.5 路由选择控制平面

  • 网络范围的路由选择控制平面是分布式的,即不同部分(如路由选择算法)执行在不同的路由器上,并且通过彼此发送控制报文进行交互

4.4 网际协议(IP):因特网中的转发和编址

  • 网络层三个组件
    • IP协议
    • 路由选择协议
    • 控制报文协议(ICMP):报告数据报中的差错、对某些网络层信息请求进行响应的设施

4.4.1 数据报格式

  • 版本号(IPv4、IPv6):不同版本对数据报不同解释
  • 首部长度:数据报可包含可变数量的选项。不过大部分没有,首部固定20字节
  • 服务类型:区分不同类型的IP数据报
  • 数据报长度:首部+数据的长度。该字段16bit,然而一般数据报很少超过1500字节
  • 标识、标志、片偏移:IP分片相关。不过IPv6不允许在路由器上对分组分片
  • 寿命TTL:确保数据报不会永远在网络中循环。每被一个路由器处理时,值-1。若值减到0,丢弃数据报
  • 协议号:到达最终目的地才有用,指示了IP数据报的数据部分应该交给哪个运输层协议。如6交给TCP,如17交给UDP
    • 协议号是将网络层与运输层绑定到一起的粘合剂;端口号是将运输层和应用层绑定的粘合剂
  • 首部检验和:帮忙路由器检测收到IP数据报中首部的比特错误,有错一般丢弃
  • 源和目的IP地址:源主机通过DNS查找目的地址
  • 选项:IPv6已抛弃选项字段
  • 数据(有效载荷):包含运输层报文段(TCP或UDP),或ICMP报文段
  • 一个IP数据报有长为20的首部,如果数据报承载一个TCP报文段,则每个无分片数据报承载总长40的首部(还有TCP的20)以及应用层报文
  • IP数据报分片
    • 并不是所有链路层协议都能承载相同长度的网络层分组,如以太网帧能承载不超过1500字节的数据,某些广域网链路帧不超过576字节
      • 一个链路层帧承载的最大数据量:最大传送单元MTU
      • 限制了IP数据报的长度,且发送方与目的路径上的每段链路可能使用不同的链路层协议,有不同的MTU
      • 将IP数据报中的数据分片成多个较小的IP数据报,用单独的链路层帧封装这些小IP数据报,每个小数据报叫片
      • 数据报的重新组装放在端系统中,而不是路由器中
  • 标识、标志、片偏移字段,帮助主机执行重组任务
    • 一个4000字节的数据报(20+3980)到达一台路由器,转发到一条MTU为1500子节的链路上。必须分配3个独立的片,假设初始数据报的标识号是777,则前两片字节都为20+1480,第三层为20+1020
  • 安全
    • 分片被用于Dos攻击,如Jolt2,攻击者向目标主机发送小片的流,没有一个片的偏移量是0,目标试图重组时可能会崩溃
    • 发送交迭偏移量的IP片,不能被适当排列,可能会崩溃
    • IPv6废除了分片,简化了IP分组的处理

4.4.2 IPV4编址

  • 主机与路由器连入网络的方法
    • 一台主机通常只有一条链路连接到网络,主机IP发送数据报从该链路发送
    • 主机与物理链路的边界叫接口,一台路由器有多个接口
    • IP要求每台主机和路由器都有自己的IP地址,因此一个IP地址实际上是与每一个接口相关联的
  • 每个IP地址长度32bit(4字节),总共2^32个可能的IP地址,约40亿个
    • 点分十进制记法,如193.32.216.9
  • 一个接口的IP地址的一部分需要由其连接的子网决定
    • 如互联3个主机接口与1个路由器接口的网络形成一个子网,IP编址为这个子网分配一个地址:223.1.1.0/24,/24记法称为子网掩码,指示了32bit中的最左侧24bit定义了子网地址
    • 为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点,这些隔离的网络中每一个都叫做一个子网
  • 因特网地址分配策略:无类别域间路由选择CDIR
    • a.b.c.d/x的地址的x最高比特构成IP地址的网络部分,称为该地址的前缀,一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。BGP路由选择协议中,该组织网络外的路由器仅考虑x,减少了转发表的长度,因为形式为a.b.c.d/x单一表项足以将数据报转发到该组织内的任何目的地
  • 地址聚合(路由聚合):使用单个网络前缀通告多个网络的能力
    • 一个ISP将8个组织连接到因特网。该ISP向外界通告:向我发送以200.23.16.0/20开始的任何内容。外部无需知道在该地址块内还有8个其他组织,每个组织有自己的子网
  • 一个地址的剩余32-x比特可认为是用于区分该组织内部设备的。组织内部路由器转发分组时,才会考虑这些比特
  • 在CDIR出现之前,采用分类编址,A、B、C类网络,分别具有8、16、24比特子网地址
    • C类(/24)仅能容纳2^8-2=254台主机(其中两个用于特殊用途)
    • B类(/16)支持65534台主机,一个组织分配一个B类地址却只用2000个接口,造成巨大浪费
    • A类
  • IP广播地址
    • 当一台主机发出目的地址为255.255.255.255的数据报时,报文会交付给同一个网络的所有主机,可用于DHCP发现报文的发送,广播最小生成树
  • 如何获取地址、分配地址?
    • 获取一块地址
      • 子网获取IP地址:由ISP从它大块地址中分配
      • ISP获取IP地址:IP地址由因特网名字和编号分配机构ICANN管理(也管理DNS根服务器、AS标识号)。ICANN向区域性因特网注册机构分配地址,处理本地域内的地址分配/管理
    • 获取主机地址
      • 组织获得一块地址,就可为组织内的主机、路由器接口逐个分配IP地址
      • 主机地址能手动配置,也能自动配置,即动态主机配置协议DHCP
    • 动态主机配置协议DHCP
      • DHCP允许主机自动获取一个IP地址
      • DHCP可配置,可以使主机每次连网获得相同IP地址,也可每次分配一个临时IP地址(比如ISP给你家分配了一个IP地址,你想多台主机同时连网时,需要配置路由器。一般电信这种会给你家分配临时IP地址,这样节省IP地址。也有的每次连接都是固定地址比如公寓的ISP,这时需要手动在路由器设置里输入,可以ipconfig查看)
      • DHCP还允许主机查看子网掩码、默认网关(第一跳路由器地址)、本地DNS服务器地址
      • DHCP能将主机连接进一个网络的自动能力,常被称为即插即用协议
      • DHCP是一个客户-服务器协议。新来的主机要获得自使用的IP地址等网络配置信息
        • 每个子网都有一台DHCP服务器
        • 若子网没有DHCP服务器,则由一个路由器做DHCP中继代理,该代理知道该网络的DHCP服务器地址
      • 新主机到来时,DHCP协议的四个步骤
        1. DHCP服务器发现
          • 新到的客户通过广播DHCP发现报文,发现一个要与其交互的DHCP服务器
          • 客户在UDP分组中向端口67发送该发现报文,此时必须用广播地址255.255.255.255,源地址是0.0.0.0
        2. DHCP服务器提供
          • DHCP收到DHCP发现报文后,响应一个DHCP提供报文,仍然使用广播地址,因为此时新客户并没有IP地址
          • 可能有多台DHCP服务器,每台服务器提供的报文中,有向客户主机推荐的IP地址、网络掩码以及IP地址租用期(一般几天或几小时)
        3. DHCP请求
          • 客户从提供中选一个,向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数
        4. DHCP ACK
          • 收到DHCP请求报文后,用DHCP ACK报文对其记性响应,证实所传参数
      • 客户收到ACK后,交互完成,在租期内使用DHCP分配的IP地址。DHCP提供了机制允许客户更新对一个IP地址的租用
  • 网络地址转换NAT
    • 当ISP已经为SOHO网络当前地址范围分配过一块连续地址,而SOHO内主机越来也多时,需要用到NAT(比如电信给你家分配一个动态IP地址,家里要好几台手机电脑联网用一个IP地址,需要用NAT)
    • NAT使能路由器
      • NAT路由器对外界来看像一个具有单一IP地址的单一设备。例如,家里有一个NAT使能路由器,其IP地址138.76.29.7,且进入和离开家庭的报文都有同样的该地址
      • NAT路由器对外隐藏了家庭网络的细节
      • NAT路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的主机提供地址
      • NAT转换表:
        • 如WAN端 138.76.29.7 ,5001 —》 LAN端 10.0.0.1,3345
        • 端口号和IP地址用于路由器将分组转发给特定的内部主机(比如家里的某个手机)
    • NAT重要问题:
      • 违反各种原则,应该用IPv6来改进
      • 妨碍P2P应用程序,包括P2P共享和语音。一个对等方在NAT后面,不能充当服务器并接受TCP连接,其解决办法是连接反转
        • 连接反转:A通过C与B联系,C不位于NAT之后并与B建立了TCP连接,已经被很多P2P应用用于NAT穿越
        • 若对等方A和B都在NAT之后,使用应用程序进行中继处理,如Skype中继
  • UPnP
    • NAT穿越由通用即插即用(UPnP)提供
    • UPnP是一种允许主机发现并配置邻接NAT的协议,要求主机和NAT都是UPnP兼容
    • 使用UPnP,在主机上运行的应用程序能为某些请求的公共端口号请求一个NAT映射(专用IP地址,专用端口号 — 公共IP地址,公共端口号)。如果某NAT接收请求并生成映射,来自外部的结点能发起到(公共IP地址,公共端口号)的TCP连接

4.4.3 因特网控制报文协议ICMP

  • ICMP被主机和路由器用来沟通网络层信息,如差错报告
    • 如『目的网络不可到达』这种错误是在ICMP产生的,IP路由器找不到路径通往指定主机,该路由器就向发送主机发出ICMP报文指示错误
  • ICMP报文结构
    • 类型字段
    • 编码字段
    • 引起ICMP的IP数据包首部和前8字节(让发送方确定是哪个报文出错)
  • ping:发送一个ICMP类型8编码0(回显请求)的报文到指定主机,目的主机发回一个类型0编码0(回显回答)的报文
  • 源抑制报文:拥塞的路由器向主机发送,强制主机减小发送速率。TCP在运输层有拥塞控制机制,不需要该报文的信息了
  • Traceroute:如何跟踪从一台主机到世界上任意一台主机之间的路由?
    • 原理:IP协议规定,路由器收到TTL为0的数据报会将其丢弃,然后发送一个ICMP告警报文给源主机,which concludes the name and IP address of it
    • 方法:发送TTL为1~n的一系列IP数据报。当到达目的主机时,返回一个端口不可达(数据报携带了不可达UDP端口号)的ICMP报文,则结束探测
    • 安全性
      • 遭遇安全问题:若知道你网络IP地址范围,很方便发送IP数据报记性寻址,包括用ping搜索和端口扫描形成你的网络图,用恶意分组使主机崩溃,用ICMP分组洪泛服务器,分组中带恶意软件感染主机等等
    • 解决方法:
      • 防火墙
        • 大部分接入路由器有此功能,检查数据报和报文段首部字段,拒绝可疑数据报进入内部网络
        • 如防火墙可配置为阻挡所有ICMP回显请求分组,也可基于源和目的IP地址、端口号阻挡分组
        • 可配置为跟踪TCP连接,仅允许批准连接的数据报进入内部
      • 入侵检测系统IDS
        • 位于网络边界,执行深度分组检查,不仅检查数据报,也检查有效载荷
        • 具有分组特征数据库,有新攻击就更新(类似杀毒软件病毒库)

4.4.4 IPv6

  • IPv4地址耗尽,也可升级强化IPv4某些方面
  • IPv6数据报格式(不一样的地方)
    • 扩大的地址容量
      • 32bit —> 128bit
      • 除了单播多播地址,引入任播地址,使数据报交付给一组主机中的任意一个
    • 简化高效的40字节首部
    • 流标签与优先级
      • 如音频流、视频流、高优先级用户承载的流量
    • 分片/重组
      • 只能在源与目的地进行
    • 选项
      • 放到了『下一个首部』位置,使得IP首部定长40字节
  • IPv4到IPv6的迁移
    • 双栈:同时使用IPv4和IPv6,这种结点有两种地址。DNS可解析两种地址

4.4.5 涉足IP安全性

  • 新型网络层协议:IPsec(如果你是Mac OS,网络设置中添加VPN服务时你会看到)
    • 在VPN(虚拟专用网)中部署
    • 两台主机要通信,IPsec只需在两台主机中可用,其他主机和路由器继续用普通的IPv4
    • 两台主机首先创建IPsec会话(面向连接的),在两台主机发送的TCP和UDP报文段都享受IPsec的安全性服务

4.5 路由选择算法

  • 路由选择:确定从发送方到接收方通过路由器网络的好路径
  • 主机通常直接与一台路由器相连,该路由器即为该主机的默认路由器或第一跳路由器
    • 源主机默认路由器称为源路由器,目的主机默认路由器称为目的路由器
    • 一个分组从源主机到目的主机 == 从源路由器到目的路由器
  • 路由选择算法:给定一组路由器和连接路由器的链路,路由选择算法找到一条源路由器到目的路由器好的路径(最低费用),如最短路径算法(图)
    • 第一种分类方法:
      • 全局式路由选择算法
        • 用完整、全局性的网络信息计算出最短路径(最低费用路径)
        • practically具有全局状态信息的算法称作链路状态算法(LS)
      • 分散式路由选择算法
        • 迭代、分布式的方式计算最短路径
        • 没有结点拥有关于网络链路的完整信息,每个结点仅有与其直接相连链路的信息即可工作
        • 通过迭代计算并与相邻结点交换信息,逐渐计算出最低费用路径,距离向量算法(DV)
    • 第二种分类方法:
      • 静态路由选择算法
        • 变化缓慢,通常人工干预
      • 动态路由选择算法
        • 网络流量负载或拓扑发生变化时改变路由选择路径
        • 周期性运行或直接响应变化
        • 也容易受路由选择循环、路由震荡等问题的影响
    • 第三种分类方法:
      • 负载敏感算法
        • 链路费用动态变化来反映链路拥塞水平
      • 负载迟钝算法
        • 链路费用与拥塞无关,当今因特网路由选择算法基本都是迟钝的

4.5.1 链路状态路由选择算法LS

  • 网络拓扑和所有链路费用已知。实践中是由每个节点向网络其他所有节点广播链路状态分组完成的,例如OSPF路由选择协议,由链路状态广播算法完成
  • 所有节点都具有该网络的信息,每个节点运行LS算法
  • Dijkstra算法
  • 会产生路由震荡,可以让每台路由器发送链路通告的时间随机化

4.5.2 距离向量路由算法DV

  • 迭代、异步、分布式
    • 分布式:每个结点要从一个或多个直接相连邻居接收某些信息,计算,将计算结果发给邻居
    • 迭代:过程持续到邻居之间无更多信息交换
    • 异步:不要求所有节点相互步伐一致操作
  • DV算法
    • Bellman-Ford方程
    • 无更新报文发送,不会出现进一步路由选择表计算,算法进入静止状态。直到一条链路费用发生改变
  • 链路费用改变与链路故障
    • 路由选择环路,无穷计数问题
  • 增加毒性逆转
    • 欺骗费用无穷大
    • 解决两个直接相连无穷计数问题,更多结点环路无法解决
  • LS与DV路由选择算法的比较
    • 报文复杂性
      • 显然LS复杂得多,每条链路费用改变都要通知所有结点
    • 收敛速度
      • DV算法收敛较慢,且会遇到路由选择环路和无穷计数问题
    • 健壮性
      • 路由器发生故障,LS结点仅计算自己的转发表,提供了一定健壮性
      • DV算法一个 不正确的结点会扩散到整个网络
  • 其他路由选择算法
    • LS、DV基本上是当前因特网实践中使用的仅有的两种路由选择算法
    • 很多种新型算法,一种是基于将分组流量看做网络中源和目的之间的流
    • 电路交换路由选择算法也有参考价值

4.5.3 层次路由选择

  • 问题
    • 规模。当路由器数目变得很大,算法开销高的不可实现如LS更新链路费用
    • 管理自治。一个组织应该当按自己愿望运行管理其网络
  • 解决方法:将路由器组织进自治系统AS
    • 每个AS由一组处在相同管理控制下的路由器组成(如相同的ISP运营)
    • 相同AS中路由器全部运行同样的路由选择算法,叫做自治系统内部路由选择协议
    • 一个AS内一台或多台路由器负责向本AS之外的目的地转发分组,这些路由器称为网关路由器当有多台网关路由器,需要用到自制系统间路由选择协议来配置转发表
      • 因特网中所有AS中都运行相同的AS间路由选择协议BGP4
  • 某AS非网关路由器对转发表增加用于子网x(该AS外)的表项采取的动作:
    1. 从AS间协议知道经多个网关可达子网x
    2. 使用AS内部协议的路由选择信息,决定到每个网关的最低费用路径的费用
    3. 热土豆路由选择:选择具有最小的最低费用的网关
    4. 从转发表确定最低费用网关接口I,将(x,I)添加到转发表中
  • 如果AS从一个相邻AS处知道一个目的地,该AS能向它某些其他相邻AS通告该路由选择信息
  • 一个ISP可能分为多个互联的AS

4.6 因特网中的路由选择

  • AS内部路由选择协议,又称内部网关协议
    • 路由选择信息协议RIP,通常设置在下层ISP中
    • 开放最短优先OSPF,通常设置在上层ISP中

4.6.1 AS(自治系统)内部的路由选择:RIP(DV思想)

  • 是一种距离向量协议,使用跳数作为其费用测度
    • 跳:沿着源路由器到目的子网(包括)的最短路径经过的子网数量
    • 一条路径的最大费用限制为15,因此RIP使用限制在网络直径不超过15跳的自治系统内
  • 路由选择更新信息在邻居之间通过使用RIP响应报文(RIP通告)来交换,大约每30s交换一次
    • 一台路由器或主机发出的响应报文包含了该AS内多达25个目的子网的列表,以及发送方到每个子网的距离
    • 每台路由器维护一张称为路由选择表的RIP表,包括该路由器的距离向量和转发表(目的子网,下一台路由器,到目的地跳数)
    • 路由器收到通告后,将通告与路由选择表合并,记下更短路径(DV算法还在收敛,或者新的链路加入AS)
    • 一台路由器超过180s没有从邻居听到报文,该邻居要么死记要么链路中断
      • RIP可以修改本地路由选择表,向活着的邻居发送RIP通告
      • 也可以使用RIP请求报文请求邻居到目的地的费用
  • RIP被当做一个应用进程来实现,能在一个标准socket上发送个接收报文,并且使用一个标准的运输层协议
    • 路由器在UDP上用端口520相互发送RIP请求/响应报文。意思是RIP使用一个运输层协议实现网络层功能

4.6.2 AS内部的路由选择:OSPF(LS思想)

  • OSPF和其兄弟IS-IS通常设置在上层ISP中,RIP在下层ISP和企业网中
  • OSPF核心:使用洪泛链路状态信息的LS协议 + Dijkstra最低费用路径算法。各条链路费用(权值)是管理员配置的
  • 使用OSPF,一台路由器构建了整个AS的拓扑图,然后在本地运行Dijkstra算法
  • 使用OSPF,路由器向AS内所有其他路由器广播路由选择信息。即使链路未发生变化,也要周期性广播链路状态(at least 30 minutes at a time)
  • 优点:
    • 安全:能够鉴别OSPF路由器之间的交换,仅有受信任的路由器能参与AS内的OSPF协议。包括使用MD5加密
    • 多条相同费用路径:无需仅选择单一路径承载所有流量
    • 支持单播多播路由选择
    • 支持在单个路由选择域内的层次结构:具有按层次结构构造一个自治系统的能力
  • 一个OSPF AS可以配置成多个区域,每个区域运行自己的OSPF LS算法,一个区域内每台路由器可以向该区域其他路由器广播链路状态
    • 一个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择
    • AS内只有一个OSPF区域配置成主干区域,为其他区域之间的流量提供路由选择。该主干包含AS内所有区域边界路由器,也可能包含一些非边界路由器
    • 某区域内分组—》区域边界路由器—》主干—》目的区域边界路由器—》目的地

4.6.3 AS间的路由选择:BGP

  • BGP:边界网关协议,跨越多个AS的源和目的对之间确定路径,现在用的BGP4
  • BGP为AS提供:
    • 从相邻AS获得子网可达性信息
    • 向本AS内部所有路由器传播这些可达性信息
    • 基于可达性信息和AS策略,决定到达子网的路由
  • BGP使得每个子网向因特网其余部分通告它的存在:一个子网高声宣布『老子在这!』,并且确保因特网中所有AS知道该子网以及如何到达
  • BGP基础
    • 是因特网中至关重要的协议,正是BGP将一切『粘合』起来
    • BGP中,路由器通过使用179端口的半永久TCP连接来交换路由信息
      • 跨越两个 AS的TCP连接称为外部BGP会话eBGP,AS内部每对路由器之间的TCP连接成为内部BGP会话iBGP
      • iBGP并不总与物理链路对应
      • 位于连接两端的两台路由器成为BGP对等方
  • 假设你开了公司,与ISP签订协议,获得了一个IP地址范围(子网),每台路由器是通过BGP知道你公司地址的前缀进行转发的,这样别人才能成功将分组发到公司
  • BGP使每个AS知道经过其相邻AS可到达哪些目的地子网,目的地是CDIR化的前缀,子网或子网的集合
  • BGP中,一个AS由其全局唯一的AS号ASN标识,which is allocated by ICANN
  • 当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些属性。带属性的前缀称为一条路由,BGP对等方彼此通告路由
    • AS-PATH:该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中
      • 路由器使用AS-PATH属性检测和防止循环通告
      • 路由器使用AS-PATH在多条路径中选择相同的前缀
    • NEXT-HOP:是一个开始某AS-PATH的路由器接口
      • 路由器使用该属性正确地配置它们的转发表
      • 使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口
  • BGP路由选择
    • BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:
      • 选择具有最高本地偏好值(管理员决定)的路由
      • 选择具有最短AS-PATH的路由
      • 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing)
      • 使用BGP标识符选择路由
  • 路由选择策略
    • 反应ISP之间商业关系

4.7 广播和多播路由选择

4.7.1 广播路由选择算法

  • N次单播
    • 给定N个目的节点,源结点产生该分组的N份副本,对不同目的地每个副本编址,用单播路由选择传送
    • 效率低,多份独立的副本会重复经过某段链路,让网络结点本身生成分组副本更有效
  • 无控制洪泛
    • 源节点向所有邻居发送分组副本,结点复制该分组并向它邻居转发
    • 图中有环,会无休止循环
    • 当一个结点与两个以上结点连接时,它将生成并转发广播分组的多个副本,副本中的每个又产生多个副本,产生广播风暴,使网络变得毫无用处
  • 受控洪泛
    • 序号控制洪泛:源节点将其地址或其他唯一标识和广播序号放入广播分组,每个结点维护源地址和序号列表
    • 反向路径转发RPF:仅当分组到达的链路正好位于它自己返回源的最短单薄路径上,才传输报文,否则丢弃
  • 生成树广播
    • 构造最小生成树;结点只需知道哪些邻居在生成树中
    • 分布式生成树算法
      • 基于中心的方法:建立一棵生成树时,定义一个中心结点(汇合点、核),结点向中心结点单薄加入树的报文。加入树的报文使用单播路由选择朝着中心结点进发,直到它到达一个生成树中,经过的路径再嫁接到现有生成树中

4.7.2 多播

  • 一些新兴应用要求将分组从一个或多个发送方交付给一组接收方,比如各种直播、游戏
  • 多播数据报使用间接地址来编址。每个分组难道携带所有接收方IP地址?这不科学
    • 用一个标识表示一组接收方(D类多播地址),接收方小组称为多播组
  • 因特网组管理协议IGMP
    • IGMP + 多播路由选择协议 组成网络层多播
  • 多播路由选择算法
  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值