1.11k likes | 1.3k Views
第三部分 网络处理器技术. 主要内容. 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡. 1.1 第二代网络系统回顾. 第二代网络系统对第一代网络系统的扩展: 将包的分类和转发功能下放到 NIC 上 引入了快速数据通路的概念 优点:可以支持更多的网络连接 缺点:仍依赖通用 CPU 处理例外的包,当集合包速很高时, CPU 仍然是瓶项。. 1.2 第三代网络系统. 出现于上世纪 90 年代后期
E N D
主要内容 • 第三代网络系统与网络处理器 • 网络处理器体系结构 • 网络处理器的扩放 • 网络处理器举例 • 网络处理器的设计权衡
1.1 第二代网络系统回顾 • 第二代网络系统对第一代网络系统的扩展: • 将包的分类和转发功能下放到NIC上 • 引入了快速数据通路的概念 • 优点:可以支持更多的网络连接 • 缺点:仍依赖通用CPU处理例外的包,当集合包速很高时,CPU仍然是瓶项。
1.2 第三代网络系统 • 出现于上世纪90年代后期 • 在每个网络接口上使用定制的硬件处理例外的包及高层协议(至第四层),即执行数据面(data plane)上的所有任务: • 第一、二层功能:市售的物理层芯片组 • 第三层基本功能、包分类及转发:ASIC硬件 • 第四层协议及例外包:嵌入式处理器 • 流量管制、监视和统计: ASIC硬件 • 标准CPU负责执行控制面(control plane)上的任务。
嵌入式处理器 • 为什么采用嵌入式处理器而不是ASIC? • 处理任务不涉及快路径,不需要太快的速度 • 第四层协议庞大而复杂,采用软件实现比较合适 • 为什么选用RISC而不是CISC处理器? • CISC处理器的大指令集对于协议处理没有增强作用 • RISC的指令集比较简单,CPU可运行在较高的频率 • RISC芯片的硬件接口比较简单,硬件设计较容易 • RISC处理器通常比较便宜,且功耗较小
第三代网络系统的问题 • 由于执行一个复杂的任务需要许多条指令,当集合速率很高时,RISC处理器仍然是瓶颈。 • 上世纪90年代中期,工业界普遍认为能够处理因特网骨干连接的唯一可行技术是专用芯片。 • 使用ASIC代替RISC处理器的缺点: • 开发周期长:设计复杂,芯片设计者不了解协议处理,修改费时 • 成本高:开发周期长,生产成本高,修改代价高,产品寿命短 • 仿真困难:对协议栈进行大量仿真不可行 • 可重用性低:在不同的产品、不同版本的产品中几乎不能重用或重用很有限 • 需要专业人员 • RISC VS. ASIC是一个两难的抉择。
1.3 第四代网络系统 • 目标: • 结合第一代网络系统的灵活性与第三代网络系统的高速度。 • 在因特网早期,第一代网络系统能够很好地适应新的协议标准和网络功能。 • IP协议的相对稳定及以太网成为企业网主流技术减小了对网络产品灵活性的要求。 • 为什么仍然需要灵活性: • 新的IP特性(如QoS,MPLS,多播,移动IP)要求网络产品支持新的应用 • 网络接口的类型在增加
1.4 网络处理器的概念 • 网络处理器的设计目标: • 结合ASIC的高速度和嵌入式处理器的灵活性, • 网络处理器的定义: • 网络处理器是一种专门针对网络处理而优化的可编程芯片,它结合了RISC处理器的低成本和高灵活性以及ASIC硬件的高速度。 • 网络处理器应具有的特点: • 较低的成本 • 简单的硬件接口 • 内存访问能力 • 可编程能力 • 可扩展到高速度
网络处理器的基本设计思想 • 通过可编程性获得灵活性,通过灵活性降低成本: • 类似于常规处理器,硬件保持不变,通过软件来控制包的处理。 • 硬件复用性好,可应用于任何一种协议处理。 • 方便系统设计、实现、修改和升级,缩短开发周期。 • 高性能设计的关键: • 针对协议处理优化的指令集(通用性 VS 速度) • 利用多处理器体系结构获得可扩展性(并行 VS 流水线)
网络处理器的位置 • 目前 • 比传统CPU贵,比ASIC慢 • 比传统CPU快,比ASIC便宜
网络处理器 VS. ASIC • 用ASIC开发的系统 • 开发成本高(一百万美元) • 生产成本低 • 用网络处理器开发的系统 • 开发成本低 • 生产成本高 • 使用网络处理器的动机主要是经济方面的: • 开发成本比ASIC低 • 处理速度比传统CPU高
1.5 网络处理器的一般设计问题 • 网络处理器的设计取决于: • 要执行的操作 • 在网络系统中的作用 • 研究目标: • 一个通用、优化的硬件设计,能够应用于系统体系结构中的任何地方和处理任何协议 • 设计的困难: • 不仅要求功能全面,而且要求功能最小化
包处理功能 • 地址查找和包转发 • 差错检测和纠正 • 分片、分段和重组 • 解多路复用 • 包分类 • 排队和包丢弃 • 调度 • 安全:认证和保密 • 流量测量、整形和管制 • 定时器管理
问题 • 以上列出的任务包括所有的协议处理了吗? • 哪些功能的优化是最重要的? • 以上功能如何映射到一个典型的网络系统的硬件单元上? • 在一个典型的网络系统中,哪些硬件单元可以用网络处理器来替代? • 实现以上功能的最小通用指令集是什么?
1.6 任务分组 • 为设计最小指令集,将协议处理任务划分成几个组,分别找出适合于每一组任务的指令集,然后将它们集成到一个最终的指令集中。 • 最常见的一种划分方法是将包处理任务分成两个组: • 当包到达时执行的处理,称为ingress • 当包离开时执行的处理,称为egress
Ingress处理 • 差错检测和安全检验 • 分类或解多路复用 • 流量测量和管制 • 地址查找和包转发 • 包头修改和传输层接续 • 排队和调度 • 包重组或流终止
Egress处理 • 校验码生成 • 地址查找和包转发 • 分段或分片 • 流量整形 • 定时和调度 • 排队和缓存 • 输出安全处理(如加密)
1.7 并行和分布式处理结构 • 提高网络处理器扩展能力的三种技术: • 包括专门的硬件单元用以处理特定的任务 • 关键的硬件单元被复制多份,各自独立运行(并行或流水线执行) • 网络处理器工作在分布式环境,可以一起工作以获得更高的集合吞吐量 • 对扩展性的关注给网络处理器的设计带来很大的困难: • 必须选择适合每个特殊任务的硬件单元 • 选择要被复制的硬件单元 • 选择支持分布式执行的硬件单元 • 缺乏网络协议的经验,硬件设计者没有现成的经验规则可以使用。
1.8 网络处理器在网络系统架构中的作用 • 代替一个常规的CPU • 增强一个常规的CPU • 用在NIC的输入路径上 • 用在NIC和交换结构之间 • 用在交换结构和输出接口之间 • 用在NIC的输出路径上 • 像其它端口一样连接到交换结构上
代替一个常规的CPU • 网络处理器必须具有常见的CPU功能和优化包处理的特殊功能 • 指令集中应包括: • 常规指令:算术指令,数据操作指令 • 特殊指令:处理数据包的指令
增强一个常规的CPU • 将网络处理器附加到一个常规CPU上 • CPU执行大部分的包处理 • 网络处理器执行特殊的任务 • 两种结构上的方法: • 作为预处理器:在包进入CPU前进行处理,比如从硬件端口获取数据包,执行Ingress处理等 • 作为协处理器:可以执行任何操作 • 使用网络处理器来增强CPU而不是替代CPU的优点: • 不用考虑常规指令,网络处理器的设计复杂度低 • 缺点: • 需要有调用网络处理器的硬件,增加硬件开销
置于NIC的输入路径上 • 网络处理器从输入端口获取数据包,执行Ingress操作 • 优点: • 灵活性好,可以方便地修改Ingress处理
置于NIC和交换结构之间 • 网络处理器作为NIC和交换结构之间的仲裁者。 • 通过与交换结构的控制器交互建立路径、传输数据和释放路径。
置于交换结构和输出接口之间 • 在使用分布式控制机制的交换结构中,每个输出端口控制对自己的访问。 • 当输入端口准备好使用交换结构时,输入端口使用另一个独立的机制通知输出端口;输出端口调度请求,在交换结构准备好时通知发送者。 • 网络处理器可用于协调输出端口的访问。
置于NIC的输出路径上 • 网络处理器执行Egress处理,从交换结构接收分组、管理队列、流量整形、向输出端口发送包等。
直接连接到交换结构上 • 网络处理器可以像任何其它端口那样连接到交换结构上,从而可以作为一个中间节点,执行包处理任务。 • 如果将多个网络处理器连接到交换结构上,系统可以将输入的数据包分布到整个网络处理器集合。 • 优点: • 易于扩展 • 允许最大的并行性
1.9 宏观数据流水线 • 每个stage由一个网络处理器实现,网络处理器直接连接到交换结构上,利用交换结构提供相邻stage之间的连接。 • 优点: • 支持异构处理器,降低对网络处理器通用性的要求 • 允许跳过流水线中的某个(些)stage,克服了流水线的一个主要缺点。
1.10 网络处理器设计和软件仿真 • 硬件设计者依靠软件仿真评估设计的性能和正确性 • 和常规处理器不同,传统的软件基准测试对于网络处理器不适用: • 不同体系结构的低层硬件细节不同,应用和基准程序不能在不同的网络处理器间共享。 • 软件必须被重写以适应要测试的体系结构,甚至可能需要完全重新组织,这使得性能比较很困难。 • 网络处理器设计的关键是软硬件协同设计。
1.11 网络处理的其它方案 • Net ASIC • 一类特殊的网络处理集成电路的统称,包含能实现大部分网络处理功能的辅助硬件,但不可编程。 • 优点: • 全硬件实现,具有确定的处理性能 • 软件开发环境是开发人员熟悉的 • 采用Net ASIC的公司大多缺乏设计和工程经验,缺乏资金或者市场,无法忍受专用ASIC漫长的开发周期,另外也不愿意去学习陌生的开发平台,导致开发周期延长。 • 由于商业的原因,Net ASIC的开发进程已终止。
网络处理的其它方案(续) • 基于IP Core(Intelligent Property ) 设计: • 20世纪90年代得到广泛应用,现在一个完整的SOC包括了多个结构化的核心电路模块。 • 系统设计者向可靠的第三方获取电路核心设计的使用许可,避免重新设计 • 核心电路采用标准化设计,易于集成 • 模块可重用,缩短开发周期 • 授权费用高昂 • 主要客户是大的网络设备提供商,市场较小。
主要内容 • 第三代网络系统与网络处理器 • 网络处理器体系结构 • 网络处理器的扩放 • 网络处理器举例 • 网络处理器的设计权衡
2.1 网络处理器体系结构的多样性 • 多种网络处理器体系结构存在: • 网络处理器内在的复杂性允许采用多种不同的体系结构来设计 • 固定用户群的缺乏给了开发商在选择设计方案时有更大的自由度 • 工业界对于网络处理器设计的许多问题没有一个统一的认识 • 哪些协议处理功能要映射到专用硬件上,如何映射 • 网络处理器在整个系统体系结构中的最佳作用 • 网络处理器中应包括哪些硬件构件块,哪些硬件功能要被复制,如何组织各个部件 • 如何在多个网络处理器之间建立有效的分布式连接
2.2 网络处理器体系结构的主要特征 • 处理器体系(processor hierarchy) • 存储器体系(memory hierarchy) • 内部传输机制:在芯片内部各功能单元之间提供数据通路 • 外部接口和通信机制:与网络系统其余部分的连接 • 专用硬件 • 轮询和通知机制:异步事件处理机制 • 并发执行支持:最大化系统吞吐量 • 编程模型和范例(programming model and paradigm) • 硬件和软件分配机制(hardware and software dispatch mechanisms) • 隐式或显式并行
处理器体系 • 指执行各种包处理任务的硬件单元,包括可编程的和不可编程的 • 一个典型的网络系统中的处理器体系:
网络处理器中包含的处理器 • 网络处理器通常包含了许多协同工作的物理处理器: • 一个或多个嵌入式处理器,处理高层协议和提供整体控制 • 一个或多个专用协处理器,为特定的包处理任务而优化 • 一个或多个I/O处理器,以线速执行ingress和egress处理 • 一个或多个与交换结构的接口 • 一个或多个数据传输单元,在I/O设备与内存之间传递数据包。
存储器体系 • 分级存储系统可以较低的代价获得较高的性能: • 分级存储系统呈金字塔形,等级越高的存储器容量越小、速度越快,成本越高 • 各种数据依照访问频度的高低放在相应层次的存储器中 • 网络处理器芯片通常不包含大容量的存储器,但包含接口硬件。 • 存储器体系是对网络处理器的基本补充。
内部传输机制 • 在网络处理器芯片的功能单元间提供数据通路的任何机制,用于传送元数据、数据包及辅助数据等。 • 由于网络处理器芯片包含多个独立的处理器,内部通信对于性能来说非常重要。 • 大多数网络处理器包括多种传输机制: • 内部总线:提供连接多个功能单元的数据通路,多数使用集中式访问控制,确保每次只有一个单元访问总线。 • 硬件FIFO:用于连接不同速度的功能单元 • 传输寄存器:提供缓存的传输,不要求顺序访问 • 片上共享存储
外部接口和通信机制 • 外部连接包括: • 标准和专用的总线接口:处理电气连接的细节和提供对片上处理器的总线访问; • 存储器接口:优化与存储器的交互; • 直接I/O接口:允许片上处理器访问外部I/O设备; • 交换结构接口:处理与交换结构的接口细节
专用硬件 • 除协处理器外,网络处理器可以包含至少两类专用硬件: • 控制硬件:协调硬件单元对共享资源的访问 • 可配置硬件单元:其参数可被配置,然后被调用执行某个任务,是对专用协处理器和完全可编程处理器的一个折衷。
轮询和通知机制 • 处理异步事件的两种机制: • 轮询:要求一个活动单元不断地测试与事件相关的硬件 • 通知:用硬件或软件中断实现 • 高速系统倾向于使用轮询以避免中断的开销。
并发执行支持 • 一个典型的网络处理器在多个层次上提供对并发线程的支持: • 嵌入式RISC处理器中:由操作系统提供并发支持,上下文切换开销大 • 低级I/O处理器中:由硬件提供并发支持,切换代价很低或没有 • 两个问题: • 线程的执行可否跨越多个处理器:全局线程提供更多的灵活性,但带来处理器间切换的开销。 • 线程是否可抢占:允许抢占则编程比较容易,不使用抢占则程序员有更多的控制处理的能力。
程序设计的硬件支持 • 对程序设计的两种最流行的硬件支持形式: • 异步事件处理程序:程序员创建一组处理程序,每个处理程序同一个特定的事件关联,当事件发生时系统调用相应的事件处理程序。事件可能来自硬件或软件。 • 通信线程:多个线程独立执行,线程使用进程间通信机制将数据从一个线程传递给另一个线程。一个线程典型地执行一个无限循环。 do forever { wait for next input packet, P; process P; send P on to next thread; }
硬件和软件分配机制 • 分配(dispatch)是指对并行或并发任务的整体控制 • 分配器将一个准备就绪的任务指派给一个特定的处理器或线程 • 可以使用硬件或软件来控制分配,一般而言, • 软件分配用在有操作系统的处理器上 • 硬件分配由没有操作系统的低级I/O处理器使用
显式或隐式并行 • 显式并行: • 硬件体系结构的并行细节暴露给程序员 • 程序员具有更多的控制执行的能力 • 要求程序员了解底层硬件细节 • 程序可重用性差 • 隐式并行: • 向程序员隐藏硬件体系结构的并行细节,程序员采用单线程执行模式编写程序,由硬件自动完成并行化处理。 • 减小了编程的复杂度,易于程序重用。
2.3 网络处理器的主要设计风格 • 嵌入式处理器加不可编程的协处理器 • 嵌入式处理器加可编程I/O处理器 • 多个并行的处理器 • 处理器流水(pipelined processors) • 数据流(dataflow)
嵌入式处理器结构 • 单个处理器,处理所有的功能 • 称为run-to-completion
并行体系结构 • 每个处理器处理总负载的1/N
流水线结构 • 每个处理器执行一个功能 • 数据包穿过流水线