Accurate descriptions of affinity types.
[affinity.git] / affinity / yang / src / main / yang / affinity-overview.txt
1 Affinity endpoint: 
2 =================
3
4 This identifies an application endpoint, and may be one of the
5 following. This is a location wthin the combined physical + virtual
6 network and may be a stationary location referring to a switch/port or
7 a virtual endpoint that may move within the network as the
8 corresponding virtual machine is moved.
9
10  (a) Reference to VM or PM object in the database. In a controller
11  that tracks data center compute resources (such as Open Stack or
12  vCenter) this represents a reference to the database object such as
13  Uuid for that object. A controller such as Open Daylight does not
14  track external compute resource objects and therefore will not
15  support this type of affinity endpoint.
16
17  (b) Node connector, which is a combination of switch + port in an ODL
18  network.  This may represent either a physical network interface or a
19  virtual network interface.
20
21 Affinity address domain: 
22 =======================
23
24 This represents a domain (i.e, set) of one or more addresses. An
25 affinity address may not have a corresponding endpoint on the network,
26 for example, for traffic from a set of external addresses (north-south
27 traffic in a data center), the source IP address domain is not
28 required to map exactly to endpoints or node connectors on the
29 network.
30
31 Affinity address specifies one or more of the following: 
32
33  (a) VLAN + MAC address, or range of MAC addresses.
34
35  (b) Network layer address, IP address, or range of addresses, or
36  prefix/mask representing multiple sources. 
37
38  (c) Transport layer address, which is the transport protocol type and
39  port number.
40
41 Affinity Group: 
42 ==============
43 Affinity group which is an enumeration of one or more items where each
44 item is an affinity endpoint or affinity address domain. An affintiy
45 group may also contain other affinity groups in addition to endpoints
46 and address domains.
47
48 Affinity Link:
49 ============= 
50 Affinity link connects one group (from group) to another (to
51 group). It represents a set of flows that start from the source group
52 and end in the destination group.  An affinity link has attributes
53 (policies) attached to it that represent how these flows must be
54 handled. An affinity link also has directionality associated with
55 it. A bidirectional affinity link is equivalent to two unidirectional
56 affinity links, one in each direction.
57
58 Affinity attribute: 
59 ==================
60 An affinity attribute is assigned to an affinity link. An attribute is
61 one of the following:
62  
63  (a) Path affinity. Path affinities define the type of path required
64  by the application. It may be one of the following types -- latency
65  sensitive for applications that require low latency between their
66  components. Examples include access to block storage and network
67  connections between the application and database tier. Bandwidth
68  sensitive applications include video or audio streaming or bulk data
69  operations desiring high throughput. Isolated paths may be required
70  for applications requiring dedicated paths without sharing or
71  interference from other applications.
72
73      * Isolation. This is an attribute that specifies that the
74        application flow must be assigned an isolated path on the
75        network from flows from other affinity links. While flows
76        within the same affinity link may share one or more network
77        links of the path, flows from different affinity links will be
78        allocated to non-overlapping paths.
79
80     // Isolate flows according to certain constraints. No sharing with any other traffic. 
81     grouping isolate-path {
82         // Average bandwidth requirement for each flow is estimated in Mbps. 
83         leaf average-bandwidth-per-flow {
84             type uint16;
85         }
86         // Peak burst bandwidth, total per affinity link.
87         leaf burst-bandwidth {
88             type uint16;
89         }       
90     }
91
92     * Low latency path. This is an attribute that specifies that the
93       flow is allocated lowest hopcount paths between source and
94       destination.
95
96     // Route through low latency path. May share with other types of traffic. 
97     grouping low-latency-path {
98         // Average bandwidth estimated per flow, in Mbps. 
99         leaf average-bandwidth-per-flow {
100             type uint16;
101         }
102         // Peak burst bandwidth, total per affinity link. 
103         leaf burst-bandwidth {
104             type uint16;
105         }
106     }
107
108     * Bandwidth Optimized. Allocate a path of specified bandwidth to
109       this application.
110    
111     // Optimize this path such that specified bandwidth is available to it. May share 
112     // with other types of traffic. 
113     grouping bandwidth-optimized-path {
114         // Average bandwidth estimated per flow, in Mbps. 
115         leaf average-bandwidth-per-flow {
116             type uint16;
117         }
118         // Peak burst bandwidth, total per affinity link. 
119         leaf burst-bandwidth {
120             type uint16;
121         }
122     }
123
124 Flows from affinity links are interpreted as unicast (point to point)
125 flows by an implementation of this API. 
126
127 The following types of affinity dictate a strict action or rule. 
128
129  (b) Access control affinity. This is an attribute that specifies that
130  the application flow must either be permitted (PERMIT) or denied (DENY). 
131
132  (c) Path redirect affinity. This affinity link must traverse specified
133  chain of waypoint locations, each specified by an IP address or Mac address. 
134
135  (d) Tap affinity. All traffic belonging to this affinity link must be
136  mirrored to specified endpoint location. The endpoint location is
137  carried in the affinity attribute configuration.
138
139  (e) Priority forwarding. All traffic belonging to this affinity link
140  must be assigned a priority level. Setting this priority level
141  provides differential treatment for this traffic relative to other
142  flows on the network. One of five levels of priority must be
143  specified (very low=0, low, normal, high, very high=5). 
144
145 Strict vs. sensitive: 
146 =====================
147 Note that the attribute may be a goal (not strict) -- latency or
148 bandwidth sensitive, or an action (strict) -- forward to this port,
149 tunnel to this endpoint.
150