Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

サードパーティ製アプリケーションの管理

インターセプトライブラリの使用

Junos OS EvolvedはネイティブLinux上で実行されるため、サードパーティ製アプリケーションを実行することができます。Linuxがインターフェイスやルートデータなどの要求されたネットワークトポロジー情報を表示する方法と、Junos OSがこの情報を表示する方法にはいくつかの違いがあります。CLI は、このような違いを克服するように設計されています。ただし、通常、ネイティブLinuxで実行されているサードパーティアプリケーションは、シェルコマンドを使用してネイティブLinuxソースから直接この情報を取得します。

Junos OS Evolvedは、ネットワークトポロジー情報に対するシェルリクエストを、Junos OSから情報を取得できるスペースにリダイレクトするインターセプトメカニズムを使用します。このインターセプト・メカニズムは、インターセプト・ライブラリー と libnli.soによって実現され、libsi.soプリロードします。インターセプトライブラリをプリロードすると、特定のタイプのリクエストがインターセプトされ、Junos OS情報が表示されます。

インターセプトライブラリはオプションです。これらは、 アプリケーションが表 1 に記載されている API を必要とする場合にのみ必要です。

表 1: インターセプトライブラリを必要とする API

Api

説明

パケット IO および Linux ソケット API

管理インターフェイスおよび/またはデータインターフェイスを介してパケットを送受信する機能。送信、受信、リッスンなどの標準libc。

RTネットリンク

rtnetlinkを使用して、インターフェイス、ルートなどのネットワーク状態を照会する機能。

ネットデバイス

ネットワークデバイスを構成する機能。

Proc

Linuxカーネルが提供する標準インターフェイスを使用してカーネルデータ構造を照会する機能。

Junos API

Juniper North Bound API - NetConf/JET/テレメトリにアクセスできます。

メモ:

ジュニパーのノースバウンド API の詳細については、以下を参照してください。

メモ:

Junos OS Evolvedリリース20.1R1は、以下の機能をサポートしています。

  • set system netlink-async-mode構成を使用して、NETLINK_ROUTE非同期通知を有効にします。この機能はデフォルトでは無効になっています。現在のネットリンク非同期モードを表示するために使用しますshow nsld mode

  • SIOCETHTOOL IOCTL は、他のアプリケーションで使用できます。

  • netlinkルート属性を介したマルチパスのネクストホップルート情報。

プリロードされた Linux コマンドの例

preloadディレクティブの動作例を以下に示します インターフェイスを表示するコマンド ifconfigを使用します。

コマンドを ifconfig インターセプトライブラリでプリロードすると、Junos OSインターフェイス情報が返されます。インターセプトライブラリは論理インターフェイスのみを変換することに注意してください。この例では、lo0 と re0:mgmt-0.0 にのみ論理インターフェイスが存在するため、出力にはプリロード ifconfig されたコマンドのこれら 2 つのインターフェイスのみが表示されます。

Junos OS Evolvedに付属のシェルで、デフォルトで と libsi.so をプリロードlibnli.soするjbashを実行しても同じ結果が得られます。

注意:

jbashはネットワーク状態情報の取得にのみ使用してください。jbashをデフォルトのシェルとして使用しないでください。

インターセプト・ライブラリーをプリロードせずにコマンドを発行した場合、表示される出力は Linux からのものです。なお、以下の出力はJunos OSの出力よりも長いです。Linuxでは、Junos CLIのように物理インターフェイスと論理インターフェイスを区別しません。

インターフェイス名の変換

このインターセプト メカニズムを使用する際の制限要因の 1 つは、Linux インターフェイスの命名規則が Junos OS のインターフェース命名規則と互換性がないことです。Linux は 15 バイトのインターフェース名 (15 + ヌル文字) をサポートしている。この制限を超えるネットワークインターフェイス名は、出力で切り捨てられます。Junos OS の論理インターフェイス名は、例えば、 et-0/0/10:2.3276715 バイトより長くすることができます。

この違いを回避するために、Junos OS Evolvedは変換ルール(表2を参照)を使用して、論理インターフェイス名をLinux準拠の形式でレンダリングします。翻訳では、 のようなnn-ffpttccssss形式name-fpcSlot/picSlot/port:channelId.subUnitがレンダリングされます。サードパーティ製アプリケーションは、このルールに従って変換されたインターフェイス名を使用して、Junos OSからトポロジー情報を効果的に取得することができます。

論理インターフェイス名の変換のみサポートされ、チャネル化された論理インターフェイス名と非チャネル化された論理インターフェイス名の両方の変換がサポートされています。

表 2: インターフェイス名の変換ルール

説明

割り当てられた領域 (バイト単位)

範囲

Nn

マップ名バイト

2

Ff

FPC (16 進数)

2

0-255

P

16 進数のpic

1

0-15

Tt

16 進数のポート番号

2

0-255

Cc

16進数のチャネル。存在しない場合は "xx" を使用します

2

0-255

ティッカー

16 進数のサブユニット

4

0-65535

管理インターフェイスを除き、論理インターフェイス名にハイフン(-)が含まれていない場合、名前のドット(.)はアンダースコア(_)に変更されます。 は に変換されますifdname_subunitifdname.subunit

管理インターフェイスの場合、 は に変換mgmt-x-yy-zzzzされます。ここで、x、yy、 reX:mgmt-Y.Z zzzzは、固定長を表す0が16進数で埋め込まれています。そして、逆翻訳は同じ行で行われます。

Junos 論理インターフェイス名とその Linux 準拠形式の例については、 表 3 を参照してください。

表 3: 変換された論理インターフェイス名の例

Junos 論理インターフェイス名

翻訳されたLinux準拠インターフェイス名

et-1/2/3.4

et-01203xx0004

ge-1/2/3.32

GE-01203xx0020

et-1/15/3.4

et-01f03xx0004

et-1/2/255:6.7

et-012ff060007

et-1/2/4:5.32767

et-01204057FFF

re0:mgmt-1.2

管理 - 0 - 01 - 0002

ae0.1

ae0_1

IRB0.11

irb0_11

プリロード libnli.soして Junos OS の状態にアクセスする場合、出力のインターフェイス名は翻訳された Linux 準拠のインターフェイス名として表示されます。また、変換された Linux 準拠のインターフェイス名をコマンドの引数として使用する必要もあります。次の例では、変換された et-01000000000 インターフェイス名を引数として使用します。

インターセプト機能に関する注意事項

このインターセプト機能は、読み取り専用の要求をサポートします。書き込み要求はエラーを返します。

特定のJunosネットワーク状態の表現は、Linuxの同等のものにマップできない場合があります。このような場合、データは省略されるか、同等の Linux モデルに再マップされます。例えば、Junos OS Evolvedは、ネイティブLinuxに匹敵する実装を持たない や unilist といったネクストホップタイプのcomposite豊富なスイートをサポートしています。

静的にリンクされているサードパーティ製アプリケーションは傍受できないため、この機能ではサポートされていません。

サードパーティアプリケーションの削除

サードパーティ製アプリケーションを削除するには、いくつかの方法があります。使用する方法は、アプリケーションのインストール方法に基づいています。

  • サードパーティ製アプリケーションが コマンドで request system software add インストールされた場合は、 コマンドを使用して同じアプリケーションを request system software delete 削除できます。

  • これらのアプリケーションを削除する最初の手順は、キーと request security system-keystore unlink key コマンドのリンクを解除することです。

    次に、シェル コマンドを使用してアプリケーション rm -f /path/to/binary1 /path/to/binary2 用にインストールしたバイナリをすべて削除します。

  • サードパーティ製アプリケーションが Docker コンテナを介してインストールされた場合は、次の Docker コマンドを使用してコンテナを削除します。