zebra 2.0 in hybrid cloud era
TRANSCRIPT
Zebra 2.0 in Hybrid Cloud Erarequirements for network nodes
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 1
Okinawa Open Lab ~ Forum 2018/01/[email protected]
Hybrid Cloud時代(仮)にネットワーク・ノードに求められる機能
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 2
Public Cloud (AWS, Azure ...)
Hybrid cloud for Enterprise
xSP infrastructure (Data Center)
NFV for telco
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 4
(本日の) “Hybrid Cloud 時代(仮)” とは ??
Public Cloud (AWS, Azure ...)①
Hybrid cloud for Enterprise①②
xSP infrastructure (Data Center)①②
NFV for telco①②
①仮想環境内のノード
②仮想環境のインフラ
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 5
(本日の)“Hybrid Cloud 時代(仮)” とは ??
(router/switch/gateways)
共通インターフェース (CLI/API)
置き換え可能なデータプレーン
大規模(多数)ノードの管理
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 7
ネットワーク・ノードに求められる機能
•ノードの場所に依存しない共通API
•オペレーターのシームレスな操作体験(CLI)
•学習コストの低減
• Common API regardless of where node resides
• Seamless experience for operators (via CLI)
• Reduce learning cost
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 9
共通インターフェース (CLI/API)
ASIC, FPGA, NPU, CPU (Linux dataplane / DPDK etc)
•異なるパフォーマンス要件
•スループット、遅延、ポータビリティ
•初期コスト vs ランニングコストのバランス
• different performance requirement
• throughput, delay, portability
• initial vs running cost balance
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 11
置き換え可能なデータプレーン
•パブ/サブ(pub/sub)形式の設定方法 (ex: etcd)
• (中央のコントローラーからのプッシュだけでなく)
•分散設定ストア・パブリケーション
• pub/sub type configuration method (ex: etcd)
• (Not only PUSH from central controller)
• Distributed configuration store & publication
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 13
大規模(多数)ノードの管理
Zebra 2.0 overview
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 14
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 15
zebra (Zebra 2.0) / openconfigd
Apache LicenseNetwork operator friendly CLI
Pub/Sub type configuration managementSingle SPF Algorithm for OSPFv2/OSPFv3/IS-IS
Cutting edge protocol support (SRv6, MPLS VPN)Forwarding Engine Abstraction for software & hardware dataplane
Written From Scratch in GogRPC for RPC
zebra is an open source implementation as a successor of GNU Zebra and Quagga project.
A dataplane agnostic Network Operation Stack works with variable protocol/functional modules.
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 16
Zebra 2.0 Architecture
CLI
openconfigd
Linux dataplane
quaggad
bgpd / ospfdribd
fea
quagga
openconfigd
zebra
gRPC
gRPC(yang model)
vtysh
Tapinterface netlink
Hardware dataplane
HW API (SAI, XDK etc.)
zebraproto
gRPC
bgpd/ospfd
gRPC
gRPC
etcd
JSON
Written from scratch in Go
• openconfigd• configuration system• yang model• CLI (Junos like)• etcd for scalability
• zebra/ribd• dataplane management (ex: FIB)
• zebra/fea• multiple dataplane support• link/port, bridge domain etc.
• New bgpd/ospfd• multi-core support
• quaggad & zebra protocol• for backward compatibility
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 17
Highly Scalable Configuration Architecture (pub/sub)
zebra & openconfigd | Source Code on GitHub
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 18
Main Modules
• openconfigd• https://github.com/coreswitch/openconfigd
• zebra• https://github.com/coreswitch/zebra
Helper Modules
• component / dependency • Component dependencies library and dependency library.• https://github.com/coreswitch/component• https://github.com/coreswitch/dependency
• log: logrus wrapper with source code information and function name and log levels.• https://github.com/coreswitch/log
• cmd: Go library for command line parsing.• https://github.com/coreswitch/cmd
zebra & openconfigd
• Install openconfigd
$ go get github.com/coreswitch/openconfigd/openconfigd
• Install CLI
$ go get github.com/coreswitch/openconfigd/cli_command
$ cd $GOPATH/src/github.com/ coreswitch /openconfigd/cli
$ ./configure; make
$ sudo make install
$ cd $GOPATH/src/github.com/coreswitch/openconfigd/bash_completion.d
$ sudo cp cli /etc/bash_completion.d/
• Install zebra
$ go get github.com/coreswitch/zebra/rib/ribd
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 19
Installation Steps
Check README.md for updated infohttps://github.com/coreswitch/openconfigd
https://github.com/coreswitch/zebra
demo: zebra & openconfigd
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 20
zebra + openconfigd + Quagga ospfd/bgpd on LXCCheck below doc for instruction how to run this demohttps://github.com/coreswitch/zebra/blob/master/docs/quagga-lxc.md
zebra & openconfigd
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 21
Registering CLI commands from ribd to openconfigdhttps://github.com/coreswitch/zebra/blob/master/rib/api.go
1. Add “Parser.InstallCmd([]string{...}, <function>)” per command
2. Add “<function>” which will be called when command was entered via CLI
operator -> CLI -> openconfigd -> zebra/ribd
1
2
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 22
dataplane abstraction via “Hook” functions
1. Register “Hook” functions for each dataplane (ex: ASIC API)2. If there is “Hook” registered, then ribd will call the function
instead of Linux dataplane functions.
• Basic routing/switching features (ACL, NAT etc.)
• New Protocols• Segment Routing (SRv6)
• Forwarding Engine Abstraction• ASIC support (via SAI)
• P4 dataplane (via SAI or P4-PI)
• New Protocol Agents• BGP, OSPFv2, OSPFv3, IS-IS
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 23
Zebra 2.0 (future roadmap)
DEMO:Zebra 2.0 SRv6 CLI on Linux Dataplane
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 24
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 25
3. Segment Routing Extension Header (SRH)
https://datatracker.ietf.org/doc/draft-ietf-6man-segment-routing-header/
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 26
demo topology
Device( Host 1 )Zebra CLI
Router A Router BServer
( Host 2 )Zebra CLI
Router C
Router D
Service Function
( Host 3X )
Service Function
( Host 3Y )
veth1: fc00:000a::10/64 veth2: fc00:000b::10/64
veth2veth1
vethA1
vethAD
vethDA
vethAC
vethCA
vethDB
vethCB
vethBD
vethBC
vethB2
Router AvethA1: fc00:000a::a/64vethAC: fc00:00ac::a/64vethAD: fc00:00ad::a/64
Router DvethDA: fc00:00ad::d/64vethDB: fc00:00bd::d/64vethD3: fc00:00d3::d/64
Router CvethCA: fc00:00ac::c/64vethCB: fc00:00bc::c/64vethC3: fc00:00c3::c/64
Router BvethBC: fc00:00bc::b/64vethBD: fc00:00bd::b/64vethB2: fc00:000b::b/64
• Host 1 & 2 : runs SRv6 (Zebra CLI + Linux dp)• Router A,B,C,D : IPv6 router with NO SRv6• Host 3X : active service function• Host 3Y : standby service function
veth3
vethC3
vethD3
veth3D
veth3C
veth3
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 27
Normal Route
Device( Host 1 )Zebra CLI
Router A Router BServer
( Host 2 )Zebra CLI
Router C
Router D
Service Function
( Host 3X )
Service Function
( Host 3Y )
veth1: fc00:000a::10/64 veth2: fc00:000b::10/64
veth2veth1
vethA1
vethAD
vethDA
vethAC
vethCA
vethDB
vethCB
vethBD
vethBC
vethB2
• Host 1 & 2 : runs SRv6 (Zebra CLI + Linux dp)• Router A,B,C,D : IPv6 router with NO SRv6• Host 3X : active service function• Host 3Y : standby service function
veth3
vethC3
vethD3
veth3D
veth3C
veth3
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 28
Add SRv6 Route on Device (Host 1)
Device( Host 1 )Zebra CLI
Router A Router BServer
( Host 2 )Zebra CLI
Router C
Router D
Service Function
( Host 3X )
Service Function
( Host 3Y )
veth1: fc00:000a::10/64 veth2: fc00:000b::10/64
veth2veth1
vethA1
vethAD
vethDA
vethAC
vethCA
vethDB
vethCB
vethBD
vethBC
vethB2
set routing-options ipv6 route-srv6 fc00:b::10/128nexthop fc00:a::a seg6 inline segments fc00:3::10
veth3
vethC3
vethD3
veth3D
veth3C
veth3
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 29
Add SRv6 Route on Host 1 and Host 2
Device( Host 1 )Zebra CLI
Router A Router BServer
( Host 2 )Zebra CLI
Router C
Router D
Service Function
( Host 3X )
Service Function
( Host 3Y )
veth1: fc00:000a::10/64 veth2: fc00:000b::10/64
veth2veth1
vethA1
vethAD
vethDA
vethAC
vethCA
vethDB
vethCB
vethBD
vethBC
vethB2
set routing-options ipv6 route-srv6 fc00:a::10/128nexthop fc00:b::b seg6 inline segments fc00:3::10
veth3
vethC3
vethD3
veth3D
veth3C
veth3
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <[email protected]> | Okinawa Open Lab ~ Forum 2018/01/19 30
Next Step : SRv6 Mobile Network Programmability+-----------------------------+--------+----------+| User-plane Function | Uplink | Downlink |+-----------------------------+--------+----------+| stateless interworking node | T.Tmap | End.TM || L2-anchor | End.B6 | End.B6 || L3-anchor | End.T | T.Insert |+-----------------------------+--------+----------+