Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103589845
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-22 13:16:11

作者: chiver 出自:
  Solaris 10 中的 FireEngine 方法将所有协议层合并为一个完全多线程的 STREAMS 模块。在合并的模块内,没有使用针对每个数据结构的锁,而是使用针对每个 CPU 的同步机制,即垂直边界。垂直边界是使用名为 squeue 的序列化队列抽象实现的。每个 squeue 绑定到 CPU,而每个连接又绑定到提供特定于连接的数据结构所需的任何同步和互斥的 squeue。

  由于栈是完全多线程的(除非垂直边界强制实现针对每个 CPU 的串行化),因此它使用基于引用的方案来确保连接实例在需要时可用。对于建立的 TCP 连接,可确保对其进行三种引用。每个协议层具有对实例的引用(TCP 和 IP 各有一个引用),分类器本身也具有引用,因为它是建立的连接。每次数据包到达连接并且分类器查找连接实例时,都会设置一个额外的引用;当协议层处理完该数据包后,将会删除此引用。

  Solaris 10 提供了与以前发行版相同的 TCP 视图,即 TCP 显示为克隆设备,但它实际上是一个复合设备,将 TCP 和 IP 代码合并为单个 D_MP STREAMS 模块。TCP 的操作部分由通过 squeue 原语输入的垂直边界充分保护。在控制和数据路径上,FireEngine 将 TCP 和 IP 之间的接口由基于 STREAMS 的现有消息传送接口更改为基于函数调用的接口。

  Solaris 10 引入了名为 GLDv3 的新设备驱动程序框架以及新栈。大多数主要设备驱动程序都移植到此框架上,所有将来的设备驱动程序和 10Gb 设备驱动程序均基于此框架。此框架还提供了一个基于 STREAMS 的 DLPI 层以保持向后兼容性(以允许外部非 IP 模块能够继续正常使用)。GLDv3 体系结构虚拟化网络栈的第二层。网络接口和设备之间的一一对应关系不复存在。

  Crossbow 通过任何服务(HTTP、HTTPS、FTP、NFS等)、协议(TCP、UDP、SCTP等)或 Solaris 容器技术创建虚拟栈。虚拟栈通过 H/W 分类引擎进行分隔,以便一个栈的通信不会影响其他虚拟栈。可以在共享 NIC 上为每个虚拟栈分配它自己的优先级和带宽,而不会导致系统或服务/容器的性能下降。
阅读(468) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~