网络层
- 4.1 introduction
- 4.2 virtual circuit and datagram networks
- 4.3 what’s inside a router
- 4.4 IP: Internet Protocol
- datagram format
- IPv4 addressing
- ICMP
- IPv6
- 4.5 routing algorithms
- link state
- distance vector
- hierarchical routing
4.4-4.5 重点
- 4.6 routing in the Internet
- RIP
- OSPF
- BGP
- 4.7 broadcast and multicast routing
网络层概述
- 网络层实现从发送主机向接收主机传送数据段(segment)的服务
- 发送主机负责将数据段封装到数据报(datagram)中
- 接收主机负责向传输层交付数据段(segment)
- 每个主机和路由器都运行网络层协议
- 路由器不运行之前的应用层协议和传输层协议
网络层功能和服务
- 转发和路由选择
- 转发 (forwarding): 将分组从单一路由器的输入端口转移到合适的输出端口
- 路由(routing): 确定分组从源到目的经过的路径,主要包括路由算法 (routing algorithms)
- 连接建立
- TCP需要三次握手,连接建立
- 网络层的某些体系结构,数据传输之前也需要首先建立虚拟/逻辑连接
- 某些体系结构:ATM, 帧中继(frame relay), X.25
- 网络设备(如路由器)同时参与连接的建立
- 传输层与网络层连接建立的的对比
- 传输层连接:应用进程之间,对中间网络设备透明
- 网络层连接:主机之间,路径上的路由器等网络设备参与其中
- 网络层服务模型
虚电路网络和数据报网络
虚电路网络VC
- 虚电路网络的特征
- 数据传输之前,连接建立
- 分组交换
- 每个分组携带VC号
- 每个分组的传输利用链路的全部带宽
- 与之前的电路交换不同,电路交换占用的是部分资源
- 源到目的路径经过的网络层设备共同完成虚电路功能
- VC路径上每个路由器都需要维护VC连接的状态信息!
- 每条虚电路包括
- 从源主机到目的主机的一条路径
- 虚电路号(VCID),沿路每段链路一个编号
- 沿路每个网络设备(如路由器),利用转发表记录经过的每条虚电路
- 整体理解
- 虚电路网络其实就是说网络层先建立连接,再传输数据,最后连接拆除
- 连接建立:就是为了确定一条源主机到目的主机的路径
- 路由器的转发表添加新表项,包含进出接口与进出VCID,从而实现建立路径
- 数据传输
- 所有分组都从刚刚建立的连接路径中传输
- 连接拆除
- 路由器删除该虚电路所添加的表项
- 连接建立:就是为了确定一条源主机到目的主机的路径
- 虚电路网络的应用
- 应用在ATM, frame-relay, X.25中
- 虚电路网络其实就是说网络层先建立连接,再传输数据,最后连接拆除
数据报网络
- 数据报网络的特征
- 数据传输之前,无连接建立
- 分组交换
- 每个分组携带目的主机地址
- 路由器根据分组的目的主机地址转发分组
- 路由器基于路由算法构建转发表
- 检索转发表来转发数据报分组
- 每个分组独立选路
- 最长前缀匹配规则
- 如果采用前缀匹配时转发表匹配目的地址,如果目的地址存在多个匹配项,则采用此规则
- 整体理解
- 数据报网络就是说我不需要确定分组从哪条路径传输,分组怎么传输取决于我的路由转发算法
- 数据报网络的应用
- 当今互联网
数据报网络 VS 虚电路网络
路由器的工作原理
- 路由器体系结构
- 输入端口
- 线路前部阻塞(HOL):如果两个分组竞争同一个输出端口,则必然有一个会被阻塞,而排队
- 由于HOL阻塞,只要输入链路上的分组到达速率达到其容量的58%,在某些假设前提下,输入队列长度将无限制增大,也就是出现大量丢包与时延
- 交换结构(fabrics 结构)
- 输出端口
- 路由选择控制平面
- 分布式的
- 不同部分(例如路由选择算法)执行在不同的路由器上并且通过彼此发送控制报文进行交互
- 分布式的
IP协议
- 网络层的内部视图
数据报格式
- IP数据报格式
- 首部长度:确定IP数据报数据部分从哪里开始
- 服务类型:区分不同类型的IP数据报
- 例如,区分实时数据报(如用于IP电话应用)与非实时流量(如FTP)
- 数据报长度:IP数据报总长度,首部+数据
- 标识,标志位,片偏移:与IP分片有关
- TTL:确保数据报不会永远在网络中循环。经过一台路由器TTL减1,若TTL减为0,则丢弃该数据报
- 协议:协议号指明IP数据报数据部分交给TCP还是UDP。
- 校验和:差错校验
- 选项:扩展IP首部
- 数据(有效载荷):包含要交付给目的地的运输层报文段
- IP分片(fragmentation),组装(reassembly)
- 网络链路存在MTU (最大传输单元)
- 不同链路的MTU不同 ,因此就限制了IP分组的长度
- 大IP报文向较小MTU链路转发时,可以被“分片”
- 1个IP分组分为多片IP分片
- IP分片到达目的主机后进行“重组”
- IP首部相关字段用于标识分片以及确定分片的相对顺序
- 总长度,标识,标志位,片偏移
- 网络链路存在MTU (最大传输单元)
- IP分片与重组例子
IPV4 编址
- 介绍
- IP地址
- 点分十进制记法
- 32位,32位标识主机,路由器的接口
- 接口:主机/路由器与物理链路的连接
- 路由器通常有多个接口
- 主机通常只有一个或两个接口
- e.g.,有线的以太网接口,无线的802.11接口
- IP地址与每个接口关联
- 有线以太网接口通过以太网交换机连接
- 无线WIFI接口通过WIFI基站连接
- 怎么为接口分配IP地址呢?
- 采取的方法为IP子网
- IP地址
- IP子网(subnets)
- IP地址组成
- (高位)网络号+(低位)主机号
- 什么是子网呢?
- IP地址具有相同网络号的设备接口
- 不跨越(interventing)路由器可以彼此物理联通的接口
- IP地址组成
- IP子网掩码
- 什么是子网掩码?
- IP地址中网络号和子网号比特位全1,主机号比特位全0
- 如何确定子网的大小?或者说确定子网内所能容纳的主机数?
- 子网地址+子网掩码—>准确确定子网的大小
- 其实就是按位与运算,刚好屏蔽掉了主机号得到的就是网络号
- 子网地址+子网掩码—>准确确定子网的大小
- 什么是子网掩码?
- CIDR与路由聚合
- CIDR
- 无类域间路由
- 提高了IPV4地址空间分配效率
- 提高路由效率(将多个子网聚合为一个较大的子网,构造超网(supernetting))
- 无类域间路由
- 路由聚合
- 将多个子网合成一个大网
- 或者说一个大网划分成了多个子网,这些子网构成一张大网
- CIDR
- 获取IP地址
- 一个组织如何得到一个地址块呢
- 直接从ICANN获取
- 直接从ISP获取,ISP的地址块也来自于ICANN
- 一台主机又是如何从地址块中分配到一个地址的呢
- DHCP协议
- 一个组织如何得到一个地址块呢
- DHCP协议:主机获取IP地址的协议
- DHCP协议四步走
- DHCP服务器发现
- 新到的主机首要任务是发现一个要与其交互的DHCP服务器,通过发送DHCP发现报文
- DHCP服务器提供
- DHCP服务器用一个DHCP提供给报文向客户机回应
- DHCP请求
- 选择一个服务器发送DHCP请求报文响应,回显配置参数
- DHCP ACK
- 服务器用DHCP ACK报文响应,证实所要求的参数
- DHCP服务器发现
- DHCP
- 从服务器端动态获取
- IP地址
- 子网掩码
- 默认网关地址(客户端第一跳的路由器的地址)
- DNS服务器名称与IP地址
- 即插即用
- 允许地址重用
- 支持在用地址续租
- 支持移动用户加入网络
- 从服务器端动态获取
- DHCP协议四步走
- NAT协议:网络地址转换
- 动机以及优势
- 只需/能从ISP申请一个IP地址,仅仅一个IP地址对于所有主机(IPv4地址耗尽)
- 本地网络设备IP地址的变更,无需通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
- 争论
- 端口号是进程编址的,而不是主机编址的。而NAT路由器使用了端口号
- 妨碍P2P应用程序
- 动机以及优势
ICMP协议:控制报文协议
- ICMP协议
- ICMP协议主要被主机和路由器用来彼此沟通网络层的信息
- 两类ICMP报文
- 差错报告报文
- 目的不可达
- 源抑制
- 超时/超期
- 参数问题
- 重定向
- 网络探询报文
- 回声(echo)请求与应答报文(reply)(被用在ping里)
- 时间戳请求与应答报文
- 差错报告报文
- ICMP报文格式
- ICMP在tracert中的使用
- 实验1中有写
IPV6
- 为什么需要开发新的协议IPV6?
- 32比特的IP地址空间即将用尽
- 首部格式有助于加快处理/转发速度
- 更改报头以提高服务质量
- IPV6报文格式
- 固定的40字节的首部
- 分片不被允许
- IPV6相比IPV4产生的变化
- 分片组装不再出现
- 首部校验和不再出现
- 选项字段不再出现
- IPV4数据报(data中携带IPV6报文)可通过IPV4路由器
路由算法
- 路由选择的工作是:确定从发送方到接收方通过路由器网络的路径
- 关键问题:源到目的的最小费用路径是什么?
- 路由算法:寻找最小费用路径的算法
- 转发表:确定在本路由器中如何转发分组
- 路由算法分类(classification)
- 全局式(global)路由和分散式(decentralized)路由
- 全局信息
- 所有路由器掌握完整的网络拓扑(topology)和链路费用信息
- 例如:链路状态路由算法LS
- 分散信息
- 路由器只掌握物理相连的邻居以及链路费用
- 邻居间的信息交换,运算的迭代过程
- 例如:距离向量路由算法DV
- 全局信息
- 静态路由和动态路由
- 静态路由
- 手工配置
- 路由更新慢
- 优先级高
- 动态路由
- 路由更新快
- 定期更新(periodic update)
- 及时响应链路费用或网络拓扑变化
- 路由更新快
- 静态路由
- 全局式(global)路由和分散式(decentralized)路由
链路状态算法LS
Dijkstra算法
- 算法前提
- 算法步骤
- 举个栗子
- u节点(路由器)的转发表
- 算法讨论
- 链路在最坏情况下,算法复杂度是O(n^2)
- 因为最坏情况下,第一次迭代搜索n个节点,第二次搜索n-1个…
- 容易发生振荡
- LS算法在每个路由器上运行不同步,产生了拥塞敏感的路由选择的震荡
- 链路在最坏情况下,算法复杂度是O(n^2)
距离向量路由算法DV
- 动态规划算法主要思想
- 维护与更新的过程
- DV算法的特点:异步迭代与分布式
- 存在的问题
- 无穷计数问题:某链路费用增加,同时邻居的某链路数据错误,导致路由选择环路(不断迭代)
- 解决方案
- 毒性逆转:如果z通过y路由选择到目的地x,则z通告y,它到x的距离是无穷大(善意的谎言)
- 定义最大度量
- 解决方案
- 无穷计数问题:某链路费用增加,同时邻居的某链路数据错误,导致路由选择环路(不断迭代)
LS与DV的比较
- 报文复杂性
- LS:n个节点,E条链路,发送O(n*E)个报文
- 每个节点都知道网络中每条链路的费用
- 任意一条链路费用改变,都要向所有节点发送新的链路费用
- DV:邻居间交换报文
- 链路费用改变时,仅当与该链路相连的节点最低费用路径改变时,才传播已改变的链路费用
- LS:n个节点,E条链路,发送O(n*E)个报文
- 收敛(convergence)速度
- LS:O(n*E)个报文的O(n^2)阶算法
- DV:收敛较慢
- 可能遇到路由选择环路
- 无穷计数问题
- 健壮性
- 如果一台路由器故障或者受到破坏,会发生什么?
- LS
- 路由器能够向其连接的一条链路广播不正确费用
- 每个节点仅计算自己的转发表
- DV
- 一个节点可向任意或者所有目的节点通告不正确的最低费用路径
- 每个节点的表也被其他节点使用
- 错误扩散到整个网络
- LS
- 如果一台路由器故障或者受到破坏,会发生什么?
层次路由策略
- 自治系统
- 路由聚合成一个区域,就叫自治系统
- 每个自治系统通常由在相同控制下的路由器组成(例如,有相同的ISP运营或者属于相同的公司网络)
- 同一AS中的路由器运行同样的路由选择算法—>也叫自治系统内部路由选择协议(intra-AS)
- 网关(gateway)路由器
- 位于AS 边缘
- 通过链路连接其他的AS的网关路由器
- 自治系统的转发表
- 自治系统间的路由任务
- 举个例子
因特网中的路由选择
- Internet采用层次路由
- AS内部路由协议用于确定在一个AS内执行路由选择的方式,也称内部网络协议IGP
- RIP
- OSRF
- IGRP
RIP协议:路由选择信息协议
- RIP协议是一种距离向量协议,其中跳是沿着从源路由器到目的子网(包括目的子网)的最短路径所经过的子网数量
- 距离向量路由算法
- RIP:链路失效(failure),恢复(recovery)
- RIP路由表
- RIP是一个运行在UDP上的应用层协议
OSRF协议:开放最短路径优先协议
- OSRF的介绍
- 开放:路由选择协议规范是公众可用的
- 采用链路状态路由算法LS
- LS分组扩散(dissemination)—>通告
- 每个路由器构造完整的网络(AS)拓扑图
- 利用Dijkstra算法计算路由
- OSRF通告(advertisement)中每个入口对应一个邻居
- OSPF通告在整个AS范围泛洪
- OSRF报文直接封装在IP数据报中(而不是TCP或者UDP)
- 与OSRF极其相似的一个路由协议:IS-IS路由协议
- OSRF的优点
- 安全
- 使用鉴别(authenticate),仅有受信任的路由器能参与一个AS内的OSRF协议
- 允许多条相同费用的路径(在RIP里仅一条路径)
- 对单播与多播路由选择的综合支持
- 支持在单个路由选择域的层次(hirarchical)结构
- 安全
- 分层的OSRF
BGP协议:边界网关协议
-
BGP为每个AS提供了一种手段:
- eBGP: 从邻居AS获取子网可达性信息.
- iBGP: 向本AS内部所有路由器传播子网可达性信息.
- 基于可达性信息与策略,确定到达其他网络的 “好” 路径.
- 容许子网向Internet其余部分通告它的存在:“我在这儿!”
-
BGP基础
- BGP会话:两台路由器(对等方)交换BGP报文
- 在BGP中,目的地不是主机而是CDIR化的前缀,每个前缀表示一个子网或一个子网的集合
- 通过半永久TCP连接来交换路由选择信息
- 分发前缀可达性信息 distributing path information
- BGP会话:两台路由器(对等方)交换BGP报文
-
路径属性与BGP路由
- 当一台网关路由器接收到一台路由器通告以后,它使用输入策略去决定是否接收或过滤该路由,是否设置某属性
-
BGP路由选择
- 网关路由器可能获得了到达同一前缀的多条路由,从多条路由中选择一条路由的过程就是BGP路由选择
- 本地偏好值属性
- 最短AS-PATH
- 最靠近NEXT-HOP的路由器:热土豆路由选择
- BGP标识符
- 注意:BGP顺序调用以上消除规则,直到留下一条路由
- 举个小例子
- 网关路由器可能获得了到达同一前缀的多条路由,从多条路由中选择一条路由的过程就是BGP路由选择
-
BGP报文
-
表项是如何进入路由器的转发表的
-
路由选择策略
- 图例
- 图例
-
为什么会有不同的AS间和AS内部路由选择协议?