コンテンツにスキップ

どのように動作するか?

入力を送信して出力を受け取る — これが多くのネットワークオペレーティングシステムとの対話方法です。SIMNOS は特定の入力コマンドに対して返す出力を事前定義でき、機能の個別テストに最適です。

SIMNOS は、Cisco IOS、Alcatel AOS、Huawei SmartAX など多くのネットワークオペレーティングシステムを既に備えたマイクロカーネルフレームワークであり、プラグインを使って拡張できます。コアは小さく最適化されており、機能の大部分はプラグインに委譲されています。

Info

現在利用可能なすべてのプラットフォームを確認するには、こちらをご覧ください。

Note

以下のセクションは将来移動される予定です。

現在、SIMNOS には以下のプラグイン方式があります:

  • NOS プラグイン: ネットワークオペレーティングシステムのコマンドをシミュレートするプラグインです。コマンドとそのレスポンスが保持される場所です。
  • サーバープラグイン: 接続先の各種サーバーを実行するプラグインです。SSH(paramiko 経由)と Telnet をサポートしています。
  • シェルプラグイン: コマンドラインインターフェースのシェルをシミュレートするプラグインです。コマンドの解析と処理を行います。サーバーと NOS の間のミドルウェアです。
sequenceDiagram
クライアント->>サーバー: "show clock"
サーバー->>シェル: "show clock" を取得
シェル->>NOS: "show clock" を取得
NOS->>シェル: "show clock" のレスポンス
シェル->>サーバー: "show clock" のレスポンス
サーバー->>クライアント: "14:38:11.292 PST Tue Feb 10 2009"

技術的な改善 (v2.1.x)

  • エコーコアレッシング: サーバープラグインがエコー文字とシェルレスポンスを単一の sendall() 呼び出しにバッチ処理し、netmiko send_command() での断続的な空出力を防止します。
  • CRLF ハンドリング: SSH と Telnet の両サーバーが改行コード(CR、LF、CR+LF)を正規化し、プラットフォーム間で一貫した動作を保証します。
  • スレッドセーフ I/O: TapIO ブリッジが条件変数によるウェイクアップ付きブロッキング readline() を提供し、サーバーとシェル層間のポーリングベース I/O を置き換えます。