计算机网络•自顶向下方法:网络层介绍、路由器的组成
网络层介绍
网络层服务:网络层为传输层提供主机到主机的通信服务
每一台主机和路由器都运行网络层协议
- 发送终端:将传输层报文段封装到网络层分组中,发送给边缘路由器
- 路由器:将分组从输入链路转发到输出链路
- 接收终端:从边缘路由器接收分组,取出报文段交付给传输层
网络层的功能
- 选路:确定去往目的路由器的路由
- 转发:路由器根据选定的路由,将分组从输入端口转移到输出端口
选路和转发的关系
- 转发表:记录分组头中某个字段与路由器输出端口之间的映射关系
- 选路:计算转发表
- 转发:根据转发表转运分组
数据面和控制面
数据面(Data plane)
- 执行数据传输的功能属于数据面
- 转发是数据面功能,在路由器内部实施分组转运
- 是路由器本地功能
控制面(Control plane)
- 控制数据传输的功能属于数据面于控制面
- 选路是控制面功能,确定分组如何去往目的节点
- 是网络范围的功能
两种控制面实现方法
- 传统寻路算法:在路由器中实现
- 软件定义网络:在服务器中实现
网络服务模型:
定义了分组在发送终端与接收终端之间的传输特性
可能的网络服务:
- 保证交付
- 具有时延上界的保证交付
- 有序分组交付
- 保证最小带宽
- 安全性
不同架构的网络提供的网络层服务可能不同
同一个网络也可以提供不同的网络层服务
路由器的组成
路由器的两个主要功能:
- 选路:运行选路协议,计算转发表
- 转发:依据转发表,从输入链路到输出链路转发数据报
输入端口功能
- 物理接口:负责连接到物理链路(例如,以太网端口、光纤端口等),通过物理媒体(如电缆、光纤)接收数据。
- 数据链路层处理:负责接收并处理从数据链路层(如以太网帧)接收到的数据包,检查是否有差错、解析MAC地址等。
- 接收缓存:当数据包进入路由器时,它们首先会存储在输入端口的缓存中,以待进一步处理。
交换结构
路由器中的互联网络,用于在输入端口、输出端口和选路处理器之间转运分组
交换速率:通常是输入/输出链路速率的若干倍
三种类型的交换结构
通过内存交换
- 传统计算机,在CPU的直接控制下完成交换
- 数据包拷贝到系统内存中进行交换
- 交换速率受限于内存带宽:每个数据包穿过系统总线2次
通过总线交换
- 数据包通过一条共享总线,从输入端口缓存转移到输出端口缓存
- 每个输入和输出端口通过一个接口硬件连接到总线上,每个端口被分配一个内部标签
- 交换速率受限于总线带宽
- 总线竞争
- 总线协议防止多个端口同时传输,比如,采用时分多路复用的方法
- 各个输入端口在总线上轮流广播分组,每个输出端口根据分组携带的内部标签接收发给本端口的分组
通过互联网络交换
- 交换结构控制器通过控制交叉点的开、闭,在输入端口与输出端口间建立内部专用电路
- 多对端口间可以并行传输
- 分阻塞型与非阻塞型,阻塞型互联网络会产生阻塞
输出端口功能
- 物理接口:负责将数据通过物理链路发送到目标设备。
- 数据链路层处理:在数据包从路由器发送到目标时,处理数据链路层的相关操作(例如,封装数据包、添加校验和等)。
- 发送缓存:在将数据包发送到目标设备之前,输出端口会将数据包存储在缓存中,以确保数据顺利传输。
网络层处理:
- 组装:若需要,将交换结构输出的信元组装成分组
- 排队:若输出端口来不及发送,分组在此排队
- 调度:输出端口每次选择一个分组发送
链路层处理:执行链路层协议,封装
物理层处理:将比特流转换成物理信号
输入端口排队与丢包
当交换结构不能及时将输入端口的分组转移到输出端口时,输入端口处形成排队
排队带来的问题:
- 队头阻塞: 队头分组阻塞其后分组的转发
- 丢包:当输入队列溢出时,发生丢包
当交换结构速率至少为端口速率的n倍时(n为输入端口数),可以消除输入端口的排队,但路由器成本提高了
输出端口排队与丢包
多个输入端口同时向一个输出端口发送时,在输出端口形成排队
当输出队列满时,发生丢包
输出端口排队是不可避免的,设置多大的输出队列是一个问题:
- 增大输出队列:可以减少丢包的发生,但会增加内存消耗,并增大分组延迟,延迟太大的分组最终被重传,浪费资源
- 输出队列并不是越长越好!
分组丢弃
分组丢弃策略:当队列满时丢弃哪个分组?
- 弃尾:丢弃到来的分组
- 按照优先级丢弃:低优先级分组
- 随机丢弃:随机选择一个分组丢弃,如Ramdom Early Detection (RED)
随机早期检测(RED,Random Early Detection)
RED 是一种基于队列长度的主动丢包策略,旨在避免拥塞的发生,并且在网络负载增加时及时做出反应。
工作原理:
- 当队列的长度超过某个预设的阈值时,RED 会开始以随机的方式丢弃一些进入队列的数据包,而不是等到队列满了才丢弃。
- RED 会根据队列的当前长度和网络的负载动态调整丢包的概率,队列长度越长,丢包的概率就越高。
- 该策略通过在网络出现拥塞之前丢弃一些包,来减少网络的整体负载,从而避免网络进入严重拥塞的状态。