第4章 计算机网络自顶向下——网络层:数据平面

第4章 网络层:数据平面

目录:

  • 目标:
    • 理解网络服务的基本原理,聚焦于其数据平面
      • 网络服务模型
      • 转发和路由
      • 路由器工作原理
      • 通用转发
    • 互联网中网络层协议的实例和实现
  • 提纲:
    • 导论
      • 数据平面
      • 控制平面
    • 路由器组成
    • IP: Internet Protocol
      • 数据报格式
      • 分片
      • IPv4地址
      • NAT:网络地址转换
      • IPv6
    • 通用转发和SDN
      • 匹配
      • 行动
      • OpenFLow有关“匹配+行动”的运行实例

1 导论

网络层功能:

  • 转发: 将分组从路由器的输入接口转发到合适的输出接口(局部)
  • 路由: 使用路由算法来决定分组从发送主机到目标接收主机的路径(整体)

1.1 网络层:数据平面、控制平面

  • 数据平面:
    • 本地,每个路由器功能
    • 决定从路由器输入端口到达的分组如何转发到输出端口
    • 转发功能:
      • 传统方式:基于目标地址+转发表
      • SDN方式:基于多个字段+流表
  • 控制平面;
    • 网络范围内的逻辑
    • 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径
    • 2个控制平面方法:
      • 传统的路由算法: 在路由器中被实现
      • software-defined networking(SDN): 在远程的服务器中实现
1.1.1传统方式:每-路由器(Per-router)控制平面

每一个路由器中的单独路由器算法元件,在控制平面进行交互

在这里插入图片描述

在这里插入图片描述

1.1.2 SDN方式:逻辑集中的控制平面

一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互

在这里插入图片描述

1.2 网络服务模型

尽力而为的服务

  • 对于单个数据报的服务:
    • 可靠传送(确保交付)
    • 延迟保证,如:少于40ms的延迟
  • 对于数据报流的服务:
    • 保序数据报传送
    • 保证流的最小带宽
    • 分组之间的延迟差

2 路由器组成和原理

四个组件:

  1. 输入端口
  2. 交换结构
  3. 输出端口
  4. 路由选择处理器

2.1 输入端口

  • 接入物理层
  • 与数据链路层交互
  • 查询转发表

在这里插入图片描述

在这里插入图片描述

2.1.1 基于目标的转发

在这里插入图片描述

在32比特IP地址的情况下,转发表的蛮力实现将针对每个目的地址有一个表项共40亿种,这显然不现实,故采用最长前缀匹配的方式

在这里插入图片描述

2.1.2 输入端口缓存

当交换机构的速率小于输入端口的汇聚速率时, 在输入端口可能要排队,所以需要缓存

  1. 两个输入端口对应同一个输出端口时会被阻塞
  2. 在输入端口种前一个被阻塞,后面的全部被阻塞

在这里插入图片描述

2.2 交换结构

将分组从输入缓冲区传输到合适的输出端口(与输入端口的区别是,输入端口只负责找到输出端口,而将分组送到输出端口由交换结构处理)
交换速率:分组可以按照该速率从输入传输到输出
N 个输入端口:交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈

三种典型的交换机构:

在这里插入图片描述

2.2.1 通过内存交换
  • 在CPU直接控制下的交换,采用传统的计算机
  • 分组被拷贝到系统内存,然后CPU取出分组头部,查转发表,再转发
  • 转发速率被内存的带宽限制(数据报通过BUS两遍)
  • 1次处理一个分组
2.2.2 通过总线交换
  • 输入端口为分组预先计划一个交换机首部标签,只有匹配的输出端口才能保留,其他丢弃
  • 数据报通过共享总线,从输入端口转发到输出端口
  • 总线竞争: 交换速度受限于总线带宽
  • 1次处理一个分组
2.2.3 通过互联网络(crossbar等)的交换
  • 同时并发转发多个分组,克服总线带宽限制

2.3 输出端口

当数据报从交换机构的到达速度比传输速率快就需要输出端口缓存

调度规则选择排队的数据报进行传输

2.3.1 输出端口排队

在这里插入图片描述

多个输入端口同时向输出端口发送时,缓冲该分组(当通过交换网络到达的速率超过输出速率则缓存)

2.3.2 调度机制

调度: 选择下一个要通过链路传输的分组

  1. 先进先出:按照分组到来的次序发送
  2. 优先权排队:发送最高优先权的分组
  3. 循环和加权公平排队

3 IP: Internet Protocol

3.1 IP 数据报格式

在这里插入图片描述

  • 版本:这4比特规定了数据报的IP协议版本。
  • 首部长度:因为IPv4数据会有可选片段,但实际一般不会有,一般长度为20
  • 服务类型:传输的优先级,但实际没啥用,因为大家都会调到最高
  • 数据报长度:IP数据报的总长
  • 标识、标志、片偏移:这三个字段与所谓IP分片有关
    • 标识:每一个数据报都有唯一标识,主机每发送一个+1
    • 标志:最后一个分片为0,其余为1
    • 片偏移:数据的偏移量
  • 寿命:TTL
  • 协议:说明是TCP还是UDP
  • 首部检验和:首部检验和用于帮助路由器检测收到的IP数据报中的比特错误
  • 源和目的IP地址
  • 选项:选项字段允许IP首部被扩展,没啥用
  • 数据

3.2 IP 分片和重组(Fragmentation & Reassembly)

  • 一个数据报被分割成若干个小的数据报
    • 相同的ID
    • 不同的偏移量
    • 最后一个分片标记为0
  • “重组”只在最终的目标主机进行

在这里插入图片描述

3.3 IPv4 编址

IP 地址: 32位标示,对主机或者路由器的接口编址

子网:一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网

  • IP地址:
    • 子网部分(高位bits)
    • 主机部分(低位bits)
3.3.1 IP 地址分类

在这里插入图片描述

类别前缀网络数主机数
A02^7-2=1262^24-2
B101638264 K
C1102百万+254
D1110用于组播multicast
E11110还没用过预留的

B类网络数太少,C类主机数又太少,故现在采用子网掩码的方式

就是一个子网内最长的相同前缀例如:11111111 11111111 11111100 00000000/22

3.3.2 层次编制与路由聚合

在这里插入图片描述

路由聚合:将多个主机的相同最长前缀合并成一个子网掩码
例如:200.23.16.0/23+200.23.18.0/23+200.23.18.0=>200.23.16.0/20

3.3.3 获得一个IP地址
  1. 系统管理员将地址配置在一个文件中/etc/rc.config
  2. DHCP(Dynamic Host Configuration Protocol):从服务器中动态获得一个IP地址

步骤:

  1. DHCP服务器发现:新加入的主机向子网的67号端口广播(255.255.255.255)发送DHCP发现报文(UDP),并将本机IP设置为0.0.0.0
  2. DHCP服务器提供:当DHCP服务器收到发现报文时,向子网所以节点广播(因为可能有多个主机同时接入)。提供报文段包括:发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用
  3. DHCP请求:新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用DHCP请求报文(DHCP request mess昭e)进行响应,回显配置的参数。
  4. DHCP ACK:服务器用 DHCP ACK 报文(DHCP ACK message)寸 DHCP 请求报文进行响应,证实所要求的参数。

在这里插入图片描述

3.3.4 网络地址转换NAT: Network Address Translation
  • 动机: 本地网络只有一个有效IP地址
    • 省钱:只用买一个IP地址
    • 安全:外网无法直接访问内容
    • 灵活:外网IP可以随意变化,不会影响到内网IP

内部主机向外部服务器发送请求比较容易:通过一个统一 的路由器封装成一个统一IP发送出去即可
外部主机向内部发送报文较难,因为无法确认是哪一主机,解决方案:NAT转换表

NAT转换表:使用IP+端口号方式来转换,一个外网IP+一个端口号=>一个内网IP+端口号

在这里插入图片描述

举例:一个内网IP为10.0.0.1的主机使用3345端口访问服务器128.119.40.186的80端口

  1. DHCP会为10.0.0.1的3345端口分配一个外网IP+端口比如138.76.29.7的5001端口,并写入NAT转换表
  2. 10.0.0.1:3345向138.77.29.7:80发送请求
  3. 路由器通过NAT转换表将其转化为138.76.29.7.5001
  4. 服务器收到后向138.76.29.7.5001发送响应
  5. 路由器将138.76.29.7.5001通过NAT转换表将其转换为10.0.0.1:3345

3.4 IPv6

初始动机: 32-bit地址空间被用完

3.4.1 IPv6 数据报格式
  • 固定的40 字节头部
  • 数据报传输过程中,不允许分片

在这里插入图片描述

3.4.2 从IPv4到IPv6的平移

隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报

在这里插入图片描述

IPv6相当于一个孤岛,IPv4相当于海洋
IPv4之间相互通信没有任何影响,一个子网内IPv6之间相互通信也没有任何问题
但两个不同的IPv6子网间通信就必须通过IPv4
采用隧道的方式进行相互通信
其实本质上就封装和解封,将IPv6的报文封装为IPv4再解封装为IPv6

在这里插入图片描述

4 通用转发和SDN(了解)

在这里插入图片描述

  • 传统方式实现网络功能的问题:
    • 垂直集成(从上到下都由一个厂商提供)>昂贵、不便于创新的生态
    • 分布式、固化设备功能==网络设备种类繁多
      • 无法改变路由等工作逻辑,无法实现流量工程等高级特性
      • 配置错误影响全网运行;升级和维护会涉及到全网设备:管理困难
      • 要增加新的网络功能,需要设计、实现以及部署新的特定设备,设备种类繁多
  • SDN:逻辑上集中的控制平面
    • 网络设备数据平面和控制平面分离
    • 水平集成控制平面的开放实现
    • 集中式实现控制逻辑,网络管理容易
    • 基于流表的匹配+行动的工作方式允许“可编程的”分组交换机
  • 流表:
    • 模式: 将分组头部字段和流表进行匹配
    • 行动:对于匹配上的分组,可以是丢弃、转发、修改、将匹配的分组发送给控制器
    • 优先权Priority : 几个模式匹配了,优先采用哪个,消除歧义
    • 计数器Counters: #bytes 以及#packets

在这里插入图片描述

  • 动作常见的有三种:
    • 简单转发
    • 负载均衡
    • 充当防火墙
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值