当前位置: 首页 > news >正文

浅析SAS协议:设备接入与探测

文章目录

    • SAS设备初始化
      • OOB信号
        • SAS设备间OOB交互
          • 场景一:SAS设备两边同时发送SAS COMINIT信号
          • 场景二:SAS设备A先发送COMINIT信号
          • 场景三:SAS设备B错过COMINIT信号
        • SAS与SATA设备间OOB交互
          • 场景一:SATA设备未响应COMSAS信号
          • 场景二:SATA设备使用COMINIT响应COMSAS信号
      • 速率协商
      • IDENTIFY序列
    • Discovery流程
      • Discovery探测流程
        • 使用到的SMP请求
      • Discovery探测示例
    • 相关参考

SAS设备初始化

SAS设备接入后,链路两边会自动开始探测对端设备在位状态、确认设备类型(SAS或SATA)以及进行速率协商等动作。在两边设备可以正式进行数据通信之前,硬件需要完成一些初始化步骤:

  1. 交互OOB信号探测连接设备在位状态,并确认它是SAS设备还是SATA设备;
  2. 根据SAS或SATA设备的协商方式,将链路协商到可支持的最大速率;
  3. 识别连接设备的信息,包括SAS地址等。

OOB信号

SAS协议定义了三种OOB信号:COMINIT、COMSAS、COMWAKE,其中COMINIT是通用OOB信号;COMSAS用于SAS设备之间的交互;COMWAKE用于SAS与SATA设备、SATA与SATA设备之间的交互。

SAS设备间OOB交互

SAS设备间OOB信号交互流程如下:

  1. 链路两边设备上电后,均按照一定的周期发送COMINIT信号;
  2. 当一边设备收到对方的COMINIT信号后,分成两种情况:
    1. 如果当前设备已经发送过COMINIT信号,将直接发送COMSAS信号;
    2. 如果当前设备没有发送过COMINIT信号,将发送COMINIT和COMSAS信号。
  3. 当一边设备收到对方的COMSAS信号后,如果尚未发送COMSAS信号,则发送COMSAS。
场景一:SAS设备两边同时发送SAS COMINIT信号

在这里插入图片描述

场景二:SAS设备A先发送COMINIT信号

在这里插入图片描述

场景三:SAS设备B错过COMINIT信号

在这里插入图片描述

SAS与SATA设备间OOB交互

SAS与SATA设备间OOB交互流程如下:

  1. 链路两边设备上电后,均按照一定的周期发送COMINIT信号;
  2. 当SAS设备收到对方的COMINIT信号后,发送COMSAS信号,此时分成两种情况:
    1. SATA设备不响应COMSAS信号,后续COMSAS检测超时;
    2. SATA设备使用COMINIT响应COMSAS信号,后续COMSAS检测超时;
  3. SAS设备发送COMWAKE信号。
场景一:SATA设备未响应COMSAS信号

在这里插入图片描述

场景二:SATA设备使用COMINIT响应COMSAS信号

在这里插入图片描述

速率协商

当OOB信号交互完成,两边都确认了对端的设备类型,后面就会进入速率协商流程。速率协商过程与链路协议相关,因此需要按照设备规定的方式进行。

IDENTIFY序列

SAS设备初始化的最后一个步骤是获取连接的设备信息。在完成OOB交互和速率协商之后,SAS设备会发送一个称作IDENTIFY的地址帧来相互交换设备信息,IDENTIFY包含了设备的SAS地址、名称以及Phy编号等信息。这里要注意的是,SATA设备没有SAS地址,因此SATA设备无法传输IDENTIFY地址帧。

Discovery流程

Discovery流程由SAS网络中的启动器发起,目的在于探测系统中连接的SAS设备,包括Expander、SAS硬盘以及SATA硬盘。

Discovery探测流程

对于启动器直连的设备,在设备链路协商时,通过交换Identify序列,启动器已经获取了对端的设备类型、SAS地址以及协商速率等信息;而对于非直连的设备,这类设备都是连接在Expander下,设备信息由Expander进行维护,启动器需要使用SMP协议向Expander查询连接的设备信息。Discovery探测流程的整体步骤如下:

  1. 向级联的Expander发送Report General请求,获取Expander设备的通用信息,包括Expander设备上的Phy数量、自配置能力等信息;
  2. 向级联的Expander发送Discover或Discovr List请求,遍历Expander的所有Phy,获取每个Phy的设备连接信息;
  3. 将探测到的设备添加到系统中。如果探测到的设备中有Expander,则对Expander重复前面的流程,以探测这个Expander下面接入的设备。

使用到的SMP请求

Discover过程通常涉及的SMP请求如下:

  • Report General:用于查询Expander设备的通用信息,包括Expander设备上的Phy数量、自配置能力等;
  • Report Manufacturer:用于查询Expander设备的厂商、型号等信息;
  • Discover:携带了查询Phy的编号,用于获取指定Phy连接的设备信息;
  • Discover List:Discover请求只能查询单个Phy连接的设备信心,Discover List提供了批量获取多个Phy连接设备信息的能力。

Discovery探测示例

这里以一个包含二级Expander的组网,来说明Discovery的探测流程,如下:
在这里插入图片描述

  1. 为了探测第一级Expander上连接的设备,启动器首先会向第一级Expander发送Report general帧;
  2. 通过Report general请求,启动器查询到了Expander设备上的Phy数量,为了进一步查询每个Phy是否有连接设备,启动器遍历所有Expander的所有Phy,并发送Discover请求。Expander接收到Discover请求后,会将请求Phy的设备信息组装成响应帧返回给启动器。启动器处理Discover响应数据,刷新设备拓扑信息;
  3. 若发现Phy对端连接的是Expander,那么启动器会再对二级Expander进行Report general、Discover请求,获取二级Expander上连接的设备信息;

如果第二级Expander后还接有第三级、第四级的设备,则重复上述流程,直到完成所有设备的扫描。

相关参考

  • 《SAS Protocol Layer》
  • 《SAS Storage Archteciture》

相关文章:

浅析SAS协议:设备接入与探测

文章目录 SAS设备初始化OOB信号SAS设备间OOB交互场景一:SAS设备两边同时发送SAS COMINIT信号场景二:SAS设备A先发送COMINIT信号场景三:SAS设备B错过COMINIT信号 SAS与SATA设备间OOB交互场景一:SATA设备未响应COMSAS信号场景二&…...

RISC-V IOPMP实际用例-Andes SoC‘s Rapid-k模型

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明:本文参考RISC-V 2023中国峰会如下议题,版权归原作者所有。...

【高阶数据结构】哈希表详解

文章目录 前言1. 哈希的概念2. 哈希冲突3. 哈希函数3.1 直接定址法3.2 除留余数法--(常用)3.3 平方取中法--(了解)3.4 折叠法--(了解)3.5 随机数法--(了解)3.6 数学分析法--(了解) 4. 哈希冲突的解决方法及不同方法对应的哈希表实现4.1 闭散列(开放定址法&#xff0…...

C#与西门子PLC1500的ModbusTcp服务器通信4--搭建ModbusTcp客户端

1、客户端选择 客户端可以是一个程序或一个设备,这里我以C#WINFORM程序来实现客户机与PLC的Modbustcp服务器通信,开发环境是VS2019,.NET Framework版本是4.7.2 2、创建winform程序 3、引入Nmodbus4协议 找到项目,找到引用&…...

性能调优篇 二、Jvm监控及诊断工具-命令行篇

目录 一、概述1、简单命令行工具 二、jps:查看正在运行的Java程序(掌握)1、是什么?2、测试3、基本语法 三、jstat:查看jvm统计信息(掌握)1、是什么?2、基本语法3、补充 四、jinfo&am…...

Fooocus启动时modules报错的解决方法

原理:是由于其他程序的安装导致modules的版本不对,先卸载现有版本,再运行run.bat让其自动安装响应的modules版本。 1、cmd运行windows dos终端。 2、将Fooocus_win64_1-1-1035文件夹备份,rename为Fooocus_win64_1-1-1035backup文…...

RSA私钥解密操作

RSA私钥解密操作 一、背景二、操作三、常见问题3.1 invalid key format3.2 解密的数据太长3.3 Decryption error 一、背景 项目数据库中存放的敏感字段已使用rsa加密的方式,将内容加密成密文存放, 现在需要在使用的时候,使用私钥进行解密。 二、操作 …...

数据库基本知识

基本概念 数据 描述事物的符号记录称为数据,数字,文字,图形,图像,声音,档案记录等都是数据 数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的 相同格式和类型的数据统一存…...

使用Redis统计网站的UV/DAU

HyperLogLog/BitMap 统计UV、DAU需要用到Redis的高级数据类型 M public class RedisKeyUtil {private static final String PREFIX_UV "uv";private static final String PREFIX_DAU "dau";// a single days UVpublic static String getUVKey(String …...

【python】报错:ImportError: DLL load failed: 找不到指定的模块 的详细解决办法

原因:安装的包与python版本不一致 解决方法: 查看python版本: #python / #python -V Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32只查看python第三方模块(库、包&…...

SemrushBot蜘蛛爬虫屏蔽方式

查看访问日志时候发现有SemrushBot爬虫 屏蔽方法: 使用robots.txt文件是一种标准的协议,用于告诉搜索引擎哪些页面可以和不能被爬取,如想禁止Googlebot爬取整个网站的话,可以在该文件中添加以下内容: User-agent: Googlebot Disallow: / 对于遵循robots协议的蜘蛛…...

6 ssh面密登录

1. 首先进入自己的家目录,执行命令 [atguiguhadoop102 .ssh]$ ssh-keygen -t rsa然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 2. 将公钥拷贝到要免密登录的…...

基于微信小程序的汽车租赁系统的设计与实现ljx7y

汽车租赁系统,主要包括管理员、用户二个权限角色,对于用户角色不同,所使用的功能模块相应不同。本文从管理员、用户的功能要求出发,汽车租赁系统系统中的功能模块主要是实现管理员后端;首页、个人中心、汽车品牌管理、…...

优化学习体验的在线考试系统

随着互联网的发展,在线教育逐渐成为学习的主要方式之一。在线考试系统作为在线教育的重要组成部分,对于学习者提供了更为便捷和灵活的学习方式。但是,如何优化学习体验,提高学习效果,仍然是在线考试系统需要解决的问题…...

1267. 统计参与通信的服务器

题目描述: 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能…...

【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论

文章目录 引言一、回顾二、梳理齐次线性方程组非齐次线性方程组 写在最后 引言 两个原因让我想写这篇文章,一是做矩阵题目的时候就发现这三货经常绑在一起,让人想去探寻其中奥秘;另一就是今天学了向量组的秩,让我想起来了之前遗留…...

打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…...

FFI绕过disable_functions

文章目录 FFI绕过disable_functions[RCTF 2019]NextphpPHP7.4 FFI参考 FFI绕过disable_functions [RCTF 2019]Nextphp 首先来看这道题目 index.php <?php if (isset($_GET[a])) {eval($_GET[a]); } else {show_source(__FILE__); }查看一下phpinfo 发现过滤了很多函数&…...

53 个 CSS 特效 2

53 个 CSS 特效 2 这里是第 17 到 32 个&#xff0c;跟上一部分比起来多了两个稍微大一点的首页布局&#xff0c;上篇&#xff1a;53 个 CSS 特效 1&#xff0c;依旧&#xff0c;预览地址在 http://www.goldenaarcher.com/html-css-js-proj/&#xff0c;git 地址&#xff1a; …...

ubuntu学习(六)----文件编程实现cp指令

1 思路 Linux要想复制一份文件通常指令为&#xff1a; cp src.c des.c 其中src.c为源文件&#xff0c;des.c为目标文件。 要想通过文件编程实现cp效果&#xff0c;思路如下 1 首先打开源文件 src.c 2 读src到buf 3 创建des.c 4 将buf写入到des.c 5 close两个文件 2 实现 vi …...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...