130 likes | 221 Views
Simplified Network Service Interfaces. Sept 29 2014 Rex.pugh@hp.com. Outline. Motivations Use-cases API Definitions Design Considerations Q/As. Motivations. Port Existing SDN Apps to OpenDaylight Project Decrease Complexity for “Application” Writers
E N D
Simplified Network Service Interfaces Sept 29 2014 Rex.pugh@hp.com
Outline • Motivations • Use-cases • API Definitions • Design Considerations • Q/As
Motivations • Port Existing SDN Apps to OpenDaylight Project • Decrease Complexity for “Application” Writers • Provide Data Model and Infrastructure Independence • Eliminate Code Duplication • Provide an abstraction of Network Services from the underlying Data Model • Applications are burdened with searching, sorting, and filtering model objects in the datastore • Increase Performance for certain frequent data access • .findNode is an O(n) operation • Build a flexible middleware service layer for evolving North-Bound API’s
Network Service API’s Foundation for Evolving NBI’s • Network Services API’s are a library of Data Access methods that allow middleware apps to create action-based semantics • Middleware apps want to interact with the control plane with action-based semantics, not network data semantics • ‘block’, ‘allow’, ‘inspect’, ‘inject’, ‘redirect’, ‘copy’, ‘set quality {latency, bandwidth, loss}’ • Network Middleware Apps: HP Network Optimizer HP Network Protector
Network Service API’sSAL Layering GBP . . . NBI’s Action Semantic API’s ??? Network Service API’s API’s Packet Flow Path Link Host Node Topo Providers Data Access Data Change Notifications MD-SAL Data Store Packet Flow Path Link Host Node Topo Packet Flow Path Link Host Node Topo Suppliers . . . SNMP NETCONF OpenFlow Protocols • Acknowledge that there are many levels at which “Applications” interact with controller functions. • Network Service API’s are at a lower stratum than Intent level or Policy level NBI’s
App Code Example • Getting hosts by IP address On MD-SAL Today: DataBroker broker = session.<DataBroker>getSalService(DataBroker.class); ReadOnlyTransactiontx = broker.newReadOnlyTransaction(); ListenableFuture<Hosts> future = tx.read(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); Hosts hosts = future.get(); List<Host> salHosts = hosts.get(); List<Host> matchingHosts = new ArrayList<Host>(); for(Host host : salHosts ) { //if IP address matches //matchingHosts.add(host); ... with a Simple API HostServicens; IpAddressaddr = IpAddress.valueOf("192.168.100.10"); List<Host> Hosts = ns.getHostsByIpAddress(addr);...
Design Overview & Options • Simple Start • Just write APIs with methods that use MD-SAL directly • Optimize for Performance • Use Hash Maps instead of Tree Data Store • Create Hash Maps to index into Tree Data Store • Store Instance ID’s as keys • Store Object references as keys
Q&A’s • Thanks!