どのように動作するか?¶
入力を送信して出力を受け取る — これが多くのネットワークオペレーティングシステムとの対話方法です。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()呼び出しにバッチ処理し、netmikosend_command()での断続的な空出力を防止します。 - CRLF ハンドリング: SSH と Telnet の両サーバーが改行コード(CR、LF、CR+LF)を正規化し、プラットフォーム間で一貫した動作を保証します。
- スレッドセーフ I/O:
TapIOブリッジが条件変数によるウェイクアップ付きブロッキングreadline()を提供し、サーバーとシェル層間のポーリングベース I/O を置き換えます。