- Links and flows are represented by vertices in the graph.
- There is a directed edge from a link l to a flow f if and only if flow f is bottlenecked at link l.
- There is a directed edge from a flow f to a link l if and only if flow f traverses link l.

Notation | Description |
---|---|

A | The set of autonomous systems (ASs). |

A_i | An AS in A, for i = 1, ..., |A|. |

P(A_i) = {p_1, ..., p_|P(A_i)|} | The set of active paths found in A_i. These are paths for which there exist 0traffic flowing through them. |

L(A_i) = {l_1, ..., l_|L(A_i)|} | The set of active links found in A_i. These are links for which there exists traffic flowing through them. |

B | The global bottleneck structure graph. The form of bottleneck structure used by the distributed algorithm introduced in this document is the Path Gradient Graph |

B.BW(p) | The bandwidth available to path p according to the global bottleneck structure. This is always the globally correct available bandwidth for path p. |

B(A_i) | The bottleneck substructure of A_i, corresponding to the subgraph of B that includes (1) the vertices corresponding to the paths in P(A_i), (2) the vertices corresponding to the links in L(A_i) and (3) all the edges in B that connect them. If a path p in P(A_i) is bottlenecked at a link not in L(A_i), then B(P, L) includes a virtual link v with capacity equal to B.BW(p) and a directed edge from v to p. |

B(A_i).BW(p) | The bandwidth available to path p according to the bottleneck substructure of A_i. This value is equal to B.BW(p) when the distributed algorithm terminates. |

PL(A_i) | A dictionary mapping every path in P(A_i) with the subset of links in L(A_i) that it traverses. Note that a path p can traverse one or more links not in L(A_i). This reflects the notion of partial information inherent to multi-domain networking environments. That is, A_i may not know all the links traversed by its active paths; in particular, it only knows the subset of links that are in A_i. |

C(A_i) | A dictionary mapping each link in A_i with its capacity (in bps). |

N(A_i) | The set of ASs that are neighbors of A_i. |

PM(A_i)(p) | The current bandwidth available to path p as computed by A_i. This is also known as the path metric of p according to A_i. |

p | PM(A1)(p) | PM(A2)(p) |
---|---|---|

p1 | 8.3 | -- |

p2 | 16.6 | -- |

p3 | 8.3 | -- |

p4 | 16.6 | 16.6 |

p5 | -- | 75 |

p6 | 8.3 | 8.3 |

- Requirement 1: The capability for each ALTO server to compute bottleneck substructures of its own AS.
- Requirement 2: The capability for each ALTO server to communicate with its neighboring ASs.

- Requirement 2.1: ALTO servers managing neighboring ASs need to be reachable to each other.
- Requirement 2.2: The sharing of algorithmic state between ALTO servers requires extending the base ALTO protocol to support server-to-server communication semantics.

- The properties of the Bottleneck Structure Graph do not impose security risks to the ALTO service provider; e.g., by not carrying sensitive information.
- The ALTO server and client have established a reliable trust relationship, for example, operated in the same administrative domain, or managed by business partners with legal contracts and proper authentication and privacy protocols.
- The ALTO server implements protection mechanisms to reduce
information exposure or obfuscate the real
information. Implementations involving reduction or
obfuscation of the Bottleneck Structure information
SHOULD consider reduction/obfuscation mechanisms that can preserve the integrity of ALTO information, for example, by using minimal feasible region compression algorithmsor obfuscation protocols RESA . We note that these obfuscation methods are experimental and their practical applicability to the generic capability provided by this extension is not fully assessed.