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.
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.
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.
21 Affinity address domain:
22 =======================
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
31 Affinity address specifies one or more of the following:
33 (a) VLAN + MAC address, or range of MAC addresses.
35 (b) Network layer address, IP address, or range of addresses, or
36 prefix/mask representing multiple sources.
38 (c) Transport layer address, which is the transport protocol type and
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
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.
60 An affinity attribute is assigned to an affinity link. An attribute is
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.
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.
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 {
86 // Peak burst bandwidth, total per affinity link.
87 leaf burst-bandwidth {
92 * Low latency path. This is an attribute that specifies that the
93 flow is allocated lowest hopcount paths between source and
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 {
102 // Peak burst bandwidth, total per affinity link.
103 leaf burst-bandwidth {
108 * Bandwidth Optimized. Allocate a path of specified bandwidth to
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 {
118 // Peak burst bandwidth, total per affinity link.
119 leaf burst-bandwidth {
124 Flows from affinity links are interpreted as unicast (point to point)
125 flows by an implementation of this API.
127 The following types of affinity dictate a strict action or rule.
129 (b) Access control affinity. This is an attribute that specifies that
130 the application flow must either be permitted (PERMIT) or denied (DENY).
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.
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.
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).
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.