OCP Networking OOM Driver Workshop

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

© 2004, D. J. Foreman 1 O/S Organization. © 2004, D. J. Foreman 2 Topics  Basic functions of an OS ■ Dev mgmt ■ Process & resource mgmt ■ Memory mgmt.
Embedded Real-time Systems The Linux kernel. The Operating System Kernel Resident in memory, privileged mode System calls offer general purpose services.
A Framework for Patient Monitoring A. L. Praveen Aroul, William Walker, Dinesh Bhatia Department of Electrical Engineering University of Texas at Dallas.
UNIX System Administration OS Kernal Copyright 2002, Dr. Ken Hoganson All rights reserved. OS Kernel Concept Kernel or MicroKernel Concept: An OS architecture-design.
1 © 2003, Cisco Systems, Inc. All rights reserved. CCNA 3 v3.0 Module 6 Switch Configuration.
Home Media Network Hard Drive Training for Update to 2.0 By Erik Collett Revised for Firmware Update.
M i SMob i S Mob i Store - Mobile i nternet File Storage Platform Chetna Kaur.
An Introduction to IBM Systems Director
1 Apache. 2 Module - Apache ♦ Overview This module focuses on configuring and customizing Apache web server. Apache is a commonly used Hypertext Transfer.
Date: File:PRO1_12E.1 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Troubleshooting.
 Virtual machine systems: simulators for multiple copies of a machine on itself.  Virtual machine (VM): the simulated machine.  Virtual machine monitor.
ATLAS HSIO DEVELOPMENT BOARD TESTING An Overview and Test Summary of High Speed Input/Output Boards Lawrence Carlson August 10, 2010.
An Introduction to Device Drivers Ted Baker  Andy Wang COP 5641 / CIS 4930.
Quattor tutorial Introduction German Cancio, Rafael Garcia, Cal Loomis.
Software tools for digital LLRF system integration at CERN 04/11/2015 LLRF15, Software tools2 Andy Butterworth Tom Levens, Andrey Pashnin, Anthony Rey.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
1 January 14, Evaluating Open Source Software William Cohen NCSU CSC 591W January 14, 2008 Based on David Wheeler, “How to Evaluate Open Source.
Introduction to Operating Systems Concepts
Device Management vOLTHA
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Open Networking and SDN
cFS Platforms OSAL and PSP
Operating System Overview
Android Mobile Application Development
Homework Reading Machine Projects Labs
Kernel Design & Implementation
Introduction to Operating Systems
Open Network Linux (ONL)
Visit for more Learning Resources
Redcell™ Management Essentials, Juniper Networks Enterprise Edition
Chapter Objectives In this chapter, you will learn:
Open Optical Monitoring
Pilot Watcher Product Overview V5.3
CCNA Routing and Switching Routing and Switching Essentials v6.0
Control Center – IQ Networking Overview
IzoT™ Device Stacks March 2014.
CP220x The Industry’s Smallest Ethernet Controller
Operating System Structure
Edgecore ASFvOLT16 VOLTHA Adapter and Driver Kim Kempf, Sr
1 Input-Output Organization Computer Organization Computer Architectures Lab Peripheral Devices Input-Output Interface Asynchronous Data Transfer Modes.
Overview of SDN Controller Design
Edgecore ASFvOLT16 VOLTHA Adapter and Driver Kim Kempf, Sr
Chapter 10: Device Discovery, Management, and Maintenance
CCNA Routing and Switching Routing and Switching Essentials v6.0
The Improvement of PaaS Platform ZENG Shu-Qing, Xu Jie-Bin 2010 First International Conference on Networking and Distributed Computing SQUARE.
CMPE419 Mobile Application Development
Introduction to the Kernel and Device Drivers
Printer Admin Print Job Manager
Standards-based Multi-Host NIC Management
An Introduction to Device Drivers
Indigo Doyoung Lee Dept. of CSE, POSTECH
Windows Internals Brown-Bag Seminar Chapter 1 – Concepts and Tools
Chapter 10: Device Discovery, Management, and Maintenance
Open Optical Monitoring born out of OCP
Software Defined Networking (SDN)
Chapter 2: The Linux System Part 1
Operating Systems Chapter 5: Input/Output Management
Lecture Topics: 11/1 General Operating System Concepts Processes
Analysis models and design models
Training Module Introduction to the TB9100/P25 CG/P25 TAG Customer Service Software (CSS) Describes Release 3.95 for Trunked TB9100 and P25 TAG Release.
Computer Organization
Concurrency, Processes and Threads
Android Introduction Platform Mihail L. Sichitiu.
IEEE MEDIA INDEPENDENT HANDOVER DCN:
Delivering great hardware solutions for Windows
CMPE419 Mobile Application Development
PyWBEM Python WBEM Client: Overview #2
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Edgecore Networks Specification and Design Contribution
Presentation transcript:

OCP Networking OOM Driver Workshop OCP Networking Workshop Sunnyvale, August 2017 Don Bollinger

What is Open Optical Monitoring (OOM)? Key Messages OOM is a Python package, providing a standard API to read/write optical transceiver modules. EEPROM data encoded/decoded in key/value pairs. Same API: Any Linux-based NOS, any switch, any module vendor, any module type. Open Source, easy to maintain, easy to extend. Message 1 Message 2 Message 3 Message 1 Message 2 Message 3 from oom import * for port in oom_get_portlist(): # enumerate the ports on the switch status = oom_get_memory(port, 'DOM') # DOM = voltage, temp, {TX, Rx}Power, bias print port.port_name + str(status) port0{'VCC': 3.30, 'TEMP': 23.55, 'TX_POWER': 0.57, 'RX_POWER': 0.56, 'TX_BIAS': 7.4} port1{'VCC': 3.31, 'TEMP': 24.02, 'TX_POWER': 0.57, 'RX_POWER': 0.53, 'TX_BIAS': 7.3}

Simplified OOM Architecture Switch Network OS (including apps) Switch Mgmt Interface Real time Optical Control Network Agent Open Mgmt Interface OOM Decode Library Network OS (Kernel) Drivers, etc. i2c (HW) Open Source Vendor Specific

Requirements for an Optical EEPROM Driver MUST Read & Write Multiple I2C addresses (for SFP) Multiple Pages, up to the architected limit (128 pages, >16KB) High Priority No internal read/write buffer (128+ pages: >16K of EEPROM data) One driver for all flavors of both SFP and QSFP Note, we have a driver that meets these requirements https://github.com/opencomputeproject/oom

Why those requirements? Current capabilities are only accessible from paged areas QSFP alarm/warning thresholds - page 3 Some capabilities require write Software TX_Disable New features use both Connectivity Diagnostics (flashing lights) Future features need more pages T2DOC – fetch data from far end transceiver Upcoming QSFP-DD (8 channels) will require more pages just to represent the MSA standard info per channel

Other potential requirements sysfs Which attributes to expose via sysfs? What names to use for sysfs attributes? What directory names to use (/sys/bus/i2c…? /sys/class/eeprom? …) sysfs buffer limit of 4KB? Do we need to check/limit? Configuration Port to name mapping (keeping the driver platform independent) Specifying which ports use which driver? Specifying dev_id values to the driver (size? SFP/QSFP? …) How big is the EEPROM? Check pageable bit? QSFP beyond page 3? Configurable? Writable sysfs attribute? The architected limit?

Other potential requirements Interrupt handling, on device add/remove (including user space?) Do we have to check presence on every device access? Do we have to read the ‘pageable’ register on every device access? I2C modes – do we really need smbus{byte, word, block} and i2c? How to handle i2c_smbus_read_xxx failures? Error or retry? CFP/MDIO – probably a different driver?

Collaboration, Distribution, Adoption Who is interested in collaborating? Development Code Review Test Where should the reference copy reside? Who is interested in adopting this driver? Does ONL (and others) automatically adopt the accton driver?

SFP Memory Layout mapped to /sys/…/eeprom B C D E F G /sys/…/eeprom: Linear address space from 0 to (3 + 128) * 128 C A B D E F G

QSFP Memory Layout mapped to /sys/…/eeprom B C D E F /sys/…/eeprom: Linear address space from 0 to (1 + 128) * 128 A B C D E F ‘F’ here is architected, but not part of the standard

Open Optics Monitoring and Control (OOM) APPLICATIONS API to Network Applications OOM was kicked off by the OCP Networking group in October 2015… To address problems with consistent access to EEPROM information on optical transceivers during OCP Interop testing. Sponsors: Accton/Edgecore Big Switch Networks Broadcom Cumulus Networks Finisar Config & Automate Monitoring QoS Security Other Forwarding SW (Traditional, Distributed, eg OSPF, BGP, STP etc) Forwarding SW (Centralized, eg OpenFlow) Switch Abstraction Interface (SAI) Installer (eg ONIE) Network OS Decode Switch Silicon Interface to Transceiver Module

Inventory with OOM Key Messages Record identifying info from all modules on the switch Confirm intended vs actual parts from oom import * for port in oom_get_portlist(): # enumerate the ports on the switch inventory = oom_get_memory(port, ‘SERIAL_ID’) # SERIAL_ID: 23 identifying keys add_record(port, inventory) # add this module to the database audit_record(port, inventory) # check for compliance

Health Monitoring with OOM Key Messages Monitor and display key health metrics from oom import * list = oom_get_portlist(): # enumerate the ports on the switch health = oom_get_memory(list[53], ‘DOM’) # DOM: Digital Optical Monitoring show_port(list[53], health) # Display temp, voltage, laser, Rx/Tx power

Diagnostics and Support with OOM Vendor rep adjusts low_temp warning threshold to test alert handling from oom import * list = oom_get_portlist(): # enumerate the ports on the switch oom_set_keyvalue(list[53], ‘PASSWORD_ENTRY’, secret) # Vendor support password oom_set_keyvalue(list[53], ‘TEMP_HIGH_ALARM’, 45.0) # Change threshold New Values Old Values

Custom Uses - Vendor Value Added Content with OOM Trigger flashing pull tab lights with OOM Easy documented process to add additional keys to OOM In the switch, live, running normal production workloads from oom import * list = oom_get_portlist(): # enumerate the ports on the switch oom_set_keyvalue(list[53], ‘TAB_LIGHTS’, flash) # Make the lights flash

OCP SUMMIT: Interoperability and Open APIs Key Messages Message 1 Message 2 Message 3 OOM demonstrated at OCP Summit 2016 and 2017

How can you Access & Participate in OOM? Key Messages OOM is now an OCP Accepted™ Project Download, use and improve! https://github.com/opencomputeproject/oom https://youtu.be/kkL2dk7zMOc Share your use-cases with us. Used in Interoperability testing at UNH IOL Plugfests. Demonstrated in numerous Linux-based NOSs, white box switches, evaluation boards and a module simulator. 200+ keys decoded for QSFP+, QSFP28, SFP+… CFPx coming next. Key Messages Message 1 Message 2 Message 3 Message 1 Message 2 Message 3

Latest OOM News May 2016 – OOM installs as a standard Python Package August 2016 – OOM Web Service using JSON available September 2016 – ‘Universal Shim’ developed (Cumulus + ONL) February 2017 – ‘Universal Python Shim’ No longer need to compile C code to install OOM Extensible to support any (every) Linux-based NOS August 2017 – Reference Linux Kernel Driver available on github