Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JSON からちょっといい感じのネットワーク図を描く

JSON からちょっといい感じのネットワーク図を描く

ネットワークの成長にあわせ,構成図を更新することはネットワーク運用の重要なタスクです.しかしながら 手動でやるせいで実際とズレてしまうケースは少なくありません.今回は JSON = ネットワーク構成情報 をもとに,ちょっといい感じに,しかも自動でネットワーク図を描く方法について紹介します.

必要なデータは「ノードA とノードB があります」「ノードA とノードB は繋がっ ています」程度の情報です.

Shintaro Kojima

June 26, 2016
Tweet

More Decks by Shintaro Kojima

Other Decks in Technology

Transcript

  1. ࠓ೔͸Ұา໨ { "nodes": [ { "name": "A" }, { "name":

    "B" }, ... ], "links": [ { "source": "A", "target": "B" }, ... ] } このくらいの
 ホント最低限の情報で ◦ これを描いてくれ 配置は適当に やっといて http://www.interop.jp/2016/shownet/highlight.html
  2. ੍໿ڌ఺ผʹϊʔυΛάϧʔϐϯά • どうやってグループ定義する? • ノード名から推定する
 (トライ中) • とりあえずの案 = 正規表現

    • ノード名のうち、拠点名部分を指定 • 命名規則はそう変わらない /^([^\s-]+)-/ POP01-bb01 ^^^^^
  3. ੍໿ϦϯΫڑ཭ • グループ = 拠点内でも、似たノード 間は短く • 似たノード ?
 =

    似たノード群に接続しているノード
 = 接続ノード集合 間の
 ジャッカード距離 が⼩さい
  4. δϟοΧʔυڑ཭ https://en.wikipedia.org/wiki/Jaccard_index 1 2 3 4 5 6 ྫ ᶃ

    ᶅͷڑ཭ ᶃ͸<ᶅ ᶆ>ʹɺ
 ᶅ͸<ᶃ ᶄ ᶆ ᶇ>ʹ
 ͭͳ͕͍ͬͯΔ ࿨ू߹<ᶃ ᶄ ᶅ ᶆ ᶇ>
 ੵू߹<ᶆ>  0.8 0.67 1 ू߹ؒͷۙ͞Λදݱ
  5. ࣮૷ͲͷϥΠϒϥϦʔ • graphviz • ⾔わずと知れた⽼舗ライブラリー • 制約を実装しづらい • d3.js (force

    layout / cola.ja) • 物理演算 • ノード間を伸縮する棒(リンク) でつなぐ • svg 出⼒ • cytoscape • d3.js の<canvas> 版 テキスト検索 できる
  6. 4IPX/FUͷ ωοτϫʔΫਤͰࢼ͢ • このあたりを
 JSON 化 • 定義するのは
 ノード +

    リンク
 のみ
 (メタデータは書く) http://www.interop.jp/2016/shownet/highlight.html
  7. codeout/inet-henge https://github.com/codeout/inet-henge デモ: https://inet-henge.herokuapp.com/ TODO • ライブラリーとして整理する • API は変わるかも…

    • パラメーターの いいデフォルト値 • ネットワークにより ばらつきがある • 遅い → 演算の最適化 • いろんなネットワーク図 で試す