网络层(数据层面)

Aki 发布于 2023-03-19 383 次阅读


数据层面,控制层面、

网络层(Network Layer)是OSI参考模型中的第3层,主要负责将传输层提供的数据段(Segment)转换成IP数据包(Packet),并将IP数据包从源主机发送到目的主机。

在网络层中,有两个重要的概念:控制层面(Control Plane)和数据层面(Data Plane)。它们分别表示网络层处理控制信息和转发数据包的两个不同方面。

控制层面(Control Plane)是指网络设备(如路由器)之间进行网络控制和管理的过程,包括路由协议的学习、路由表的维护和更新等。在控制层面中,网络设备之间通过交换控制信息来协商路由和维护网络拓扑,从而实现数据包的转发和路由选择。控制层面的主要目的是确保网络中的路由表、拓扑结构和路由策略的正确性和可靠性。

数据层面(Data Plane)是指网络设备根据路由表转发数据包的过程。当数据包到达一个路由器时,路由器会根据目的IP地址查找路由表,选择下一跳的路由器,并将数据包转发到下一跳。这个过程是数据层面的操作,它直接影响网络的性能和吞吐量。

因此,控制层面和数据层面是网络层中两个重要的方面,它们相互协作,共同维护和管理网络。

网络服务模型、

网络服务模型指的是网络层提供的特定服务,它定义了分组在发送和接收端之间的传输特性。常见的网络服务模型包括:

  1. 确保交付服务(guaranteed delivery service):该服务确保分组最终能够到达目的地,且不会丢失。
  2. 有序分组交付服务(ordered delivery service):该服务确保分组按照它们发送的顺序到达目的地,避免分组到达目的地时顺序错乱。
  3. 确保最小带宽服务(guaranteed minimum bandwidth service):该服务模仿特定比特率的传输链路的行为,只要发送主机以低于特定比特率的速率传输比特,所有分组最终会交付到目的主机。
  4. 安全性服务(security service):网络层能够加密所有数据报,从而对所有运输层报文段提供机密性。

在因特网中,网络层提供的服务模型是尽力而为服务(best effort service),即分组的传输顺序、交付状态、时延和带宽都不能得到保证。而其他网络体系结构则提供了超过尽力而为服务的服务模型,能够提供更加可靠和安全的网络服务。

路由器的工作原理、

一台路由器的几个组件:

  • 输入端口:它在路由器中执行终结入物理链路的物理层功能,这显示在输入端口部分最左侧的方框与输出端口部分最右侧的方框中。它还要与位于入链路远端的数据链路层交互来执行数据链路层功能,这显示在输入与输出端口部分中间的方框中。也许更为重要的是,在输入端口还要执行查找功能,这显示在输入端口最右侧的方框中。通过查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出端口。控制分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器。
  • 交换结构:交换结构将路由器的输入端口连接到它的输岀端口。这种交换结构完全包含在路由器之中,即它是一个网络路由器中的网络!
  • 输出端口:输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。当一条链路是双向的时(即承载两个方向的流量),输出端口通常与该链路的输入端口成对出现在同一线路卡上。
  • 路由选择处理器:路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由器计算转发表。在SDN路由器中,路由选择处理器(在其他活动中)负责与远程控制器通信,目的是接收由远程控制器计算的转发表项,并在该路由器的输入端口安装这些表项。路由选择处理器还执行网络管理功能。
  • 路由器的输入端口、输出端口和交换结构几乎总是用硬件实现,如果N个端口结合在一块线路卡上,数据报处理流水线必须以N倍速率运行,这远快过软件实现的速率。
  • 当数据平面以纳秒时间尺度运行时,路由器的控制功能以毫秒或秒时间尺度运行,这些控制功能包括执行路由选择协议、对上线或下线的连接链路进行响应、 与远程控制器通信(在SDN场合)和执行管理功能。因而这些控制平面 (control plane)的功能通常用软件实现并在路由选择处理器(通常是一种传统的CPU)上执行。
  • 分组转发:
    • 基于目的地转发。假设汽车停在一个入口站上并指示它的最终目的地(并非在本地环状交叉路,而是其旅途的最终目的地)。入口站的一名服务人员查找最终目的地, 决定通向最后目的地的环状交叉路的出口,并告诉驾驶员要走哪个出口。
    • 通用转发。除了目的地之外,服务人员也能够基于许多其他因素确定汽车的出口匝道。例如,所选择的出口匝道可能与该汽车的起点如发行该车牌照的州有关。来自 某些州的汽车可能被引导使用某个出口匝道(经过一条慢速道路通向目的地),而来自其他州的汽车可能被引导使用一个不同的岀口匝道(经过一条高速路通向目的地)。

输入端口处理和基于目的地转发、

输入端口处理:

  • 输入端口的线路端接功能链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中执行的查找对于路由器运行是至关重要的。正是在这个地方,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口
  • 转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交互),或者转发表接收来自远程SDN控制器的内容。转发表从路由选择处理器经过独立总线复制到线路卡,使用在每个输入端口的影子副本转发决策能在每个输入端口本地做出,无须基于每个分组调用集中式路由选择处理器,因此避免了集中式处理的瓶颈。

查找转发表:

  • 一个入分组基于该分组的目的地址交换到输岀端口。在32比特IP地址的情况下,转发表的蛮力实现将针对每个目的地址有一个表项。因为有超过40亿个可能的地址,选择这种方法总体上是不可行的。
  • 于是路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配;如果存在一个匹配项,则路由器向与该匹配项相关联的链路转发分组。一个目的地址可能与不止一个表项相匹配,当有多个匹配时,该路由器使用最长前缀匹配规则(longest prefix matching rule);即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。

一旦通过查找确定了某分组的输出端口,则该分组就能够发送进入交换结构。在某些设计中,如果来自其他输入端口的分组当前正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞。一个被阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。

  • 尽管“查找”在输入端口处理中可认为是最为重要的动作,但必须采取许多其他动作:
    • 必须出现物理层和链路层处理。
    • 必须检查分组的版本号、检验和以及寿命字段,并且重写后两个字段。
    • 必须更新用于网络管理的计数器(如接收到的IP数据报的数目)。
  • 注意到输入端口查找目的IP地址(“匹配”),然后发送该分组进入交换结构(“动作”)的步骤是一种更为一般的“匹配加动作”抽象的特定情况,这种抽象在许多网络设备中执行,而不仅在路由器中。

交换、

交换结构位于一台路由器的核心部位, 因为正是通过这种交换结构, 分组才能实际地从一个输入端口交换(即转发)到一个输出端口中。

交换的方式:

  • 经内存交换:最简单、最早的路由器是传统的计算机,在输入端口与输出端口之间的交换是在CPU (路由选择处理器)的直接控制下完成的。一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口处 被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。在这种情况下,如果内存带宽为每秒可写进内存或从内存读出最多B个分组,则总的转发吞吐量(分组从输入端口被传送到输出端口的总速率)必然小于B/2。也要注意到不能同时转发两个分组,即使它们有不同的目的端口,因为经过共享系统总线一次仅能执行一个内存读/写
  • 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线。如果多个分组同时到达路由器,每个位于不同的输出端口,除了一个分组外所有其他分组必须等待,因为一次只有一个分组能够跨越总线
  • 经互联网交换(现代使用的技术):与前面两种交换方法不同,这种交换技术可以同时处理多个数据包,并且可以同时将多个数据包转发到不同的输出端口,因此具有高效性和可扩展性。在互联网交换中,数据包先被存储在路由器的缓冲区中,然后再根据目的地址进行转发。该技术的一个重要优点是,由于数据包的存储和转发是分开的,因此可以对数据包进行完整性检查和差错纠正,从而提高了网络的可靠性。

在现代分组交换的过程中,每个组件都有各自的任务,不会相互干扰,从而实现了并发处理。输入端口负责接收分组然后进行一般处理并将其添加到缓冲区,CPU则负责从缓冲区中取出分组并进行处理,确定转发端口,然后将该分组移交到相应端口的缓冲区。输出端口则负责检查缓冲区,并在发现有分组时立即转发。这些组件之间的通信和协调由路由器内部的控制逻辑完成,以确保分组能够正确地从源到目的地进行转发。

路由器缓冲区中会存储多个分组,每个分组都会有一个指针指向其在缓冲区中的位置。在处理分组时,路由器会取出指针指向的分组,并将其移交到对应的输出端口的缓冲区中。输出端口会取出该分组指针并读取分组,然后发送分组。在分组发送完成后,输出端口可以将该分组指针从其缓冲区中删除,但是并不会销毁该分组的内存区域。因为该分组的内存区域可能被其他分组所共享,所以需要等待所有指向该内存区域的指针都被删除后,才能将该内存区域销毁。