Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SONiCデバイスプロファイル

背景

デバイスはApstra環境でデバイスプロファイルで認識されます。Apstraソフトウェアが検出し、ブループリント内のデータパスに適したネットワーク設定を実行するために必要な、デバイス固有のセマンティクスをキャプチャします。

デバイス プロファイルは REST エンティティであり、設計フェーズで作成、編集、削除、リストを実行できます。デバイスプロファイルを使用してインターフェイスマップを作成し、ブループリントを展開する際にApstra構成レンダリングエンジン内で直接使用します。

このドキュメントでは、セマンティックに正しいSonic DPを作成(編集)するために必要な知識を網羅しています。Apstra内で検証に合格し、データベースに適切なDPが作成されるだけでなく、デバイスに適用されるベンダーセマンティック要件を満たして、生成された設定がネットワークデバイスにプッシュされたときに展開エラーが発生しないようにします。

問題ステートメント

デバイス プロファイルは、ベンダー セマンティクスを考慮したデータ構造です。デバイス プロファイルを作成するには、ベンダーのデバイス仕様が必要です。有効で設定しやすいJSONを作成するには、これらの仕様をApstraデバイスプロファイルデータモデルに変換する必要があります。

ソリューション

高レベルのデータ モデルは、すべての SP で同じです。すべてのデバイス プロファイルに同じキーが使用されます。値の取得方法が異なる場合や、ベンダー制約で読み込まれる場合があります。ドキュメントには、以下が含まれます。

  • DP と DP 内のネストされた要素のスキーマ。
  • スキーマ内の各キー値ペアの意味。
  • 値が入力されたベンダー固有のレシピ。
  • 特に特定の(グループの)モデルのポート設定に関して、考慮すべき制約、コーナーケースをリストします。
  • 本番稼働中のこれらの SP を作成する過程で学んだ教訓は、将来の SP を作成する上で役立ちます。

ユーザーインターフェイス

Apstra GUIからデバイスプロファイルを作成すると、一部のエントリがセマンティック検証されます。しかし、ベンダー固有の深い制約や要件を完全に保証できるわけではありません。ベンダーの仕様を正確に示すGUIは、Apstraデータベースデータモデルの一部となるセマンティック有効なDPの作成をサポートします。

あるいは、ベンダー仕様を含む独自のPythonコードを作成し、Apstra DPデータモデルに従って正規化し、jsonを生成してGUIでインポートすることもできます。

セレクター情報

4つのセレクターフィールドすべてに正しい情報を入力することは、デバイスプロファイルに一致させるために重要です。

Selector Field Value コマンドを使用してデバイス上の情報を取得
モデル 0x21 show platform syseeprom
メーカー syseeprom で0x2Dしている場合は、他0x2D 0x2B show platform syseeprom
OSファミリー ソニック バージョンを表示
バージョン .* バージョンを表示

機能

デバイス仕様がある場合、デバイス プロファイルに入力するためのハードウェアとソフトウェアの機能を取得できます。

以下の表には、SONiCデバイスに一般的に見られる値(認定されたデバイスに基づく)が含まれています。

Selector Field Value コマンドを使用してデバイス上の情報を取得
ユーザランド 64(int) 設定に影響しない
form_factor '1RU' (文字列) 設定に影響しない
ecmp_limit 64(int) 設定に影響しない
Asic 'T2' (文字列) 設定に影響しない
Cpu 'x86' (文字列) 設定に影響しない
Ram 16(int)(注、単位は GB 単位) 設定に影響しない
オニー True(bool)(デフォルト) 設定に影響しない
Lxc True(bool)(デフォルト) 設定に影響しない

インターフェイスの命名規則

Sonicは、githubマスターでAzure SONICが見つけたように、sonicポート名ファイルごとの命名規則に従っています。 https://github.com/Azure/SONiC/blob/master/doc/sonic-port-name.md

SONICデバイスプロファイルを作成するには、デバイス固有のport_config.ini(sonic-buildimage/device/mellanox/x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini)ファイルを読み、上記のリンクにあるインストラクションに従って適切なインターフェイス名を表示する必要があります。

port_congi.iniは、SONiCが使用するインターフェイス名を指定します。デバイスプロファイルは、設定ファイル(config_db.json)でPORT設定を生成するインターフェイス名と一致する必要があります。このドキュメントの目的で、port_config.ini と config_db.json は、同じインターフェイス命名規則を持つ必要があります。DP でこれらのインターフェイス名を、port_cfg.ini ファイルで提供されているレーン番号と共に使用します。前述の手順に基づいてデバイスプロファイルが生成されると、ApstraはLDと共にそれを使用してインターフェイスマップ(IM)を生成します。検証の一環として、Apstraは、「/usr/share/sonic/device/x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini」で、IM(ポートとその速度を説明する)が実際に利用可能でサポートされていることを確認します。この検証は、サポートされていないポート設定(config_db.json)が間違ったDPによってApstraで誤って生成されるため、SONiC NOSスタックが失敗しないようにするために実行されます。そのため、エンド ユーザーが SONiC プラットフォームで生成される DP に、その特定のプラットフォームの port_config.ini ファイルに反映されている正しいインターフェイス名と車線マップを持っていることを確認することが重要です。プラットフォームには、そのプラットフォーム用の異なる HW SKU の一部に、いくつかの異なるport_config.ini ファイルが含まれる場合があります。Apstraは、そのプラットフォームで利用可能なオプションと共に、生成されたポート設定の検証を試みます。Apstraは現在、SONiCプロジェクトで実行中の動的ポートブレイクアウト機能を使用していません。

トラブルシューティング

デバイスの不一致は通常、デバイスのライフサイクルの開始時に発生します。デバイスがデバイス プロファイルを選択していない場合は、デバイス プロファイルの 4 つのセレクター フィールドを確認します。

ポートに誤った速度が設定されている場合、または OS 固有のポート制約がデバイス プロファイルまたはインターフェイス マップで処理されなかった場合、デプロイ エラーが発生する可能性があります。

根本原因の可能性のあるフローは次のようになります。

  • 明らかなポート機能エラーがないか DP を確認します。ポートは DP が設定した速度に本当に対応していますか。ini Sonicオープンソースプロジェクトのデバイス固有のport_configは、エラーメッセージを解析するのに適したリソースです。
  • DP が自動ネグまたは無効なインターフェイスを正しく設定しているかどうかを確認します。自動ネグと無効化の両方は、インターフェイス設定フィールドで表すことができます。
  • インターフェイス名とレーンマッピングをデバッグする場合は、対応するport_config.iniを確認してください。AS5712-54Xエッジコア/acctonボックスの例として、https://github.com/Azure/sonic-buildimage/tree/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X でレーン/名前/エイリアスなどの詳細を持つport_config.iniファイル取得できます。
  • 命名上の制約は、SONiCの公式ドキュメントで確認できます。例えば、SONICを実行している Accton 5712 54Xのインターフェイス名を生成する場合、port_config.iniが権限です。 https://github.com/Azure/sonic-buildimage/blob/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/port_config.ini デバイスにポート間制約がある場合があります。SONiCでは、一般的にport_config.iniファイルにレイアウトされています。特定のプラットフォームには複数のport_config.iniファイルがあり、各port_config.iniファイルを持つ特定のメーカーは、sonicイメージの HWSKUフォルダに格納されています(上記で参照されたものと同様)。(port_config.ini に記載されているもの以外で)さまざまなポート速度を試す機能は、チップセットに関する知識と、何を達成できるかを確認する物理スイッチの製造元が必要です。この情報は、ベンダーの要求を受けない限り、いかなるホワイトペーパーでも提供されない場合があります。

例:DP および port_config.ini

Port_config.ini from sonic-buildimage は、Dell_Z9100(x86_64-dell_z9100_c2538-r0/Force10-Z9100-C32 の下にあります。

port_configスクリプトを使用して、ポートからlane_mapへのデータ構造 parse.py 変換します。

上記からの出力は、音のdevice_profileジェネレータPythonファイルのsonic_device_infoの辞書エントリになります。

Apstraで生成された対応するデバイスプロファイル: