...
Contents
Background
Application Co-existence and Integration Challenges
...
- Multiple applications writing into table 0 (directly or through an Ingress Manager function)
- Flow conflict detection mechanisms do not allow for any overlap between flows
- Overlap (or rather refinement) should be allowed using priorities to disambiguate:
- e.g. packets on in_port with certain DMAC to application A, all the rest to application B
- How can a generic Ingress Manager ensure that there is no semantic conflict between the flows if the simple non-overlap criterion is not sufficient?
Genius Proposal
Generic Functions for Multi-Network Service Support
- Any ODL application can use these to achieve at minimum interference-free co-existence with other applications using the services
- Provide support for co-operation between applications with the minimal amount of design-time coordination and hard-coded dependencies
- Use APIs to move design-time coordination to run-time
- Generic infrastructure APIs to avoid direct coupling where possible
- Direct inter-application (client-server) APIs where necessary for stronger coupling
- Factor out commonly used functions into shared services to avoid duplication & waste of resources, e.g.
- Overlay Tunnel Manager
- ID manager
- MD-SAL Util
VPN Service Modules and Inter-relationships
Image Added
Interface Manager
- Models generic interfaces as attachment point for applications
- Supports Hierarchy of: Port, VLAN, VXLAN Trunk, VXLAN VNI, GRE Tunnel, ...
- Extendible to arbitrary other types of interfaces (virtual link, VPN interface, …)
- Interface ID/tag system wide unique identifier in control/data plane.
- Ingress interface tag stored in metadata
- Handles ingress de-capsulation and de-multiplexing
- Owns table 0 (and possibly additional tables needed for demultiplexing of interfaces)
- Application bind to interfaces through API and register application-specific instructions/actions to be added to the interfaces ingress flow entry (e.g. write metadata, goto table)
- Each bound service is assigned to a separate interface handle, no risk of interference on ingress traffic
- South bound protocol agnostic
- Ability to plug in different south bound renderers
- Provides tunnel monitoring services
- Handles egress encapsulation and output, service processing priority
Defining Granular interfaces (ODL-interfaces data-model)
Image Added
Binding Services on an Interface
Image Added
- Service binding data model used to bind a service on a particular interface
- Service module configures following parameters
- Service-Priority
- Service-Name
- Service-Type
- Service-Info
- (for service-type openflow-based)
- Flow-priority
- Instruction-list
- Interface Manager maintains a Service dispatcher table to regulate pipeline dynamically between services
- Listens to service-binding changes and accordingly programs the dataplane (Table 0 & Service Dispatcher)
Service binding dataplane semantics
Image Added
Making SBI protocol agnostic (South bound renderers)
- Provide a flexible way to support multiple south bound protocols
- North-bound interface/data-model is decoupled from south bound plugins
- NBI Data change listeners select and interact with appropriate SBI renderers
- New renderers can be added to support new Southbound interfaces/protocols/plugins
- Needs to be re-concilied with Netvirt re-design proposal
Image Added
Shared Overlay Tunnel Service
- Provides tunnel creation/management services
- Can be configured to automatically create a homogenous bi-directional tunnel mesh (VxLAN/GRE/others) between agiven group of DPNs
- API to add new nodes into an existing tunnel mesh
- API to create uni-directional tunnels from a DPN to an external IP node (CE router) which may not be under SDN control
- Support for tunnel level redundancy by creating a logical-group-interface, combining more than one tunnel interfaces, and allow for load-balancing or failovers in the group
- API support to control monitoring of tunnel interfaces
- API to get egress-actions and ingress-rules/bindService for specified uni-directional tunnel
- NB Tunnel Up/Down events for services/ user-facing / analytics apps
Aliveness Monitor
- Provides Controller driven monitoring services for
- Point-to-point interfaces (VxLAN/GRE)
- From an interface to destination IP Node
- Consumes services from ARP, LLDP, Ping Modules
- Generate Aliveness Events
- Interface manager listens to Aliveness events and updates operational-state of interfaces
- Consumers register for monitoring services specifying monitored interfaces and monitoring parameters
- Uses –
- Physical topology monitoring
- monitoring of non-BFD transport tunnels
- Service Function Monitoring
ID Manager
- Generates and provides unique integer IDs from a pre-configured ID-Pool with configured range to requesting services
- APIs for C/D of ID-Pool, assignment and lookups of IDs to services
- Dual modes of operation
- Consistent ID generation – consistently provide the same ID for a particular unique key String, Id-value is retained across cluster restarts, and associated with unique key (implemented)
- Generic ID assignment, no guarantees of consistency or persistence (not implemented)
- Can be used to assign IDs for and manage resources such as Openflow Tables, Groups, Meters, Service IDs
- Used by Interface Manager for mapping service instances to logical tags in the data plane
MD-SAL UTIL
- Provides Java interfaces to interact with MD-SAL DS and southbound OF-plugin.
- APIs for programming Flows & Groups
- APIs for Data-Store Read/write
- Generic CDN listener
{"serverDuration": 490, "requestCorrelationId": "a1056f7afbdc4e21b749251eb95769a7"}