これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド ibdmsh です。
プログラム:
NAME
ibdmsh IB データ モデル - 拡張 TCL シェル
DESCRIPTION
ibdmsh IB データ モデル用のインターフェイスで拡張された TCL シェルです。 このシェルを使用するには
IB データ モデルのオブジェクトと関数に直接アクセスする TCL コードを作成します。
次のサブセクションでは、これらのオブジェクトと API の詳細な定義を説明します。
IBDM 定数
Node 種類
次の定数は、ノード オブジェクト タイプ フィールドで使用されます。
[定数: int ] $IB_UNKNOWN_NODE_TYPE = IB_UNKNOWN_NODE_TYPE
[定数: int ] $IB_SW_NODE = IB_SW_NODE
[定数: int ] $IB_CA_NODE = IB_CA_NODE
ログ 冗長性 フラグ
次の定数は、グローバル変数の引数ビットとして使用されます。
$FabricUtilsVerboseLevel
[定数: int ] $FABU_LOG_NONE = 0x0
[定数: int ] $FABU_LOG_ERROR = 0x1
[定数: int ] $FABU_LOG_INFO = 0x2
[定数: int ] $FABU_LOG_VERBOSE = 0x4
IBDM グローバル
ログレベル: FABU_LOG* 値に設定
[ グローバル : int ] $FabricUtilsVerboseLevel
IBDM オブジェクト
このセクションでは、IBDM によって公開されるさまざまなオブジェクト タイプについて説明します。
IBDM は、その内部オブジェクトの一部を公開します。 さまざまなメソッドによって返されるオブジェクト識別子
関数呼び出しは、次の規則に従ってフォーマットされます。
生地: 生地:
システム: システム: :
SysPort: sysport: : :
ノード: ノード: :
ポート: ポート: : /
IBDM オブジェクトは標準の Swig-Tcl オブジェクトです。 そのため、使用方法に XNUMX つの種類があります。
変数、オブジェクト。
変数/ポインタ:
各オブジェクト属性に対して、「get」メソッドと「set」メソッドが提供されます。
メソッドの形式は次のとおりです。 _ _ 。
「set」メソッドは、読み取り/書き込み属性でのみ使用できます。
例:
ノードの設定 [ibdm_get_nodes]
ノードを設定 [lindex $nodes 0]
IBNode_numPorts_get $node
オブジェクト:
オブジェクト ポインタを指定すると、それを Tcl「オブジェクト」に変換できます。
次のコマンドを使用します。
-これ
一度宣言すると、 と組み合わせて使用できます
標準の「configure」および「cget」コマンドを使用します。
例 (前の例に続いて):
IBFabric VaTech - この $fabric
VaTech cget -NodeByName
オブジェクト シンボルを削除するには (そして、そのオブジェクト シンボルの別のシンボルへのマッピングを有効にするには)
ポインタ) を使用します:
名前を変更する「」
たとえば、次の
VaTech の名前を「」に変更
class IBポート
以下は、IB Port クラスのさまざまなフィールドとメソッドです。
IB デバイス (チップ) の物理ポート。
[ メンバー データ: IBPort * を返します ] -p_remotePort
リンクの反対側に接続されているポート
[ メンバー データ: IBSysPort * を返します ] -p_sysPort
接続されているシステム ポート (存在する場合)
[ メンバー データ: IBNode * を返します ] -p_node
ポートが属するノード。
[メンバーデータ: int を返す] -num
物理ポートは番号で識別されます。
[メンバーデータ: unsigned int を返す] -base_lid
ポートに割り当てられたベースの蓋。
[ メンバー データ: IBLinkWidth * を返します ] -width
ポートのリンク幅
[ メンバー データ: IBLinkSpeed * を返します ] -speed
ポートのリンク速度
[メンバーデータ: unsigned int を返す] -counter1
さまざまなアルゴリズムで使用される汎用値
[ コンストラクター: IBPort * を返します ] IBPort 名 p_nodePtr 番号
IBPort コンストラクター
[ メンバー : new_uint64_t を返します ] guid_get
ポートのガイドを取得する
[メンバー: void を返す] guid_set guid
ポートの guid を変更する
[ メンバー : new_string を返します ] getName
ポート名の取得: システム ポート (フロント パネル) に接続されているデバイス ポートが返されます。
前面パネルのポート名。
[メンバー: void を返します] p_otherPort ?width? に接続します。 ?スピード?
オプションの幅と速度パラメータを使用して、ポートを別のノードのポートに接続します。
[ メンバー : int を返します ] 切断
ポートを切断します。 成功した場合は 0 を返します
class IBノード
IB ノード クラスは単一の IB デバイス (チップ) を表します。
[ メンバー データ: 文字列 * を返します ] -name
ノード名(チップのインスタンス名)
[ メンバー データ: IBNodeType を返します ] -type
$IB_SW_NODE または $IB_CA_NODE のいずれか
[ メンバー データ: uint16_t * を返します ] -devId
ノードのデバイスID
[ メンバー データ: uint16_t * を返します ] -revId
デバイスのリビジョン ID。
[ メンバー データ: uint16_t * を返します ] -vendId
デバイスのベンダー ID。
[ メンバー データ: 文字列 * を返します] - 属性
任意の属性のカンマ区切り文字列 k=v
[ メンバー データ: uint8_t を返します ] -rank
ノードのランク(0がルート)
[ メンバー データ: IBSystem * を返します ] -p_system
私たちが属しているシステム
[ メンバー データ: IBFabric * を返します ] -p_fabric
私たちが属する生地。
[メンバーデータ: unsigned int を返す] -numPorts
物理ポートの数
[ メンバー データ: vec_pport * を返します ] -ポート
すべてのポートのベクトル
[ メンバー データ: vec_vec_byte * を返します ] -MinHopsTable
各ポートから各ターゲット LID に到達するために必要なホップ数の表
[ メンバーデータ: vec_byte * を返します ] -LFT
ターゲット ポートの長いベクトルであるこのノードの LFT (スイッチのみ) -
インデックスはLIDです
[ メンバー : new_uint64_t を返します ] guid_get
ノードGUIDを取得する
[メンバー: void を返す] guid_set guid
ノードGUIDを設定する
[ コンストラクター: IBNode * を返します ] IBNode 名 n p_fab p_sys t np
建設業者
[ メンバー : IBPort * を返します ] makePort num
番号を指定して新しいポートを作成し (必要な場合)、ポート ポインタを返します。
[ メンバー : IBPort * を返します ] getPort num
数値 num = 1..N でポートを取得します。
[ メンバー : void を返します ] setHops p_port 蓋ホップ
指定されたポート (* がすべて) の蓋ペアの最小ホップを設定します。
[ メンバー : int を返します ] getHops p_port 蓋
指定されたポートまたはすべてのポートに定義されているホップの最小数を取得します。
[ メンバー : IBPort * を返します ] getFirstMinHopPort 蓋
ノードのポートをスキャンし、蓋までの最小ホップで最初のポートを見つけます。
[メンバー: void を返します] setLFTPortForLid 蓋ポート番号
指定された LID のリニア フォワーディング テーブルを設定します。
[ メンバー : int を返します ] getLFTPortForLid 蓋
特定の LID の LFT を取得する
[ メンバー : void を返します ] repHopTable
ノードの最小ホップテーブルをダンプアウトします。
class IBSysポート
IBSysPort クラスは、システムの前面パネルまたは背面パネルの IB プラグを表します。
[ メンバー データ: 文字列 * を返します ] -name
ポートのフロントパネル名 (silk)
[ メンバー データ: IBSysPort * を返します ] -p_remoteSysPort
反対側の SYS ポートに接続されている場合
[ メンバー データ: IBSystem * を返します ] -p_system
それが属するシステム
[ メンバー データ: IBPort * を返します ] -p_nodePort
接続先のノードのポート。
[ コンストラクター: IBSysPort * を返します ] IBSysPort 名 n p_sys
コンストラクタ
[メンバー: void を返します] p_otherSysPort ?width? に接続します。 ?スピード?
XNUMX つの SysPort を接続する
[ メンバー : int を返します ] 切断
SysPort (およびポート) を切断します。 成功した場合は 0 を返します
class IBシステム
IBSystem クラスはシャーシ全体を表します
[ メンバー データ: 文字列 * を返します ] -name
システムの「ホスト」名
[ メンバーデータ: 文字列 * を返します ] -type
Cougar、Buffalo、MTS2400 などのタイプは何ですか。対応する IBNL ファイル
存在する必要があります - このシステム タイプを定義します
[ メンバー データ: IBFabric * を返します ] -p_fabric
システムが属するファブリック
[ メンバー データ: map_str_pnode * を返します ] -NodeByName
ノード ポインタを名前で指定します
[ メンバー データ: map_str_psysport * を返します ] -PortByName
SysPort へのポインタを名前で提供するマップ
[ コンストラクター: IBSystem * を返します ] IBSystem 名 n p_fab t
建設業者
[ メンバー : new_uint64_t を返します ] guid_get
システムイメージのGUIDを取得します。
[メンバー: void を返す] guid_set guid
システムイメージのGUIDを設定します。
[ メンバー : IBSysPort * を返します ] makeSysPort pName
ポートが定義されていることを確認してください (定義されていない場合は定義してください)
[ メンバー : IBPort * を返します ] getSysPortNodePortByName sysPortName
指定された SYS ポートのノード ポートを名前で取得します。
[ メンバー : IBSysPort * を返します ] getSysPort 名
名前で Sys ポートを取得する
class IBファブリック
システムで構成される IB サブネット全体を表します
[ メンバー データ: map_str_pnode * を返します ] -NodeByName
ノード名とポインターのペアのリストを提供します。
[ メンバー データ: map_str_psys * を返します ] -SystemByName
システム名とポインターのペアのリストを提供します。
[ メンバー データ: vec_pport * を返します ] -PortByLid
システムポート名とポインターのペアのリストを提供します。
[ メンバー データ: map_guid_pnode * を返します ] -NodeByGuid
ノード guid とノード ポインターのペアのリストを提供します。
[ メンバー データ: map_guid_psys を返します * ] -SystemByGuid
システム イメージ GUID とシステム ポインターのペアのリストを提供します。
[ メンバー データ: map_guid_pport * を返します ] -PortByGuid
ポート GUID とポート ポインターのペアのリストを提供します。
[メンバーデータ: unsigned int を返す] -minLid
トラックミニの蓋を使用。
[メンバーデータ: unsigned int を返す] -maxLid
トラックマックスの蓋を使用。
[メンバーデータ: unsigned int を返す] -lmc
使用されるLMC値
[ メンバー : IBNode * を返します ] makeNode n p_sys タイプ numPorts
名前でノードを取得します (存在しないものを作成します)
[ メンバー : IBNode * を返します ] getNode 名
名前でノードを取得します
[ メンバー : list_pnode * を返します ] getNodesByType タイプ
必要なタイプに一致するノード ポインターのリストを返します。
[ メンバー : IBSystem * を返します ] makeGenericSystem 名
新しい汎用システムを作成します - 基本的にはノード用の空のコンテナーです...
[ Member : IBSystem * を返します ] makeSystem 名の型
新しいシステムを作成します - タイプには登録されたファクトリが必要です。
[ メンバー : IBSystem * を返します ] getSystem 名
名前でシステムを取得
[ メンバー : IBSystem * を返します ] getSystemByGuid guid
ガイドによってシステムを取得します
[ メンバー : IBNode * を返します ] getNodeByGuid guid
ガイドによってノードを取得します
[ メンバー : IBPort * を返します ] getPortByGuid guid
ガイドによってポートを取得します
[メンバー: void を返します] addCable t1 n1 p1 t2 n2 p2 ?幅? ?スピード?
XNUMX セットのノード タイプ、ノード名、ポート番号を指定してケーブルを追加します。 オプションで
接続に指定された幅と速度を使用します
[ メンバー : int を返します ] parseCables fn
ケーブル ファイルを解析してファブリックを構築する
[ メンバー : int を返します ] parseTopology fn
トポロジ ファイルを解析してファブリックを構築する
[ メンバー : int を返します ] addLink type1 numPorts1 sysGuid1 nodeGuid1 portGuid1 Vend1
devId1 rev1 desc1 lid1 portNum1 type2 numPorts2 sysGuid2 nodeGuid2 portGuid2 Vend2 devId2
rev2 説明 2 蓋 2 ポート番号 2 ?幅? ?スピード?
リンクをファブリックに追加します。これにより、必要に応じてシステムとノードが作成されます。
[ メンバー : int を返します ] parseSubnetLinks fn
OpenSM subnet.lst ファイルを解析し、そこからファブリックを構築します。
[ メンバー : int を返します ] parseFdbFile fn
OpenSM FDB ダンプ ファイルを解析し、スイッチの LFT テーブルに記入します
[ メンバー : int を返します ] parseMCFdbFile fn
OpenSM MCFDB ファイルを解析し、それに応じて MFT テーブルを設定します
[ メンバー : int を返します ] parsePSLFile fn
SL マッピング ファイルへのパスを解析します。 各行の内容: src_node_guid DLID SL
信用ループチェックで使用される
[ メンバー : int を返します ] parseSLVLFile fn
SLVL テーブル ファイルを解析します。 各行には、sw_node_guid in_port out_port 0x(sl0)(sl1) が含まれます。
0x(sl2)(sl3)...
[ メンバー : void を返します ] setLidPort 蓋 p_port
蓋ポートを設定します
[ メンバー : IBPort * を返します ] getPortByLid 蓋
蓋でポートを取得します
[ IBFabric * を返します ] new_IBFabric
新しい生地を構築する
[ void を返す] delete_IBFabric p_fabric
生地を破壊する
IBDM 機能
このセクションでは、IBDM が公開する機能について詳しく説明します。 順序は次のとおりです
通常の IBDM フローで予想される順序。 成功するとすべて 0 を返します。
サブネット ユーティリティ
このファイルには、OpenSM の初期化を模倣するためにサブネット上で実行される一連のユーティリティが保持されています。
そして結果を分析します。
[戻り値 int ] ibdmAssignLids p_smNodePort ?lmc?
オプションの LMC を使用して LID を割り当てる (ポートごとに複数の LID)
[ int を返します ] ibdmCalcMinHopTables p_fabric
OpenSM スタイルのルーティングを実行するために必要な MinHopTable を計算して設定します。
[戻り値 int ] ibdmCalcUpDnMinHopTbls p_fabric rootNodesNameRex
Up/Down ルールに従って MinHopTables を計算して設定します。
[ int を返します ] ibdmOsmRoute p_fabric
OpenSM スタイルのルーティングを使用してファブリックをルーティングする
[ int を返します ] ibdmEnhancedRoute p_fabric
LMC > 0 のサポートを強化して強化された OpenSM スタイルのルーティングを使用してファブリックをルーティングします。
[ int を返します ] ibdmFatTreeRoute p_fabric rootNodes
フル ファット ツリーのみに適合するアルゴリズムを使用してファブリックをルーティングする
[ int を返します ] ibdmFatTreeAnalysis p_fabric
ファブリックを分析して太い木かどうかを確認し、太い木であれば配線します。
[ int を返します ] ibdmVerifyCAtoCARoutes p_fabric
すべての (H)CA が LFT 設定に基づいて相互に接続されていることを確認します。
[ int を返します ] ibdmVerifyAllPaths p_fabric
すべてのスイッチと (H)CA が LFT に基づいて相互に接続されていることを確認します。
設定
[ int を返します ] ibdmAnalyzeLoops p_fabric
信用ループに対する厳格なチェック。 このアルゴリズムは完全かつ正確なチェックを行います
しかし、信用ループ経路に関するレポートは解釈が困難です。 ルーツを知れば
ツリーの(またはツリーが対称である場合)、
ibdmReportNonUpDownCa2CaPaths
[ list_pnode を返す ] ibdmFindSymmetricalTreeRoots p_fabric
ツリーのトポロジを分析し、その対称性に基づいてツリーのルートを見つけます。
[ list_pnode を返します ] ibdmFindRootNodesByMinHop p_fabric
MinHopTable に基づいてツリーのルートを見つけます。 5% の非対称性は許容されます
[戻り値 int ] ibdmRankFabricByRoots p_fabric rootNodes
ルート ノード (名前) のリストを指定して、ノードをランク付けします (ルート = 0)。
[戻り値 int ] ibdmReportNonUpDownCa2CaPaths p_fabric rootNodes
ルートを分析して、Up/Down ルールが維持されていることを確認します。
[ int を返します ] ibdmCheckMulticastGroups p_fabric
マルチキャストルーティングの接続を確認する
[戻り値 int ] ibdmCheckFabricMCGrpsForCreditLoopPotential p_fabric rootNodes
マルチキャスト ルーティングを分析して、アップ/ダウン ルールに従っていることを確認します。
[ int を返します ] ibdmLinkCoverageAnalysis p_fabric rootNodes
一連の送信元から宛先への送信スケジュールを準備します。
各ステージで過剰にサブスクライブされているリンクはなく、すべてのステージの後、すべてのリンクが
生地のリンクが切れてしまった
トレーシング ユーティリティ
これらの機能により、訪問したノードを報告するトレースパスが可能になります。
[戻り値 int ] ibdmTraceDRPathRoute p_smNodePort drPathPortNums
指定されたポートからの直接ルート パスをトレースします。
[戻り値 int ] ibdmTraceRouteByMinHops p_fabric slid dlid
MinHop に沿ってソース LID から宛先 LID までのパスをトレースします。
[戻り値 int ] ibdmTraceRouteByLFT p_fabric slid dlid hops p_nodesList
ホップとノード リスト変数を更新する LFT に従ってパスをトレースします。
トポロジー マッチング ユーティリティ
次のユーティリティは XNUMX つのファブリックを照合し、不一致メッセージと
ユニファイドファブリック
[戻り値 int ] ibdmMatchFabrics p_spec_fabric p_discovered_fabric アンカーノード名
アンカーポート番号アンカーポートガイド
トポロジベースのファブリックを、エンコーポートから始まる検出されたファブリックと照合します。
[戻り値 int ] ibdmBuildMergedFabric p_spec_fabric p_discovered_fabric p_merged_fabric
ibdmMatchFabrics を使用してマッチングした後、「マージされたファブリック」に情報を入力します
一致したノードに対してマージされる
混雑 分析 ユーティリティ
リンクのオーバーサブスクリプションを追跡および報告する機能を提供します
[ int を返します ] ibdmCongInit p_fabric
追跡システムを初期化する
[ int を返します ] ibdmCongCleanup p_fabric
カウンタをクリーンアップして割り当てを解除する
[ int を返します ] ibdmCongClear p_fabric
クリーンアップカウンター
[戻り値 int ] ibdmCongTrace p_fabric srcLid dstLid
LID 間のパスをトレースし、リンク使用情報を更新します
[ int を返します ] ibdmCongReport p_fabric
結果として得られる渋滞情報をレポートする
[ int を返します ] ibdmCongDump p_fabric
すべての混雑追跡情報をダンプする
onworks.net サービスを使用してオンラインで ibdmsh を使用する