浅析SAS协议:链路层

文章目录

    • 概述
    • 原语
      • 通用原语
      • 连接管理原语
      • 连接通信原语
    • 地址帧
      • IDENTIFY地址帧
      • OPEN地址帧
    • 链路复位
      • Link Reset
      • Hard Reset
      • SATA的Link Reset
    • 连接管理
      • 建立连接
      • 连接仲裁
    • 流量控制
      • SSP流控
        • Credit Advance
      • SMP流控
    • 相关参考

概述

SAS链路层用于定义原语、地址帧以及连接相关的内容,提供认证序列、hardreset序列、连接管理以及SSP、STP和SMP帧传输等功能

原语

原语定义为第一个字符为K28.3或K28.5的双字,其作用是保持链路传输中的数据同步及时钟补偿等。原语格式定义如下:
在这里插入图片描述
SAS链路中的原语根据作用可大致分为三类:通用原语、连接管理原语、连接通信原语。

通用原语

原语描述
ALIGN用于速率调整,保持连接的phy传输速率一致
HARD_RESET发起Hard Reset
BROADCAST链路变化原语,由Expander发出,指示SAS网络中存在链路发生变化
ERROR用于误码

连接管理原语

连接管理原语用于配合地址帧进行连接管理,包括CLOSE、AIP等。

原语描述
SOAF/EOAF地址帧的起始与结束标识
OPEN_ACCEPT接受一个连接请求
OPEN_REJECT拒绝一个连接请求,携带的字符数据指示了拒绝连接的原因
AIP连接仲裁原语,连接建立过程中由被请求端发送,携带的字符数据指示了当前未建立的原因
CLOSE关闭一条连接
BREAK中断一条连接

连接通信原语

连接通信原语主要用于SSP、SMP连接内的数据通信,包括ACK、NAK等。

原语描述
SOF/EOF帧的起始与结束标识
RRDY允许发送帧
CREDIT_BLOCED用于流控
ACK/NAK用于对COMMAND、TASK、XFER_RDY、RESPONSE帧进行响应,正常时返回ACK,异常返回NAK
DONE数据帧传输完成

地址帧

SAS协议定义了两种类型的地址帧:IDENTIFY地址帧和OPEN地址帧,分别用于IDENTIFY序列中交互设备信息和建立连接请求。地址帧在链路上的传输格式如下:
在这里插入图片描述
地址帧的通用格式定义如下:
在这里插入图片描述

IDENTIFY地址帧

当SAS设备之间链路建立后,两端设备会发送IDENTIFY地址帧以交换双方的设备信息。IDENTIFY地址帧格式如下:
在这里插入图片描述

OPEN地址帧

SAS通信模型中约束SAS设备之间要进行数据通信,必须要先建立一条端到端的连接。作为连接的发起方,需要通过发送OPEN地址帧,以请求建立一条到目标设备的数据连接通路。OPEN地址帧格式定义如下:
在这里插入图片描述

链路复位

SAS链路定义了多种级别的链路复位序列:包括Link Reset、Hard Reset。

Link Reset

Link Reset会重新触发两端的链路协商以及信息认证,Link Reset流程如下:
在这里插入图片描述

Hard Reset

Hard Reset对比Link Reset流程,多出了一个Hard Reset的序列,通常这个序列会发送一个Hard Reset类型的原语。Target端在接收到Hard Reset原语后可能会做一些额外的资源清理等,例如SAS盘就可能回去清除盘上所有正在运行的IO。
在这里插入图片描述

SATA的Link Reset

SATA的链路复位要单独进行说明,SATA协议只定义了Link Reset这一种方式,其Link Reset序列示意图如下:
在这里插入图片描述

连接管理

SAS协议要求启动器端口和目标器端口在进行数据通信之前,必须要先建立连接。根据链路层所承载的协议不同,连接类型可以分为三种,分别为SSP连接、STP连接和SMP连接,其中:

  • SSP连接:用于SSP Initiator端口和SSP Target端口之间传输SCSI命令请求、任务管理请求以及数据帧等;
  • STP连接:用于SSP Initiator端口和STP Target端口之间传输SATA数据帧,其中STP Target端口有Expander设备提供,代理SATA设备与SSP Inititor设备建立STP连接;
  • SMP连接:用于SMP Initiator端口和SMP Target端口之间传输SMP请求和SMP响应数据。

建立连接

待续。。。

连接仲裁

待续。。。

流量控制

流量控制用于保证发送端发送的流量不会超出接收端的接收能力,而导致数据被接收端丢掉。基本的实现流量控制的方式有两种:一种是基于反压机制,例如以太网使用的Global Pause、PFC等;另外一种是基于信用的流控
,高速链路大都采用这种方式,例如PCIe。SAS协议使用基于信用的流量控制机制,本端如果要发送数据,必须要先收到对端的信用。

SSP流控

SSP链路层的流控使用RRDY原语来授予SSP帧信用,以允许连接中的其它SSP phy发送帧。本端在每次接收到一个RRDY原语时,都会将递增信用计数;每个信用都会允许本端向对端发送一个SSP帧,帧发送完后,信用也会递减。
在这里插入图片描述

Credit Advance

除了RRDY原语外,OPEN地址帧CREDIT ADVANCE位也可以用来授予SSP帧信用。它的运作机制如下:

  • 如果本端具有可用的接收资源,则它可以通过在OPEN地址帧中将CREDIT ADVANCE位设置为1来预付信用,这样可以允许本端在接收到OPEN_ACCEPT之后才发送RRDY;
  • 而在对端接收到CREDIT ADVANCE位设置为1的OPEN地址帧后,会增加SSP帧信用,同时也会忽略下一个接收到的RRDY原语。

SMP流控

SMP链路层其实并未实现流量控制,SMP帧的交互是一个简单的请求-响应的通信模型。当接受SMP连接时,就意味着SMP Target端口已经准备好接受SMP请求了;同样的对于SMP Intiator端口,当发送SMP请求时,也就做好了接受SMP响应的准备。

相关参考

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563) 二、CVE-2017-7563 一、ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563) Title RO内存始终在AArch64 Secure EL1下可执行 CVE ID CVE-2017-7563 Date 06 Apr 2017 …

springcloud-gateway简述

Spring Cloud Gateway 是一个用于构建 API 网关的项目&#xff0c;它是 Spring Cloud 生态系统中的一部分&#xff0c;旨在为微服务架构提供动态路由、负载均衡、安全性和监控等功能。 网关工程对应pom文件 <?xml version"1.0" encoding"UTF-8"?>…

无涯教程-分类算法 - 朴素贝叶斯

朴素贝叶斯算法是一种基于应用贝叶斯定理的分类技术&#xff0c;其中强烈假设所有预测变量彼​​此独立。简而言之&#xff0c;假设是某个类中某个要素的存在独立于同一类中其他任何要素的存在。 在贝叶斯分类中&#xff0c;主要的兴趣是找到后验概率&#xff0c;即给定某些观…

使用Spring Boot和Kafka实现消息发送和订阅

文章目录 一&#xff0c;新建Spring Boot1&#xff0c;Maven配置2&#xff0c;无法识别为SpringBoot项目3&#xff0c;无效的源发行版4&#xff0c;无法访问SpringApplication5&#xff0c;运行直接Finish6&#xff0c;服务运行成功 二&#xff0c;安装启动Kafka1&#xff0c;下…

工厂方法模式的概述和使用

目录 一、工厂方法模式概述1. 定义2. 使用动机 二、工厂方法模式结构1. 模式结构2. 时序图 三、工厂方法模式的使用实例四、工厂方法模式的优缺点五、工厂方法模式在Java中应用 原文链接 一、工厂方法模式概述 1. 定义 工厂方法模式(Factory Method Pattern)又称为工厂模式&…

【卷积神经网络】MNIST 手写体识别

LeNet-5 是经典卷积神经网络之一&#xff0c;1998 年由 Yann LeCun 等人在论文 《Gradient-Based Learning Applied to Document Recognition》中提出。LeNet-5 网络使用了卷积层、池化层和全连接层&#xff0c;实现可以应用于手写体识别的卷积神经网络。TensorFlow 内置了 MNI…

2023年智慧政务一网通办云平台顶层设计与建设方案PPT

导读:原文《2023年智慧政务一网通办云平台顶层设计与建设方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分内容:

汽车3D HMI图形引擎选型指南【2023】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 2002年&#xff0c;电影《少数派报告》让观众深入了解未来。 除了情节的核心道德困境之外&#xff0c;大多数人都对它的技术着迷。 我们看到了自动驾驶汽车、个性化广告和用户可以无缝交互的 3D 计算机界面。 令人惊讶的是…

基于PID优化和矢量控制装置的四旋翼无人机(MatlabSimulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用GoLand进行远程调试

对部署进行配置 在此配置远程服务器地址&#xff0c;映射&#xff0c;是否自动上传(更新)等 选择SFTP类型 选择上传 另外给自动上传选项打钩 此时在本地修改某个文件&#xff0c;远程机器相应目录的文件&#xff0c;也会被同步修改 对远程调试进行配置 远程机器需要安装delve 而…

时间范围选择时选中日期所使用的当日内具体时刻 如00:00:00= 23:59:59

<el-form-item label"审核时间&#xff1a;"><el-date-pickerv-model"auditTime"type"datetimerange"range-separator"至"value-format"yyyy-MM-dd HH:mm:ss"start-placeholder"开始日期"end-placeholde…

无意间发现这款可以免费制作3D翻页电子画册的网站

在博主努力的搜寻下&#xff0c;无意间发现这个网站&#xff0c;可以免费制作3D翻页电子画册。使用这个网站非常简单&#xff0c;只需上传你想要展示的图片和添加相应的文字&#xff0c;然后选择合适的模板和风格。接下来&#xff0c;就会自动转化成漂亮的3D翻页画册 工具嘛&am…

用idea查看sqlite数据库idea sqlite

1、安装Database Navigator插件 2、导入数据库并查看 3、删除数据库连接 在此做个笔记

ceph中PGLog处理流程

ceph的PGLog是由PG来维护&#xff0c;记录了该PG的所有操作&#xff0c;其作用类似于数据库里的undo log。PGLog通常只保存近千条的操作记录(默认是3000条&#xff0c; 由osd_min_pg_log_entries指定)&#xff0c;但是当PG处于降级状态时&#xff0c;就会保存更多的日志&#x…

地铁+铁路系统防雷接地应用解决方案

地铁作为城市轨道交通的一种&#xff0c;是一种高效、安全、环保的公共交通方式。然而&#xff0c;地铁也面临着雷电灾害的威胁&#xff0c;尤其是在雷暴多发的地区。 雷电对地铁系统的影响主要有以下几个方面&#xff1a; 直接雷击&#xff1a;雷电直接击中地铁系统的设备或…

RISC-V公测平台发布 · 在SG2042上配置Jupiter+Octave科学计算环境

简介 JupyterHub是一个开源的共享计算平台&#xff0c;它为每个用户管理一个单独的 Jupyter 环境&#xff0c; 可以用于学生班级、企业数据科学小组或科学研究小组。它是一个多用户中心&#xff0c;可以生成、管理和代理多个单用户Jupyter笔记本服务器的实例。 GNU Octave是一…

WebSocket- 前端篇

官网代码 // 为了浏览器兼容websocketconst WebSocket window.WebSocket || window.MozWebSocket// 创建连接 this.socket new WebSocket(ws://xxx)// 连接成功this.socket.onopen (res)>{console.log(websocket 连接成功)this.socket.send(入参字段) // 传递的参数字段}…

【前端】 Layui点击图片实现放大、关闭效果

实现效果&#xff1a;点击图片实现放大&#xff0c;点击空白处关闭效果。下图。 实现逻辑&#xff1a;二维码是使用JQ插件生成的&#xff0c;点击二维码&#xff0c;获取图片路径&#xff0c;通过Layui的弹窗显示放大后的图片。 Html <div id"qrcode" class&quo…

Java学习笔记31——字符流

字符流 字符流为什么出现字符流编码表字符串中的编码解码问题字符流写数据的5中方式字符流读数据的两种方式字符流复制Java文件 字符流 为什么出现字符流 汉字的存储如果是GBK编码占用2个字节&#xff0c;如果是UTF-8占用三个字节 用字节流复制文本文件时&#xff0c;文本文…

驱动开发错误汇编

本博文将会不定期更新。以便记录我的驱动开发生涯中的一些点点滴滴的技术细节和琐事。 生成时link找不到导出函数&#xff0c;比如"LNK2019 无法解析的外部符号 _FltCreateCommunicationPort32"。出现这种情况的原因是&#xff0c;驱动的编译环境忽略了所有的默认库&…