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を作成(および編集)するために必要な知識について説明します。これにより、データベースに適切なDPが作成されることを保証するApstraで実施されている検証に合格するだけでなく、デバイスに適用されるベンダーのセマンティック要件も尊重されるため、生成された設定がネットワークデバイスにプッシュされたときに展開に失敗しません。

問題の説明

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

解決

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

  • DP のスキーマと DP 内の入れ子になった要素。
  • スキーマ内の各キーと値のペアの意味。
  • 値が入力される仕入先固有のレシピ。
  • 考慮すべき制約やコーナーケースをリストアップします。特に特定の(モデルグループの)ポート構成について。
  • すでに本番環境にあるDPを作成する過程で学んだ教訓は、将来のDPの作成に役立ちます。

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

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

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

セレクタ情報

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

コマンド
デバイスの情報を取得するためのセレ クタフィールド
モデル 0x21 showプラットフォームsyseeprom
生産者 syseeprom で0x2D場合は、他に0x2D 0x2B showプラットフォームsyseeprom
OSファミリ ソニック バージョンを表示
バージョン .* バージョンを表示

資格

デバイス仕様がわかっている場合は、デバイスプロファイルに入るためのハードウェアおよびソフトウェア機能を取得できます。

次の表は、SONiCデバイスでよく見られる値(認定デバイスに基づく)を示しています。

コマンド
デバイスの情報を取得するためのセレ クタフィールド
ユーザーランド 64 (int) 設定には影響しません
form_factor '1RU' (文字列) 設定には影響しません
ecmp_limit 64 (int) 設定には影響しません
ASIC 'T2' (文字列) 設定には影響しません
CPU 'x86' (文字列) 設定には影響しません
ラム 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のインターフェイス命名基準を同じにする必要があります。これらのインターフェイス名と、port_cfg.ini ファイルで指定されているレーン番号を DP で使用します。前述の手順に基づいてデバイスプロファイルが生成されると、ApstraはLDとともにデバイスプロファイルを使用してインターフェイスマップ(IM)を生成します。Apstraは、検証の一環として、IM(ポートとその速度を記述)が実際に使用可能であり、「/usr/share/sonic/device/ x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini」でサポートされていることを確認します。この検証は、サポートされていないポート設定(config_db.json)が間違ったDPのためにApstraで誤って生成されたためにSONiC NOSスタックが失敗しないことを確認するために実行されます。そのため、SONiC プラットフォーム用に生成された DP に、その特定のプラットフォームのファイルに反映されている正しいインターフェイス名とレーン マップport_config.iniエンド ユーザーが確認することが重要です。プラットフォームには、そのプラットフォームのさまざまな HWSKU の一部であるいくつかの異なる port_config.ini ファイルがある場合があります。Apstraは、生成されたポート設定を、そのプラットフォームで利用可能なオプションのいずれかで検証しようとします。Apstraは現在、SONiCプロジェクトで進行中のダイナミックポートブレークアウト機能を使用していません。

トラブルシューティング

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

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

根本原因のフローとして考えられるのは、次のようになります。

  • 明らかなポート機能エラーがないか DP を確認します。ポートは、DPが設定した速度に本当に対応していますか。デバイス固有のport_config.ini Sonicオープンソースプロジェクトは、ERRORメッセージを解析するための優れたリソースです。
  • DPが自動ネゴシエーションまたは無効なインターフェイスを正しく設定しているかどうかを確認します。オートネゴシエーションとディセーブルはどちらもインターフェース設定欄で表現できます。
  • インターフェース名とレーンマッピングをデバッグする場合は、対応するport_config.iniを確認してください。AS5712-54X edgecore/acctonボックスの例として、レーン/名前/エイリアスなどの詳細を含むport_config.iniファイルを取得できます https://github.com/Azure/sonic-buildimage/tree/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X
  • 名前付けの制約については、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

sonic-buildimageからのPort_config.iniは、Dell_Z9100(x86_64-dell_z9100_c2538-r0 / Force10-Z9100-C32)の場合です。

スクリプトを使用して、port_configをポートlane_mapデータ構造に変換し parse.py。

上記からの出力は、sonic device_profile generator の Python ファイルのsonic_device_info辞書エントリになります。

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