《网络处理器与网络系统设计》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Douglas E.Comer著;张建忠,陶智华等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2004
  • ISBN:7111143620
  • 页数:356 页
图书介绍:网络处理器与网络系统设计,ISBN:9787111143628,作者:(美)Douglas E.Comer著;张建忠,陶智华等译;张建忠译

1.2 应用与基础设施 1

1.3 网络系统工程 1

目录出版者的话专家指导委员会译者序序言前言关于本书的评论作者简介第1章 概述 1

1.1 网络系统和因特网 1

1.6 网络速度 2

1.5 实现高速度 2

1.4 包处理 2

1.8 本书的读者范围和组织 3

1.7 硬件、软件和混合体 3

补充读物 4

1.9 小结 4

2.4 数字电路 5

2.3 面向连接模式和非连接模式 5

第2章 基本术语和实例系统 5

2.1 引言 5

2.2 网络和包 5

2.6 因特网与异构性 6

2.5 局域网和广域网的分类 6

2.8 广播域 7

2.7 网络系统实例 7

2.10 因特网中的其他系统 8

2.9 因特网中使用的两个关键系统 8

2.12 小结 9

2.11 监视和控制系统 9

补充读物 10

3.2 协议和分层 11

3.1 引言 11

第3章 协议和包格式 11

3.3.2 以太网帧格式 12

3.3.1 以太网 12

3.3 第1层和第2层(物理层和网络接口层) 12

3.4.1 因特网协议 13

3.4 第3层(互联网层) 13

3.3.3 以太网地址 13

3.3.4 以太网类型字段 13

3.4.2 IP数据报格式 14

3.5.2 UDP数据报格式 15

3.5.1 UDP和TCP 15

3.4.3 IP地址 15

3.5 第4层(传输层) 15

3.5.3 TCP段格式 16

3.8 地址解析协议 17

3.7 封装和传输 17

3.6 协议端口号和多路分解 17

补充读物 18

3.9 小结 18

4.3 网络接口卡 20

4.2 常规计算机系统 20

第一部分 传统协议处理系统第4章 常规计算机硬件体系结构 20

4.1 引言 20

4.4 总线的定义 21

4.6 存-取模式 22

4.5 总线地址空间 22

4.8 为实现高速而优化网卡 23

4.7 网络接口卡的功能 23

4.9.2 多播识别和过滤 24

4.9.1 单播和广播识别与过滤 24

4.9 板载地址识别 24

4.10 板载包缓冲 25

4.12 操作和数据链接 26

4.11 直接存储器存取 26

4.14 混杂模式 27

4.13 数据流图 27

补充读物 28

4.15 小结 28

5.3 包缓冲区分配 29

5.2 状态信息和资源耗尽 29

第5章 基本包处理:算法和数据结构 29

5.1 引言 29

5.5 协议分层与复制 30

5.4 包缓冲区长度和复制 30

5.6 异构与网络字节顺序 31

5.7 网桥算法 32

5.8 表查找与散列 33

5.9.1 标志字段的解释 34

5.9 IP数据报分片与重组 34

5.9.4 对分片进行分片 35

5.9.3 IP分片算法 35

5.9.2 分片偏移字段的解释 35

5.9.5 IP重组 36

5.9.7 分片的位置 37

5.9.6 组合分片 37

5.10 IP数据报转发 38

5.9.8 IP重组算法 38

5.11 IP转发算法 39

5.12 高速IP转发 40

5.13 TCP连接识别算法 41

5.14 TCP衔接算法 42

5.15 小结 43

练习 44

补充读物 44

6.3 地址查找和包转发 45

6.2 包处理 45

第6章 包处理功能 45

6.1 引言 45

6.4 检错和纠错 46

6.7.1 静态分类和动态分类 47

6.7 包分类 47

6.5 分片、分段和重组 47

6.6 帧和协议多路分解 47

6.7.3 优化的包处理 48

6.7.2 多路分解和分类 48

6.8.2 优先级机制 49

6.8.1 基本排队 49

6.7.4 分类语言 49

6.8 排队和包丢弃 49

6.8.3 包丢弃 50

6.10 安全:认证和保密 51

6.9 调度和分时 51

6.12 流量整形 52

6.11 流量测量和控制 52

6.14 小结 54

6.13 计时器管理 54

练习 55

补充读物 55

7.3 软件中的快速包处理 56

7.2 应用程序中包处理的实现 56

第7章 常规处理器上的协议软件 56

7.1 引言 56

7.6 软件中断和优先级 57

7.5 操作系统实现 57

7.4 嵌入式系统 57

7.8 线程同步 59

7.7 多优先级和内核线程 59

7.9.1 每层一个线程 60

7.9 分层协议软件 60

7.9.3 每个协议多个线程 61

7.9.2 每个协议一个线程 61

7.9.5 每个包一个线程 62

7.9.4 独立的计时器管理线程 62

7.11 小结 63

7.10 异步编程和同步编程 63

练习 64

补充读物 64

8.3 传统的软件路由器 65

8.2 网络系统体系结构 65

第8章 协议处理的硬件体系结构 65

8.1 引言 65

8.4 聚合数据速率 66

8.5 聚合包速率 67

8.6 包速率和软件路由器的可行性 68

8.7 克服单个CPU的瓶颈 69

8.9 对称粗粒度并行 70

8.8 细粒度并行 70

8.11 专用协处理器 71

8.10 非对称粗粒度并行 71

8.13 具有板载处理的网卡 72

8.12 ASIC协处理器实现 72

8.15 信元和面向连接的编址 73

8.14 带板载栈的智能网卡 73

8.16 数据流水线 74

练习 75

补充读物 75

8.17 小结 75

9.2 多路分解的固有局限性 77

9.1 引言 77

第9章 分类和转发 77

9.4 分类的软件实现 78

9.3 包分类 78

9.5 优化基于软件的分类 79

9.7 分类的硬件实现 80

9.6 专用硬件上的软件分类器 80

9.8 优化多规则集的分类 81

9.9 可变长度首部的分类 82

9.11 动态分类与静态分类的比较 83

9.10 混合的硬件/软件分类器 83

9.12 细粒度流的建立 84

9.14 无连接网络的分类与转发 85

9.13 面向连接的网络中的流转发 85

9.15 第二代网络系统 86

9.17 分类和转发芯片 87

9.16 第二代系统中的嵌入式处理器 87

练习 88

补充读物 88

9.18 小结 88

10.3 交换矩阵的概念 90

10.2 内部快速通路的带宽 90

第10章 交换矩阵 90

10.1 引言 90

10.4 同步与异步矩阵 91

10.6 专用的内部通路与端口争用 92

10.5 交换矩阵体系结构的分类 92

10.7 纵横制体系结构 93

10.8 基本排队 94

10.10 共享总线体系结构 96

10.9 时分解决方案:共享数据通路 96

10.12 共享存储器体系结构 98

10.11 其他的共享介质体系结构 98

10.14 Banyan体系结构 99

10.13 多级矩阵 99

10.15 扩展Banyan结构 100

10.17 小结 102

10.16 商用技术 102

练习 103

补充读物 103

11.3 第三代网络系统 106

11.2 第二代体系结构中的CPU 106

第二部分 网络处理器技术第11章 网络处理器:动机与目的 106

11.1 引言 106

11.5 RISC与CISC 107

11.4 使用嵌入式处理器的动机 107

11.6 定制硅片的需求 108

11.7 网络处理器的定义 109

11.9 指令集 110

11.8 基本思想:通过可编程性实现灵活性 110

11.11 网络处理器的成本与收益 111

11.10 用并行性与流水线的可扩展性 111

11.12 网络处理器与其经济上的成功 112

练习 113

补充读物 113

11.13 网络处理器的形势与未来 113

11.14 小结 113

12.3 包处理功能 115

12.2 网络处理器的功能 115

第12章 网络处理器设计的复杂性 115

12.1 引言 115

12.4.1 入口处理 116

12.4 入口与出口处理 116

12.4.2 出口处理 117

12.5 并行与分布式体系结构 118

12.7 每种体系结构角色的结果 119

12.6 网络处理器的体系结构角色 119

12.9 网络处理器设计与软件仿真 121

12.8 宏观的数据流水线与异构性 121

练习 122

补充读物 122

12.10 小结 122

13.3 主要体系结构特性 123

13.2 体系结构的多样性 123

第13章 网络处理器的体系结构 123

13.1 引言 123

13.3.2 存储器层次结构 124

13.3.1 处理器层次结构 124

13.3.3 内部传输机制 126

13.3.5 专用硬件 127

13.3.4 外部接口与通信机制 127

13.3.7 并发执行支持 128

13.3.6 轮询与通知机制 128

13.3.9 硬件与软件的调度机制 129

13.3.8 编程的硬件支持 129

13.4 体系结构、包流与时钟频率 130

13.3.10 隐式或显式的并行性 130

13.6 处理器层次结构的功能分配 132

13.5 软件体系结构 132

13.7 小结 133

练习 134

补充读物 134

14.3 用提高处理器速度进行扩展 136

14.2 处理的层次和扩展 136

第14章 如何扩展网络处理器 136

14.1 引言 136

14.5 用增加处理器类型进行扩展 137

14.4 用增加处理器数目进行扩展 137

14.6 存储器层次的扩展 138

14.7 用增加存储容量进行扩展 139

14.9 用增加存储器类型进行扩展 140

14.8 用增加存储带宽进行扩展 140

14.10 用加入高速缓存进行扩展 141

14.11 用按内容寻址的存储器进行扩展 142

14.12 用CAM做包分类 143

14.13 扩展中的其他限制 145

14.16 小结 146

14.15 瓶颈和扩展 146

14.14 软件的可扩展性 146

练习 147

补充读物 147

15.4 多芯片流水线(Agere) 148

15.3 产品的选择 148

第15章 商用网络处理器的实例 148

15.1 引言 148

15.2 商用产品大量涌现 148

15.5 加强型RISC处理器(Alchemy) 152

15.6 嵌入式处理器加协处理器(AMCC) 153

15.8 可配置指令集处理器(Cognigine) 154

15.7 用同构处理器组成流水线(Cisco) 154

15.9 用异构处理器组成流水线(EZchip) 156

15.10 大规模的和多样性的处理器(IBM) 157

15.11 自适应的RISC加协处理器(Motorola) 159

15.12 小结 161

练习 162

补充读物 162

16.3 命令模式和说明模式 163

16.2 优化分类 163

第16章 用于分类的语言 163

16.1 引言 163

16.6 有助于编程的语言特性 164

16.5 自动翻译 164

16.4 分类用的编程语言 164

16.7 语言和硬件的关系 165

16.10 Intel的网络分类语言(NCL) 166

16.9 商用的分类语言 166

16.8 效率和执行速度 166

16.11 NCL代码举例 167

16.12 NCL的内部函数 169

16.14 条件规则的执行 170

16.13 谓词 170

16.16 NCL的集合功能 171

16.15 增量的协议定义 171

16.18 Agere的函数型程序设计语言(FPL) 172

16.17 NCL的其他特性 172

16.19 两遍处理 173

16.21 用作条件的模式 174

16.20 指定第一遍和第二遍 174

16.22 符号常量 175

16.23 FPL第二遍处理的示例代码 176

16.24 顺序的模式匹配形式 177

16.27 对路由引擎传递信息 178

16.26 返回值 178

16.25 树形函数和BITS缺省值 178

16.29.1 FPL常量的语法 179

16.29 FPL的其他特性 179

16.28 对内部函数和外部函数的访问 179

补充读物 180

16.30 小结 180

16.29.2 FPL的变量 180

16.29.3 FPL对动态分类的支持 180

练习 181

17.4 性能:包速率、数据速率和突发 182

17.3 可编程能力与处理速度 182

第17章 设计中的权衡及其结果 182

17.1 引言 182

17.2 低开发成本与性能 182

17.7 网络处理器的速度与带宽 183

17.6 每接口速率和聚合数据速率 183

17.5 速度与功能 183

17.11 并行性:规模与包排序 184

17.10 显式并行性与成本和可编程能力 184

17.8 协处理器的设计:旁视型与流通型 184

17.9 流水线处理:均匀与同步 184

17.15 编程语言:三方面的权衡 185

17.14 I/O性能与引脚数 185

17.12 并行性:速度与有状态的分类 185

17.13 存储器:速度与可编程能力 185

17.19 存储器类型:专用与通用 186

17.18 通用性与特殊体系结构的角色 186

17.16 多线程:吞吐量与可编程能力 186

17.17 流量管理与低成本的盲转发 186

练习 187

17.22 小结 187

17.20 向后兼容与结构优势 187

17.21 并行性与流水线 187

18.4 IXP:因特网交换处理器 190

18.3 IXA:因特网交换体系结构 190

第三部分 网络处理器实例第18章 Intel网络处理器概述 190

18.1 引言 190

18.2 Intel术语集 190

18.6 外部连接 191

18.5 IXP1200的基本特性 191

18.6.1 串行线路接口 192

18.8 IXP1200处理器层次结构 193

18.7 内部组件 193

18.6.2 PCI总线 193

18.6.3 IX总线 193

18.6.4 SDRAM总线 193

18.6.5 SRAM总线 193

18.9 IXP1200存储器层次结构 195

18.8.5 物理接口处理器 195

18.8.1 通用处理器 195

18.8.2 嵌入式RISC处理器(StrongARM) 195

18.8.3 I/O处理器(微引擎) 195

18.8.4 协处理器和其他功能部件 195

18.11 底层复杂性举例 197

18.10 字和长字寻址 197

18.13 小结 198

18.12 其他硬件部件 198

练习 199

补充读物 199

19.2 使用嵌入式处理器的目的 200

19.1 引言 200

第19章 Intel嵌入式RISC处理器(StrongARM核心) 200

19.3 StrongARM体系结构 201

19.5 StrongARM存储器体系结构 202

19.4 RLSC指令集和寄存器 202

19.6 StrongARM存储器映像 203

19.9 内部外围部件 204

19.8 共享存储器和地址交换 204

19.7 虚地址空间和存储器管理 204

19.11 用户态和核心态操作 205

19.10 其他I/O 205

19.9.1 通过通用异步收发器的串行连接 205

19.9.2 递减计时器 205

19.9.3 通用I/O引脚 205

19.9.4 实时时钟 205

练习 206

补充读物 206

19.12 协处理器15 206

19.13 小结 206

20.3 微引擎体系结构 208

20.2 微引擎的作用 208

第20章 包处理器硬件(微引擎和FBI) 208

20.1 引言 208

20.5 微引擎指令集 209

20.4 微序列的概念 209

20.6 分离的内存地址空间 210

20.7 执行流水线 211

20.8 指令暂停的概念 212

20.10 存储器访问延迟 213

20.9 条件分支与流水线异常中止 213

20.11 硬件线程与上下文切换 214

20.12 微引擎指令存储 215

20.14.2 寄存器组 216

20.14.1 上下文相对寄存器与绝对寄存器 216

20.13 微引擎硬件寄存器 216

20.14 通用寄存器 216

20.15 传送寄存器 217

20.17 内部处理器通信 218

20.16 本地控制与状态寄存器 218

20.18 FBI单元 219

20.20 FBI体系结构与推入/拉出引擎 220

20.19 传送FIFO与接收FIFO 220

20.22 散列单元 221

20.21 暂存存储器 221

练习 223

补充读物 223

20.23 配置、控制和状态寄存器 223

20.24 小结 223

21.3.1 Intel的硬件测试台 225

21.3 Intel参考系统 225

第21章 参考系统与软件开发工具包 225

21.1 引言 225

21.2 参考系统 225

21.3.2 Intel的软件开发工具包 226

21.5 运行在StrongARM上的操作系统 227

21.4 主机操作系统选择 227

21.7 PCI以太网仿真 228

21.6 外部文件的访问与存储 228

21.10 系统重启 229

21.9 运行软件 229

21.8 参考硬件的启动 229

补充读物 230

21.12 小结 230

21.11 可选的交叉开发软件 230

练习 231

22.3 ACE定义和术语 232

22.2 ACE抽象 232

第22章 编程模式(ACE) 232

22.1 引言 232

22.6 ACE互连实例 233

22.5 输出目标和推迟绑定 233

22.4 ACE的四个概念部分 233

22.7 ACE划分为核心和微块 234

22.9 复制的微块组 235

22.8 微块组 235

22.11 调度循环 236

22.10 微块结构 236

22.14 异常 238

22.13 包队列 238

22.12 调度循环调用的约定 238

22.15 交叉调用 239

练习 240

补充读物 240

22.16 ACE模式之外的应用程序 240

22.17 小结 240

23.3 主要运行组件 242

23.2 StrongARM的任务 242

第23章 ACE运行结构和StrongARM设施 242

23.1 引言 242

23.5.1 解析器 243

23.5 对象管理系统 243

23.4 ACE的核心部件 243

23.9 微引擎的自动分配 244

23.8 动作服务库 244

23.5.2 名字服务器 244

23.6 资源管理器 244

23.7 操作系统专用库 244

23.11 ACE主程序和事件循环 245

23.10 ACE程序结构 245

23.12 ACE事件循环和阻塞 246

23.13 异步编程模式和回调 247

23.15 存储分配 249

23.14 异步执行和互斥 249

23.17 ACE数据的分配及初始化 250

23.16 ACE的加载和启动(ixstart) 250

23.18 交叉调用 251

23.20 通信访问进程 252

23.19 使用IDL的交叉调用声明 252

23.21 定时器管理 253

23.22 NCL的分类、动作及缺省动作 254

练习 255

补充读物 255

23.23 小结 255

第24章 微引擎编程Ⅰ 257

24.1 引言 257

24.2 Intel的微引擎汇编器 257

24.3 微引擎汇编语言的语法 257

24.4 操作数语法举例 258

24.5 寄存器符号名及其分配 260

24.6 寄存器的类型和语法 261

24.7 本地寄存器的作用域、嵌套和屏蔽 262

24.8 寄存器的分配及冲突 263

24.9 宏预处理器 263

24.10 宏定义 264

24.11 代码段的重复生成 265

24.12 结构化编程指令 265

24.13 可导致上下文切换的指令 267

24.14 间接调用 268

24.15 外部传输 269

24.16 库宏和传送寄存器的分配 269

补充读物 270

练习 270

24.17 小结 270

25.2 专用存储器操作 272

25.1 引言 272

25.3 缓冲池操作 272

第25章 微引擎编程Ⅱ 272

25.4 通过位测试实现处理器协作 273

25.5 存储器原子递增 273

25.6 通过存储器锁操作实现处理器协作 274

25.7 控制和状态寄存器 275

25.8 Intel调度循环宏 276

25.9 包队列及其选择 277

25.10 包首部中字段的访问 278

25.11 调度循环宏需要进行的初始化 278

25.12 包I/O和MAC包的概念 280

25.13 无中断的包输入 281

25.14 入口包传输 281

25.15 包出口 282

25.16 其他I/O细节 283

补充读物 284

练习 284

25.17 小结 284

26.2 线路中的块实例 285

26.1 引言 285

26.3 wwbump设计 285

第26章 ACE实例 285

26.4 头文件 286

26.5 包分类和处理的微代码 288

26.6 调度循环的微代码 291

26.7 核心组件代码(异常处理程序) 293

26.8 ACE结构 295

26.9 wwbump ACE初始化和结束处理的代码 295

26.10 交叉调用实例 297

26.10.2 IDL说明 298

26.10.3 IDL编译器生成的文件 298

26.10.1 输出函数的定义 298

26.11 一个交叉调用函数的代码 300

26.12 系统配置 302

补充读物 306

26.14 小结 306

练习 306

26.13 wwbump设计中一个潜在的瓶颈 306

27.2 使用双芯片获得更高数据速率 308

27.1 引言 308

27.3 一般特征 308

第27章 Intel的第二代处理器 308

27.5 外部连接和总线 309

27.6 流控总线 309

27.4 存储器层次结构 309

27.7 介质或交换矩阵接口 310

27.8 内部体系结构 310

27.9 物理网络接口和多路复用 311

27.11 支持软件流水线 312

27.12 IXP2800 312

27.10 微引擎增强 312

补充读物 313

练习 313

27.13 小结 313

附录 术语和缩略语词汇表 314

参考文献 341

索引 344