New Intent Type: "Tunnels"
Maybe use cases require these; will mitigate need for / make conflict resolution easier
Intent Manager Performance
Consider batching or asynchronous reads (as we already do for writes)
Intent Statistics
Provide API to query statistics for a given intent (likely using the group id)
Investigation of IP-RAN and spring uses cases
Intent Compilers / Installers
Favor existing resources in the compilers when selecting paths
Bi-directional path selection
Implement replace mechanism for our intent installers to optimize flow rule updates
Intent Recovery and Distributed Testing
There are a lot of edge cases that have not been adequately tested (including control plane and data plane failures)
Resource Manager
Introduce more types of resources (i.e. T-port and queues)
Improve distributed implementation
Objective Tracker Enhancements
Listen and respond to devices and host events
Listen and respond to flow rule events (requires use of group id in flow rule)
Do a better job of failover (including pulling state and replaying missed events)
Single point to multi-point intents
Useful for broadcast or multicast
Conflict Detection
Provide a way to detect and mitigate conflict between intents
(it may be possible to roll this into the work on composition)
Application and Intent-based composition
Provide a mechanism to compose intents within and/or across application(s)
(Hopefully in conjunction with Jennifer Rexford's group and Josh Reich from AT&T. This work should be started in early 2015.)
Batch update scheduling
Improved scheduling algorithms for decided batch order and increasing parallelism
There are some papers that describe mechanisms for this.
Security
Require certains roles to provision various types of intents
Packet layer constraints
Mechanism for latency and bandwidth guarantees
Other types of policy
We currently support forwarding, but we can make the abstraction more general by providing: (point)+ to (point)+ intents.
Introduce traffic (or other) policy, configuration, data collection
Active (rather than passive) data collection is an interesting
Introduce a more generic/powerful language for expressing intents
(like Frentic/Pyretic)
Optimization/Reuses across intents
We have talked for a long time now about reusing flow rules or tunnels across intents. This will help in reacting to network failures as well as conserving data plane resources.
Global Optimization / Defragmentation
"It works, now make it better."
We don't consider recomputing/rerouting intents when better paths become available.
Perhaps we can also leverage the group table
Consistent updates / Update rounds
When doing TE or other optimizations, care needs to be taken to ensure
Virtual Resources
Provide intents as resources to other applications
Enable apps to use virtual resources that have been provisioned (through intents) by other apps