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
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
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
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.