Juniper Apstraを使用したファブリック構成のウォークスルー
このセクションでは、Juniper Apstraを使用した新しいファブリックの導入方法の 例 として、AI JVDラボにAI GPUバックエンドIPファブリックの1つを導入する手順について説明します。
これらの手順では、スパイン/リーフの役割でQFX5220-32CDおよびQFX5230-64CDスイッチを使用したAI GPUバックエンドIPファブリックについて説明します。フロントエンドとストレージバックエンドファブリックを設定する場合も、同様の手順に従う必要があります。
このセクションでは、Nvidia GPUサーバーの設定手順についても説明します。
Apstraサーバーのセットアップ
ApstraサーバーVMに初めて接続すると、構成ウィザードが起動します。この時点で、Apstraサーバー、Apstra UI、ネットワーク設定のパスワードを設定できます。
Apstraのインストールと設定手順の詳細については、 Juniper Apstraユーザーガイドを参照してください。
Apstraでのデバイスのオンボーディング
Apstraにジュニパーデバイスを追加するには、2つの方法があります。
- ZTPの使用
Apstra ZTPサーバーから、『 Juniper Apstraユーザーガイド』に記載されているZTP手順に従います。
- 手動(詳細は次のセクションで説明します)
このベースライン構成の一部として、ループバック、インターフェイス(管理インターフェイスを除く)、ルーティングインスタンス(管理インスタンスを除く)、またはその他の設定を設定しないことがベストプラクティスです。
デバイスが正常に確認されると、ApstraはプロトコルLLDPとRSTPを設定します。
各デバイスをオンボーディングするには、 Apstra Web UIで以下の手順に従います。
Apstraでのデバイスのオンボーディング手順
ステップ1:Junosデバイス用のエージェントプロファイルを作成します。
- デバイス >> エージェントプロファイルに移動します。
- [エージェントプロファイルの作成]をクリックします。
図23.Apstraでエージェントプロファイルを作成する
注:このJVDでは、すべてのデバイスで同じユーザー名とパスワードが使用されます。したがって、すべてのデバイスをオンボーディングするために必要なJunosエージェントプロファイルは1つだけです。 - エージェントプロファイル名を入力し、プラットフォーム(Junos)を選択し、Apstraがデバイスとの通信に使用するユーザー名とパスワードを入力します。
- そのためには、Apstraでデバイスにアクセスして設定できるように、デバイスにrootパスワード、Apstraで設定したユーザー名とパスワード、管理IP、必要に応じて適切な静的ルーティング、ssh Netconfが事前に設定されている必要があります。
図24:Apstraエージェントプロファイルパラメーター

- 必要な情報を入力した後、 作成をクリックします。
- エージェントプロファイルの作成を確認します。
図25:新しいApstraエージェントのプロファイル検証
ステップ2:他のデバイスのエージェントプロファイルを作成します。
- デバイス>>エージェントプロファイルに移動します。
- [ エージェントプロファイルの作成]をクリックします。
図26.Apstraでエージェントプロファイルを作成する
.png)
- エージェントプロファイル名を入力し、プラットフォーム(Junos)を選択し、Apstraがデバイスとの通信に使用するユーザー名とパスワードを入力します。
そのためには、Apstraでデバイスにアクセスして設定できるように、デバイスにrootパスワード、Apstraで設定したユーザー名とパスワード、管理IP、必要に応じて適切な静的ルーティング、ssh Netconfが事前に設定されている必要があります。
図27:Apstraエージェントプロファイルパラメーター

- 必要な情報を入力した後、 作成をクリックします。
- エージェントプロファイルの作成を確認します。
図28:新しいApstraエージェントのプロファイル検証

ステップ3:QFXデバイス用のオフボックスエージェントを作成する
- デバイス>>管理対象デバイスに移動します。
- オフ ボックスエージェントの作成をクリックします。オフ ボックスエージェントを選択してください。
図29:Apstraでオフボックスエージェントを作成する

- オンボーディングするデバイスを識別します。ホスト名、個々のIPアドレス、またはIPアドレス範囲のカンマ区切りリストを入力できます。
注:IPアドレス範囲を指定して、Apstraの複数のデバイスを一度にオンボーディングすることもできます。以下の例に示す範囲は、デモンストレーションのみを目的として示しています。
- プラットフォームとエージェント プロファイル を選択します(前のステップで作成したプロファイルを選択)。
図30:IPアドレスの範囲を使用してオンボーディングするデバイスの特定

注:「ユーザー名を設定?」と「パスワードを設定?」のチェックが外れている場合、Apstraは前のステップで作成したプロファイルの情報を使用します。
- 作成をクリックします。
- デバイスがオンボーディング用に追加されていることを確認します。オフボックスエージェントが作成されると、デバイスが管理対象デバイスのリストに追加されます。Apstraは接続を試み、成功した場合は関連情報を入力します。
図31:オンボーディングされている新しいデバイス

ステップ4:オンボックスエージェントを作成し、AMDサーバーをオンボードします。
- デバイス>>管理対象デバイスに移動します。
- オン ボックスエージェントの作成をクリックします。オン ボックスエージェントを選択してください。
図32:Apstraでオンボックスエージェントを作成する

- オンボーディングするデバイスを識別します。ホスト名、個々のIPアドレス、またはIPアドレス範囲のカンマ区切りリストを入力できます。
注:IPアドレス範囲を指定して、Apstraの複数のデバイスを一度にオンボーディングすることもできます。以下の例に示す範囲は、デモンストレーションのみを目的として示しています。
- プラットフォームとエージェント プロファイル を選択します(前のステップで作成したプロファイルを選択)。
図33:IPアドレスの範囲を使用してオンボーディングするデバイスの特定
注:「ユーザー名を設定?」と「パスワードを設定?」のチェックがオフの場合、Apstraは前の手順で作成したプロファイルの情報を使用します。 - 作成をクリックします。
- デバイスがオンボーディング用に追加されていることを確認します。オンボックスエージェントが作成されると、デバイスが管理対象デバイスのリストに追加されます。Apstraは接続を試み、成功した場合は関連情報を入力します。
図34:オンボーディングされている新しいデバイス

ステップ5:Apstraブループリントで使用する管理対象デバイスを承認します。
オンボーディングを完了し、Apstraブループリントの一部として使用できるようにするためには、ユーザーがデバイスを承認する必要があります。
各デバイスに対してオフボックスエージェントの作成が正常に実行されたら、オンボーディングが完了し、Apstraブループリントの一部となるために、ユーザーがデバイスを確認する必要があります。これにより、デバイスの状態がOOS-QUARANTINEからOOS-READYに移行します。
- デバイスを選択
- 「選択したシステムを確認する」ボタンをクリックします。
図35:Apstraブループリントでの管理対象デバイスの確認

Apstra Web UIでのファブリックプロビジョニング
ファブリックをプロビジョニングするには、 Apstra Web UIで以下の手順に従います。
ステップ1:リーフノードとスパインノードの論理デバイスとインターフェイスマップを作成します。
この例では、LC1301 スパインノードを使用するPTX10008のインターフェイス マップと論理デバイスを作成する方法を示しています。
- 論理デバイスの設計>に移動
- 論理デバイスの作成をクリックします。
図36:論理デバイスの作成

- 名前を入力し、ポートを追加して、速度を800Gに変更します。
- Add Pannelをクリックします。
図 37: 論理デバイスの作成 パネル 1.

- 名前を入力し、ポートを追加し、2 番目のパネルで速度を 800G に変更します。
図 38: 論理デバイスの作成パネル 2.

- パネル1と2の ポートグループの作成 をクリックします。
図39:論理デバイスポートグループの作成

- 作成をクリックします。
図40:論理デバイスの作成

- 論理デバイスの作成を確認します。
図41:新しい論理デバイス

- 論理デバイスの設計>に移動
図42:インターフェイスマップの作成

QFX5220リーフノードの場合、論理デバイスとインターフェイスマップを図43および44に示します。
図43:QFX5220リーフノード用のApstra論理デバイス

図44:QFX5220リーフノード用Apstraインターフェイスマップ

QFX5230-64CDリーフノードの場合、論理デバイスとインターフェイスマップを図45および46に示します。
図45:QFX5230リーフノード用のApstra論理デバイス

図46:QFX5230リーフノードのApstraインターフェイスマップ

QFX5230スパインノードでは、論理デバイスとインターフェイスマップを図47および48に示します。
図47:QFX5230スパインノード用のApstra論理デバイス

図48:QFX5230スパインノードのApstraインターフェイスマップ

QFX5240スパインノードとリーフノードについては、論理デバイスとインターフェイスマップをそれぞれ図49-50と51-52に示します。
以下の表は、古いポートマッピングと新しいポートマッピングの違いを示しています。
表25.QFX5240-64DCポートマッピング

QFX5240-64DCのリーフとスパインノードのインターフェイスマップと論理デバイスは、図49-50に示すように、新しいポートマッピングに従って作成されました
図49:QFX5240スパインノードのApstraインターフェイスマップ

図50:QFX5240スパインノード用のApstra論理デバイス

図51:QFX5240リーフノードのApstraインターフェイスマップ

図52:QFX5240リーフノード用のApstra論理デバイス

同じくテストしたPTX10008 LC1201スパインノードについて、論理デバイスとインターフェイスマップを図53-54に示します。
図53:PTXスパインノード用Apstraインターフェイスマップ

図54:PTXスパインノード用のApstra論理デバイス

ステップ2:GPUサーバーのインターフェイスマップと論理デバイスを作成する
AMD NVIDIA GPUサーバーの論理デバイスとインターフェイスマップを、それぞれ図55-56に示します。
図55:A100 Nvidiaサーバー用Apstraインターフェイスマップ

図56:H100 Nvidiaサーバー用Apstraインターフェイスマップ

図57:A100 Nvidiaサーバーの論理デバイス

図58:H100 Nvidiaサーバーの論理デバイス

ステップ 3.GPUバックエンドファブリックのラックタイプを作成する
- [Design → Rack Types]に移動し→Builderで作成
注:Apstraでは、ラックは技術的にはAIファブリックのコンテキストにおけるストライプに相当します
- [Create Rack Type]をクリックします
図59:Apstraでラックタイプを作成する
注: [ビルダーで作成] または [デザイナーで作成] (グラフィカル バージョン) のいずれかを選択できます。ここでは、「ビルダーで作成」オプションを示します。 - 名前と説明を入力し、L3 Closを選択します。
図60:[Create In Builder]オプションを使用したApstraでのラックの作成

- [リーフの追加] ボタンをクリックして、最初のリーフを作成します。
図 61: リーフノードの作成

作成されたスイッチを選択し、[選択したノードのプロパティの管理]をクリックします。
適切な論理デバイスを選択します。
図62:リーフノードのプロパティを設定する

- 前の手順で作成したリーフを複製して、追加のリーフノードを作成します。合計8枚の葉が追加されるまで繰り返します。
図62:リーフノードの複製による追加のリーフリーフノードの作成

図63:作成された追加のリーフノード

- 「汎用システムの追加」をクリックして、最初のGPUサーバー(汎用システム)を作成します。
図64:リーフノードのクローニング。

作成されたサーバーを選択し、[選択したノードのプロパティの管理]をクリックします。
サーバーの名前を入力し、適切な論理デバイスを選択します。
図 65: 最初の GPU サーバーの作成と構成 (汎用システム)

- GPUサーバーとリーフノード接続を作成します。
サーバーと最初のリーフを選択し、リンクの管理をクリックします。
「Is a Part of the Rail」ボックスがオンになっていることを確認します。
サーバーとすべてのリーフノード間のすべての接続が作成されるまで、これを繰り返します。
図66:GPUサーバーとリーフノード間の接続の作成

図67:GPUサーバーとリーフノード間の接続の作成

- 前の手順で作成したサーバーを複製して、追加のサーバーを作成します。合計8枚の葉が追加されるまで繰り返します。すべての接続が複製されます。
図 68: 追加サーバーの作成

図 69: 追加のサーバーの作成

- ラックが正しく作成されたことを確認します。
図70:GPUサーバーとリーフノード間の接続の作成

図71:GPUサーバーとリーフノード間の接続の作成

図72:GPUサーバーとリーフノード間の接続の作成

図73:GPUサーバーとリーフノード間の接続の作成

ステップ4:テンプレートを作成します。
[設計] -[テンプレート>] -[テンプレートを作成>] に移動します。
- テンプレートの作成をクリックします
図74:Apstraテンプレートの作成
注: テンプレートの作成 または AIクラスターテンプレートの作成 のいずれかを選択できます(ストライプあたりに必要なGPU数とストライプ数に基づいて、既存のデザインから選択します)。ここでは、「 テンプレートの作成」 オプションをデモンストレーションします。 - テンプレートの名前を入力し、タイプ ラックベース、ポリシーASN割り当て一意、オーバーレイ ピュアIPファブリックを選択します。
図75:Apstraでテンプレートを作成する - パラメーター

- 下にスクロールして、前の手順で作成したラックタイプとスパイン論理デバイスを選択し、ラックの数(ストライプの数と同等)とスパインの数を設定します。準備ができたら [作成] をクリックします (図 75 を参照)。
図76:Apstraでテンプレートを作成する - 構造

図 77: 新しいテンプレート作成の検証
ステップ 5.GPUバックエンドファブリックの設計図を作成する
- 図78に示すように、[ Blueprints ]セクションに移動し、[ Create Blueprint ]をクリックします。
図78:Apstraでの設計図の作成

- 新しい設計図の名前を入力し、リファレンスデザインとしてデータセンターを選択し、ラックベースを選択します。次に、前の手順で作成したテンプレートを選択します。これには、前に作成した 2 つのラック タイプが含まれます。
図79:Apstraの新しいブループリント属性
Apstraによってブループリントが正常に起動されると、以下に示すようにブループリントダッシュボードに含まれます。
図80:ブループリントダッシュボードに追加された新しいブループリント
導入ステータス、サービス異常、プローブ異常、根本原因がすべてN/Aと表示されていることに注意してください。これは、設計図内のさまざまな役割を物理デバイスにマッピングしたり、使用するインターフェイスを定義したりするなどの追加手順を完了する必要があるためです。
ブループリント名をクリックしてブループリントダッシュボードに入ると、ブループリントがまだデプロイされていないことが示されます。
図81:新規設計図のダッシュボード
図82に示すように、ステージングビューは、トポロジーが正しいことを示していますが、スパインとリーフノードの必須ASNやループバックアドレッシング、およびスパインからリーフへのリンクアドレッシングなどの属性は、ユーザーが提供する必要があります。
図82:未導入のブループリントダッシュボード
この問題を解決するには、これらの属性をそれぞれ編集し、図83の例に示すように、定義済みのアドレスとASNのプールから選択する必要があります。
図83:スパインノードのASNプールの選択
また、図84-85に示すように、各デバイスの役割とシステムIDの割り当てに合わせてインターフェイスマップを選択する必要があります。
図84:スパインノードへのインターフェイスマップのマッピング
図85:スパインノードから物理デバイスへのマッピング(システムID)
これらの手順がすべて完了したら、すべての変更をコミットできます。Apstraは、必要なベンダー固有の設定をすべて生成し、ノードにプッシュします。これが完了すると、図86に示すように、正常に導入されたファブリックを表すアクティブなブループリントが表示されるはずです。
図86:スパインノードから物理デバイスへのマッピング 2(システムID)

ステップ6: DCQCNとDLBのコンフィグレットを作成します。
このJVDに使用されるApstraバージョンでは、ECN、PFC(DCQCN)、DLBなどの機能をネイティブに利用することはできません。そのため、ファブリックデバイスに展開する前に、Apstraコンフィグレットを使用して、これらの機能を設定に追加する必要があります。
QFXリーフノード上のDCQCNおよびDLB機能に使用されるコンフィグレットは以下のとおりです。
/* DLB configuration for Thor NIC2 Adapter */ hash-key { family inet { layer-3; layer-4; } } enhanced-hash-key { ecmp-dlb { flowlet { inactivity-interval 128; flowset-table-size 2048; } ether-type { ipv4; ipv6; } sampling-rate 1000000; } } protocols { bgp { global-load-balancing { load-balancer-only; } } } /* DCQCN configuration */ classifiers { dscp mydscp { forwarding-class CNP { loss-priority low code-points 110000; } forwarding-class NO-LOSS { loss-priority low code-points 011010; } } } drop-profiles { dp1 { interpolate { fill-level [ 55 90 ]; drop-probability [ 0 100 ]; } } } shared-buffer { ingress { buffer-partition lossless { percent 66; dynamic-threshold 10; } buffer-partition lossless-headroom { percent 24; } buffer-partition lossy { percent 10; } } egress { buffer-partition lossless { percent 66; } buffer-partition lossy { percent 10; } } } forwarding-classes { class CNP queue-num 3; class NO-LOSS queue-num 4 no-loss pfc-priority 3; } congestion-notification-profile { cnp { input { dscp { code-point 011010 { pfc; } } } output { ieee-802.1 { code-point 011 { flow-control-queue 4; } } } } } interfaces { et-* { congestion-notification-profile cnp; scheduler-map sm1; unit * { classifiers { dscp mydscp; } } } } scheduler-maps { sm1 { forwarding-class CNP scheduler s2-cnp; forwarding-class NO-LOSS scheduler s1; } } schedulers { s1 { drop-profile-map loss-priority any protocol any drop-profile dp1; explicit-congestion-notification; } s2-cnp { transmit-rate percent 5; priority strict-high; } }
QFX スパインノードの DCQCN および DLB 機能に使用されるコンフィグレットは以下の通りです。
/* DLB configuration */ hash-key { family inet { layer-3; layer-4; } } enhanced-hash-key { ecmp-dlb { flowlet { inactivity-interval 128; flowset-table-size 2048; } ether-type { ipv4; ipv6; } sampling-rate 1000000; } } protocols { bgp { global-load-balancing { helper-only; } } } /* DCQCN configuration */ class-of-service { classifiers { dscp mydscp { forwarding-class CNP { loss-priority low code-points 110000; } forwarding-class NO-LOSS { loss-priority low code-points 011010; } } } drop-profiles { dp1 { interpolate { fill-level [ 55 90 ]; drop-probability [ 0 100 ]; } } } shared-buffer { ingress { buffer-partition lossless { percent 66; dynamic-threshold 10; } buffer-partition lossless-headroom { percent 24; } buffer-partition lossy { percent 10; } } egress { buffer-partition lossless { percent 66; } buffer-partition lossy { percent 10; } } } forwarding-classes { class CNP queue-num 3; class NO-LOSS queue-num 4 no-loss pfc-priority 3; } congestion-notification-profile { cnp { input { dscp { code-point 011010 { pfc; } } } output { ieee-802.1 { code-point 011 { flow-control-queue 4; } } } } } interfaces { et-* { congestion-notification-profile cnp; scheduler-map sm1; unit * { classifiers { dscp mydscp; } } } } scheduler-maps { sm1 { forwarding-class CNP scheduler s2-cnp; forwarding-class NO-LOSS scheduler s1; } } schedulers { s1 { drop-profile-map loss-priority any protocol any drop-profile dp1; explicit-congestion-notification; } s2-cnp { transmit-rate percent 5; priority strict-high; } } }
スパインデバイスとしてのPTX10008のDCQCN機能に使用される設定は次のとおりです。
/* ALB configuration */ policy-options { policy-statement ALB-TEST { term 1 { from { route-filter 10.200.1.0/24 exact; } then { load-balance adaptive; } } } } routing-options { forwarding-table { export ALB-TEST; } } chassis { ecmp-alb { tolerance 20; } interoperability express5-enhanced; } /* DCQCN configuration */ classifiers { dscp rdma-dscp { forwarding-class rdma-cnp { loss-priority low code-points 110000; } forwarding-class rdma-data { loss-priority low code-points 011010; } } } drop-profiles { dp-ecn { fill-level 3 drop-probability 100; } } forwarding-classes { class network-control queue-num 3; class other queue-num 1; class rdma-cnp queue-num 0; class rdma-data queue-num 2 no-loss; } monitoring-profile { myMon { export-filters qall { peak-queue-length { percent 100; } queue [ 3 1 2 ]; } } } interfaces { et-* { scheduler-map sched-map-aiml; monitoring-profile myMon; unit * { classifiers { dscp rdma-dscp; } } } } scheduler-maps { sched-map-aiml { forwarding-class network-control scheduler sched-nc; forwarding-class other scheduler sched-other; forwarding-class rdma-cnp scheduler sched-rdma-cnp; forwarding-class rdma-data scheduler sched-rdma-data; } } options { hierarchical-scheduler-disable; } schedulers { sched-nc { transmit-rate percent 1; priority medium-high; } sched-other { priority low; } sched-rdma-cnp { transmit-rate percent 1; priority high; } sched-rdma-data { transmit-rate percent 97; buffer-size temporal 400; priority medium-high; drop-profile-map loss-priority any protocol any drop-profile dp-ecn; explicit-congestion-notification; ecn-enhanced { head-marking; } } }
これらのコンフィグレットを作成するには:
- Design -> コンフィグレット -> Create Configletに移動し、[Create Configlet]をクリックします。
- コンフィグレットの名前を入力し、オペレーティングシステム、ベンダー、設定モードを選択し、以下に示すように上記の設定スニペットをテンプレートテキストボックスに貼り付けます。
図87:ApstraでのDCQCNコンフィグレットの作成
