TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Zebra 2.0 in Hybrid Cloud Era
1. Zebra 2.0 in Hybrid Cloud Era
requirements for network nodes
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 1
Okinawa Open Lab ~ Forum 2018/01/19
ebiken@pontonetworks.com
3. Public Cloud (AWS, Azure ...)
Hybrid cloud for Enterprise
xSP infrastructure (Data Center)
NFV for telco
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 4
(本日の) “Hybrid Cloud 時代(仮)” とは ??
4. Public Cloud (AWS, Azure ...) ①
Hybrid cloud for Enterprise ①②
xSP infrastructure (Data Center) ①②
NFV for telco ①②
① 仮想環境内のノード
② 仮想環境のインフラ
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 5
(本日の)“Hybrid Cloud 時代(仮)” とは ??
6. • ノードの場所に依存しない共通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 <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 9
共通インターフェース (CLI/API)
7. 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 <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 11
置き換え可能なデータプレーン
8. • パブ/サブ(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 <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 13
大規模(多数)ノードの管理
9. Zebra 2.0 overview
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 14
10. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 15
zebra (Zebra 2.0) / openconfigd
Apache License
Network operator friendly CLI
Pub/Sub type configuration management
Single 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 Go
gRPC 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.
11. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 16
Zebra 2.0 Architecture
CLI
openconfigd
Linux dataplane
quaggad
bgpd / ospfd
ribd
fea
quagga
openconfigd
zebra
gRPC
gRPC
(yang model)
vtysh
Tap
interface netlink
Hardware dataplane
HW API (SAI, XDK etc.)
zebra
proto
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
12. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 17
Highly Scalable Configuration Architecture (pub/sub)
13. zebra & openconfigd | Source Code on GitHub
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | 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
14. 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 <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 19
Installation Steps
Check README.md for updated info
https://github.com/coreswitch/openconfigd
https://github.com/coreswitch/zebra
15. demo: zebra & openconfigd
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 20
zebra + openconfigd + Quagga ospfd/bgpd on LXC
Check below doc for instruction how to run this demo
https://github.com/coreswitch/zebra/blob/master/docs/quagga-lxc.md
16. zebra & openconfigd
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 21
Registering CLI commands from ribd to openconfigd
https://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
17. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | 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.
18. • 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 <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 23
Zebra 2.0 (future roadmap)
19. DEMO:
Zebra 2.0 SRv6 CLI on Linux Dataplane
Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 24
20. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | 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/
21. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 26
demo topology
Device
( Host 1 )
Zebra CLI
Router A Router B
Server
( 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 A
vethA1: fc00:000a::a/64
vethAC: fc00:00ac::a/64
vethAD: fc00:00ad::a/64
Router D
vethDA: fc00:00ad::d/64
vethDB: fc00:00bd::d/64
vethD3: fc00:00d3::d/64
Router C
vethCA: fc00:00ac::c/64
vethCB: fc00:00bc::c/64
vethC3: fc00:00c3::c/64
Router B
vethBC: fc00:00bc::b/64
vethBD: fc00:00bd::b/64
vethB2: 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
22. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 27
Normal Route
Device
( Host 1 )
Zebra CLI
Router A Router B
Server
( 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
23. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | Okinawa Open Lab ~ Forum 2018/01/19 28
Add SRv6 Route on Device (Host 1)
Device
( Host 1 )
Zebra CLI
Router A Router B
Server
( 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/128
nexthop fc00:a::a seg6 inline segments fc00:3::10
veth3
vethC3
vethD3
veth3D
veth3C
veth3
24. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | 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 B
Server
( 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/128
nexthop fc00:b::b seg6 inline segments fc00:3::10
veth3
vethC3
vethD3
veth3D
veth3C
veth3
25. Zebra 2.0 in Hybrid Cloud Era | Kentaro Ebisawa <ebiken@pontonetworks.com> | 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 |
+-----------------------------+--------+----------+