ネットワークの⾃動化と課題
Graph Database
Jun, 2020
3© Apstra 2018 Confidential and Proprietary
ネットワークの⾃動化
設定構築
監視
ライフサイクル
オートメーション
デザイン
4© Apstra 2018 Confidential and Proprietary
ネットワーク⾃動化の課題
設定 監視 設計・運用の人による判断
CLI Netconf RESTConf gRPC
JSON XML GPB
SSH HTTP/HTTPS
Encoding
Transport
Streaming
Telemetry
SNMP Syslog
JSON GPB
OpenConfig Vendor / Protocol Native
Encoding
Data Model
TLV
ベンダー毎に異なるフォーマット
機器毎に異なる対応プロトコル
最適なプロトコルの選択
ベンダー毎に異なるデータモデル
複数コレクターの準備
設計判断
設定可否
監視
設計・設定内容の判定は⼈が⾏う
監視内容を定義・設定するのも⼈
収集したデータ処理の扱いに苦慮
監視定義
データ
︖
⽤途
5© Apstra 2018 Confidential and Proprietary
設定変更の解決策
設定 監視
Streaming
Telemetry
SNMP Syslog
JSON GPB
OpenConfig Vendor / Protocol Native
Encoding
Data Model
TLV
インベントリ プレイブック
ベンダー
モジュール
設定変更はAnsible等のOSSで解決
設計・運用の人による判断
設計判断
設定可否
監視
監視定義
データ
︖
6© Apstra 2018 Confidential and Proprietary
設計・運用の人による判断
設計判断
設定可否
監視
監視定義
データ
︖
設定変更、監視データの解決策
設定 監視
CLI Netconf RESTConf gRPC
JSON XML GPB
SSH HTTP/HTTPS
Encoding
Transport
Streaming
Telemetry
SNMP Syslog
JSON GPB
OpenConfig Vendor / Protocol Native
Encoding
Data Model
TLV
オーケストレーターでまとめて解決
7© Apstra 2018 Confidential and Proprietary
設定変更、監視データの解決策
システム連携
オーケストレーター
監視サーバ
操作端末
Northbound
Southbound
ネットワーク機器
Web UIREST API
よしなに変換
8© Apstra 2018 Confidential and Proprietary
オーケストレーターの課題
監視サーバ
操作端末
Web UIREST API
システム連携
やりたことをインプット
物理・論理
IPアドレス
ルーティング設計
「意図」と「実態」を
⽐較・検証し変化や
障害を検知できない
コンフィグ作成 NW機器
NWの実態
Real-Time State
設計内容が正しいか判断できない
設定による影響を判断できない
⼿動の監視設定
トラフィック量など定期
的に取得するデータ☓
9© Apstra 2018 Confidential and Proprietary
オーケストレーターの課題を解決するには
ネットワークの全ての要素とステータスを
その関係を含め
⼀つのデータベースとして持つこと
Single Source of Truth
(以下、SSOT)
BUILD
DESIGN
OPERATE
DEPLOY
10© Apstra 2018 Confidential and Proprietary
SSOTのデータベースとは︖
(例)NW機器間の関連とステータス
スイッチA スイッチAのインタフェース2
スイッチB
スイッチBのインタフェース1
物理リンク
ステータスUP
ステータスUP
BGPネイバー
Establiashed
11© Apstra 2018 Confidential and Proprietary
△
✗
✗
✗
SSOT vs Non-SSOT
コンフィグ投⼊影響
NWデザインチェック
NWステータスの検証
監視項⽬の⾃動作成
例 SSOT Non-SSOT
IPアドレス重複
スピードミスマッチ
トポロジーと設定情報を保持
するためチェック可
アドレス重複は確認可
BGPルートマップ設定変更
対向機器のルーティングテー
ブルへの影響を確認可
機器間の設定内容やステータ
スが紐付いていないため検知
不可
新規サーバ接続ポートの監
視すべき項⽬
サーバがチーミングしている
ためLAGとポートステータス
のモニターを開始
サーバ接続するデザインとプ
ロトコルの関連がないため不
可
ルーティングテーブルのル
ートチェック
デザインから各機器で学習す
べきルートを知っている
デザインとステータスが関連
していないため判断不可
真のSSOTは、⼀部ではなくネットワーク全ての要素とステータスを関連付ける
12© Apstra 2018 Confidential and Proprietary
全て解決
監視
Streaming
Telemetry
SNMP Syslog
JSON GPB
OpenConfig Vendor / Protocol Native
Encoding
Data Model
TLV
SSOTを実装するオーケストレーターで全て解決︕
設計・運用の人による判断
設計判断
設定可否
監視
監視定義
データ
︖
設定
CLI Netconf RESTConf gRPC
JSON XML GPB
SSH HTTP/HTTPS
Encoding
Transport
13© Apstra 2018 Confidential and Proprietary
データベースに求められるもの
1.⾼速なクエリ処理
SSOTを持つデータベースはそのフィールドが膨⼤になる。
なので、データの抽出、追加、変更、削除を⾼速かつ容易に実⾏できなければならない。
(例)ユーザA(VLAN_A)が設定されている、全スイッチかつサーバポートのトラフィック量が知りたい。
-> 全スイッチで該当VLANが設定されているか判定、該当VLANがアサインされているポートを判定、
インタフェースがUPしているか判定。スイッチ台数 x ポート数 x 2 回のクエリ︖︖(最低でもスイッチ台数 x 2)
欲しいデータだけを⼀発で取得できる仕組みが必要
2.容易なスキーマ拡張
増えるレコードに対し、その“関係ʻʼを含め既存スキーマを拡張。
14© Apstra 2018 Confidential and Proprietary
Graph
グラフDBとはNoSQLの⼀つでグラフ構造を持つデータベース。
同じNoSQLのキーバリュー型やカラム指向型と⽐べ、複雑なトランザクションを⾼速に処理。
キーバリュー型やカラム指向型グラフ型
Bさん
年齢:35
住所:福岡
Cさん
年齢:48
住所:愛知
Dさん
年齢:40
住所:宮城
Eさん
年齢:34
住所:大阪
Aさん
年齢:25
住所:東京
友達
友達
友達
友達
- クエリ例 -
年齢30以下かつ東京在住者の友⼈の、福岡に住んでいる⼈かつその友⼈の、年齢40以上の⼈の住所が知りたい
Aさん 年齢:25 住所:東京
Bさん 年齢:35 住所:福岡
Cさん 年齢:48 住所:愛知
Dさん 年齢:40 住所:宮城
Eさん 年齢:34 住所:大阪
Key Value
Aさんの友⼈を全員チェック、かつBさんの友⼈も全員チェック⼀発の処理で完結︕
15© Apstra 2018 Confidential and Proprietary
Graph
グラフDBをネットワークで使うと、、、
キーバリュー型やカラム指向型グラフ型
インタフェース
タイプ:Ethernet
モード:Access
リンク
接続先:サーバ
スピード:10G
インタフェース
タイプ:IP
モード:N/A
リンク
接続先:ルータ
スピード:1G
システム
ホスト名:A
役割:Leaf 関係
関係
関係
- クエリ例 -
Leafスイッチの、EthernetかつVlan Accessモードで、接続先がサーバかつ10Gリンクの通信量が知りたい。
システム ホスト名:A 役割:Leaf
インタフェース タイプ:Ethernet モード:Access
インタフェース タイプ:IP モード:N/A
リンク 接続先:サーバ スピード:10G
リンク 接続先:ルータ スピード:1G
Key Value
スイッチの全インタフェースを繰返しチェック⼀発の処理で完結︕
関係
16© Apstra 2018 Confidential and Proprietary
Graph
そもそもグラフデータベースが使われるマーケットとは︖
Social graph FacebookやTwitterなど⼈間関係に関わるサイトやアプリ。
Consumption graph AmazonやeBayなど消費者の購買動向を必要とする⼩売業。
Interest graph ⼈の興味対象からSocial graphを補完するもの。
Mobile graph 位置情報やIoTデバイスから取得するモバイルデータ。
何れも要素間の関係を判断の基準としている。これってネットワークでも同じでは︖
ネットワークでもGraphは有効
17© Apstra 2018 Confidential and Proprietary
Graph
Single Source of Truth グラフデータベース
相性が抜群に良い
18© Apstra 2018 Confidential and Proprietary
Graph
label: spine1
role: spine
if_name: ethernet1
If_type: ip
ラベル
ラベル
プロパティ
key: value
...
key: value
...
グラフデータベースの要素。
リレーション
ノード
system
interface
hosted_interfaces
ノード
19© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
20© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
21© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
22© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
23© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
24© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
25© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
26© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
27© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
28© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
29© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク
30© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク スキーマ
31© Apstra 2018 Confidential and Proprietary
Graph IP CLOSネットワーク スキーマ 容易な拡張
32© Apstra 2018 Confidential and Proprietary
Graph Query
QueryEngine (Apstra)GraphQL (Facebook)
Inspired by
33© Apstra 2018 Confidential and Proprietary
Graph QE
Graphクエリエンジンの⽂法
node(ラベル, name=プロパティ全体のKey, プロパティのKey=プロパティのValue, プロパティのKey=プロパティのValue, , ,)
node
(例)
node(ʻsystemʼ, name=ʼsysʼ, system_type=ʻswitchʼ, role=ʻspineʼ)
34© Apstra 2018 Confidential and Proprietary
Graph QE
クエリの条件にマッチしたノードは2つ
ホスト名
シリアル番号
ノードのステータス
出⼒するプロパティは、そのシステムのスキーマに依る
固有のID
35© Apstra 2018 Confidential and Proprietary
Graph QE
複数ノードを紐付けたクエリ
(例)
node('system', name='sys', hostname='rack-004-leaf1')
.out().node('vn_instance', name='vni', vlan_id=4)
.out().node('virtual_network', 'vnn')
リレーション リレーション
36© Apstra 2018 Confidential and Proprietary
Graph QE
全てのノードで固有のIDを
持つと管理しやすい
欲しい情報をだけを⼀発のクエリで取得
37© Apstra 2018 Confidential and Proprietary
Graph QE
クエリの⽂法例
OR条件 node('system', name='device', role=is_in(['leaf', 'spineʼ]))
Not条件 node('system', name='system', role=ne('spine'))
Not条件(複数) node('system', name='system', role=not_in(['leaf', 'spineʼ]))
値がある場合 node('interface', name='interface', ipv4_addr=not_none()
値がない場合 node('interface', name='interface', ipv4_addr=is_none()
Greater-than node('vn_instance', name='vlan', vlan_id=gt(200))
Greater-than or Equal to node('vn_instance', name='vlan', vlan_id=ge(200))
Less-than node('vn_instance', name='vlan', vlan_id=lt(200))
Less-than or Equal to node('vn_instance', name='vlan', vlan_id=le(200))
リレーションの先にいる同じラベルのノードをまとめて出⼒(例︓system - interface - link – interface - system)
node('system', name='system')
.out().node('interface', name='if1').out().node('link')
.in_().node('interface', name='if2').in_().node('system', name='remote_systemʼ)
複数のパスをまとめてクエリ
match(
node('system', name=ʻsys', hostname='leaf1').out().node('interface', name='interface').out().node('linkʼ),
node('system', name='sys', hostname='leaf1').out().node('vn_instance', name='vni').out().node('virtual_networkʼ, name='vnʼ))
38© Apstra 2018 Confidential and Proprietary
Graph Query Validation & Serialization
クエリ内容の⽂法チェック。
・必須プロパティのチェック
・プロパティの書式ミス
・データ型の強制変換
https://lollipop.readthedocs.io/en/latest/
Lollipop
Marshmallow
https://marshmallow.readthedocs.io/en/latest/
Lollipop
node('system', name='sys', hostname='rack-004-leaf1')
.out().node('vn_instance', name='vni', vlan_id=4)
.out().node('virtual_network', 'vnn')
Int型か︖
ラベルが含まれているか︖
39© Apstra 2018 Confidential and Proprietary
Graph スキーマ
グラフのノード、プロパティ、そのリレーションはスキーマに依存
40© Apstra 2018 Confidential and Proprietary
⾃動化するとは⾔え従来の運⽤を変えたくない場合もある、、、
パラメータシートの作成、コンフィグの定期バックアップなど。
Graph 既存運⽤への応⽤
Rest Query Reply
・スイッチのコンフィグを世代毎に
ファイルサーバで保管。
・設定反映前のコンフィグ差分を
外部サーバで世代管理
・IPアドレス管理シート
・パラメータシート
・オーケストレータで管理している
情報は何でも取得可。
オーケストレーター
ソースコードにGraphのクエリを埋め込むと欲しい情報を⼀発でゲット
41© Apstra 2018 Confidential and Proprietary
まとめ – ネットワーク⾃動化
監視サーバ
操作端末
Web UIREST API
システム連携
やりたことをインプット
物理・論理
IPアドレス
ルーティング設計
「意図」と「実態」を
⽐較・検証し
変化や障害を検知
コンフィグ⾃動作成 NW機器
NWの実態
Real-Time State
設計内容が正しいか判断
設定による影響を判断
デザインに沿った監視内容
の結果を報告
グラフデータベース
SSOT
トラフィック量など定期
的に取得するデータ
障害検知
42© Apstra 2018 Confidential and Proprietary
Intent Based Networking
やりたことをインプット
物理・論理
IPアドレス
ルーティング設計
「意図」と「実態」を
⽐較・検証し
変化や障害を検知
コンフィグ⾃動作成 NW機器
NWの実態
Real-Time State
設計内容が正しいか判断
設定による影響を判断
デザインに沿った監視を定義
その結果を報告
グラフデータベース
SSOT
トラフィック量など定期
的に取得するデータ障害検知
Intent =
Intent Based Networking = ↓を実現する仕組み
43© Apstra 2018 Confidential and Proprietary
Intent Based Networking
https://tools.ietf.org/html/draft-clemm-nmrg-dist-intent-02
44© Apstra 2018 Confidential and Proprietary
障害原因の⾃動通知
RCI・RCT
コンフィギュレーション
RCI
エージェント
RCI
ログ
ネットワーク
Telemetry
ネットワーク
コンフィギュレーション
SSOT
ネットワーク
ナレッジベース
RCI
Fault モデル
コンパイラ
Telemetry
コンフィギュレーション
• ネットワークナレッジとネットワークコンフィグ(Graph DB)からRCI・RCTとTelemetryコンフィグを⾃動⽣成。
• RCIはリアルタイムにRCTに対するTelemetryのステータスをチェック。
• 不整合が起きると問題の原因を出⼒。
ネットワーク毎の膨⼤なルール作成や不明瞭なAI/MLから開放される
RCI (Root Cause Identification)
RCT (Root Cause Table)
45© Apstra 2018 Confidential and Proprietary
クラウドラボ
クラウドラボを使いAOSを体験できます。
- 各個⼈に1つの環境を提供。
- 期間は2週間、しかも延⻑可。
- ライセンス不要。完全無償。
- ⼿順書も充実し不明点はサポートあり。
- クラウドラボを⽤いた勉強会も開催可。
とりあえずAOSを使ってみたい︕
という⽅はこちらまで連絡下さい。
japan@apstra.com
46© Apstra 2018 Confidential and Proprietary
Useful Link
Apstra⽇本語サイト
https://apstra.com/ja/japan/
AOSデモ動画(⽇本語)
https://www.youtube.com/watch?v=98kznwlevDU
Intent-Based Networking(英語)
https://apstra.com/intent-based-networking-taxonomy/
https://www.youtube.com/watch?v=Xe74fnxVqjY&t=65s
https://www.youtube.com/watch?v=gJH8NxZDHG0
Apstra Blog(英語)
https://apstra.com/blog/
Thank You!
www.apstra.com
@ApstraInc
https://www.linkedin.com/company/apstra
https://www.facebook.com/apstrainc/

ネットワーク自動化の課題 - グラフデータベースによる解決

  • 1.
  • 2.
    3© Apstra 2018Confidential and Proprietary ネットワークの⾃動化 設定構築 監視 ライフサイクル オートメーション デザイン
  • 3.
    4© Apstra 2018Confidential and Proprietary ネットワーク⾃動化の課題 設定 監視 設計・運用の人による判断 CLI Netconf RESTConf gRPC JSON XML GPB SSH HTTP/HTTPS Encoding Transport Streaming Telemetry SNMP Syslog JSON GPB OpenConfig Vendor / Protocol Native Encoding Data Model TLV ベンダー毎に異なるフォーマット 機器毎に異なる対応プロトコル 最適なプロトコルの選択 ベンダー毎に異なるデータモデル 複数コレクターの準備 設計判断 設定可否 監視 設計・設定内容の判定は⼈が⾏う 監視内容を定義・設定するのも⼈ 収集したデータ処理の扱いに苦慮 監視定義 データ ︖ ⽤途
  • 4.
    5© Apstra 2018Confidential and Proprietary 設定変更の解決策 設定 監視 Streaming Telemetry SNMP Syslog JSON GPB OpenConfig Vendor / Protocol Native Encoding Data Model TLV インベントリ プレイブック ベンダー モジュール 設定変更はAnsible等のOSSで解決 設計・運用の人による判断 設計判断 設定可否 監視 監視定義 データ ︖
  • 5.
    6© Apstra 2018Confidential and Proprietary 設計・運用の人による判断 設計判断 設定可否 監視 監視定義 データ ︖ 設定変更、監視データの解決策 設定 監視 CLI Netconf RESTConf gRPC JSON XML GPB SSH HTTP/HTTPS Encoding Transport Streaming Telemetry SNMP Syslog JSON GPB OpenConfig Vendor / Protocol Native Encoding Data Model TLV オーケストレーターでまとめて解決
  • 6.
    7© Apstra 2018Confidential and Proprietary 設定変更、監視データの解決策 システム連携 オーケストレーター 監視サーバ 操作端末 Northbound Southbound ネットワーク機器 Web UIREST API よしなに変換
  • 7.
    8© Apstra 2018Confidential and Proprietary オーケストレーターの課題 監視サーバ 操作端末 Web UIREST API システム連携 やりたことをインプット 物理・論理 IPアドレス ルーティング設計 「意図」と「実態」を ⽐較・検証し変化や 障害を検知できない コンフィグ作成 NW機器 NWの実態 Real-Time State 設計内容が正しいか判断できない 設定による影響を判断できない ⼿動の監視設定 トラフィック量など定期 的に取得するデータ☓
  • 8.
    9© Apstra 2018Confidential and Proprietary オーケストレーターの課題を解決するには ネットワークの全ての要素とステータスを その関係を含め ⼀つのデータベースとして持つこと Single Source of Truth (以下、SSOT) BUILD DESIGN OPERATE DEPLOY
  • 9.
    10© Apstra 2018Confidential and Proprietary SSOTのデータベースとは︖ (例)NW機器間の関連とステータス スイッチA スイッチAのインタフェース2 スイッチB スイッチBのインタフェース1 物理リンク ステータスUP ステータスUP BGPネイバー Establiashed
  • 10.
    11© Apstra 2018Confidential and Proprietary △ ✗ ✗ ✗ SSOT vs Non-SSOT コンフィグ投⼊影響 NWデザインチェック NWステータスの検証 監視項⽬の⾃動作成 例 SSOT Non-SSOT IPアドレス重複 スピードミスマッチ トポロジーと設定情報を保持 するためチェック可 アドレス重複は確認可 BGPルートマップ設定変更 対向機器のルーティングテー ブルへの影響を確認可 機器間の設定内容やステータ スが紐付いていないため検知 不可 新規サーバ接続ポートの監 視すべき項⽬ サーバがチーミングしている ためLAGとポートステータス のモニターを開始 サーバ接続するデザインとプ ロトコルの関連がないため不 可 ルーティングテーブルのル ートチェック デザインから各機器で学習す べきルートを知っている デザインとステータスが関連 していないため判断不可 真のSSOTは、⼀部ではなくネットワーク全ての要素とステータスを関連付ける
  • 11.
    12© Apstra 2018Confidential and Proprietary 全て解決 監視 Streaming Telemetry SNMP Syslog JSON GPB OpenConfig Vendor / Protocol Native Encoding Data Model TLV SSOTを実装するオーケストレーターで全て解決︕ 設計・運用の人による判断 設計判断 設定可否 監視 監視定義 データ ︖ 設定 CLI Netconf RESTConf gRPC JSON XML GPB SSH HTTP/HTTPS Encoding Transport
  • 12.
    13© Apstra 2018Confidential and Proprietary データベースに求められるもの 1.⾼速なクエリ処理 SSOTを持つデータベースはそのフィールドが膨⼤になる。 なので、データの抽出、追加、変更、削除を⾼速かつ容易に実⾏できなければならない。 (例)ユーザA(VLAN_A)が設定されている、全スイッチかつサーバポートのトラフィック量が知りたい。 -> 全スイッチで該当VLANが設定されているか判定、該当VLANがアサインされているポートを判定、 インタフェースがUPしているか判定。スイッチ台数 x ポート数 x 2 回のクエリ︖︖(最低でもスイッチ台数 x 2) 欲しいデータだけを⼀発で取得できる仕組みが必要 2.容易なスキーマ拡張 増えるレコードに対し、その“関係ʻʼを含め既存スキーマを拡張。
  • 13.
    14© Apstra 2018Confidential and Proprietary Graph グラフDBとはNoSQLの⼀つでグラフ構造を持つデータベース。 同じNoSQLのキーバリュー型やカラム指向型と⽐べ、複雑なトランザクションを⾼速に処理。 キーバリュー型やカラム指向型グラフ型 Bさん 年齢:35 住所:福岡 Cさん 年齢:48 住所:愛知 Dさん 年齢:40 住所:宮城 Eさん 年齢:34 住所:大阪 Aさん 年齢:25 住所:東京 友達 友達 友達 友達 - クエリ例 - 年齢30以下かつ東京在住者の友⼈の、福岡に住んでいる⼈かつその友⼈の、年齢40以上の⼈の住所が知りたい Aさん 年齢:25 住所:東京 Bさん 年齢:35 住所:福岡 Cさん 年齢:48 住所:愛知 Dさん 年齢:40 住所:宮城 Eさん 年齢:34 住所:大阪 Key Value Aさんの友⼈を全員チェック、かつBさんの友⼈も全員チェック⼀発の処理で完結︕
  • 14.
    15© Apstra 2018Confidential and Proprietary Graph グラフDBをネットワークで使うと、、、 キーバリュー型やカラム指向型グラフ型 インタフェース タイプ:Ethernet モード:Access リンク 接続先:サーバ スピード:10G インタフェース タイプ:IP モード:N/A リンク 接続先:ルータ スピード:1G システム ホスト名:A 役割:Leaf 関係 関係 関係 - クエリ例 - Leafスイッチの、EthernetかつVlan Accessモードで、接続先がサーバかつ10Gリンクの通信量が知りたい。 システム ホスト名:A 役割:Leaf インタフェース タイプ:Ethernet モード:Access インタフェース タイプ:IP モード:N/A リンク 接続先:サーバ スピード:10G リンク 接続先:ルータ スピード:1G Key Value スイッチの全インタフェースを繰返しチェック⼀発の処理で完結︕ 関係
  • 15.
    16© Apstra 2018Confidential and Proprietary Graph そもそもグラフデータベースが使われるマーケットとは︖ Social graph FacebookやTwitterなど⼈間関係に関わるサイトやアプリ。 Consumption graph AmazonやeBayなど消費者の購買動向を必要とする⼩売業。 Interest graph ⼈の興味対象からSocial graphを補完するもの。 Mobile graph 位置情報やIoTデバイスから取得するモバイルデータ。 何れも要素間の関係を判断の基準としている。これってネットワークでも同じでは︖ ネットワークでもGraphは有効
  • 16.
    17© Apstra 2018Confidential and Proprietary Graph Single Source of Truth グラフデータベース 相性が抜群に良い
  • 17.
    18© Apstra 2018Confidential and Proprietary Graph label: spine1 role: spine if_name: ethernet1 If_type: ip ラベル ラベル プロパティ key: value ... key: value ... グラフデータベースの要素。 リレーション ノード system interface hosted_interfaces ノード
  • 18.
    19© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 19.
    20© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 20.
    21© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 21.
    22© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 22.
    23© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 23.
    24© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 24.
    25© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 25.
    26© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 26.
    27© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 27.
    28© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 28.
    29© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク
  • 29.
    30© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク スキーマ
  • 30.
    31© Apstra 2018Confidential and Proprietary Graph IP CLOSネットワーク スキーマ 容易な拡張
  • 31.
    32© Apstra 2018Confidential and Proprietary Graph Query QueryEngine (Apstra)GraphQL (Facebook) Inspired by
  • 32.
    33© Apstra 2018Confidential and Proprietary Graph QE Graphクエリエンジンの⽂法 node(ラベル, name=プロパティ全体のKey, プロパティのKey=プロパティのValue, プロパティのKey=プロパティのValue, , ,) node (例) node(ʻsystemʼ, name=ʼsysʼ, system_type=ʻswitchʼ, role=ʻspineʼ)
  • 33.
    34© Apstra 2018Confidential and Proprietary Graph QE クエリの条件にマッチしたノードは2つ ホスト名 シリアル番号 ノードのステータス 出⼒するプロパティは、そのシステムのスキーマに依る 固有のID
  • 34.
    35© Apstra 2018Confidential and Proprietary Graph QE 複数ノードを紐付けたクエリ (例) node('system', name='sys', hostname='rack-004-leaf1') .out().node('vn_instance', name='vni', vlan_id=4) .out().node('virtual_network', 'vnn') リレーション リレーション
  • 35.
    36© Apstra 2018Confidential and Proprietary Graph QE 全てのノードで固有のIDを 持つと管理しやすい 欲しい情報をだけを⼀発のクエリで取得
  • 36.
    37© Apstra 2018Confidential and Proprietary Graph QE クエリの⽂法例 OR条件 node('system', name='device', role=is_in(['leaf', 'spineʼ])) Not条件 node('system', name='system', role=ne('spine')) Not条件(複数) node('system', name='system', role=not_in(['leaf', 'spineʼ])) 値がある場合 node('interface', name='interface', ipv4_addr=not_none() 値がない場合 node('interface', name='interface', ipv4_addr=is_none() Greater-than node('vn_instance', name='vlan', vlan_id=gt(200)) Greater-than or Equal to node('vn_instance', name='vlan', vlan_id=ge(200)) Less-than node('vn_instance', name='vlan', vlan_id=lt(200)) Less-than or Equal to node('vn_instance', name='vlan', vlan_id=le(200)) リレーションの先にいる同じラベルのノードをまとめて出⼒(例︓system - interface - link – interface - system) node('system', name='system') .out().node('interface', name='if1').out().node('link') .in_().node('interface', name='if2').in_().node('system', name='remote_systemʼ) 複数のパスをまとめてクエリ match( node('system', name=ʻsys', hostname='leaf1').out().node('interface', name='interface').out().node('linkʼ), node('system', name='sys', hostname='leaf1').out().node('vn_instance', name='vni').out().node('virtual_networkʼ, name='vnʼ))
  • 37.
    38© Apstra 2018Confidential and Proprietary Graph Query Validation & Serialization クエリ内容の⽂法チェック。 ・必須プロパティのチェック ・プロパティの書式ミス ・データ型の強制変換 https://lollipop.readthedocs.io/en/latest/ Lollipop Marshmallow https://marshmallow.readthedocs.io/en/latest/ Lollipop node('system', name='sys', hostname='rack-004-leaf1') .out().node('vn_instance', name='vni', vlan_id=4) .out().node('virtual_network', 'vnn') Int型か︖ ラベルが含まれているか︖
  • 38.
    39© Apstra 2018Confidential and Proprietary Graph スキーマ グラフのノード、プロパティ、そのリレーションはスキーマに依存
  • 39.
    40© Apstra 2018Confidential and Proprietary ⾃動化するとは⾔え従来の運⽤を変えたくない場合もある、、、 パラメータシートの作成、コンフィグの定期バックアップなど。 Graph 既存運⽤への応⽤ Rest Query Reply ・スイッチのコンフィグを世代毎に ファイルサーバで保管。 ・設定反映前のコンフィグ差分を 外部サーバで世代管理 ・IPアドレス管理シート ・パラメータシート ・オーケストレータで管理している 情報は何でも取得可。 オーケストレーター ソースコードにGraphのクエリを埋め込むと欲しい情報を⼀発でゲット
  • 40.
    41© Apstra 2018Confidential and Proprietary まとめ – ネットワーク⾃動化 監視サーバ 操作端末 Web UIREST API システム連携 やりたことをインプット 物理・論理 IPアドレス ルーティング設計 「意図」と「実態」を ⽐較・検証し 変化や障害を検知 コンフィグ⾃動作成 NW機器 NWの実態 Real-Time State 設計内容が正しいか判断 設定による影響を判断 デザインに沿った監視内容 の結果を報告 グラフデータベース SSOT トラフィック量など定期 的に取得するデータ 障害検知
  • 41.
    42© Apstra 2018Confidential and Proprietary Intent Based Networking やりたことをインプット 物理・論理 IPアドレス ルーティング設計 「意図」と「実態」を ⽐較・検証し 変化や障害を検知 コンフィグ⾃動作成 NW機器 NWの実態 Real-Time State 設計内容が正しいか判断 設定による影響を判断 デザインに沿った監視を定義 その結果を報告 グラフデータベース SSOT トラフィック量など定期 的に取得するデータ障害検知 Intent = Intent Based Networking = ↓を実現する仕組み
  • 42.
    43© Apstra 2018Confidential and Proprietary Intent Based Networking https://tools.ietf.org/html/draft-clemm-nmrg-dist-intent-02
  • 43.
    44© Apstra 2018Confidential and Proprietary 障害原因の⾃動通知 RCI・RCT コンフィギュレーション RCI エージェント RCI ログ ネットワーク Telemetry ネットワーク コンフィギュレーション SSOT ネットワーク ナレッジベース RCI Fault モデル コンパイラ Telemetry コンフィギュレーション • ネットワークナレッジとネットワークコンフィグ(Graph DB)からRCI・RCTとTelemetryコンフィグを⾃動⽣成。 • RCIはリアルタイムにRCTに対するTelemetryのステータスをチェック。 • 不整合が起きると問題の原因を出⼒。 ネットワーク毎の膨⼤なルール作成や不明瞭なAI/MLから開放される RCI (Root Cause Identification) RCT (Root Cause Table)
  • 44.
    45© Apstra 2018Confidential and Proprietary クラウドラボ クラウドラボを使いAOSを体験できます。 - 各個⼈に1つの環境を提供。 - 期間は2週間、しかも延⻑可。 - ライセンス不要。完全無償。 - ⼿順書も充実し不明点はサポートあり。 - クラウドラボを⽤いた勉強会も開催可。 とりあえずAOSを使ってみたい︕ という⽅はこちらまで連絡下さい。 japan@apstra.com
  • 45.
    46© Apstra 2018Confidential and Proprietary Useful Link Apstra⽇本語サイト https://apstra.com/ja/japan/ AOSデモ動画(⽇本語) https://www.youtube.com/watch?v=98kznwlevDU Intent-Based Networking(英語) https://apstra.com/intent-based-networking-taxonomy/ https://www.youtube.com/watch?v=Xe74fnxVqjY&t=65s https://www.youtube.com/watch?v=gJH8NxZDHG0 Apstra Blog(英語) https://apstra.com/blog/
  • 46.