核心内容
- 路由器的工作原理
1. 网络层的概述
(1)功能结构 网络层用于提供主机与主机之间的逻辑通信,源主机网络层接收来自运输层的报文段,将其封装为一个数据报并向相邻的路由器发送数据报。接收方的网络层接收来自相邻路由器的数据报,提取出报文段交付给运输层。为此需要提供转发和路由选择两个功能。网络层能够被划分为两个相互作用的部分,数据部分和路由部分:
- 数据部分的主要作用:转发,即分组从输入链路接口转发到合适的输出链路接口。
- 控制部分的主要作用:路由选择,即决定从源主机到目的主机,分组所采用的路由或路径。
每台网络路由器中都有一个转发表。路由器通过使用分组的首部目的地址在转发表中索引,来转发分组。那转发表是如何进行初始配置的呢?
在传统方法中,路由器兼具转发和路由选择两种功能,由路由选择算法更新路由表。在SDN方法中,路由器仅执行转发功能,路由选择在远程控制器执行,远程控制器计算和分发路由表。
(2)网络服务模型 网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。 因特网的网络层提供了单一的服务,称为尽力而为服务。(也就是不提供任何服务)
2. 路由器的工作原理
网络层具有转发和路由选择功能。在传统方法中,路由器能实现转发和路由选择两个功能。在SDN方法中,路由器仅实现转发功能。所以我们接下来就去了解路由器的组成结构,以及功能实现的细节。
2.1 路由器的组成
一台路由器由四个部分组成:
- 输入端口:最重要的是执行查找功能,通过查询转发表选择输出端口。
- 交换结构:连接输入端口与输出端口。
- 路由选择处理器:执行控制平面功能。
①传统的路由器,执行路由选择协议,维护路由选择表与关联链路状态讯息,并计算路由转发表。 ②SDN路由器中,负责与远程控制器通信,接收转发表项,并在输入端口安装这些表项。 - 输出端口:存储从交换结构接收的分组,并执行链路层和物理层的功能发送分组。
其中,路由器的输入端口、交换结构、输出端口总是用硬件实现。因为如果有多个端口结合在一个线路卡上,数据报处理流水线必须以N倍速率运行,这远快于软件实现的速率。而控制平面的功能通常在软件实现并由路由选择处理器执行。
分组转发的决定由有两种方式:
- 基于目的地转发:基于分组的目的地址选择要转发的目的端口。
- 通用转发:基于多种因素决定的目的口。
路由器具有转发功能,即将分组从输入端口转发到合适的输出端口。路由器使用转发表来查找输出端口。那么路由器是如何依赖转发表来来实现这样的功能的呢?
2.2 转发
路由器的四个结构在实现转发功能中都起到了关键的作用。输入端口保存着转发表的影子副本,实现了在输入端口就能查找到合适的分组输出接口。交换结构将分组从输入端口传输到了输出端口。
2.2.1 查找
路由器的转发功能是将分组从输入端口传输到合适的输出端口。首先路由器使用转发表来查找合适的输出端口。 (1)转发表
- 传统路由器的转发表是由路由选择处理器计算并更新的。SDN路由器的转发表来自远程控制器计算并分发的。
- 路由选择处理器通过总线将转发表项复制到线路卡上。每个输入端口都保留着转发表的影子副本。
因此分组的转发决策是在输入端口做出的。这样分组在输入端口就能找到合适的输出端口,避免了每个分组都调用集中式路由选择处理器而导致的集中式处理瓶颈。
(2)基于目的地的转发 一个入分组到达路由器后,是基于其首部的目的地址找到输出端口的。路由器通过查找转发表中匹配的表项,向与该表象相关联的输出链路接口发送分组。一般有三种表项匹配方式:
- 一一对应:每个目的地址对应一个表项。 ①问题:因为有超过40亿个可能地址,转发表过大。
- 基于目的地址范围的
- 最长前缀匹配:路由器用分组目的地址前缀与表项进行匹配。在表中找到最长匹配表项,并向与其相关联的输出链路接口发送分组。
通常我们使用最长前缀匹配机制。这样路由器就可以使用转发表找到最长匹配项对应的输出链路接口,并将分组发送到对应的输出端口。
(3)输入端口处理 输入端口除了查找功能,还具备的功能有:
- 线路连接
- 数据链路处理:物理层和链路层的处理。
- 排队:若分组到达交换结构时发现来自其他端口输入的分组正在使用交换结构,分组会被暂时阻塞,并放入输入队列。
路由器通过使用转发表和输入队列实现了为分组查找合适的输出端口号,并将分组发往交换结构。
2.2.2 交换
交换结构将从输入端口收到的分组传输到输出端口。常见的三种交换技术:
-
经内存交换(memory):分组从输入端口经总线复制到内存,再从内存复制到输出端口。 ①因总线一次仅能执行一次内存读写,所以一次只能传输一个分组。 ②路由器的交换受总线速率限制。 -
经总线交换(Bus):输入端口经共享总线将分组直接传送到输出端口,而不需要路由选择处理器干预。 ①一次只能传输一个分组。 ②路由器的交换受总线速率限制。 ③不需要路由转发处理器干预。 -
经互联网络交换(CrossBar):使用复杂的互联网络,能够一次发送多个分组。 ①克服了单一、共享总线对交换带宽的限制。 ②一次可以传送多个分组。
这样分组就通过交换结构到达了输出端口。
2.2.3 输出端口处理
输出端口取出已存储在输出端口内存中的分组并将其发送到输出链路。所以输出端口主要提供两个功能:
- 选择分组
- 执行链路层和物理层的传输
当分组通过输入端口到达交换结构时,发现交换结构正在传输另一个端口到达的分组。当前分组会被暂时阻塞。同理,当分组通过交换结构到达输出链路时,发现链路正在忙于传输另一个分组,当前分组也会被暂时阻塞。所以输入端口和输出端口都可能形成等待队列。
(1)排队 排队的位置和程度由流量负载、交换结构的相对速率与线路速率决定。
因为交换结构一次只能传送一个分组到达指定端口,所以可能会出现阻塞问题。如线路前部空闲(HOL),当来自不同输入端口,但具有相同输出端口的分组同时到达时,交换结构回传输其中一个分组,其他分组则需要等待,即使其他输出端口空闲。在输出队列中等待的分组,也需要通过分组调度选择一个分组传输。当队列满了的时候,需要选择丢弃分组或者删除已有的分组。为了避免缓存溢出,缓存量通常设置为
B
=
R
T
T
?
C
B=RTT * C
B=RTT?C,即平均往返时延乘上链路容量。
(2)分组调度 常见的有四种分组调度方式:
-
先进先出:分组按照到达的次序离开。 -
优先权排队:到达输出链路的分组先被分类放入优先级类。当选择一个分组输出时,从一个非空的最高优先级队列中传输一个分组。 -
循环排队:没有严格的服务优先权,循环调度器在不同类之间轮流提供服务。 -
加权公平排队:循环调度器轮流在不同类提供服务。 ①每个类都分配一个权,第i类确保接收到的服务部分等于
w
i
/
∑
w
j
w_i / \sum w_j
wi?/∑wj?。
综上所述,我们对路由器的结构和功能进行了介绍。路由器分为输入端口、交换结构、路由选择处理器、输出端口四个部分。实现了数据平台和控制平台两个部分的功能“转发”和“路由选择”。分组在输入端口通过查找路由表中的匹配表项,找到对应的输出链路接口。然后分组通过交换结构到达输出端口。其中路由表有两种方式计算和分配方式,传统路由器通过路由选择处理器计算和分配路由表。SDN路由器接收来自远程控制器计算的路由表,经由总线到达线路卡上。路由表在每个输入端口都保存了影子副本。为了匹配输入速率、交换结构传输速率、输出线路速率,在输入端和输出端口都有等待队列。输出端口也需要通过分组调度选择一个分组输出链路。
|