ブラウザ完結型のネットワーク可視化・シミュレーションツール。
NetXray は Intermediate Representation (IR) JSON を読み込み、トポロジをインタラクティブに可視化します。 パケットシミュレーション・ACL 解析・BGP セッション表示などをすべてブラウザ内で完結させ、実機への接続なしに静的解析が可能です。
IRファイル (JSON)
│
▼
┌─────────────┐ ┌──────────────────────┐
│ Frontend │◄────►│ WASM Engine (Rust) │
│ React + RF │ │ 経路計算 / ACL評価 │
└─────────────┘ └──────────────────────┘
▲
│ POST /api/collect
┌─────────────┐
│ Backend │ ← containerlab / FRR / Arista cEOS
│ FastAPI │
└─────────────┘NetXray/
├── schema/ # IR JSON Schema (Single Source of Truth)
├── frontend/ # Vite + React SPA
├── engine/ # Rust → WASM ロジックエンジン
├── backend/ # FastAPI (Collector + Translator + API)
└── .gitignore| バージョン | 主な追加内容 |
|---|---|
| v0.1.0 | ノード / インターフェース / リンク / ACL / VRF / ルーティングテーブル |
| v0.2.0 | BGP セッション (RFC 9234 Role) / SRv6 SID / EVPN-VXLAN VNI |
スキーマ定義: schema/netxray-ir.schema.json
cd frontend
npm install
npm run dev
# http://localhost:5173 を開く
# サンプルトポロジを読み込むか、IRファイルをドラッグ&ドロップcd backend
uv sync
uv run uvicorn api.main:app --reload --port 8000環境変数で接続先を設定:
export NETXRAY_CLAB_SSH_USER=admin
export NETXRAY_CLAB_SSH_PASSWORD=admin
export NETXRAY_DATA_DIR=/path/to/topologies詳細は backend/README.md を参照。
プロジェクトルートの Dockerfile を使用して、バックエンドとフロントエンドを統合したイメージをビルド・実行できます。
# イメージのビルド
docker build -t netxray:latest .
# コンテナの実行 (ポート 8000 を公開)
docker run -d -p 8000:8000 --name netxray netxray:latest
# http://localhost:8000 にアクセス- コンテナ内では FastAPI (backend) が 8000 ポートで動作し、ビルド済みのフロントエンド資産を静的ファイルとして配信します。
- 必要に応じて環境変数(
NETXRAY_CLAB_SSH_USER等)を-eオプションで渡してください。
- ReactFlow + elkjs による自動レイアウト(spine-leaf / ring / manual)
- ルーター / スイッチ / ホストのカスタムノード
- リンク状態(up/down)とインターフェース名ラベル
- インターフェース一覧・VRF ルーティングテーブル
- BGP セッション一覧(確立状態・AS 番号・RFC 9234 Role)
- SRv6 SID テーブル(Function / VRF)
- EVPN VNI 一覧(L2/L3 / RD / RT)
- ルール一覧の Permit/Deny 色分け
- シャドウされたルールの自動検出・ハイライト
- BGP セッションを物理リンクと独立したレイヤで描画
- Established(緑・アニメーション)/ 非確立(橙・破線)
- RFC 9234 Role ミスマッチの検出・UI ハイライト
- src / dst / プロトコル / ポートを指定してパス追跡
- エッジアニメーションでフロー方向を可視化
- 任意タイミングで IR 状態を保存(最大 20 件)
- スナップショット間の diff 表示(ノード増減・リンク状態変化)
| レイヤ | 技術 |
|---|---|
| Frontend | Vite 8 / React 19 / TypeScript 6 / Tailwind CSS 4 |
| グラフ | React Flow 12 / elkjs |
| 状態管理 | Zustand 5 |
| WASM エンジン | Rust / wasm-bindgen / petgraph |
| Backend | FastAPI / Pydantic v2 / Netmiko / uvicorn |
| IR スキーマ | JSON Schema (quicktype で TS 型生成) |