第1章 概述
1. 1 网络系统和因特网
1. 2 应用与基础设施
1. 3 网络系统工程
1. 4 包处理
1. 5 实现高速度
1. 6 网络速度
1. 7 硬件. 软件和混合体
1. 8 本书的读者范围和组织
1. 9 小结
补充读物
第2章 基本术语和实例系统
2. 1 引言
2. 2 网络和包
2. 3 面向连接模式和非连接模式
2. 4 数字电路
2. 5 局域网和广域网的分类
2. 6 因特网与异构性
2. 7 网络系统实例
2. 8 广播域
2. 9 因特网中使用的两个关键系统
2. 10 因特网中的其他系统
2. 11 监视和控制系统
2. 12 小结
补充读物
第3章 协议和包格式
3. 1 引言
3. 2 协议和分层
3. 3 第1层和第2层(物理层和网络接口层)
3. 3. 1 以太网
3. 3. 2 以太网帧格式
3. 3. 3 以太网地址
3. 3. 4 以太网类型字段
3. 4 第3层(互联网层)
3. 4. 1 因特网协议
3. 4. 2 IP数据报格式
3. 4. 3 IP地址
3. 5 第4层(传输层)
3. 5. 1 UDP和TCP
3. 5. 2 UDP数据报格式
3. 5. 3 TCP段格式
3. 6 协议端口号和多路分解
3. 7 封装和传输
3. 8 地址解析协议
3. 9 小结
补充读物
第一部分 传统协议处理系统
第4章 常规计算机硬件体系结构
4. 1 引言
4. 2 常规计算机系统
4. 3 网络接口卡
4. 4 总线的定义
4. 5 总线地址空间
4. 6 存-取模式
4. 7 网络接口卡的功能
4. 8 为实现高速而优化网卡
4. 9 板载地址识别
4. 9. 1 单播和广播识别与过滤
4. 9. 2 多播识别和过滤
4. 10 板载包缓冲
4. 11 直接存储器存取
4. 12 操作和数据链接
4. 13 数据流图
4. 14 混杂模式
4. 15 小结
补充读物
第5章 基本包处理:算法和
数据结构
5. 1 引言
5. 2 状态信息和资源耗尽
5. 3 包缓冲区分配
5. 4 包缓冲区长度和复制
5. 5 协议分层与复制
5. 6 异构与网络字节顺序
5. 7 网桥算法
5. 8 表查找与散列
5. 9 IP数据报分片与重组
5. 9. 1 标志字段的解释
5. 9. 2 分片偏移字段的解释
5. 9. 3 IP分片算法
5. 9. 4 对分片进行分片
5. 9. 5 IP重组
5, 9. 6 组合分片
5. 9. 7 分片的位置
5. 9. 8 IP重组算法
5. 10 IP数据报转发
5. 11 IP转发算法
5. 12 高速IP转发
5. 13 TCP连接识别算法
5. 14 TCP衔接算法
5. 15 小结
补充读物
练习
第6章 包处理功能
6. 1 引言
6. 2 包处理
6. 3 地址查找和包转发
6. 4 检错和纠错
6. 5 分片. 分段和重组
6. 6 帧和协议多路分解
6. 7 包分类
6. 7. 1 静态分类和动态分类
6. 7. 2 多路分解和分类
6. 7. 3 优化的包处理
6. 7. 4 分类语言
6. 8 排队和包丢弃
6. 8. 1 基本排队
6. 8. 2 优先级机制
6. 8. 3 包丢弃
6. 9 调度和分时
6. 10 安全:认证和保密
6. 11 流量测量和控制
6. 12 流量整形
6. 13 计时器管理
6. 14 小结
补充读物
练习
第7章 常规处理器上的协议软件
7. 1 引言
7. 2 应用程序中包处理的实现
7. 3 软件中的快速包处理
7. 4 嵌入式系统
7. 5 操作系统实现
7. 6 软件中断和优先级
7. 7 多优先级和内核线程
7. 8 线程同步
7. 9 分层协议软件
7. 9. 1 每层一个线程
7. 9. 2 每个协议一个线程
7. 9. 3 每个协议多个线程
7. 9. 4 独立的计时器管理线程
7. 9. 5 每个包一个线程
7. 10 异步编程和同步编程
7. 11 小结
补充读物
练习
第8章 协议处理的硬件体系结构
8. 1 引言
8. 2 网络系统体系结构
8. 3 传统的软件路由器
8. 4 聚合数据速率
8. 5 聚合包速率
8. 6 包速率和软件路由器的可行性
8. 7 克服单个CPU的瓶颈
8. 8 细粒度并行
8. 9 对称粗粒度并行
8. 10 非对称粗粒度并行
8. 11 专用协处理器
8. 12 ASIC协处理器实现
8. 13 具有板载处理的网卡
8. 14 带板载栈的智能网卡
8. 15 信元和面向连接的编址
8. 16 数据流水线
8. 17 小结
补充读物
练习
第9章 分类和转发
9. 1 引言
9. 2 多路分解的固有局限性
9. 3 包分类
9. 4 分类的软件实现
9. 5 优化基于软件的分类
9. 6 专用硬件上的软件分类器
9. 7 分类的硬件实现
9. 8 优化多规则集的分类
9. 9 可变长度首部的分类
9. 10 混合的硬/牛/软件分类器
9. 11 动态分类与静态分类的比较
9. 12 细粒度流的建立
9. 13 面向连接的网络中的流转发
9. 14 无连接网络的分类与转发
9. 15 第二代网络系统
9. 16 第二代系统中的嵌入式处理器
9. 17 分类和转发芯片
9. 18 小结
补充读物
练习
第10章 交换矩阵
10. 1 引言
10. 2 内部快速通路的带宽
10. 3 交换矩阵的概念
10. 4 同步与异步矩阵
10. 5 交换矩阵体系结构的分类
10. 6 专用的内部通路与端口争用
10. 7 纵横制体系结构
10. 8 基本排队
10. 9 时分解决方案:共享数据通路
10. 10 共享总线体系结构
10. 11 其他的共享介质体系结构
10. 12 共享存储器体系结构
10. 13 多级矩阵
10. 14 Banyan体系结构
10. 15 扩展Banyan结构
10. 16 商用技术
10. 17 小结
补充读物
练习
第二部分 网络处理器技术
第11章 网络处理器:动机与目的
11. 1 引言
11. 2 第二代体系结构中的CPU
11. 3 第三代网络系统
11. 4 使用嵌入式处理器的动机
11. 5 RISC与CISC
11. 6 定制硅片的需求
11. 7 网络处理器的定义
11. 8 基本思想:通过可编程性实现
灵活性
11. 9 指令集
11. 10 用并行性与流水线的可扩展性
11. 11 网络处理器的成本与收益
11. 12 网络处理器与其经济上的成功
11. 13 网络处理器的形势与未来
11. 14 小结
补充读物
练习
第12章 网络处理器设计的复杂性
12. 1 引言
12. 2 网络处理器的功能
12. 3 包处理功能
12. 4 人口与出口处理
12. 4. 1 人口处理
12. 4. 2 出口处理
12. 5 并行与分布式体系结构
12. 6 网络处理器的体系结构角色
12. 7 每种体系结构角色的结果
12. 8 宏观的数据流水线与异构性
12. 9 网络处理器设计与软件仿真
12. 10 小结
补充读物
练习
第13章 网络处理器的体系结构
13. 1 引言
13. 2 体系结构的多样性
13. 3 主要体系结构特性
13. 3. 1 处理器层次结构
13. 3. 2 存储器层次结构
13. 3. 3 内部传输机制
13. 3. 4 外部接口与通信机制
13. 3. 5 专用硬件
13. 3. 6 轮询与通知机制
13. 3. 7 并发执行支持
13. 3. 8 编程的硬件支持
13. 3. 9 硬件与软件的调度机制
13. 3. 10 隐式或显式的并行性
13. 4 体系结构. 包流与时钟频率
13. 5 软件体系结构
13. 6 处理器层次结构的功能分配
13. 7 小绩
补充读物
练习
第14章 如何扩展网络处理器
14. 1 引言
14. 2 处理的层次和扩展
14. 3 用提高处理器速度进行扩展
14. 4 用增加处理器数目进行扩展
14. 5 用增加处理器类型进行扩展
14. 6 存储器层次的扩展
14. 7 用增加存储容量进行扩展
14. 8 用增加存储带宽进行扩展
14. 9 用增加存储器类型进行扩展
14. 10 用加入高速缓存进行扩展
14. 11 用按内容寻址的存储器进行扩展
14. 12 用CAM做包分类
14. 13 扩展中的其他限制
14. 14 软件的可扩展性
14. 15 瓶颈和扩展
14. 16 小结
补充读物
练习
第15章 商用网络处理器的实例
15. 1 引言
15. 2 商用产品大量涌现
15. 3 产品的选择
15. 4 多芯片流水线(Agere)
15. 5 加强型RISC处理器(Alchemy)
15. 6 嵌入式处理器加协处理器(AMCC)
15. 7 用同构处理器组成流水线(Cisco)
15. 8 可配置指令集处理器(Cogaigine)
15. 9 用异构处理器组成流水线(EZchip)
15. 10 大规模的和多样性的处理器(IBM)
15. 11 自适应的RISC加协处理器(Motorola)
15. 12 小结
补充读物
练习
第16章 用于分类的语言
16. 1 引言
16. 2 优化分类
16. 3 命令模式和说明模式
16. 4 分类用的编程语言
16. 5 自动翻译
16. 6 有助于编程的语育特性
16. 7 语言和硬件的关系
16. 8 效率和执行速度
16. 9 商用的分类语言
16. 10 Intel的网络分类语言(NCL)
16. 11 NCL代码举例
16. 12 NCL的内部函数
16. 13 谓词
16. 14 条件规则的执行
16. 15 增量的协议定义
16. 16 NCL的集合功能
16. 17 NCL的其他特性
16. 18 Agere的函数型程序设计语言(FPL)
16. 19 两遍处理
16. 20 指定第一遍和第二遍
16. 21 用作条件的模式
16. 22 符号常量
16. 23 FPL第二遍处理的示例代码
16. 24 顺序的模式匹配形式
16. 25 树形函数和BITS缺省值
16. 26 返回值
16. 27 对路由引擎传递信息
16. 28 对内部函数和外部函数的访问
16. 29 FPL的其他特性
16. 29. 1 FPL常量的语法
16. 29. 2 FPL的变量
16. 29. 3 FPL对动态分类的支持
16. 30 小结
补充读物
练习
第17章 设计中的权衡及其结果
17. 1 引言
17. 2 低开发成本与性能
17. 3 可编程能力与处理速度
17. 4 性能:包速率. 数据速率和突发
17. 5 速度与功能
17. 6 每接口速率和聚合数据速率
17. 7 网络处理器的速度与带宽
17. 8 协处理器的设计:旁视型与流通型
17. 9 流水线处理:均匀与同步
17. 10 显式并行性与成本和可编程能力
17. 11 并行性:规模与包排序
17. 12 并行性:速度与有状态的分类
17. 13 存储器:速度与可编程能力
17. 14 I/O性能与引脚数
17. 15 编程语言:三方面的权衡
17. 16 多线程:吞吐量与可编程能力
17. 17 流量管理与低成本的盲转发
17. 18 通用性与特殊体系结构的角色
17. 19 存储器类型:专用与通用
17. 20 向后兼容与结构优势
17. 21 并行性与流水线
17. 22 小结
练习
第三部分 网络处理器实例
第18章 Intel网络处理器概述
18. 1 引言
18. 2 Intel术语集
18. 3 IXA:因特网交换体系结构
18. 4 IXP:因特网交换处理器
18. 5 IXP1200的基本特性
18. 6 外部连接
18. 6. 1 串行线路接口
18. 6. 2 PCI总线
18. 6. 3 IX总线
18. 6. 4 SDRAM总线
18. 6. 5 SRAM总线
18. 7 内部组件
18. 8 IXP1200处理器层次结构
18. 8. 1 通用处理器
18. 8. 2 嵌入式RISC处理器(StrongARM)
18. 8. 3 I/O处理器(微引擎)
18. 8. 4 协处理器和其他功能部件
18. 8. 5 物理接口处理器
18. 9 IXP1200存储器层次结构
18. 10 字和长字寻址
18. 11 底层复杂性举例
18. 12 其他硬件部件
18. 13 小结
补充读物
练习
第19章 Intel嵌入式RISC处理器(StrongARM核心)
19. 1 引言
19. 2 使用嵌入式处理器的目的
19. 3 StrongARM体系结构
19. 4 RISC指令集和寄存器
19. 5 StronSARM存储器体系结构
19. 6 StrongARM存储器映像
19. 7 虚地址空间和存储器管理
19. 8 共享存储器和地址交换
19. 9 内部外围部件
19. 9. 1 通过通用异步收发器的串行连接
19. 9. 2 递减计时器
19. 9. 3 通用I/0引脚
19. 9. 4 实时时钟
19. 10 其他I/0
19. 11 用户态和核心态操作
19. 12 协处理器15
19. 13 小结
补充读物
练习
第20章 包处理器硬件
(微引擎和FBI)
20. 1 引言
20. 2 微引擎的作用
20. 3 微引擎体系结构
20. 4 微序列的概念
20. 5 微引擎指令集
20. 6 分离的内存地址空间
20. 7 执行流水线
20. 8 指令暂停的概念
20. 9 条件分支与流水线异常中止
20. 10 存储器访问延迟
20. 11 硬件线程与上下文切换
20. 12 微引擎指令存储
20. 13 微引擎硬件寄存器
20. 14 通用寄存器
20. 14. 1 上下文相对寄存器与绝对寄存器
20. 14. 2 寄存器组
20. 15 传送寄存器
20. 16 本地控制与状态寄存器
20. 17 内部处理器通信
20. 18 FBI单元
20. 19 传送FIFO与接收FIFO
20. 20 FBI体系结构与推人/拉出引擎
20. 21 暂存存储器
20. 22 散列单元
20. 23 配置. 控制和状态寄存器
20. 24 小结
补充读物
练习
第21章 参考系统与软件开发工具包
21. 1 引言
21. 2 参考系统
21. 3 Intel参考系统
21. 3. 1 Intel的硬件测试台
21. 3. 2 Intel的软件开发工具包
21. 4 主机操作系统选择
21. 5 运行在StronSARM上的操作系统
21. 6 外部文件的访问与存储
21. 7 PCI以太网仿真
21. 8 参考硬件的启动
21. 9 运行软件
21. 10 系统重启
21. 11 可选的交叉开发软件
21. 12 小结
补充读物
练习
第22章 编程模式(ACE)
22. 1 引言
22. 2 ACE抽象
22. 3 ACE定义和术语
22. 4 ACE的四个概念部分
22. 5 输出目标和推迟绑定
22. 6 ACE互连实例
22. 7 ACE划分为核心和微块
22. 8 微块组
22. 9 复制的微块组
22. 10 微块结构
22. 11 调度循环
22. 12 调度循环调用的约定
22. 13 包队列
22. 14 异常
22. 15 交叉调用
22. 16 AGE模式之外的应用程序
22. 17 小结
补充读物
练习
第23章 ACE运行结构和StrongARM设施
23. 1 引言
23. 2 StrongARM的任务
23. 3 主要运行组件
23. 4 AGE的核心部件
23. 5 对象管理系统
23. 5. 1 解析器
23. 5. 2 名字服务器
23. 6 资源管理器
23. 7 操作系统专用库
23. 8 动作服务库
23. 9 微引擎的自动分配
23. 10 ACE程序结构
23. 11 ACE主程序和事件循环
23. 12 AGE事件循环和阻塞
23. 13 异步编程模式和回调
23. 14 异步执行和互斥
23. 15 存储分配
23. 16 AGE的加载和启动(ixstart)
23. 17 AGE数据的分配及初始化
23. 18 交叉调用
23. 19 使用IDL的交叉调用声明
23. 20 通信访问进程
23. 21 定时器管理
23. 22 NCL的分类. 动作及缺省动作
23. 23 小结
补充读物
练习
第24章 微引擎编程1
24. 1 引言
24. 2 Intel的微引擎汇编器
24. 3 微引擎汇编语言的语法
24. 4 操作数语法举例
24. 5 寄存器符号名及其分配
24. 6 寄存器的类型和语法
24. 7 本地寄存器的作用域. 嵌套和屏蔽
24. 8 寄存器的分配及冲突
24. 9 宏预处理器
24. 10 宏定义
24. 11 代码段的重复生成
24. 12 结构化编程指令
24. 13 可导致上下文切换的指令
24. 14 间接调用
24. 15 外部传输
24. 16 库宏和传送寄存器的分配
24. 17 小结
补充读物
练习
第25章 微引擎编程Ⅱ
25. 1 引言
25. 2 专用存储器操作
25. 3 缓冲池操作
25. 4 通过位测试实现处理器协作
25. 5 存储器原子递增
25. 6 通过存储器锁操作实现处理器协作
25. 7 控制和状态寄存器
25. 8 Intel调度循环宏
25. 9 包队列及其选择
25. 10 包首部中字段的访问
25. 11 调度循环宏需要进行的初始化
25. 12 包I/O和MAC包的概念
25. 13 无中断的包输入
25. 14 人口包传输
25. 15 包出口
25. 16 其他I/O细节
25. 17 小结
补充读物
练习
第26章 ACE实例
26. 1 引言
26. 2 线路中的块实例
26. 3 wwbump设计
26. 4 头文件
26. 5 包分类和处理的微代码
26. 6 调度循环的微代码
26. 7 核心组件代码(异常处理程序)
26. 8 ACE结构
26. 9 wwbumpACE初始化和结束处理的代码
26. 10 交叉调用实例
26. 10. 1 输出函数的定义
26. 10. 2 IDL说明
26. 10. 3 IDL编译器生成的文件
26. 11 一个交叉调用函数的代码
26. 12 系统配置
26. 13 wwbump设计中一个潜在的瓶颈
26. 14 小结
补充读物
练习
第27章 Intel的第二代处理器
27. 1 引言
27. 2 使用双芯片获得更高数据速率
27. 3 一般特征
27. 4 存储器层次结构
27. 5 外部连接和总线
27. 6 流控总线
27. 7 介质或交换矩阵接口
27. 8 内部体系结构
27. 9 物理网络接口和多路复用
27. 10 微引擎增强
27. 11 支持软件流水线
27. 12 IXP2800
27. 13 小结
补充读物
练习
附录 术语和缩略语词汇表
参考文献
索引