Transcription

OpenDaylight OpenFlow Plugin-Abhijit Kumbhare, Principal Architect, Ericsson; Project LeadAnil Vishnoi, Sr. Staff Software Engineer, BrocadeJamo Luhrsen, Sr. Software Engineer, Red Hat#ODSummit

Agenda Project Overview High level architecture OpenFlow plugin example use case Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A2

Agenda Project Overview High level architecture OpenFlow plugin example use case Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A3

Project Overview Inception in Hydrogen Release One of the first community projects Past & Present Participants from Brocade,Cisco, Ericsson, HP, IBM, Red Hat, TCS, etc. Meetings: Mondays 9 am Pacific Number of commits: 950 Source code : 160 KLoCs Number of contributors (w/ at least one commit): 60 Bugs fixes to-date (resolved/verified and fixed): 3134

Where does it fit in OpenDaylight?OpenFlow Plugin is a key offset 1 projectConsumers include OVSDB, GBP, SFC, VTN, VPN, L2 switch, etc.5

Agenda Project Overview High level architecture OpenFlow plugin example use case Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A6

High Level Architecture7

.well, this is how yang rpc/notifications really works8

Agenda Project Overview High level architecture OpenFlow plugin example use case Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A9

OpenFlow plugin example use case : OVSDB ProjectOpenFlow Plugin Servicesconsumed by OVSDB: OpenFlow node connectivity Flow Installation, modification& removal Nicira extensions Packet-in

Agenda Project Overview High level architecture OpenFlow plugin example usecase Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A11

Lithium accomplishments Migration of OpenFlow Yang models Migration of OpenFlow applications Alternate design for performance improvement Addition of new features Integration / CI testing improvements12

Migration of OpenFlow Yang modelsMigrated following OpenFlow specific models from controller project to OpenFlowplugin project: ticsWhy it’s done: To have all the OpenFlow specific models at one place to avoid any confusionfor the developers.Avoid maintenance overhead of managing the relevant pieces in two differentprojectWhat’s the impact on consumer: No major impactBackward compatibility No impactStability impact: Improved project maintenance13

Migration of OpenFlow applicationsMigrated following OpenFlow specific applications (NSF) from controller project toOpenFlow plugin project: forwarding rule managerstatistics managerinventory managertopology managerWhy it’s done: To have all the OpenFlow specific NSF at one place to avoid any confusionfor the developers.Avoid maintenance overhead of managing the relevant pieces in two differentprojectAvoid gerrit patch dependenciesWhat’s the impact on consumer: No major impactBackward compatibility No impactStability impact: Improved project maintenance14

Alternate design for performance improvementNew performance improvement design proposal [4] wasimplemented.Why it’s done: To improve the performance, stability and user experienceWhat’s the impact on consumer: Should be transparent in most casesCurrent Status Both existing design (a.k.a. Helium design) and alternatedesign (a.k.a. Lithium design) are available as options Existing design: features-openflowplugin OpenFlow Plugin consumers currently use this Alternate design: features-openflowplugin-li15

Existing Design / Alternate Design Quick Comparison (Partial)APIExistingAlternateDetails of changeNo significant changesnot supportedStats & inventory-manager now internal to OFPlugin. Hence no reason fornotifications (exceptthem to communicate via MD-SAL.packetIn), statisticsAdvantagesrpcnewbarrier, table-updatestats not flooding MD-SAL, a bit faster and reliable, better control overstatistics polling.Consequencesapplications outside OFPlugin can not query stats directly fromdevice. They need to listen Operational Data Store changes.RPCcompletionupon message sent todeviceupon change confirmedby vantagesProvides more information in RPC resultConsequencesRPC processing takes more timeright after handshakeafter device exploredAdvantagewhen new device in DS/operational all informations are consistentand all RPCs ready.Consequenceby devices with large stats reply it might take longer time till they getexposed in DS/operational.16More details at: [5]

Addition of new featuresTable features Update to the inventory based on Table Features response. Tested manually onlyagainst the CPqD switch OpenFlow Spec 1.3 (A.3.5.5 Table Features)Role Request Message Implementation of Role Request Messages for Multi-controller operation (done onexisting implementation only, not done on alternate design) OpenFlow Spec 1.3 (A.3.9 Role Request Message)17

Integration / CI testing improvements Varying levels of contributions from at least 6 individualsMore than 300 new test cases introducedScale Monitoring Suites: Performance Monitoring Suites: switch discoverylink discoveryhost discovery (depends on L2-Switch project)flow programmingNorthbound flow programmingSouthbound packet-in responseJob replication for both code basesA Openflow longevity suite close to being in CIBug regression cases18

Integration / CI testing improvements Varying levels of contributions from at least 6 individualsMore than 300 new test cases introducedBig Thanks toPeter GubkaScale Monitoring Suites: Performance Monitoring Suites: switch discoverylink discoveryhost discovery (depends on L2-Switch project)flow programmingNorthbound flow programmingSouthbound packet-in responseJob replication for both code basesA Openflow longevity suite close to being in CIBug regression cases19

20

Switch Scalability MonitoringTwo tests, same goal, different implementations and verificationsGOAL: iteratively increase the number of switches in the topology until the max(500) is achieved or record/plot the value where failure occurredFAILURE TRIGGERS: OutOfMemory Exception in log file Switch count wrong in operational store topology links presencestarts and stops X switcheswhere X starts at 100 andincreases by 100.FAILURE TRIGGER: Switches discovered in operational within 35sadds 10 switches at a timeand never removes them.21

Link Scalability MonitoringGOAL: iteratively increase the number of switches (up to 200) using a full meshtopology. The maximum links tested would be 200 * (200 - 1) 39800(NOTE: 1 connection would be 2 unidirectional “links”) FAILURE TRIGGERS:OutOfMemory Exception Switch count wrong in operational storeNullPointer Exception Link count wrong in operational storebugzilla/370622

Host Discovery MonitoringGOAL: iteratively increase the number of hosts (up to 2000) connected to a singleswitch, starting from 100 and increasing by 100.FAILURE TRIGGERS: OutOfMemory ExceptionHost count wrong in operationalSwitch count (1) wrong in operationalbugzilla/3706bugzilla/3326bugzilla/?23

Northbound Flow Programming Performance MonitoringConfigures 100k flows 63 switches in linear topology 25 flows per request rate seen is approx. 1600 flows/sec Configures 10k flows 25 switches in linear topology 1 flow per request 2k flows handled by each of 5 parallelthreads rate seen in default plugin is approx. 160flows/sec rate seen in alternate plugin is approx. 200flows/sec (was 400 flows/sec)default pluginalternate plugin 24

Southbound Packet-In Response Monitoring(using cbench tool)GOAL: to monitor and recognize when significant changes occur.throughput mode average 100k flow mods/secstarts and stops X switcheswhere X starts at 100 andincreases by 100.latency mode average 16k flow mods/secexisting pluginadds 10 switches at a timeand never removes them.25

Southbound Packet-In Response Monitoring(using cbench tool)GOAL: to monitor and recognize when significant changes occur.throughput mode average 110k flow mods/seclatency mode average 16k flow mods/secalternate plugin26

Performance Monitoring In Actionafter communication and hard work afinal merge (gerrit patch 20810)triggered the test that sawperformance come back to what weexpect27

Automating Reported IssuesInitial Issue Reported (Nov, 2014) and Fixed (Dec, 2014): Bug 2429 - Need to close the ODL Denial of Service interfaceIt was reported again 7 months later (Jun, 2015): Bug 3794 - OFHandshake thread leak leads to OOMOF Handshake threads were leaking when a raw TCP connection was open and closed to the openflowport (6633). Anything with malicious intent could disable the controller in short order if this issue returns.11 lines of Robot code shouldprevent this from surprising usagain.28

Agenda Project Overview High level architecture OpenFlow plugin example usecase Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A29

Plan for Beryllium: Enable Clustering support New Features Flow entry eviction Flow vacancy eventsIntegration testing and CI improvements Longevity tests Clustering tests Performance/Stability Tests Sonar code coverage Documentation improvement30

Enable Clustering Support:Clustering will provide High Availability for the plugin Scalability More than one instance running the pluginSet of switch connects to set of controllerPersistence Clustering takes care of user config data31

Enable Clustering Support (contd.):32

Enable Clustering Support (contd.):33

Flow entry eviction Extension for OpenFlow 1.3 & part of OpenFlow 1.4 Mechanism enabling the switch to automatically eliminateentries of lower importance to make space for newer entries Configure flow entry eviction New messages : set, get request, get reply Per-table configuration, on/off boolean New field: Flow importance Encoded as experimenter instruction, per flow Optional hint for eviction algorithm Eviction process Entirely switch defined Report flows with reason OFPRR DELETE Flags in table desc to describe eviction criteria34

Vacancy Events Extension for OpenFlow 1.3 & part of OpenFlow 1.4 In OpenFlow 1.3 – abrupt behavior once switch flow tablegets full New flow entries not inserted – error returned Likely disruption of service Provides a mechanism enabling the controller to get anearly warning based on a capacity threshold chosen bythe controller Allows controller to react in advance and avoid getting thetable full New table status event with reasons VACANCY DOWN &VACANCY UP Table-mod vacancy property to set vacancy thresholds35

Agenda Project Overview High level architecture OpenFlow plugin example usecase Lithium accomplishments Plan for Beryllium Potential areas for contribution References Q&A36

Potential areas for contribution: Fixing Open and new bugsContribution to CI/Integration testingDocumentation (User & Developer Guides)ClusteringFull OpenFlow 1.4 supportStats collection optimizations Stats collection only to verify successful programming offlows Enable / disable stats collection on a per flow basisExtensions to support for conntrack (stateful firewall) feature [6]in the latest OVSFilter packet-ins based on protocol Allow applications to subscribe to packet-ins based onpacket types User defined filters for packet-ins37

Agenda Project Overview High level architecture OpenFlow plugin example usecase Lithium accomplishments Plan for Beryllium Potential area for contribution References Q&A38

References[1] OpenFlow Plugin Wiki Main Page[2] Potential Beryllium Items[3] End to End Flow Programming[4] Alternate Design for Performance Improvement Implemented inLithium[5] Comparison between existing design and the alternate designimplemented in Lithium[6] OVS Connection Tracking39

Q&A#ODSummit

Thank You#ODSummit