在這個案例中, 可以看到較複雜的配置. 4個edg expanders和1個fanout expander, 以及數量較多的end device. 在說明這個案例以前, 不妨再複習一下兩種expander的差異以及routing method的要點.
兩種expander的差異點
1. 在一個SAS expander配置下, fanout expander只能存在唯一的一個root node. 而edge expander則無此限制
2. fanount expander不允許使用subtractive routing算法
3. edge expander面對路徑選擇的時候, 必須使用table routing
4. edge expander和fanout expander面對end device皆使用no routing的direct routing
三種routing methods的特徵
1. direct routing應用在僅面對end device的情況下, 他是no routing的
2. substractive routing適用在1對1, 且對象是expander
3. table routing用在面臨路徑選擇的情況下, 透過一份routing table來定址
在這個案例下, 首先找到了expander Pf物件, 可以知道他是一個fanout expander, 只能允許使用table routing算法. 其餘的便是edge expander, 這邊其實可以看出透過fanout expander切割出兩群edge expander device sets. Qe set和(Mer+Ke+Le) set, 在Mer物件可以看到downstream下面臨路徑選擇, 必須要使用table routing算法, 因此在這個HP的案例下會有兩張routing table存在.
先縮短問題範圍是快速考量解決方案的一個簡便法則, 所以建議是先從edge expander的table routing這部分來看, 因為fanout expander本身是提供較大的routing table, 這會比較複雜. expander Mer物件本身提供4個PHY物件, E0t-K, E1t-L, E2s-P和E3t-?, 來快速分析這4個PHY物件, 其中E3t-?可以不必考慮, 因為他沒有連接任何外界的PHY物件, 其餘的PHY物件皆是個別連接到其他的expander物件, 存在三條路徑, 因此會使用table routing. 先來依據route index的順位來分析每個PHY物件與expander Mer物件的關聯(routing table的設計), E0t-K物件流向到expander Ke物件, Ke物件存在有5個PHY物件, 當中E3-?沒有任何連接, 所以不予考慮. 剩下的E0-V, E1-W, E2s-M和E4-U必須要記錄到expander Mer的routing table, 一個要訣, 先從route index的順位算起. E0-V先放入, 接下來依順序是E1-W, E2s-M和e4-U, 將其記錄到table裡.
從table上已經放入Ke存在的PHY物件了, 不過有個特別的地方要注意, 為什麼route index=3的部分會空掉呢? 原因很簡單, 因為這個指的是E3-?, 由於E3-?沒有任何連接, 因此是空掉的. 完成Ke的紀錄之後, 再轉向E1t-L流向的expander Le物件. Le物件本身包含5個PHY物件, 其中只有E4s-M面相Mer, 使用subtactive routing. 依照route index的順位, 將這5個PHY物件一一記錄到Mer的table裡, 按順序為E0-Z, E1-Y, E2-X, E3-A和E4s-M, 將其記錄到table裡.
記錄了Ke和Le之後, Mer就完成了routing table建立, 不過可以看到2=>3的column沒有任何紀錄, 這是因為它指的是E3t-?物件, 這個物件沒有任何連接, 所以一整個column為空. 剩下就是面對比較複雜的fanour expander Pf物件. Pf本身存在3個PHY物件, E0t-Q, E1t-M和E2t-?, 其中E2t-?沒有任何連接, 所以不需考慮. 依照route index順位, 先從E0t-Q開始分析, E0t-Q流向expander Q物件, 該entry物件存在4個PHY物件, E0-R, E1-?, E2s-P和E3-?, 其中E1-?和E3-?不存在任何連接, 不需要去考慮, 然後先從E0-R開始記錄至E2s-P.
完成Pf對Qe物件的資訊蒐集之後, 接下來就是要往另一個較大的edge expander device set開始做資訊收集. E1t-M流向Mer物件, 依照route index順位, 會先從E0t-K開始, 取得E0t-K的資訊後, 這個PHY流向Ke物件, 而且Mer有存在Ke物件的路由紀錄, 因此將存在的Ke相關紀錄收集至Pf的table裡, Ke物件收集對Pf來說是跨過一個expander物件, 所以取得Ke存在的PHY物件其route index會跳一位.
取得Ke相關的資訊以後, 往E1t-L尋找, 該物件流向Le, Mer本身有紀錄Le的相關路由紀錄, 因此我們直接取得這些紀錄加入倒Pf的table裡. 從E1t-L開始起算.
對於Mer所屬downstream下的路由紀錄收集完成以後, 就剩下Mer本身存在且未收集的PHY物件了, 從Mer發現剩下E2s-P尚未被記錄到Pf的table, 接這個PHY物件進行記錄, E3t-?由於沒有存在任何連接, 所以不予考慮.
最後終於完成了Pf和Mer的routing table建立, 從Pf這個fanout expander物件可以看出, fanout expander本身是具備容量較大的routing table用來記錄其downstream下的相關子集合, edge expander device set可以是數個expander的集合, 讓整個set存有大量的路由資訊, 而後被fanout expander進行記錄, fanout expander的routing table規模便會因此不斷地膨脹. 這個HP的案例充分說明了SAS Expander的路由表概觀與操作, 這是一個抽象的例子, 讓各位了解到SAS Expander是怎麼樣進行操作, 你可以稍微思考或著休息一下, 後續還有其他有關SAS Expander的資訊在其他頁面得知與學習.
文件 | 大小 | 日期 | 附件上傳者 | |||
---|---|---|---|---|---|---|
hp_table_routing.gif 無描述 | 76.01 KB | 16:52, 26 Aug 2011 | vxr | 動作 | ||
route_Ke.gif 無描述 | 2.55 KB | 22:53, 26 Aug 2011 | vxr | 動作 | ||
route_Le.gif 無描述 | 2.72 KB | 22:55, 26 Aug 2011 | vxr | 動作 | ||
route_Pf_Ke.gif 無描述 | 2.62 KB | 23:33, 26 Aug 2011 | vxr | 動作 | ||
route_Pf_Le.gif 無描述 | 3.91 KB | 23:45, 26 Aug 2011 | vxr | 動作 | ||
route_Pf_Mer.gif 無描述 | 4.4 KB | 23:52, 26 Aug 2011 | vxr | 動作 | ||
route_Qe.gif 無描述 | 2.01 KB | 23:09, 26 Aug 2011 | vxr | 動作 |