POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 10664|回复: 12
打印 上一主题 下一主题

SAS Expander規格討論..!!!

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-21 21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 per1-q1222 于 2011-10-22 21:24 编辑

一個不厚道的佔帖....
本串將會以SAS Expander以及類似的PM技術作為探討....

本文起始
由於新版的SAS2規範已經刪除edge expander和fanout expander的分類了, 但是這邊依然還是以早期的規範做為說明, 先來看大家最熟悉的一張:

很簡單的看到這是一個Host上的SAS HBA去連接到Expander裝置, 由於SAS規範包含了集縮設計, 以1:4對一個wide port, expander就是一個擴展器, 可以用來與更多數量的target device進行相連. 讓HBA不再受到本身的native port number限制.

上圖是一張edge expander的集合結構, 可以看到HBA面向的是一個expander. 但實際上是有三組expander存在, 對於HBA的initiator, 要如何保證與正確的target進行通訊, SAS便有所謂的routing protocol存在, 相當類似於router的路由設計. 由於routing protocol的規範, 可以保證initiator與target之間的通訊.

這是一張在edge expander情況下的通訊, 這邊不談routing protocol怎麼去計算, 事實上計算的部分會在table routing遇到. 可以看到對於initiator而言, 直連到expander並不需要什麼特殊算法, 因為它是一對一, initiator與expander是彼此唯一的存在, direct routing是不需要任何路由計算的non routing.
在expander A的情況下就複雜許多了, 因為他要面臨一種path selection問題, 雖然連線訊框(connection frame)可以達到expander A, 但是你要如何保證target是坐落於哪個expander裝置, 究竟是B還是C?..一種設計類似於router的routing table建立便可定位不同的target位址, A只要建立routing table, 透過table相互取得對方的PHY物件及相關索引(index)資訊, 便可保證initiator與target之間的通訊.

來自HP的expander文件其中所表達的較為複雜的expander案例, 在計算上有時間再說明. 可以看到只有2個expander裝置建立routing table, 為什麼只有兩個裝置建立table, 其中有一個物件比較特別就是Pf物件, 這是一個fanout expander物件, 你可以想像fanout expander是一個規模較大的routing table裝置. Pf物件在SAS規範是不可以使用subtractive routing, 因此只能看到她乖乖建立routing table.
如果從Qe的R物件要與Le的X物件通訊, 在完成連線建立以前, 勢必會面臨到連線訊框要如何送達到哪個位置上, R物件一開始根本不知道X物件的存在, 透過routing table便可完成不同的對應, Pf提過要建立table這不用講, 當連線訊框送到Mer的edge expander, 遭遇到一個問題, 究竟是要送到Ke還是Le呢? 解決的方式就是Mer在建立一張table去做不同的定址對應.
對於Le, Ke和Qe而言, 他們面對的只有一個expander裝置, 一個最快的做法就是只要將對應的port(PHY)標記起來(designated port)即可, 代表這個port連接的是expander, 對於這個情況下, 便是subtractive routing的應用. 而遭遇path selection, 則是table routing的應用.
到目前為止, 我們知道了幾個expander routing:
1. direct routing: expander面向initiator或著target, no routing的direct routing是使用時機.
2. subtractive routing: 請求是在另一個expander所在的target, 將對向另一個expander的PHY(port)標記.
3. table routing: 請求轉送到某個expander, 該expander的下游存在一個以上的expander, 使用此協定.
downstream和upstream
downstream(下游)和upstream(上游)是在相關的expander文件才會看的到的用詞組, 針對不同的routing情況, 會使用到這兩種語詞. 來自HP的expander文件有一段描述:
Edge expander devices uses table routing and direct routing “downstream” and subtractive routing “upstream”.
這是針對edage expander的敘述說明, 表示edge expander對於下游的存在會是table routing和direct routing的使用, 而上游則是subractive routing. 這樣解釋也許不好清楚, 來看看下面這張圖:

在這張圖上, 我自行加了箭號流線以做表示. 可以清楚的看到expander C對向target時, 使用direct routing,對於expander是往下請求, 所以是downstream. 而fanout expander向expander A請求同樣也是往下游尋找, 同樣也是downstream. 至於從expander A出發轉向fanout expander是往上的請求, 很好理解的是upstream. 這兩種語詞的表示其實就是這樣, 在理解上其實不會很困難.
啥! expander PHY, 你在哪個方向?
說起來, 有些expander文件會看到phy這個詞, 當然! 在t10的SAS規範文件是一定會看到的, 基於在基礎上, 我必須不得不用典型的UML來表示, 因為class diagram在技術文件上是廣泛使用的, 並且SAS規範文件依然有使用到(如果您看不懂可以跳過這段):

這張圖如果不是相關技術背景的人, 一看到的一眼可能就是昏了頭, 但是如果你是幹編程這行的, 對於這張圖是再清楚不過了. 類別圖/Class Diagram, 這是在編程領域上極常使用的一種視圖表示法, 在這邊並不介紹這個圖的使用方式, 因為這不是一帖兩帖就寫得完. 首先看到看到SAS Domain, 這個是一個物件, 對於UML工程類別圖來說, 這是一個頂級類別, 某種程度來說這是最高階的具象類別, 你可以注意到這張圖並沒有任何抽象(abstract).
從SAS Domain的頂級類別往下延伸, 可以看到兩個類別存在, SAS Device和Service Delivery Subsystem, 其中這兩個類別與SAS Dmain的關係存在組合關係, 你可以注意到菱形箭頭, 而從來源端到目的端各有數字表示, 這是基數表示法, 對於SAS Domain為1是一個最多一個存在, 往下到SAS Device是一個存至無限制在, 代表一對多的關係式. 也就是說一個SAS Domain可以有多個SAS Device存在.
一個完整的服務傳送子系統(Service Delivery Subsystem), 其中包含(HAS)了Expander Device, 而Expander Device又包含了專屬的Expander Port, 一個Expander Port又包含了Phy. 同樣地, SAS Device包含SAS Port, SAS Port又包含Phy, Expander Device和SAS Device之間的關係是平等的. 在Expander Device上存在了SAS Address, 這是一個屬性, 並且個體(Instance)數目為1. 這表明了這是針對Expander Device本身的SAS Address. 而他與Expander Port之間, 表示一個Expander Device做多可以有255個Expander Port, 而一個Expander Port有一組附加的SAS Address. Expander Port可以有最多255個Phy存在, 一個Phy包含了一組Phy ID.
說到這邊像教科書一樣, 枯燥又乏味. 但只是粗淺講了一下彼此關係. 但最終還是要提到Phy這部分, Phy是一個物理元件, 用來建立實際的數據通訊. SAS標準是全雙工的, 所以Phy是雙向傳輸.

從Expander Port來看, 一個Expander Port最多可以包含255個Phy. 到這邊是一個重點提示, 來看下面這張圖:

對於一個narrow port的組成, 我們可以說narrow port為SATA, 他只會有一個phy link存在. 相對於wide port設計來看, 它可以有多個phy與target溝通. 按照目前的SAS標準, 一個wide port可以有4個narrow link, 也就是4個phys. 如果我們從initiator和target角度來看的話, 會是這樣:

ˋ先寫到這, 不厚道的be continued...!!

2#
 楼主| 发表于 2011-10-21 21:04 | 只看该作者
本帖最后由 per1-q1222 于 2011-10-21 21:10 编辑

先佔樓..

歡迎討論..
回复 支持 反对

使用道具 举报

3#
发表于 2011-10-21 21:13 | 只看该作者
看不懂,可不可以通俗点
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2011-10-21 21:18 | 只看该作者
轰隆隆 发表于 2011-10-21 21:13
看不懂,可不可以通俗点

initiator<=>Expander: 使用direct routing
Expander=>Expander: 使用subtractive routing
Expander<=Expander=>Expander: 使用table routing
Expander<=>target: 使用direct routing

fanout和edge expander在新版的SAS2規範已經被廢除..

回复 支持 反对

使用道具 举报

5#
发表于 2011-10-21 21:41 | 只看该作者




雷电是这个类型
回复 支持 反对

使用道具 举报

6#
发表于 2011-10-22 05:13 | 只看该作者
其實用到現在感覺最頭痛的還是綫材。
除非兩頭都一樣的,否則有些綫,例如 SFF-8087->4x SATA 或者 SFF-8087->SFF-8484 之類的都是單向的(就像網綫的 cross-over 和 straight)
其實現在還是挺希望新的SAS標準可以有auto-detect 功能這樣就不用滿大街跑去找綫。
回复 支持 反对

使用道具 举报

7#
发表于 2011-10-22 05:15 | 只看该作者
對了,load balancing 的 path select 如何實現?會否根據當前負載進行path 重新分配?
還有,expander 層數會否對延遲/通信開銷產生較大影響?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2011-10-22 07:13 | 只看该作者
本帖最后由 per1-q1222 于 2011-10-22 07:14 编辑
dracocephalum 发表于 2011-10-22 05:15
對了,load balancing 的 path select 如何實現?會否根據當前負載進行path 重新分配?
還有,expander 層 ...

對了,load balancing 的 path select 如何實現?會否根據當前負載進行path 重新分配?
還有,expander 層數會否對延遲/通信開銷產生較大影響?

load balancing 的 path select 如何實現?
如果你是指multipathing I/O的話..
LSI RAID controller使用條件:
1. initiator必須支持failover/multipathing
2. target必須全部都是SAS device
LSI RAID controller全部僅能支持single controller multipathing, 也就是說沒有辦法以兩個host以上的設計來決定multipathing
我講的這個是跟JBOD solution完全無關的情況..

會否根據當前負載進行path 重新分配?
根據LSI的說法..
controller firmware會重分配負載路徑, 當然這需要兩端都支持...
如果initiator面向的是像expander這種pathways裝置, 並且提供dual links
那他就會有作用..

根據SAS 2標準還有提供一種Multiplexing技術...
當然這個技術要在expander下, 並且支持SAS 2標準才有機會做..

expander 層數會否對延遲/通信開銷產生較大影響?
會, 這是有可能的...
Discovery時間會被拉長..
為了這種情況, SAS 2提出Self-configuring來減緩這個問題..

回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2011-10-22 07:16 | 只看该作者
dracocephalum 发表于 2011-10-22 05:13
其實用到現在感覺最頭痛的還是綫材。
除非兩頭都一樣的,否則有些綫,例如 SFF-8087->4x SATA 或者 SFF-80 ...

這僅是因為物理規格不同上的差異..
才有這些不同標準的線材..
這沒辦法做甚麼auto-detect...
回复 支持 反对

使用道具 举报

10#
发表于 2011-10-22 07:49 | 只看该作者
per1-q1222 发表于 2011-10-22 11:13
對了,load balancing 的 path select 如何實現?會否根據當前負載進行path 重新分配?
還有,expander  ...

那 H700 上面的 I/O Load Balancing 又是怎樣一個情況?
例如 H700 的兩個 port 都接到 RES2SV240 上面,然後 RES2SV240 接16個設備 (4 ports to devices),那些設備有SAS/SATA。這種情況下,H700 那兩個 port 的帶寬是怎樣分配呢?是 8/8 還是動態監測使用量以分配?
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2011-10-22 08:21 | 只看该作者
本帖最后由 per1-q1222 于 2011-10-22 08:23 编辑
dracocephalum 发表于 2011-10-22 07:49
那 H700 上面的 I/O Load Balancing 又是怎樣一個情況?
例如 H700 的兩個 port 都接到 RES2SV240 上面, ...

你問了一個我無法告訴你的問題......
這個問題LSI也不會跟我講...
I/O Load Balancing是MegaRAID 3.5版加入的功能..
http://storageinfohub.com/pdf/ESG_MR_Release35_WP_120408.pdf

回复 支持 反对

使用道具 举报

12#
 楼主| 发表于 2011-10-22 22:40 | 只看该作者
先自行頂一下..
回复 支持 反对

使用道具 举报

13#
发表于 2011-10-23 08:51 | 只看该作者
per1-q1222 发表于 2011-10-22 12:21
你問了一個我無法告訴你的問題......
這個問題LSI也不會跟我講...
I/O Load Balanci ...

看來只能夠找個時間試試看。我有感覺可能是fixed path,因爲就算我用SAS也沒有dual port...
至於 SATA interposer...用 expander 代替行麽?呵呵~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-8-19 15:19

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表