Boost PC performance: How more available memory can improve productivity
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 |
+-----------------------------+--------+----------+