Copyright©2017 NTT corp. All Rights Reserved.
OpenConfigを⽤いたネットワーク機器操作
⽇本電信電話株式会社
ソフトウェアイノベーションセンタ
市原 裕史
市原 裕史
•
所属
•
NTT SIC 第三推進プロジェクト
•
OpenStack Developer
•
Neutron Core Reviewer、その他プロジェクトへの貢献
•
技術: SDN/NFV中⼼
•
パブリッククラウドの開発
•
LinuxconでDPDKの性能の発表
•
Neutronへの機能提案
3
Copyright©2017 NTT corp. All Rights Reserved.
OpenConfigへのモチベーション
データセンター
この領域はベンダ
ロックインのない
抽象化されたAPI
が存在する
この領域はベンダ
ロックインのない抽
象化されたAPIがない
•
ネットワーク機器のAPIにベンダニュートラルなモデル
を提供することを⽬的としたワーキンググループ名
OpenConfig
オペレータ
オーケストレータ
⾃動スクリプト
…
Cisco
Juniper
Arista
???
…
共通モデル
5
Copyright©2017 NTT corp. All Rights Reserved.
•
共通モデルの作成
•
ベンダニュートラルなモデル
•
Telemetryの置き換え
•
SNMPよりもスケールし、拡張性が⾼い
•
共通のネットワーク管理インターフェースの作成
•
gRPC Network Management Interface(gNMI)
OpenConfig 取り組み
OpenConfig 現在定義済みのモデル
7
Copyright©2017 NTT corp. All Rights Reserved.
m o d u l e : o p e n c o n f i g - i n t e r f a c e s
+ - - r w i n t e r f a c e s
+ - - r w i n t e r f a c e * [n a m e ]
+ - - r w n a m e
- > . ./c o n f i g / n a m e
+ - - r w c o n f i g
| + - - r w t y p e
i d e n t i t y r e f
| + - - r w m t u ? u i n t 1 6
| + - - r w n a m e ? s t r i n g
| + - - r w d e s c r i p t i o n ? s t r i n g
| + - - r w e n a b l e d ? b o o l e a n
+ - - r o s t a t e
| + - - r o t y p e
i d e n t i t y r e f
| + - - r o m t u ? u i n t 1 6
| + - - r o n a m e ? s t r i n g
| + - - r o d e s c r i p t i o n ? s t r i n g
| + - - r o e n a b l e d ? b o o l e a n
| + - - r o i f i n d e x ? u i n t 3 2
| + - - r o a d m i n - s t a t u s
e n u m e r a t i o n
| + - - r o o p e r - s t a t u s
e n u m e r a t i o n
| + - - r o l a s t - c h a n g e ? y a n g : t i m e t i c k s
| + - - r o c o u n t e r s
| + - - r o i n - o c t e t s ? y a n g : c o u n t e r 6 4
| + - - r o i n - u n i c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o i n - b r o a d c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o i n - m u l t i c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o i n - d i s c a r d s ? y a n g : c o u n t e r 6 4
| + - - r o i n - e r r o r s ? y a n g : c o u n t e r 6 4
| + - - r o i n - u n k n o w n - p r o t o s ? y a n g : c o u n t e r 3 2
| + - - r o o u t - o c t e t s ? y a n g : c o u n t e r 6 4
| + - - r o o u t - u n i c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o o u t - b r o a d c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o o u t - m u l t i c a s t - p k t s ? y a n g : c o u n t e r 6 4
| + - - r o o u t - d i s c a r d s ? y a n g : c o u n t e r 6 4
| + - - r o o u t - e r r o r s ? y a n g : c o u n t e r 6 4
| + - - r o l a s t - c l e a r ? y a n g : d a t e - a n d - t i m e
+ - - r w h o l d - t i m e
| + - - r w c o n f i g
| | + - - r w u p ? u i n t 3 2
| | + - - r w d o w n ? u i n t 3 2
| + - - r o s t a t e
| + - - r o u p ? u i n t 3 2
| + - - r o d o w n ? u i n t 3 2
+ - - r w s u b i n t e r f a c e s
+ - - r w s u b i n t e r f a c e * [i n d e x ]
+ - - r w i n d e x
- > . ./c o n f i g / i n d e x
+ - - r w c o n f i g
| + - - r w i n d e x ? u i n t 3 2
| + - - r w n a m e ? s t r i n g
| + - - r w d e s c r i p t i o n ? s t r i n g
| + - - r w e n a b l e d ? b o o l e a n
+ - - r o s t a t e
+ - - r o i n d e x ? u i n t 3 2
+ - - r o n a m e ? s t r i n g
+ - - r o d e s c r i p t i o n ? s t r i n g
+ - - r o e n a b l e d ? b o o l e a n
+ - - r o i f i n d e x ? u i n t 3 2
+ - - r o a d m i n - s t a t u s
e n u m e r a t i o n
+ - - r o o p e r - s t a t u s
e n u m e r a t i o n
+ - - r o l a s t - c h a n g e ? y a n g : t i m e t i c k s
+ - - r o c o u n t e r s
+ - - r o i n - o c t e t s ? y a n g : c o u n t e r 6 4
+ - - r o i n - u n i c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o i n - b r o a d c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o i n - m u l t i c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o i n - d i s c a r d s ? y a n g : c o u n t e r 6 4
+ - - r o i n - e r r o r s ? y a n g : c o u n t e r 6 4
+ - - r o i n - u n k n o w n - p r o t o s ? y a n g : c o u n t e r 3 2
+ - - r o o u t - o c t e t s ? y a n g : c o u n t e r 6 4
+ - - r o o u t - u n i c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o o u t - b r o a d c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o o u t - m u l t i c a s t - p k t s ? y a n g : c o u n t e r 6 4
+ - - r o o u t - d i s c a r d s ? y a n g : c o u n t e r 6 4
+ - - r o o u t - e r r o r s ? y a n g : c o u n t e r 6 4
+ - - r o l a s t - c l e a r ? y a n g : d a t e - a n d - t i m e
OpenConfig モデル例 interfaces
出典: https://github.com/openconfig/public/blob/master/release/models/interfaces/openconfig-interfaces.yang
OpenConfigメンバー
9
Copyright©2017 NTT corp. All Rights Reserved.
•
vMX 17.2R1.13
•
iosxrv 9k demo 6.1.2
•
Ubuntu 16.04
デモ構成
ClientA
vMX1
(bgp 65101)
.10
10.10.0.0/24
.20
(bgp 65102)
XRv
10.1.1.100/24
20.1.1.200/24
20.1.1.1/24
10.1.1.1/24
ge-0/0/1
ge-0/0/0
GigabitEthernet0/0/0/0 GigabitEthernet0/0/0/1
vMX2
(bgp 65103)
11.11.0.0/24
.20
.10
ge-0/0/0
ge-0/0/1
ClientB
<config>
<interfaces xmlns="http://openconfig.net/yang /interfaces">
<interface>
<name>インターフェース名</name>
<config>
<type xmlns:idx="urn:ietf:params:xml:ns:yang:iana-if-type">idx:ethernetCsmacd</type>
<mtu>1400</mtu>
</config>
</interface>
</interfaces>
</config>
デモ①
vMXとXRvへMTU設定
vMX1
XRv
ge-0/0/0
11
Copyright©2017 NTT corp. All Rights Reserved.
インターフェース、BGP、Routing-policyを設定し、
ClientAとClientB間で疎通確認
デモ②
ClientA
vMX1
(bgp 65101)
.10
10.10.0.0/24
.20
(bgp 65102)
XRv
10.1.1.100/24
20.1.1.200/24
20.1.1.1/24
10.1.1.1/24
ge-0/0/1
ge-0/0/0
GigabitEthernet0/0/0/0 GigabitEthernet0/0/0/1
vMX2
(bgp 65103)
11.11.0.0/24
.20
.10
ge-0/0/0
ge-0/0/1
ClientB
< c o n f i g > < i n t e r f a c e s x m l n s = " h t t p : / / o p e n c o n f i g . n e t / y a n g / i n t e r f a c e s " >< i n t e r f a c e > < n a m e > g e - 0 / 0 / 0 < / n a m e > < s u b i n t e r f a c e s >< s u b i n t e r f a c e > < i n d e x > 0 < / i n d e x > < c o n f i g > < i n d e x > 0 < / i n d e x > < e n a b l e d > t r u e < / e n a b l e d > < / c o n f i g > < i p v 4 x m l n s = " h t t p : / / o p e n c o n f i g . n e t / y a n g / i n t e r f a c e s / i p " >< a d d r e s s e s > < a d d r e s s > < i p > 1 0 . 1 0 . 0 . 1 0 < / i p > < c o n f i g >< i p > 1 0 . 1 0 . 0 . 1 0 < / i p > < p r e f i x - l e n g t h > 2 4 < / p r e f i x - l e n g t h > < / c o n f i g > < / a d d r e s s > < / a d d r e s s e s > < / i p v 4 > < / s u b i n t e r f a c e > < / s u b i n t e r f a c e s > < / i n t e r f a c e > < i n t e r f a c e > < n a m e > g e - 0 / 0 / 1 < / n a m e > < s u b i n t e r f a c e s >< s u b i n t e r f a c e > < i n d e x > 0 < / i n d e x > < c o n f i g >< i n d e x > 0 < / i n d e x > < e n a b l e d > t r u e < / e n a b l e d > < / c o n f i g > < i p v 4 x m l n s = " h t t p : / / o p e n c o n f i g . n e t / y a n g / i n t e r f a c e s / i p " >< a d d r e s s e s > < a d d r e s s >< i p > 1 0 . 1 . 1 . 1 < / i p > < c o n f i g > < i p > 1 0 . 1 . 1 . 1 < / i p > < p r e f i x - l e n g t h > 2 4 < / p r e f i x - l e n g t h > < / c o n f i g > < / a d d r e s s > < / a d d r e s s e s > < / i p v 4 > < / s u b i n t e r f a c e > < / s u b i n t e r f a c e s > < / i n t e r f a c e > < / i n t e r f a c e s > < r o u t i n g - p o l i c y x m l n s = " h t t p : / / o p e n c o n f i g . n e t / y a n g / r o u t i n g - p o l i c y " >< p o l i c y - d e f i n i t i o n s > < p o l i c y - d e f i n i t i o n >< n a m e > b g p - i n < / n a m e > < s t a t e m e n t s > < s t a t e m e n t >< n a m e > b g p - i n < / n a m e > < a c t i o n s >< c o n f i g > < a c c e p t - r o u t e / > < / c o n f i g > < / a c t i o n s > < / s t a t e m e n t > < / s t a t e m e n t s > < / p o l i c y - d e f i n i t i o n > < p o l i c y - d e f i n i t i o n >< n a m e > b g p - o u t < / n a m e > < s t a t e m e n t s > < s t a t e m e n t >< n a m e > b g p - o u t < / n a m e > < a c t i o n s > < c o n f i g >< a c c e p t - r o u t e / > < / c o n f i g > < / a c t i o n s > < / s t a t e m e n t > < / s t a t e m e n t s > < / p o l i c y - d e f i n i t i o n > < / p o l i c y - d e f i n i t i o n s > < / r o u t i n g - p o l i c y > < b g p x m l n s = " h t t p : / / o p e n c o n f i g . n e t / y a n g / b g p " >< g l o b a l > < c o n f i g >< a s > 6 5 1 0 1 < / a s > < r o u t e r - i d > 1 0 . 1 0 . 0 . 1 0 < / r o u t e r - i d > < / c o n f i g > < a f i - s a f i s > < a f i - s a f i >< a f i - s a f i - n a m e x m l n s : i d x = " h t t p : / / o p e n c o n f i g . n e t / y a n g / b g p - t y p e s " > i d x : I P V 4 _ U N I C A S T < / a f i - s a f i - n a m e > < c o n f i g > < e n a b l e d > t r u e < / e n a b l e d > < / c o n f i g > < / a f i - s a f i > < / a f i - s a f i s > < / g l o b a l > < n e i g h b o r s > < n e i g h b o r >< n e i g h b o r - a d d r e s s > 1 0 . 1 0 . 0 . 2 0 < / n e i g h b o r - a d d r e s s > < c o n f i g > < p e e r - g r o u p > g r o u p 6 5 1 0 2 < / p e e r - g r o u p > < n e i g h b o r - a d d r e s s > 1 0 . 1 0 . 0 . 2 0 < / n e i g h b o r - a d d r e s s > < / c o n f i g > < a f i - s a f i s >< a f i - s a f i > < a f i - s a f i - n a m e x m l n s : i d x = " h t t p : / / o p e n c o n f i g . n e t / y a n g / b g p - t y p e s " > i d x : I P V 4 _ U N I C A S T < / a f i - s a f i - n a m e > < c o n f i g >< e n a b l e d > t r u e < / e n a b l e d > < / c o n f i g > < / a f i - s a f i > < / a f i - s a f i s > < a p p l y - p o l i c y >< c o n f i g > < i m p o r t - p o l i c y > b g p - i n < / i m p o r t - p o l i c y > < e x p o r t - p o l i c y > b g p - o u t < / e x p o r t - p o l i c y > < / c o n f i g > < / a p p l y - p o l i c y > < / n e i g h b o r > < / n e i g h b o r s > < p e e r - g r o u p s >< p e e r - g r o u p > < p e e r - g r o u p - n a m e > g r o u p 6 5 1 0 2 < / p e e r - g r o u p - n a m e > < c o n f i g >< p e e r - a s > 6 5 1 0 2 < / p e e r - a s > < / c o n f i g > < / p e e r - g r o u p > < / p e e r - g r o u p s > < / b g p > < / c o n f i g >