内容简介
本书围绕计算机网络中路由器的基本构成,精选了在计算机网络领域广泛应用的5类典型电路,包括基于Trie的IP路由查找电路、SDN流表电路、空分交换单元、共享存储交换单元和复杂队列管理器等,给出了每个电路的算法原理、内部结构、功能说明、Verilog HDL设计代码和仿真验证代码。本书中的所有代码都在FPGA开发环境上进行了实际验证,可以直接应用于读者的设计实践中,具有良好的参考价值。
本书主要面向具有一定Verilog HDL语法基础,着手进行大规模数字系统设计的电子技术、计算机、通信和网络领域的高年级本科生、研究生和已经进入工作岗位的工程技术人员。
目录
第1章计算机网络典型电路概述
1.1计算机网络简介
1.2路由器的基本功能与
工作原理
1.3路由器的基本构成与
技术简介
1.3.1路由器的基本
构成
1.3.2路由器的IP路由
查找技术
1.3.3路由器的交换
结构
1.3.4路由器的缓存
排队机制
1.3.5路由器的常用队列
调度机制
第2章基于Trie的路由查找算法
及电路实现
2.1基于Trie的IP路由
查找算法
2.1.1二叉树查找原理
2.1.2路径压缩Trie
查找算法
2.1.3多分支Trie
查找算法
2.1.4层级压缩Trie
查找算法
2.2基本二进制Trie的硬件电路
实现与仿真分析
2.2.1基本二进制Trie的电路
结构和算法原理
2.2.2基本二进制Trie电路
设计与仿真分析
2.3路径压缩二叉树算法与
电路实现
2.3.1路径压缩二叉树的
生成
2.3.2CTrie查找电路的
设计与仿真分析
第3章SDN流表电路算法与
电路实现
3.1哈希查找算法原理
3.2多桶哈希查找电路设计
与分析
3.3多级流表电路设计与分析
第4章典型空分交换单元的原理
与设计
4.1单级Crossbar的功能
4.2Crossbar的电路实现
4.2.1in_queue电路的设计
与实现
4.2.2in_arbiter_4_stream电路
的设计与实现
4.2.3out_arbiter_4_stream电路
的设计与实现
4.2.4sequencer电路的
设计
4.2.5crossbar_top_stream
电路的设计与仿真
分析
第5章共享存储交换单元
5.1共享存储交换单元的
工作原理
5.2共享缓存交换结构及
工作流程
5.2.1switch_core中的自由
指针队列管理
电路
5.2.2队列控制器电路
5.2.3switch_core电路
第6章常用多用户队列管理器与
调度器电路
6.1支持资源预留的多用户队列
管理器
6.1.1支持资源预留的
多用户队列管理器
电路结构
6.1.2支持资源预留的
多用户队列管理器
设计与仿真分析
6.2多用户队列调度器
6.2.1基于漏桶算法的
多用户队列调度器
电路结构
6.2.2多用户队列调度器
电路的设计与
仿真分析
6.3基于DDR的多用户队列
管理器
6.3.1基于DDR的多用户队列
管理器工作机制
6.3.2基于DDR的多用户
队列管理器设计与
仿真代码
参考文献
前言/序言
本书根据作者长期教学科研实践,围绕路由器的典型结构,重点介绍基于Trie的IP路由查找电路、SDN流表电路、空分交换单元、共享存储交换单元和复杂队列管理器等5类典型电路,涵盖了计算机网络中常用的典型电路。所有电路均给出典型应用场景、算法原理、电路框图、接口定义和工作流程,以及经过实际验证的RTL级设计代码并进行详细的注释,可采用FPGA或专用集成电路加以实现。主要电路都给出仿真代码和典型仿真结果,便于读者对电路进行理解和分析。
目前,Verilog HDL类书籍普遍偏重基本语法教学和基本电路设计,或者讲授FPGA设计流程,本书则重在帮助具有初步语法基础的读者通过对各类典型工程案例的学习,成体系地熟悉计算机网络领域典型电路的设计与实现,有效积累大规模数字系统设计知识和实际的工程技术经验,为进一步进行本领域的创新实践打下坚实基础。
本书具有以下主要特点: ①所选择的案例均具有一定代表性,并且在现有书籍中涉及较少; ②每个案例均给出电路的应用场景、算法原理、电路设计代码和仿真验证代码,完备性较高,易于学习; ③所有代码都经过工程实践验证,可以直接应用于计算机网络类数字系统的设计,可以采用FPGA或者专用集成电路实现; ④注重将数字系统设计方法学知识融入不同类型的设计案例中,有助于增加读者对复杂数字系统设计工程学知识的了解,可对其他电路设计起到指导作用。
本书包括6章。
第1章为概述。简单介绍计算机网络的分层模型及路由器在计算机网络中的基本功能。在此基础上介绍路由器的典型结构、关键电路和部分基础知识,为后面章节的阅读与学习提供支撑。
第2章重点介绍全硬件最长前缀匹配电路的算法原理与电路实现。本章对应用于路由器等网络设备中的IP地址最长前缀匹配技术进行较为全面的介绍,对基本二进制Trie的构造、匹配、删除等操作的算法原理进行分析; 给出采用全硬件构造基本二进制Trie时的电路结构、电路工作原理、详细设计代码并进行仿真分析。针对基本二进制Trie在查找速度和存储空间利用率上的不足,分析路径压缩二进制Trie查找电路的结构、算法原理、典型代码和仿真分析结果。
第3章对基于哈希的查找技术进行较为系统的分析与设计实现。基于哈希的查找技术可被应用于以太网交换机和软件定义网络(Software Defined Network,SDN)中多级流表的实现。SDN是近年来高速发展并被逐渐接受的网络技术,流表是其实现路由查找的关键技术。本章重点分析多桶哈希查找电路的算法原理与电路实现,同时,以此为基础,设计典型多级流表电路并进行仿真分析。
第4章给出支持虚拟输出队列的多端口空分交换单元的完整设计。Crossbar是典型的空分交换单元,可广泛应用于各种网络设备中,包括以太网交换机和路由器等,也可作为IP核用于各种分布式处理系统中,进行不同处理单元之间的信息交互。本章给出包括虚拟输入队列、输入仲裁器、输出仲裁器在内的典型Crossbar电路,对设计代码进行仿真分析。
第5章给出典型共享存储交换结构的工作机制和电路实现。共享存储交换结构由自由指针队列管理器、基于链表的8优先级队列控制器以及顶层电路构成。本章对其电路结构、内部接口关系和工作流程进行说明,对其涉及的算法原理进行详细分析,给出完整的设计代码并进行仿真分析。
第6章重点设计支持资源预留的多用户队列管理器和基于DDR的多用户队列管理器。队列管理器是路由器和各类协议处理器等网络设备中的典型电路,可以根据需要同时建立和维护大量的逻辑队列。本章设计的支持资源预留的队列管理器可以为不同的逻辑队列分配私有缓冲区,保证缓冲区使用的公平性,同时,这些逻辑队列还可以按需使用共享缓冲区,提高缓冲区利用率,从而形成灵活的缓冲区分配与使用机制。支持资源预留的队列管理器可以为不同的逻辑队列,基于预先配置的信用值分配输出带宽,实现灵活的带宽分配和多队列输出调度机制。基于DDR的多用户队列管理器采用数据块与数据分段相结合的缓冲区划分与使用机制,可以兼顾缓冲资源按需动态分配和较低的硬件资源消耗,同时支持数据重传,满足特定的数据转发与协议处理需求。
需要说明的是,路由器历经多代发展,可根据应用场景、转发能力、设备结构、部署位置、链路类别等进行分类,形成复杂的设备型谱,涉及庞大的知识体系,无论哪本书都很难全面详尽地加以介绍。本书围绕路由器的基本功能,较为全面地介绍计算机网络中常用的基本电路,给出典型设计代码,旨在帮助学习者快速理解和掌握复杂数字系统设计技术,提升设计能力。
阅读本书时,需要注意以下几点: