25
Zebra 2.0 in Hybrid Cloud Era requirements 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/19 [email protected]

Zebra 2.0 in Hybrid Cloud Era

Embed Size (px)

Citation preview

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 |+-----------------------------+--------+----------+