enabling the next generation of sdnimplementation details implements p4runtime, gnmi, and gnoi...

19
Enabling the Next Generation of SDN Brian O’Connor (ONF) [email protected] P4 Workshop on June 5, 2018 Link to slides: https://goo.gl/6HFG1h Presenting on behalf of Google and ONF

Upload: others

Post on 22-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Enabling the Next Generation of SDN

Brian O’Connor (ONF)[email protected]

P4 Workshop on June 5, 2018

Link to slides: https://goo.gl/6HFG1h Presenting on behalf of Google and ONF

Page 2: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Background

JupiterSDN Data Center

1.3 Pbps100,000+ servers/site

B4SDN WAN

Inter-datacenter trafficGrowing faster than Internet traffic

EspressoSDN Peering Edge / Metro70 metro sites25% of all Internet traffic

Cisco Global Internet Forecast: ~150 EB/month in 2018 (+ 24% from 2017)

Google runs SDN networks at scale

https://www.blog.google/topics/google-cloud/making-google-cloud-faster-more-available-and-cost-effective-extending-sdn-public-internet-espresso/https://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networking-index-vni/complete-white-paper-c11-481360.pdf

Page 3: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

SDN Requirements● Highly scalable● Highly automated● High performance interfaces● Custom config & management● OpenFlow extensions / tweaks● Needs directly drive design

Jupiter (1.3P)

Aggregation Block

Aggregation Block

Spine Block

Spine Block

Spine Block

CentralizedControl

Page 4: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

The Ugly Side of Networking● Lack of portability● Protocols becoming more complex● Protocols provide limited control● Proprietary extensions● Proprietary management● Locked into custom hardware

○ Can’t buy and use 3rd party systems○ Unable to leverage vendors

● Slow cycles for innovation

Page 5: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Wanted● New control interface with

○ Abstraction for different silicon○ Well defined interfaces and behavior○ Extensibility

● Common models for configuration and monitoring● Common interfaces for operations

○ Testing, Debugging, Cert. Management, Software upgrade

● Common platform abstraction (e.g. OCP’s ONLP)● Open source switch stack

Page 6: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Control Interface: P4Runtime

P4Runtime

Program

Entries forTables, Action Profiles, Meters, Counters, Packet Replication,Parser Values, Registers, Digests, Externs

PSA Switch

Page 7: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

P4 and P4Runtime are great, but ...

Switch Chip ConfigurationQoS Queues and Scheduling

Serialization / DeserializationPort Channelization

Power supplies

Fan Speed

Port State and MappingLED Control

Monitor Sensorse.g. temperature

Still Missing:● Configuration● Monitoring● Operations

Software Deployment and Upgrade

… and the list goes on.Management Network

OpenConfig, gNMI, and gNOI are here to

help!

Page 8: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Next Generation SDN Interfaces

Page 9: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Lightweight and Production-ready Implementation

Page 10: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

kernel

hardware

user

Shared (HW agnostic)Chip specificPlatform specificChip and Platform specific

Stra

tum

switc

h ag

ent

Switch Agent Architectural Components

P4 Runtime gNMI gNOI

Switch Broker Interface

Table Manager

Node/Chip Manager

Chassis Manager

Chip Abstraction ManagersE.g. ACL, L2, L3, Packet

I/O, Tunnel

Platform Manager

Remote or Local Controller(s)

Switch SDK Platform API

Switch Chip Drivers Platform Drivers

Switch Chip(s) Peripheral(s)

Page 11: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Switch Broker Interface● This is NOT an

abstraction like SAI● Transparent broker

interface between P4Runtime / gNMI / gNOI to vendor-specific managers

P4 Runtime

Switch Broker Interface

Node instance for Chip 1

gNMI gNOI

Node instance for Chip 2

Chassis Manager

Flow Write to Chip 1

Push pipeline to

Chip 2

Set port speed on

Chip 1Restart chassis

Chassis Switch with two forwarding chips

Page 12: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Implementation Details● Implements P4Runtime, gNMI, and gNOI services● Controlled locally or remotely using gRPC● Written in C++11● Runs as a Linux process in user space● Can be distributed with ONL● Built using Bazel

Page 13: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Project Goals1. Delivery of P4Runtime and Open Config interfaces2. Implementation of these interfaces

○ Interfaces are defined by running open source code; this is not a standards exercise

3. Fully production ready distribution necessary to run and deploy these interfaces

4. Keep it minimal; this is perfect for some users○ Users that need more functionality can use Stratum as a component

that plugs into a larger or more complex system

Page 14: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

The Next Generation SDN picture

Stratum Stratum

Stratum Stratum Stratum

SDN Control Services

P4Runtime

spine.p4spine.p4

leaf.p4 leaf.p4 leaf.p4

Configuration Services

gNOI

Monitoring & Telemetry Services

OpenConfig & gNMI

Admin & Orchestration

Services

Page 15: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Realizing Stratum’s Vision● Community

○ Deliver Stratum agent○ Deliver a reference open source control plane○ Deliver a tool chain (e.g. conformance test suite, debugging)

● Vendors○ Add support for multiple switching chips and platforms○ Develop network solutions that incorporate Stratum

● Service Providers○ Use Stratum-based white boxes and API-compliant black boxes when

available○ Share P4 programs for relevant use cases○ Define compliance test cases and qualification criteria

Page 16: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Stratum Community

Page 17: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Stratum Development TimelineQ1 2018 Q2 2018 Q3 2018 Q4 2018 2019

Stratum Community Launchwith 22 partners

Seed code from Googleavailable to pioneering members

Pioneer work days- Reference Platform Support (HW & SW)- Development Infrastructure (Build, CI, etc.)

Open Source Launchwith forwarding chip and

platform support for every vendor member

Codebase GA for Stratum Members- Expanded platform support- Feature development- Hackathons

Field Trials, Production Deploymentson cloud and telco networks

CommunityDevelopment

Page 18: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Getting InvolvedContribute to the InterfacesP4Runtime, gNMI, gNOI, and the OpenConfig models are already open source

Become a Stratum Member1. Have a contribution plan2. Sign the required documents

We are still accepting hardware vendors and users!

Join the Public Mailing ListWe will provide periodic updates on Stratum’s progress.

For more details:https://wiki.opennetworking.org/display/COM/Stratum+Wiki+Home+Pagehttps://stratumproject.org/

Page 19: Enabling the Next Generation of SDNImplementation Details Implements P4Runtime, gNMI, and gNOI services Controlled locally or remotely using gRPC Written in C++11 Runs as a Linux process

Stratum Switch Stack Demo● A simple ToR demo to

showcase open source ONF Stratum switch stack running on a whitebox switch

● P4Runtime for programming forwarding entries

● gNMI for configuration and telemetry

● Simple SDN controller (gRPC client) to push config and forwarding entries

● ONL for platform OS

1

2 32

31mgmt

P4Runtime gNMIONL

SDN Controller

uplinksHost 1 Host 2

To see Stratum in action, visit our demo!