summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2676.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc2676.txt')
-rw-r--r--doc/rfc/rfc2676.txt2803
1 files changed, 2803 insertions, 0 deletions
diff --git a/doc/rfc/rfc2676.txt b/doc/rfc/rfc2676.txt
new file mode 100644
index 0000000..7cd3cce
--- /dev/null
+++ b/doc/rfc/rfc2676.txt
@@ -0,0 +1,2803 @@
+
+
+
+
+
+
+Network Working Group G. Apostolopoulos
+Request for Comments: 2676 D. Williams
+Category: Experimental IBM
+ S. Kamat
+ Lucent
+ R. Guerin
+ UPenn
+ A. Orda
+ Technion
+ T. Przygienda
+ Siara Systems
+ August 1999
+
+
+ QoS Routing Mechanisms and OSPF Extensions
+
+Status of this Memo
+
+ This memo defines an Experimental Protocol for the Internet
+ community. It does not specify an Internet standard of any kind.
+ Discussion and suggestions for improvement are requested.
+ Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+Abstract
+
+ This memo describes extensions to the OSPF [Moy98] protocol to
+ support QoS routes. The focus of this document is on the algorithms
+ used to compute QoS routes and on the necessary modifications to OSPF
+ to support this function, e.g., the information needed, its format,
+ how it is distributed, and how it is used by the QoS path selection
+ process. Aspects related to how QoS routes are established and
+ managed are also briefly discussed. The goal of this document is to
+ identify a framework and possible approaches to allow deployment of
+ QoS routing capabilities with the minimum possible impact to the
+ existing routing infrastructure.
+
+ In addition, experience from an implementation of the proposed
+ extensions in the GateD environment [Con], along with performance
+ measurements is presented.
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 1]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+Table of Contents
+
+ 1. Introduction 3
+ 1.1. Overall Framework . . . . . . . . . . . . . . . . . . . . 3
+ 1.2. Simplifying Assumptions . . . . . . . . . . . . . . . . . 5
+ 2. Path Selection Information and Algorithms 7
+ 2.1. Metrics . . . . . . . . . . . . . . . . . . . . . . . . . 7
+ 2.2. Advertisement of Link State Information . . . . . . . . . 8
+ 2.3. Path Selection . . . . . . . . . . . . . . . . . . . . .10
+ 2.3.1. Path Computation Algorithm . . . . . . . . . . .11
+ 3. OSPF Protocol Extensions 16
+ 3.1. QoS -- Optional Capabilities . . . . . . . . . . . . . .17
+ 3.2. Encoding Resources as Extended TOS . . . . . . . . . . .17
+ 3.2.1. Encoding bandwidth resource . . . . . . . . . . .19
+ 3.2.2. Encoding Delay . . . . . . . . . . . . . . . . .21
+ 3.3. Packet Formats . . . . . . . . . . . . . . . . . . . . .21
+ 3.4. Calculating the Inter-area Routes . . . . . . . . . . . .22
+ 3.5. Open Issues . . . . . . . . . . . . . . . . . . . . . . .22
+ 4. A Reference Implementation based on GateD 22
+ 4.1. The Gate Daemon (GateD) Program . . . . . . . . . . . . .22
+ 4.2. Implementing the QoS Extensions of OSPF . . . . . . . . .23
+ 4.2.1. Design Objectives and Scope . . . . . . . . . . .23
+ 4.2.2. Architecture . . . . . . . . . . . . . . . . . .24
+ 4.3. Major Implementation Issues . . . . . . . . . . . . . . .25
+ 4.4. Bandwidth and Processing Overhead of QoS Routing . . . .29
+ 5. Security Considerations 32
+ A. Pseudocode for the BF Based Pre-Computation Algorithm 33
+ B. On-Demand Dijkstra Algorithm for QoS Path Computation 36
+ C. Precomputation Using Dijkstra Algorithm 39
+ D. Explicit Routing Support 43
+ Endnotes 45
+ References 46
+ Authors' Addresses 48
+ Full Copyright Statement 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 2]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+1. Introduction
+
+ In this document, we describe a set of proposed additions to the OSPF
+ routing protocol (these additions have been implemented on top of the
+ GateD [Con] implementation of OSPF V2 [Moy98]) to support Quality-
+ of-Service (QoS) routing in IP networks. Support for QoS routing can
+ be viewed as consisting of three major components:
+
+ 1. Obtain the information needed to compute QoS paths and select a
+ path capable of meeting the QoS requirements of a given request,
+
+ 2. Establish the path selected to accommodate a new request,
+
+ 3. Maintain the path assigned for use by a given request.
+
+ Although we touch upon aspects related to the last two components,
+ the focus of this document is on the first one. In particular, we
+ discuss the metrics required to support QoS, the extension to the
+ OSPF link state advertisement mechanism to propagate updates of QoS
+ metrics, and the modifications to the path selection to accommodate
+ QoS requests. The goal of the extensions described in this document
+ is to improve performance for QoS flows (likelihood to be routed on a
+ path capable of providing the requested QoS), with minimal impact on
+ the existing OSPF protocol and its current implementation. Given the
+ inherent complexity of QoS routing, achieving this goal obviously
+ implies trading-off "optimality" for "simplicity", but we believe
+ this to be required in order to facilitate deployment of QoS routing
+ capabilities.
+
+ In addition to describing the proposed extensions to the OSPF
+ protocol, this document also reports experimental data based on
+ performance measurements of an implementation done on the GateD
+ platform (see Section 4).
+
+1.1. Overall Framework
+
+ We consider a network (1) that supports both best-effort packets and
+ packets with QoS guarantees. The way in which the network resources
+ are split between the two classes is irrelevant, except for the
+ assumption that each QoS capable router in the network is able to
+ dedicate some of its resources to satisfy the requirements of QoS
+ packets. QoS capable routers are also assumed capable of identifying
+ and advertising resources that remain available to new QoS flows. In
+ addition, we limit ourselves to the case where all the routers
+ involved support the QoS extensions described in this document, i.e.,
+ we do not consider the problem of establishing a route in a
+ heterogeneous environment where some routers are QoS-capable and
+ others are not. Furthermore, in this document, we focus on the case
+
+
+
+Apostolopoulos, et al. Experimental [Page 3]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ of unicast flows, although many of the additions we define are
+ applicable to multicast flows as well.
+
+ We assume that a flow with QoS requirements specifies them in some
+ fashion that is accessible to the routing protocol. For example,
+ this could correspond to the arrival of an RSVP [RZB+97] PATH
+ message, whose TSpec is passed to routing together with the
+ destination address. After processing such a request, the routing
+ protocol returns the path that it deems the most suitable given the
+ flow's requirements. Depending on the scope of the path selection
+ process, this returned path could range from simply identifying the
+ best next hop, i.e., a hop-by-hop path selection model, to specifying
+ all intermediate nodes to the destination, i.e., an explicit route
+ model. The nature of the path being returned impacts the operation
+ of the path selection algorithm as it translates into different
+ requirements for constructing and returning the appropriate path
+ information. However, it does not affect the basic operation of the
+ path selection algorithm (2).
+
+ For simplicity and also because it is the model currently supported
+ in the implementation (see Section 4 for details), in the rest of
+ this document we focus on the hop-by-hop path selection model. The
+ additional modifications required to support an explicit routing
+ model are discussed in appendix D, but are peripheral to the main
+ focus of this document which concentrates on the specific extensions
+ to the OPSF protocol to support computation of QoS routes.
+
+ In addition to the problem of selecting a QoS path and possibly
+ reserving the corresponding resources, one should note that the
+ successful delivery of QoS guarantees requires that the packets of
+ the associated "QoS flow" be forwarded on the selected path. This
+ typically requires the installation of corresponding forwarding state
+ in the router. For example, with RSVP [RZB+97] flows a classifier
+ entry is created based on the filter specs contained in the RESV
+ message. In the case of a Differentiated Service [KNB98] setting,
+ the classifier entry may be based on the destination address (or
+ prefix) and the corresponding value of the DS byte. The mechanisms
+ described in this document are at the control path level and are,
+ therefore, independent of data path mechanisms such as the packet
+ classification method used. Nevertheless, it is important to notice
+ that consistent delivery of QoS guarantees implies stability of the
+ data path. In particular, while it is possible that after a path is
+ first selected, network conditions change and result in the
+ appearance of "better" paths, such changes should be prevented from
+ unnecessarily affecting existing paths. In particular, switching
+ over to a new (and better) path should be limited to specific
+ conditions, e.g., when the initial selection turns out to be
+ inadequate or extremely "expensive". This aspect is beyond the scope
+
+
+
+Apostolopoulos, et al. Experimental [Page 4]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ of QoS routing and belongs to the realm of path management, which is
+ outside the main focus of this document. However, because of its
+ potentially significant impact on the usefulness of QoS routing, we
+ briefly outline a possible approach to path management.
+
+ Avoiding unnecessary changes to QoS paths requires that state
+ information be maintained for each QoS path after it has been
+ selected. This state information is used to track the validity of
+ the path, i.e., is the current path adequate or should QoS routing be
+ queried again to generate a new and potentially better path. We say
+ that a path is "pinned" when its state specifies that QoS routing
+ need not be queried anew, while a path is considered "un-pinned"
+ otherwise. The main issue is then to define how, when, and where
+ path pinning and un-pinning is to take place, and this will typically
+ depend on the mechanism used to request QoS routes. For example,
+ when the RSVP protocol is the mechanism being used, it is desirable
+ that path management be kept as synergetic as possible with the
+ existing RSVP state management. In other words, pinning and un-
+ pinning of paths should be coordinated with RSVP soft states, and
+ structured so as to require minimal changes to RSVP processing rules.
+ A broad RSVP-routing interface that enables this is described in
+ [GKR97]. Use of such an interface in the context of reserving
+ resources along an explicit path with RSVP is discussed in [GLG+97].
+ Details of path management and a means for avoiding loops in case of
+ hop-by-hop path setup can be found in [GKH97], and are not addressed
+ further in this document.
+
+1.2. Simplifying Assumptions
+
+ In order to achieve our goal of minimizing impact to the existing
+ protocol and implementation, we impose certain restrictions on the
+ range of extensions we initially consider to support QoS. The first
+ restriction is on the type of additional (QoS) metrics that will be
+ added to Link State Advertisements (LSAs) for the purpose of
+ distributing metrics updates. Specifically, the extensions to LSAs
+ that we initially consider, include only available bandwidth and
+ delay. In addition, path selection is itself limited to considering
+ only bandwidth requirements. In particular, the path selection
+ algorithm selects paths capable of satisfying the bandwidth
+ requirement of flows, while at the same time trying to minimize the
+ amount of network resources that need to be allocated, i.e., minimize
+ the number of hops used.
+
+ This focus on bandwidth is adequate in most instances, and meant to
+ keep initial complexity at an acceptable level. However, it does not
+ fully capture the complete range of potential QoS requirements. For
+ example, a delay-sensitive flow of an interactive application could
+ be put on a path using a satellite link, if that link provided a
+
+
+
+Apostolopoulos, et al. Experimental [Page 5]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ direct path and had plenty of unused bandwidth. This would clearly
+ be an undesirable choice. Our approach to preventing such poor
+ choices, is to assign delay-sensitive flows to a "policy" that would
+ eliminate from the network all links with high propagation delay,
+ e.g., satellite links, before invoking the path selection algorithm.
+ In general, multiple policies could be used to capture different
+ requirements, each presenting to the path selection algorithm a
+ correspondingly pruned network topology, on which the same algorithm
+ would be used to generate an appropriate path. Alternatively,
+ different algorithms could be used depending on the QoS requirements
+ expressed by an incoming request. Such extensions are beyond the
+ scope of this document, which limits itself to describing the case of
+ a single metric, bandwidth. However, it is worth pointing out that a
+ simple extension to the path selection algorithm proposed in this
+ document allows us to directly account for delay, under certain
+ conditions, when rate-based schedulers are employed, as in the
+ Guaranteed Service proposal [SPG97]; details can be found in [GOW97].
+
+ Another important aspect to ensure that introducing support for QoS
+ routing has the minimal possible impact, is to develop a solution
+ that has the smallest possible computing overhead. Additional
+ computations are unavoidable, but it is desirable to keep the
+ computational cost of QoS routing at a level comparable to that of
+ traditional routing algorithms. One possible approach to achieve
+ this goal, is to allow pre-computation of QoS routes. This is the
+ method that was chosen for the implementation of the QoS extensions
+ to OSPF and is, therefore, the one described in detail in this
+ document. Alternative approaches are briefly reviewed in appendices.
+ However, it should be noted that although several alternative path
+ selection algorithms are possible, the same algorithm should be used
+ consistently within a given routing domain. This requirement may be
+ relaxed when explicit routing is used, as the responsibility for
+ selecting a QoS path lies with a single entity, the origin of the
+ request, which then ensures consistency even if each router uses a
+ different path selection algorithm. Nevertheless, the use of a
+ common path selection algorithm within an AS is recommended, if not
+ necessary, for proper operation.
+
+ A last aspect of concern regarding the introduction of QoS routing,
+ is to control the overhead associated with the additional link state
+ updates caused by more frequent changes to link metrics. The goal is
+ to minimize the amount of additional update traffic without adversely
+ affecting the performance of path selection. In Section 2.2, we
+ present a brief discussion of various alternatives that trade
+ accuracy of link state information for protocol overhead. Potential
+ enhancements to the path selection algorithm, which seek to
+ (directly) account for the inaccuracies in link metrics, are
+ described in [GOW97], while a comprehensive treatment of the subject
+
+
+
+Apostolopoulos, et al. Experimental [Page 6]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ can be found in [LO98, GO99]. In Section 4, we also describe the
+ design choices made in a reference implementation, to allow future
+ extensions and experimentation with different link state update
+ mechanisms.
+
+ The rest of this document is structured as follows. In Section 2, we
+ describe the general design choices and mechanisms we rely on to
+ support QoS request. This includes details on the path selection
+ metrics, link state update extensions, and the path selection
+ algorithm itself. Section 3 focuses on the specific extensions that
+ the OSPF protocol requires, while Section 4 describes their
+ implementation in the GateD platform and also presents some
+ experimental results. Section 5 briefly addresses security issues
+ that the proposed schemes may raise. Finally, several appendices
+ provide additional material of interest, e.g., alternative path
+ selection algorithms and support for explicit routes, but somewhat
+ outside the main focus of this document.
+
+2. Path Selection Information and Algorithms
+
+ This section reviews the basic building blocks of QoS path selection,
+ namely the metrics on the which the routing algorithm operates, the
+ mechanisms used to propagate updates for these metrics, and finally
+ the path selection algorithm itself.
+
+2.1. Metrics
+
+ The process of selecting a path that can satisfy the QoS requirements
+ of a new flow relies on both the knowledge of the flow's requirements
+ and characteristics, and information about the availability of
+ resources in the network. In addition, for purposes of efficiency,
+ it is also important for the algorithm to account for the amount of
+ resources the network has to allocate to support a new flow. In
+ general, the network prefers to select the "cheapest" path among all
+ paths suitable for a new flow, and it may even decide not to accept a
+ new flow for which a feasible path exists, if the cost of the path is
+ deemed too high. Accounting for these aspects involves several
+ metrics on which the path selection process is based. They include:
+
+ - Link available bandwidth: As mentioned earlier, we currently
+ assume that most QoS requirements are derivable from a rate-
+ related quantity, termed "bandwidth." We further assume that
+ associated with each link is a maximal bandwidth value, e.g., the
+ link physical bandwidth or some fraction thereof that has been set
+ aside for QoS flows. Since for a link to be capable of accepting
+ a new flow with given bandwidth requirements, at least that much
+ bandwidth must be still available on the link, the relevant link
+ metric is, therefore, the (current) amount of available (i.e.,
+
+
+
+Apostolopoulos, et al. Experimental [Page 7]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ unallocated) bandwidth. Changes in this metric need to be
+ advertised as part of extended LSAs, so that accurate information
+ is available to the path selection algorithm.
+
+ - Link propagation delay: This quantity is meant to identify high
+ latency links, e.g., satellite links, which may be unsuitable for
+ real-time requests. This quantity also needs to be advertised as
+ part of extended LSAs, although timely dissemination of this
+ information is not critical as this parameter is unlikely to
+ change (significantly) over time. As mentioned earlier, link
+ propagation delay can be used to decide on the pruning of specific
+ links, when selecting a path for a delay sensitive request; also,
+ it can be used to support a related extension, as described in
+ [GOW97].
+
+ - Hop-count: This quantity is used as a measure of the path cost to
+ the network. A path with a smaller number of hops (that can
+ support a requested connection) is typically preferable, since it
+ consumes fewer network resources. As a result, the path selection
+ algorithm will attempt to find the minimum hop path capable of
+ satisfying the requirements of a given request. Note that
+ contrary to bandwidth and propagation delay, hop count is a metric
+ that does not affect LSAs, and it is only used implicitly as part
+ of the path selection algorithm.
+
+2.2. Advertisement of Link State Information
+
+ The new link metrics identified in the previous section need to be
+ advertised across the network, so that each router can compute
+ accurate and consistent QoS routes. It is assumed that each router
+ maintains an updated database of the network topology, including the
+ current state (available bandwidth and propagation delay) of each
+ link. As mentioned before, the distribution of link state (metrics)
+ information is based on extending OSPF mechanisms. The detailed
+ format of those extensions is described in Section 3, but in addition
+ to how link state information is distributed, another important
+ aspect is when such distribution is to take place.
+
+ One option is to mandate periodic updates, where the period of
+ updates is determined based on a tolerable corresponding load on the
+ network and the routers. The main disadvantage of such an approach
+ is that major changes in the bandwidth available on a link could
+ remain unknown for a full period and, therefore, result in many
+ incorrect routing decisions. Ideally, routers should have the most
+ current view of the bandwidth available on all links in the network,
+ so that they can make the most accurate decision of which path to
+ select. Unfortunately, this then calls for very frequent updates,
+ e.g., each time the available bandwidth of a link changes, which is
+
+
+
+Apostolopoulos, et al. Experimental [Page 8]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ neither scalable nor practical. In general, there is a trade-off
+ between the protocol overhead of frequent updates and the accuracy of
+ the network state information that the path selection algorithm
+ depends on. We outline next a few possible link state update
+ policies, which strike a practical compromise.
+
+ The basic idea is to trigger link state advertisements only when
+ there is a significant change in the value of metrics since the last
+ advertisement. The notion of significance of a change can be based
+ on an "absolute" scale or a "relative" one. An absolute scale means
+ partitioning the range of values that a metric can take into
+ equivalence classes and triggering an update whenever the metric
+ changes sufficiently to cross a class boundary (3). A relative
+ scale, on the other hand, triggers updates when the percentage change
+ in the metric value exceeds a predefined threshold. Independent of
+ whether a relative or an absolute change trigger mechanism is used, a
+ periodic trigger constraint can also be added. This constraint can
+ be in the form of a hold-down timer, which is used to force a minimum
+ spacing between consecutive updates. Alternatively, a transmit timer
+ can also be used to ensure the transmission of an update after a
+ certain time has expired. Such a feature can be useful if link state
+ updates advertising bandwidth changes are sent unreliably. The
+ current protocol extensions described in Section 3 as well as the
+ implementation of Section 4 do not consider such an option as metric
+ updates are sent using the standard, and reliable, OSPF flooding
+ mechanism. However, this is clearly an extension worth considering
+ as it can help lower substantially the protocol overhead associated
+ with metrics updates.
+
+ In both the relative and absolute change approaches, the metric value
+ advertised in an LSA can be either the actual or a quantized value.
+ Advertising the actual metric value is more accurate and, therefore,
+ preferable when metrics are frequently updated. On the other hand,
+ when updates are less frequent, e.g., because of a low sensitivity
+ trigger or the use of hold-down timers, advertising quantized values
+ can be of benefit. This is because it can help increase the number
+ of equal cost paths and, therefore, improve robustness to metrics
+ inaccuracies. In general, there is a broad space of possible trade-
+ offs between accuracy and overhead and selecting an appropriate
+ design point is difficult and depends on many parameters (see
+ [AGKT98] for a more detailed discussion of these issues). As a
+ result, in order to help acquire a better understanding of these
+ issues, the implementation described in Section 4 supports a range of
+ options that allow exploration of the available design space. In
+ addition, Section 4 also reports experimental data on the traffic
+ load and processing overhead generated by links state updates for
+ different configurations.
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 9]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+2.3. Path Selection
+
+ There are two major aspects to computing paths for QoS requests. The
+ first is the actual path selection algorithm itself, i.e., which
+ metrics and criteria it relies on. The second is when the algorithm
+ is actually invoked.
+
+ The topology on which the algorithm is run is, as with the standard
+ OSPF path selection, a directed graph where vertices (4) consist of
+ routers and networks (transit vertices) as well as stub networks
+ (non-transit vertices). When computing a path, stub networks are
+ added as a post-processing step, which is essentially similar to what
+ is done with the current OSPF routing protocol. The optimization
+ criteria used by the path selection are reflected in the costs
+ associated with each interface in the topology and how those costs
+ are accounted for in the algorithm itself. As mentioned before, the
+ cost of a path is a function of both its hop count and the amount of
+ available bandwidth. As a result, each interface has associated with
+ it a metric, which corresponds to the amount of bandwidth that
+ remains available on this interface. This metric is combined with
+ hop count information to provide a cost value, whose goal is to pick
+ a path with the minimum possible number of hops among those that can
+ support the requested bandwidth. When several such paths are
+ available, the preference is for the path whose available bandwidth
+ (i.e., the smallest value on any of the links in the path) is
+ maximal. The rationale for the above rule is the following: we
+ focus on feasible paths (as accounted by the available bandwidth
+ metric) that consume a minimal amount of network resources (as
+ accounted by the hop-count metric); and the rule for selecting among
+ these paths is meant to balance load as well as maximize the
+ likelihood that the required bandwidth is indeed available.
+
+ It should be noted that standard routing algorithms are typically
+ single objective optimizations, i.e., they may minimize the hop-
+ count, or maximize the path bandwidth, but not both. Double
+ objective path optimization is a more complex task, and, in general,
+ it is an intractable problem [GJ79]. Nevertheless, because of the
+ specific nature of the two objectives being optimized (bandwidth and
+ hop count), the complexity of the above algorithm is competitive with
+ even that of standard single-objective algorithms. For readers
+ interested in a thorough treatment of the topic, with insights into
+ the connection between the different algorithms, linear algebra and
+ modification of metrics, [Car79] is recommended.
+
+ Before proceeding with a more detailed description of the path
+ selection algorithm itself, we briefly review the available options
+ when it comes to deciding when to invoke the algorithm. The two main
+ options are: 1) to perform on-demand computations, that is, trigger
+
+
+
+Apostolopoulos, et al. Experimental [Page 10]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ a computation for each new request, and 2) to use some form of pre-
+ computation. The on-demand case involves no additional issues in
+ terms of when computations should be triggered, but running the path
+ selection algorithm for each new request can be computationally
+ expensive (see [AT98] for a discussion on this issue). On the other
+ hand, pre-computing paths amortizes the computational cost over
+ multiple requests, but each computation instance is usually more
+ expensive than in the on-demand case (paths are computed to all
+ destinations and for all possible bandwidth requests rather than for
+ a single destination and a given bandwidth request). Furthermore,
+ depending on how often paths are recomputed, the accuracy of the
+ selected paths may be lower. In this document, we primarily focus on
+ the case of pre-computed paths, which is also the only method
+ currently supported in the reference implementation described in
+ Section 4. In this case, clearly, an important issue is when such
+ pre-computation should take place. The two main options we consider
+ are periodic pre-computations and pre-computations after a given (N)
+ number of updates have been received. The former has the benefit of
+ ensuring a strict bound on the computational load associated with
+ pre-computations, while the latter can provide for a more responsive
+ solution (5). Section 4 provides some experimental results comparing
+ the performance and cost of periodic pre-computations for different
+ period values.
+
+2.3.1. Path Computation Algorithm
+
+ This section describes a path selection algorithm, which for a given
+ network topology and link metrics (available bandwidth), pre-computes
+ all possible QoS paths, while maintaining a reasonably low
+ computational complexity. Specifically, the algorithm pre-computes
+ for any destination a minimum hop count path with maximum bandwidth,
+ and has a computational complexity comparable to that of a standard
+ Bellman-Ford shortest path algorithm. The Bellman-Ford (BF) shortest
+ path algorithm is adapted to compute paths of maximum available
+ bandwidth for all hop counts. It is a property of the BF algorithm
+ that, at its h-th iteration, it identifies the optimal (in our
+ context: maximal bandwidth) path between the source and each
+ destination, among paths of at most h hops. In other words, the cost
+ of a path is a function of its available bandwidth, i.e., the
+ smallest available bandwidth on all links of the path, and finding a
+ minimum cost path amounts to finding a maximum bandwidth path.
+ However, because the BF algorithm progresses by increasing hop count,
+ it essentially provides for free the hop count of a path as a second
+ optimization criteria.
+
+ Specifically, at the kth (hop count) iteration of the algorithm, the
+ maximum bandwidth available to all destinations on a path of no more
+ than k hops is recorded (together with the corresponding routing
+
+
+
+Apostolopoulos, et al. Experimental [Page 11]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ information). After the algorithm terminates, this information
+ provides for all destinations and bandwidth requirements, the path
+ with the smallest possible number of hops and sufficient bandwidth to
+ accommodate the new request. Furthermore, this path is also the one
+ with the maximal available bandwidth among all the feasible paths
+ with at most these many hops. This is because for any hop count, the
+ algorithm always selects the one with maximum available bandwidth.
+
+ We now proceed with a more detailed description of the algorithm and
+ the data structure used to record routing information, i.e., the QoS
+ routing table that gets built as the algorithm progresses (the
+ pseudo-code for the algorithm can be found in Appendix A). As
+ mentioned before, the algorithm operates on a directed graph
+ consisting only of transit vertices (routers and networks), with
+ stub-networks subsequently added to the path(s) generated by the
+ algorithm. The metric associated with each edge in the graph is the
+ bandwidth available on the corresponding interface. Let us denote by
+ b(n;m) the available bandwidth on the link from node n to m. The
+ vertex corresponding to the router where the algorithm is being run,
+ i.e., the computing router, is denoted as the "source node" for the
+ purpose of path selection. The algorithm proceeds to pre-compute
+ paths from this source node to all possible destination networks and
+ for all possible bandwidth values. At each (hop count) iteration,
+ intermediate results are recorded in a QoS routing table, which has
+ the following structure:
+
+The QoS routing table:
+
+ - a KxH matrix, where K is the number of destinations (vertices in
+ the graph) and H is the maximal allowed (or possible) number of
+ hops for a path.
+
+ - The (n;h) entry is built during the hth iteration (hop count
+ value) of the algorithm, and consists of two fields:
+
+ * bw: the maximum available bandwidth, on a path of at most h
+ hops between the source node (router) and destination node
+ n;
+
+ * neighbor: this is the routing information associated with
+ the h (or less) hops path to destination node n, whose
+ available bandwidth is bw. In the context of hop-by-hop
+ path selection (6), the neighbor information is simply the
+ identity of the node adjacent to the source node on that
+ path. As a rule, the "neighbor" node must be a router and
+ not a network, the only exception being the case where the
+ network is the destination node (and the selected path is
+ the single edge interconnecting the source to it).
+
+
+
+Apostolopoulos, et al. Experimental [Page 12]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Next, we provide additional details on the operation of the algorithm
+ and how the entries in the routing table are updated as the algorithm
+ proceeds. For simplicity, we first describe the simpler case where
+ all edges count as "hops," and later explain how zero-hop edges are
+ handled. Zero-hop edges arise in the case of transit networks
+ vertices, where only one of the two incoming and outgoing edges
+ should be counted in the hop count computation, as they both
+ correspond to the same physical hop. Accounting for this aspect
+ requires distinguishing between network and router nodes, and the
+ steps involved are detailed later in this section as well as in the
+ pseudo-code of Appendix A.
+
+ When the algorithm is invoked, the routing table is first initialized
+ with all bw fields set to 0 and neighbor fields cleared. Next, the
+ entries in the first column (which corresponds to one-hop paths) of
+ the neighbors of the computing router are modified in the following
+ way: the bw field is set to the value of the available bandwidth on
+ the direct edge from the source. The neighbor field is set to the
+ identity of the neighbor of the computing router, i.e., the next
+ router on the selected path.
+
+ Afterwards, the algorithm iterates for at most H iterations
+ (considering the above initial iteration as the first). The value of
+ H could be implicit, i.e., the diameter of the network or, in order
+ to better control the worst case complexity, it can be set explicitly
+ thereby limiting path lengths to at most H hops. In the latter case,
+ H must be assigned a value larger than the length of the minimum
+ hop-count path to any node in the graph.
+
+ At iteration h, we first copy column h-1 into column h. In
+ addition, the algorithm keeps a list of nodes that changed their bw
+ value in the previous iteration, i.e., during the (h-1)-th iteration.
+ The algorithm then looks at each link (n;m) where n is a node whose
+ bw value changed in the previous iteration, and checks the maximal
+ available bandwidth on an (at most) h-hop path to node m whose final
+ hop is that link. This amounts to taking the minimum between the bw
+ field in entry (n;h-1) and the link metric value b(n;m) kept in the
+ topology database. If this value is higher than the present value of
+ the bw field in entry (m;h), then a better (larger bw value) path has
+ been found for destination m and with at most h hops. The bw field
+ of entry (m;h) is then updated to reflect this new value. In the
+ case of hop-by-hop routing, the neighbor field of entry (m;h) is set
+ to the same value as in entry (n;h-1). This records the identity of
+ the first hop (next hop from the source) on the best path identified
+ thus far for destination m and with h (or less) hops.
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 13]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ As mentioned earlier, extending the above algorithm to handle zero-
+ hop edges is needed due to the possible use of multi-access networks,
+ e.g., T/R, E/N, etc., to interconnect routers. Such entities are
+ also represented by means of a vertex in the OSPF topology, but a
+ network connecting two routers should clearly be considered as a
+ single hop path rather than a two hop path. For example, consider
+ three routers A, B, and C connected over an Ethernet network N, which
+ the OSPF topology represents as in Figure 1.
+
+ A----N----B
+ |
+ |
+ C
+
+
+
+ Figure 1: Zero-Hop Edges
+
+
+ In the example of Figure 1, although there are directed edges in both
+ directions, an edge from the network to any of the three routers must
+ have zero "cost", so that it is not counted twice. It should be
+ noted that when considering such environments in the context of QoS
+ routing, it is assumed that some entity is responsible for
+ determining the "available bandwidth" on the network, e.g., a subnet
+ bandwidth manager. The specification and operation of such an entity
+ is beyond the scope of this document.
+
+ Accommodating zero-hop edges in the context of the path selection
+ algorithm described above is done as follows: At each iteration h
+ (starting with the first), whenever an entry (m;h) is modified, it is
+ checked whether there are zero-cost edges (m;k) emerging from node m.
+ This is the case when m is a transit network. In that case, we
+ attempt to further improve the entry of node k within the current
+ iteration, i.e., entry (k;h) (rather than entry (k;h+1)), since the
+ edge (m;k) should not count as an additional hop. As with the
+ regular operation of the algorithm, this amounts to taking the
+ minimum between the bw field in entry (m;h) and the link metric value
+ b(m;k) kept in the topology database (7). If this value is higher
+ than the present value of the bw field in entry (k;h), then the bw
+ field of entry (k;h) is updated to this new value. In the case of
+ hop-by-hop routing, the neighbor field of entry (k;h) is set, as
+ usual, to the same value as in entry (m;h) (which is also the value
+ in entry (n;h-1)).
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 14]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Note that while for simplicity of the exposition, the issue of equal
+ cost, i.e., same hop count and available bandwidth, is not detailed
+ in the above description, it can be easily supported. It only
+ requires that the neighbor field be expanded to record the list of
+ next (previous) hops, when multiple equal cost paths are present.
+
+Addition of Stub Networks
+
+ As was mentioned earlier, the path selection algorithm is run on a
+ graph whose vertices consist only of routers and transit networks and
+ not stub networks. This is intended to keep the computational
+ complexity as low as possible as stub networks can be added
+ relatively easily through a post-processing step. This second
+ processing step is similar to the one used in the current OSPF
+ routing table calculation [Moy98], with some differences to account
+ for the QoS nature of routes.
+
+ Specifically, after the QoS routing table has been constructed, all
+ the router vertices are again considered. For each router, stub
+ networks whose links appear in the router's link advertisements will
+ be processed to determine QoS routes available to them. The QoS
+ routing information for a stub network is similar to that of routers
+ and transit networks and consists of an extension to the QoS routing
+ table in the form of an additional row. The columns in that new row
+ again correspond to paths of different hop counts, and contain both
+ bandwidth and next hop information. We also assume that an available
+ bandwidth value has been advertised for the stub network. As before,
+ how this value is determined is beyond the scope of this document.
+ The QoS routes for a stub network S are constructed as follows:
+
+ Each entry in the row corresponding to stub network S has its bw(s)
+ field initialized to zero and its neighbor set to null. When a stub
+ network S is found in the link advertisement of router V, the value
+ bw(S,h) in the hth column of the row corresponding to stub network S
+ is updated as follows:
+
+ bw(S,h) = max ( bw(S,h) ; min ( bw(V,h) , b(V,S) ) ),
+
+ where bw(V,h) is the bandwidth value of the corresponding column for
+ the QoS routing table row associated with router V, i.e., the
+ bandwidth available on an h hop path to V, and b(V,S) is the
+ advertised available bandwidth on the link from V to S. The above
+ expression essentially states that the bandwidth of a h hop path to
+ stub network S is updated using a path through router V, only if the
+ minimum of the bandwidth of the h hop path to V and the bandwidth on
+ the link between V and S is larger than the current value.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 15]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Update of the neighbor field proceeds similarly whenever the
+ bandwidth of a path through V is found to be larger than or equal to
+ the current value. If it is larger, then the neighbor field of V in
+ the corresponding column replaces the current neighbor field of S.
+ If it is equal, then the neighbor field of V in the corresponding
+ column is concatenated with the existing field for S, i.e., the
+ current set of neighbors for V is added to the current set of
+ neighbors for S.
+
+Extracting Forwarding Information from Routing Table
+
+ When the QoS paths are precomputed, the forwarding information for a
+ flow with given destination and bandwidth requirement needs to be
+ extracted from the routing table. The case of hop-by-hop routing is
+ simpler than that of explicit routing. This is because, only the
+ next hop needs to be returned instead of an explicit route.
+
+ Specifically, assume a new request to destination, say, d, and with
+ bandwidth requirements B. The index of the destination vertex
+ identifies the row in the QoS routing table that needs to be checked
+ to generate a path. Assuming that the QoS routing table was
+ constructed using the Bellman-Ford algorithm presented later in this
+ section, the search then proceeds by increasing index (hop) count
+ until an entry is found, say at hop count or column index of h, with
+ a value of the bw field which is equal to or larger than B. This
+ entry points to the initial information identifying the selected
+ path.
+
+ If the path computation algorithm stores multiple equal cost paths,
+ then some degree of load balancing can be achieved at the time of
+ path selection. A next hop from the list of equivalent next hops can
+ be chosen in a round robin manner, or randomly with a probability
+ that is weighted by the actual available bandwidth on the local
+ interface. The latter is the method used in the implementation
+ described in Section 4.
+
+ The case of explicit routing is discussed in Appendix D.
+
+3. OSPF Protocol Extensions
+
+ As stated earlier, one of our goals is to limit the additions to the
+ existing OSPF V2 protocol, while still providing the required level
+ of support for QoS based routing. To this end, all of the existing
+ OSPF mechanisms, data structures, advertisements, and data formats
+ remain in place. The purpose of this section of the document is to
+ describe the extensions to the OSPF protocol needed to support QoS as
+ outlined in the previous sections.
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 16]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+3.1. QoS -- Optional Capabilities
+
+ The OSPF Options field is present in OSPF Hello packets, Database
+ Description packets and all LSAs. The Options field enables OSPF
+ routers to support (or not support) optional capabilities, and to
+ communicate their capability level to other OSPF routers. Through
+ this mechanism, routers of differing capabilities can be mixed within
+ an OSPF routing domain. Currently, the OSPF standard [Moy98]
+ specifies the following 5 bits in the options octet:
+
+ +-----------------------------------------------+
+ | * | * | DC | EA | N/P | MC | E | * |
+ +-----------------------------------------------+
+
+ Note that the least significant bit (`T' bit) that was used to
+ indicate TOS routing capability in the older OSPF specification
+ [Moy94] has been removed. However, for backward compatibility with
+ previous versions of the OSPF specification, TOS-specific information
+ can be included in router-LSAs, summary-LSAs and AS-external-LSAs.
+
+ We propose to reclaim the `T' bit as an indicator of router's QoS
+ routing capability and refer to it as the `Q' bit. In fact, QoS
+ capability can be viewed as an extension of the TOS-capabilities and
+ QoS routing as a form of TOS-based routing. A router sets this bit
+ in its hello packets to indicate that it is capable of supporting
+ such routing. When this bit is set in a router or summary links link
+ state advertisement, it means that there are QoS fields to process in
+ the packet. When this bit is set in a network link state
+ advertisement it means that the network described in the
+ advertisement is QoS capable.
+
+ We need to be careful in this approach so as to avoid confusing any
+ old style (i.e., RFC 1583 based) TOS routing implementations. The
+ TOS metric encoding rules of QoS fields introduced further in this
+ section will show how this is achieved. Additionally, unlike the RFC
+ 1583 specification that unadvertised TOS metrics be treated to have
+ same cost as TOS 0, for the purpose of computing QOS routes,
+ unadvertised TOS metrics (on a hop) indicate lack of connectivity for
+ the specific TOS metrics (for that hop).
+
+3.2. Encoding Resources as Extended TOS
+
+ Introduction of QoS should ideally not influence the compatibility
+ with existing OSPFv2 routers. To achieve this goal, necessary
+ extensions in packet formats must be defined in a way that either is
+ understood by OSPFv2 routers, ignored, or in the worst case
+ "gracefully" misinterpreted. Encoding of QoS metrics in the TOS
+ field which fortunately enough is longer in OSPF packets than
+
+
+
+Apostolopoulos, et al. Experimental [Page 17]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ officially defined in [Alm92], allows us to mimic the new facility as
+ extended TOS capability. OSPFv2 routers will either disregard these
+ definitions or consider those unspecified. Specific precautions are
+ taken to prevent careless OSPF implementations from influencing
+ traditional TOS routers (if any) when misinterpreting the QoS
+ extensions.
+
+ For QoS resources, 32 combinations are available through the use of
+ the fifth bit in TOS fields contained in different LSAs. Since
+ [Alm92] defines TOS as being four bits long, this definition never
+ conflicts with existing values. Additionally, to prevent naive
+ implementations that do not take all bits of the TOS field in OSPF
+ packets into considerations, the definitions of the `QoS encodings'
+ is aligned in their semantics with the TOS encoding. Only bandwidth
+ and delay are specified as of today and their values map onto
+ `maximize throughput' and `minimize delay' if the most significant
+ bit is not taken into account. Accordingly, link reliability and
+ jitter could be defined later if necessary.
+
+ OSPF encoding RFC 1349 TOS values
+ ___________________________________________
+ 0 0000 normal service
+ 2 0001 minimize monetary cost
+ 4 0010 maximize reliability
+ 6 0011
+ 8 0100 maximize throughput
+ 10 0101
+ 12 0110
+ 14 0111
+ 16 1000 minimize delay
+ 18 1001
+ 20 1010
+ 22 1011
+ 24 1100
+ 26 1101
+ 28 1110
+ 30 1111
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 18]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ OSPF encoding `QoS encoding values'
+
+ -------------------------------------------
+ 32 10000
+ 34 10001
+ 36 10010
+ 38 10011
+ 40 10100 bandwidth
+ 42 10101
+ 44 10110
+ 46 10111
+ 48 11000 delay
+ 50 11001
+ 52 11010
+ 54 11011
+ 56 11100
+ 58 11101
+ 60 11110
+ 62 11111
+
+ Representing TOS and QoS in OSPF.
+
+3.2.1. Encoding bandwidth resource
+
+ Given the fact that the actual metric field in OSPF packets only
+ provides 16 bits to encode the value used and that links supporting
+ bandwidth ranging into Gbits/s are becoming reality, linear
+ representation of the available resource metric is not feasible. The
+ solution is exponential encoding using appropriately chosen implicit
+ base value and number bits for encoding mantissa and the exponent.
+ Detailed considerations leading to the solution described are not
+ presented here but can be found in [Prz95].
+
+ Given a base of 8, the 3 most significant bits should be reserved for
+ the exponent part and the remaining 13 for the mantissa. This allows
+ a simple comparison for two numbers encoded in this form, which is
+ often useful during implementation.
+
+ The following table shows bandwidth ranges covered when using
+ different exponents and the granularity of possible reservations.
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 19]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ exponent
+ value x range (2^13-1)*8^x step 8^x
+ -------------------------------------------------
+ 0 8,191 1
+ 1 65,528 8
+ 2 524,224 64
+ 3 4,193,792 512
+ 4 33,550,336 4,096
+ 5 268,402,688 32,768
+ 6 2,147,221,504 262,144
+ 7 17,177,772,032 2,097,152
+
+ Ranges of Exponent Values for 13 bits,
+ base 8 Encoding, in Bytes/s
+
+ The bandwidth encoding rule may be summarized as: "represent
+ available bandwidth in 16 bit field as a 3 bit exponent (with assumed
+ base of 8) followed by a 13 bit mantissa as shown below and advertise
+ 2's complement of the above representation."
+
+ 0 8 16
+ | | |
+ -----------------
+ |EXP| MANT |
+ -----------------
+
+ Thus, the above encoding advertises a numeric value that is
+
+ 2^16 -1 -(exponential encoding of the available bandwidth):
+
+ This has the property of advertising a higher numeric value for lower
+ available bandwidth, a notion that is consistent with that of cost.
+
+ Although it may seem slightly pedantic to insist on the property that
+ less bandwidth is expressed higher values, it has, besides
+ consistency, a robustness aspect in it. A router with a poor OSPF
+ implementation could misuse or misunderstand bandwidth metric as
+ normal administrative cost provided to it and compute spanning trees
+ with a "normal" Dijkstra. The effect of a heavily congested link
+ advertising numerically very low cost could be disastrous in such a
+ scenario. It would raise the link's attractiveness for future
+ traffic instead of lowering it. Evidence that such considerations
+ are not speculative, but similar scenarios have been encountered, can
+ be found in [Tan89].
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 20]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Concluding with an example, assume a link with bandwidth of 8 Gbits/s
+ = 1024^3 Bytes/s, its encoding would consist of an exponent value of
+ 6 since 1024^3= 4,096*8^6, which would then have a granularity of 8^6
+ or approx. 260 kBytes/s. The associated binary representation would
+ then be %(110) 0 1000 0000 0000% or 53,248 (8). The bandwidth cost
+ (advertised value) of this link when it is idle, is then the 2's
+ complement of the above binary representation, i.e., %(001) 1 0111
+ 1111 1111% which corresponds to a decimal value of (2^16 - 1) -
+ 53,248 = 12,287. Assuming now a current reservation level of 6;400
+ Mbits/s = 200 * 1024^2, there remains 1;600 Mbits/s of available
+ bandwidth on the link. The encoding of this available bandwidth of
+ 1'600 Mbits/s is 6,400 * 8^5, which corresponds to a granularity of
+ 8^5 or approx. 30 kBytes/s, and has a binary representation of %(101)
+ 1 1001 0000 0000% or decimal value of 47,360. The advertised cost of
+ the link with this load level, is then %(010) 0 0110 1111 1111%, or
+ (2^16-1) -47,360 = 18,175.
+
+ Note that the cost function behaves as it should, i.e., the less
+ bandwidth is available on a link, the higher the cost and the less
+ attractive the link becomes. Furthermore, the targeted property of
+ better granularity for links with less bandwidth available is also
+ achieved. It should, however, be pointed out that the numbers given
+ in the above examples match exactly the resolution of the proposed
+ encoding, which is of course not always the case in practice. This
+ leaves open the question of how to encode available bandwidth values
+ when they do not exactly match the encoding. The standard practice
+ is to round it to the closest number. Because we are ultimately
+ interested in the cost value for which it may be better to be
+ pessimistic than optimistic, we choose to round costs up and,
+ therefore, bandwidth down.
+
+3.2.2. Encoding Delay
+
+ Delay is encoded in microseconds using the same exponential method as
+ described for bandwidth except that the base is defined to be 4
+ instead of 8. Therefore, the maximum delay that can be expressed is
+ (2^13-1) *4^7 i.e., approx. 134 seconds.
+
+3.3. Packet Formats
+
+ Given the extended TOS notation to account for QoS metrics, no
+ changes in packet formats are necessary except for the
+ (re)introduction of T-bit as the Q-bit in the options field. Routers
+ not understanding the Q-bit should either not consider the QoS
+ metrics distributed or consider those as `unknown' TOS.
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 21]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ To support QoS, there are additions to two Link State Advertisements,
+ the Router Links Advertisement and the Summary Links Advertisement.
+ As stated above, a router identifies itself as supporting QoS by
+ setting the Q-bit in the options field of the Link State Header.
+ When a router that supports QoS receives either the Router Links or
+ Summary Links Advertisement, it should parse the QoS metrics encoded
+ in the received Advertisement.
+
+3.4. Calculating the Inter-area Routes
+
+ This document proposes a very limited use of OSPF areas, that is, it
+ is assumed that summary links advertisements exist for all networks
+ in the area. This document does not discuss the problem of providing
+ support for area address ranges and QoS metric aggregation. This is
+ left for further studies.
+
+3.5. Open Issues
+
+ Support for AS External Links, Virtual Links, and incremental updates
+ for summary link advertisements are not addressed in this document
+ and are left for further study. For Virtual Links that do exist, it
+ is assumed for path selection that these links are non-QoS capable
+ even if the router advertises QoS capability. Also, as stated
+ earlier, this document does not address the issue of non-QoS routers
+ within a QoS domain.
+
+4. A Reference Implementation based on GateD
+
+ In this section we report on the experience gained from implementing
+ the pre-computation based approach of Section 2.3.1 in the GateD
+ [Con] environment. First, we briefly introduce the GateD
+ environment, and then present some details on how the QoS extensions
+ were implemented in this environment. Finally, we discuss issues
+ that arose during the implementation effort and present some
+ measurement based results on the overhead that the QoS extensions
+ impose on a QoS capable router and a network of QoS routers. For
+ further details on the implementation study, the reader is referred
+ to [AGK99]. Additional performance evaluation based on simulations
+ can be found in [AGKT98].
+
+4.1. The Gate Daemon (GateD) Program
+
+ GateD [Con] is a popular, public domain (9) program that provides a
+ platform for implementing routing protocols on hosts running the Unix
+ operating system. The distribution of the GateD software also
+ includes implementations of many popular routing protocols, including
+ the OSPF protocol. The GateD environment offers a variety of
+ services useful for implementing a routing protocol. These services
+
+
+
+Apostolopoulos, et al. Experimental [Page 22]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ include a) support for creation and management of timers, b) memory
+ management, c) a simple scheduling mechanism, d) interfaces for
+ manipulating the host's routing table and accessing the network, and
+ e) route management (e.g., route prioritization and route exchange
+ between protocols).
+
+ All GateD processing is done within a single Unix process, and
+ routing protocols are implemented as one or several tasks. A GateD
+ task is a collection of code associated with a Unix socket. The
+ socket is used for the input and output requirements of the task.
+ The main loop of GateD contains, among other operations, a select()
+ call over all task sockets to determine if any read/write or error
+ conditions occurred in any of them. GateD implements the OSPF link
+ state database using a radix tree for fast access to individual link
+ state records. In addition, link state records for neighboring
+ network elements (such as adjacent routers) are linked together at
+ the database level with pointers. GateD maintains a single routing
+ table that contains routes discovered by all the active routing
+ protocols. Multiple routes to the same destination are prioritized
+ according to a set of rules and administrative preferences and only a
+ single route is active per destination. These routes are
+ periodically downloaded in the host's kernel forwarding table.
+
+4.2. Implementing the QoS Extensions of OSPF
+
+4.2.1. Design Objectives and Scope
+
+ One of our major design objectives was to gain substantial experience
+ with a functionally complete QoS routing implementation while
+ containing the overall implementation complexity. Thus, our
+ architecture was modular and aimed at reusing the existing OSPF code
+ with only minimal changes. QoS extensions were localized to specific
+ modules and their interaction with existing OSPF code was kept to a
+ minimum. Besides reducing the development and testing effort, this
+ approach also facilitated experimentation with different alternatives
+ for implementing the QoS specific features such as triggering
+ policies for link state updates and QoS route table computation.
+ Several of the design choices were also influenced by our assumptions
+ regarding the core functionalities that an early prototype
+ implementation of QoS routing must demonstrate. Some of the
+ important assumptions/requirements are:
+
+ - Support for only hop-by-hop routing. This affected the path
+ structure in the QoS routing table as it only needs to store next
+ hop information. As mentioned earlier, the structure can be
+ easily extended to allow construction of explicit routes.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 23]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ - Support for path pre-computation. This required the creation of a
+ separate QoS routing table and its associated path structure, and
+ was motivated by the need to minimize processing overhead.
+
+ - Full integration of the QoS extensions into the GateD framework,
+ including configuration support, error logging, etc. This was
+ required to ensure a fully functional implementation that could be
+ used by others.
+
+ - Ability to allow experimentation with different approaches, e.g.,
+ use of different update and pre-computation triggering policies
+ with support for selection and parameterization of these policies
+ from the GateD configuration file.
+
+ - Decoupling from local traffic and resource management components,
+ i.e., packet classifiers and schedulers and local call admission.
+ This is supported by providing an API between QoS routing and the
+ local traffic management module, which hides all internal details
+ or mechanisms. Future implementations will be able to specify
+ their own mechanisms for this module.
+
+ - Interface to RSVP. The implementation assumes that RSVP [RZB+97]
+ is the mechanism used to request routes with specific QoS
+ requirements. Such requests are communicated through an interface
+ based on [GKR97], and used the RSVP code developed at ISI, version
+ 4.2a2 [RZB+97].
+
+ In addition, our implementation also relies on several of the
+ simplifying assumptions made earlier in this document, namely:
+
+ - The scope of QoS route computation is currently limited to a
+ single area.
+
+ - All routers within the area are assumed to run a QoS enabled
+ version of OSPF, i.e., inter-operability with non-QoS aware
+ versions of the OSPF protocol is not considered.
+
+ - All interfaces on a router are assumed to be QoS capable.
+
+4.2.2. Architecture
+
+ The above design decisions and assumptions resulted in the
+ architecture shown in Figure 2. It consists of three major
+ components: the signaling component (RSVP in our case); the QoS
+ routing component; and the traffic manager. In the rest of this
+ section we concentrate on the structure and operation of the QoS
+ routing component. As can be seen in Figure 2, the QoS routing
+ extensions are further divided into the following modules:
+
+
+
+Apostolopoulos, et al. Experimental [Page 24]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ - Update trigger module determines when to advertise local link
+ state updates. This module implements a variety of triggering
+ policies: periodic, threshold based triggering, and class based
+ triggering. This module also implements a hold-down timer that
+ enforces minimum spacing between two consecutive update
+ triggerings from the same node.
+
+ - Pre-computation trigger module determines when to perform QoS path
+ pre-computation. So far, this module implements only periodic
+ pre-computation triggering.
+
+ - Path pre-computation module computes the QoS routing table based
+ on the QoS specific link state information as described in Section
+ 2.3.1.
+
+ - Path selection and management module selects a path for a request
+ with particular QoS requirements, and manages it once selected,
+ i.e., reacts to link or reservation failures. Path selection is
+ performed as described in Section 2.3.1. Path management
+ functionality is not currently supported.
+
+ - QoS routing table module implements the QoS specific routing
+ table, which is maintained independently of the other GateD
+ routing tables.
+
+ - Tspec mapping module maps request requirements expressed in the
+ form of RSVP Tspecs and Rspecs into the bandwidth requirements
+ that QoS routing uses.
+
+4.3. Major Implementation Issues
+
+ Mapping the above design to the framework of the GateD implementation
+ of OSPF led to a number of issues and design decisions. These issues
+ mainly fell under two categories: a) interoperation of the QoS
+ extensions with pre-existing similar OSPF mechanisms, and b)
+ structure, placement, and organization of the QoS routing table.
+ Next, we briefly discuss these issues and justify the resulting
+ design decisions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 25]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ +--------------------------------------------------+
+ | +-----------------------------+ |
+ | | QoS Route Table Computation | |
+ | +-----------------------------+ |
+ | | | |
+ | V | |
+ | +-----------------+ | |
+ +-------------->| QoS Route Table | | |
+ | | +-----------------+ | |
+ | | | |
+ | | +----------------------+ +---------------+ |
+ | | | Core OSPF Functions | | Precomputation| |
+ | | | + | | Trigger | |
+ | | | (Enhanced) Topology | +---------------+ |
+ | | | Data Base | | |
+ | | +----------------------+ | |
+ | | | | | |
+ | | | +----------------------------+ |
+ | | | | Receive and update QoS-LSA | |
+ | | | +----------------------------+ |
+ | | | | |
+ | | | +----------------+ |
+ | | | | Local Interface| |
+ | | | | Status Monitor | |
+ | | | +----------------+ |
++----------------+ | | | |
+| Path Selection | | +--------------+ +----------------+ |
+| & Management | | | Build and | | Link State | |
++----------------+ | | Send QoS-LSA |----------| Update Trigger | |
+ | | +--------------+ +----------------+ |
++----------------+ | | |
+| QoS Parameter | | | |
+| Mapping | | OSPF with QoS Routing Extensions | |
+|----------------+ +-------------------------------------------|------+
+ | |
++----------------+ +----------+
+| QoS Route | | Local |
+| Request Client |<---------------------------------------->| Resource |
+| (e.g. RSVP) | | Manager |
++----------------+ +----------+
+
+
+
+ Figure 2: The software architecture
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 26]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ The ability to trigger link state updates in response to changes in
+ bandwidth availability on interfaces is an essential component of the
+ QoS extensions. Mechanisms for triggering these updates and
+ controlling their rate have been mentioned in Section 2.2. In
+ addition, OSPF implements its own mechanism for triggering link state
+ updates as well as its own hold down timer, which may be incompatible
+ with what is used for the QoS link state updates. We handle such
+ potential conflicts as follows. First, since OSPF triggers updates
+ on a periodic basis with low frequency, we expect these updates to be
+ only a small part of the total volume of updates generated. As a
+ result, we chose to maintain the periodic update triggering of OSPF.
+ Resolving conflicts in the settings of the different hold down timer
+ settings requires more care. In particular, it is important to
+ ensure that the existing OSPF hold down timer does not interfere with
+ QoS updates. One option is to disable the existing OSPF timer, but
+ protection against transient overloads calls for some hold down
+ timer, albeit with a small value. As a result, the existing OSPF
+ hold down timer was kept, but reduced its value to 1 second. This
+ value is low enough (actually is the lowest possible, since GateD
+ timers have a maximum resolution of 1 second) so that it does not
+ interfere with the generation of the QoS link state updates, which
+ will actually often have hold down timers of their own with higher
+ values. An additional complexity is that the triggering of QoS link
+ state updates needs to be made aware of updates performed by OSPF
+ itself. This is necessary, as regular OSPF updates also carry
+ bandwidth information, and this needs to be considered by QoS updates
+ to properly determine when to trigger a new link state update.
+
+ Another existing OSPF mechanism that has the potential to interfere
+ with the extensions needed for QoS routing, is the support for
+ delayed acknowledgments that allows aggregation of acknowledgments
+ for multiple LSAs. Since link state updates are maintained in
+ retransmission queues until acknowledged, excessive delay in the
+ generation of the acknowledgement combined with the increased rates
+ of QoS updates may result in overflows of the retransmission queues.
+ To avoid these potential overflows, this mechanism was bypassed
+ altogether and LSAs received from neighboring routers were
+ immediately acknowledged. Another approach which was considered but
+ not implemented, was to make QoS LSAs unreliable, i.e., eliminate
+ their acknowledgments, so as to avoid any potential interference.
+ Making QoS LSAs unreliable would be a reasonable design choice
+ because of their higher frequency compared to the regular LSAs and
+ the reduced impact that the loss of a QoS LSA has on the protocol
+ operation. Note that the loss of a QoS LSA does not interfere with
+ the base operation of OSPF, and only transiently reduces the quality
+ of paths discovered by QoS routing.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 27]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ The structure and placement of the QoS routing table also raises some
+ interesting implementation issues. Pre-computed paths are placed
+ into a QoS routing table. This table is implemented as a set of path
+ structures, one for each destination, which contain all the available
+ paths to this destination. In order to be able to efficiently locate
+ individual path structures, an access structure is needed. In order
+ to minimize the develpement effort, the radix tree structure used for
+ the regular GateD routing tables was reused. In addition, the QoS
+ routing table was kept independent of the GateD routing tables to
+ conform to the design goal of localizing changes and minimizing the
+ impact on the existing OSPF code. An additional reason for
+ maintaining the QoS routing separate and self-contained is that it is
+ re-computed under conditions that are different from those used for
+ the regular routing tables.
+
+ Furthermore, since the QoS routing table is re-built frequently, it
+ must be organized so that its computation is efficient. A common
+ operation during the computation of the QoS routing table is mapping
+ a link state database entry to the corresponding path structure. In
+ order to make this operation efficient, the link state database
+ entries were extended to contain a pointer to the corresponding path
+ structure. In addition, when a new QoS routing table is to be
+ computed, the previous one must be de-allocated. This is
+ accomplished by traversing the radix tree in-order, and de-allocating
+ each node in the tree. This full de-allocation of the QoS routing
+ table is potentially wasteful, especially since memory allocation and
+ de-allocation is an expensive operation. Furthermore, because path
+ pre-computations are typically not triggered by changes in topology,
+ the set of destinations will usually remain the same and correspond
+ to an unchanged radix tree. A natural optimization would then be to
+ de-allocate only the path structures and maintain the radix tree. A
+ further enhancement would be to maintain the path structures as well,
+ and attempt to incrementally update them only when required.
+ However, despite the potential gains, these optimizations have not
+ been included in the initial implementation. The main reason is that
+ they involve subtle and numerous checks to ensure the integrity of
+ the overall data structure at all times, e.g., correctly remove
+ failed destinations from the radix tree and update the tree
+ accordingly.
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 28]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+4.4. Bandwidth and Processing Overhead of QoS Routing
+
+ After completing the implementation outlined in the previous
+ sections, it was possible to perform an experimental study of the
+ cost and nature of the overhead of the QoS routing extensions
+ proposed in this document. In particular, using a simple setup
+ consisting of two interconnected routers, it is possible to measure
+ the cost of individual QoS routing related operations. These
+ operations are: a) computation of the QoS routing table, b)
+ selection of a path from the QoS routing table, c) generation of a
+ link state update, and d) reception of a link state update. Note
+ that the last two operations are not really specific to QoS routing
+ since regular OSPF also performs them. Nevertheless, we expect the
+ more sensitive update triggering mechanisms required for effective
+ QoS routing to result in increased number of updates, making the cost
+ of processing updates an important component of the QoS routing
+ overhead. An additional cost dimension is the memory required for
+ storing the QoS routing table. Scaling of the above costs with
+ increasing sizes of the topology database was investigated by
+ artificially populating the topology databases of the routers under
+ measurement.
+
+ Table 1 shows how the measured costs depend on the size of the
+ topology. The topology used in the measurements was built by
+ replicating a basic building block consisting of four routers
+ connected with transit networks in a rectangular arrangement. The
+ details of the topology and the measurements can be found in [AGK99].
+ The system running the GateD software was an IBM IntelliStation Z Pro
+ with a Pentium Pro processor at 200 MHz, 64 MBytes or real memory,
+ running FreeBSD 2.2.5-RELEASE and GateD 4. From the results of Table
+ 1, one can observe that the cost of path pre-computation is not much
+ higher than that of the regular SPF computation. However, path pre-
+ computation may need to be performed much more often than the SPF
+ computation, and this can potentially lead to higher processing
+ costs. This issue was investigated in a set of subsequent
+ experiments, that are described later in this section. The other
+ cost components reported in Table 1 include memory, and it can be
+ seen that the QoS routing table requires roughly 80% more memory than
+ the regular routing table. Finally, the cost of selecting a path is
+ found to be very small compared to the path pre-computation times.
+ As expected, all the measured quantities increase as the size of the
+ topology increases. In particular, the storage requirements and the
+ processing costs for both SPF computation and QoS path pre-
+ computation scale almost linearly with the network size.
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 29]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+________________________________________________________________________
+|Link_state_database_size_______|_25_|__49_|__81__|__121_|__169_|__225_|
+|Regular_SPF_time_(microsec)____|215_|_440_|_747__|_1158_|_1621_|_2187_|
+|Pre-computation_time_(microsec)|736_|_1622|_2883_|_4602_|_6617_|_9265_|
+|SPF_routing_table_size_(bytes)_|2608|_4984|_8152_|_12112|_16864|_22408|
+|QoS_routing_table_size_(bytes)_|3924|_7952|_13148|_19736|_27676|_36796|
+|Path_Selection_time_(microsec)_|_.7_|_1.6_|__2.8_|__4.6_|__6.6_|__9.2_|
+
+ Table 1: Stand alone QoS routing costs
+
+ In addition to the stand alone costs reported in Table 1, it is
+ important to assess the actual operational load induced by QoS
+ routing in the context of a large network. Since it is not practical
+ to reproduce a large scale network in a lab setting, the approach
+ used was to combine simulation and measurements. Specifically, a
+ simulation was used to obtain a time stamped trace of QoS routing
+ related events that occur in a given router in a large scale network.
+ The trace was then used to artificially induce similar load
+ conditions on a real router and its adjacent links. In particular,
+ it was used to measure the processing load at the router and
+ bandwidth usage that could be attributed to QoS updates. A more
+ complete discussion of the measurement method and related
+ considerations can be found in [AGK99].
+
+ The use of a simulation further allows the use of different
+ configurations, where network topology is varied together with other
+ QoS parameters such as a) period of pre-computation, and b) threshold
+ for triggering link state updates. The results reported here were
+ derived using two types of topologies. One based on a regular but
+ artificial 8x8 mesh network, and another (isp) which has been used in
+ several previous studies [AGKT98, AT98] and that approximates the
+ network of a nation-wide ISP. As far as pre-computation periods are
+ concerned, three values of 1, 5 and 50 seconds were chosen, and for
+ the triggering of link state update thresholds of 10% and 80% were
+ used. These values were selected as they cover a wide range in terms
+ of precision of pre-computed paths and accuracy of the link state
+ information available at the routers. Also note that 1 second is the
+ smallest pre-computation period allowed by GateD.
+
+ Table 2 provides results on the processing load at the router driven
+ by the simulation trace, for the two topologies and different
+ combinations of QoS parameters, i.e., pre-computation period and
+ threshold for triggering link state updates. Table 3 gives the
+ bandwidth consumption of QoS updates on the links adjacent to the
+ router.
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 30]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ ________________________________________________________________
+ |_____________________|_________Pre-computation_Period_________|
+ |Link_state_threshold_|___1_sec____|____5_sec____|____50_sec___|
+ |_________10%_________|.45%_(1.6%)_|__.29%_(2%)__|__.17%_(3%)__|
+ |_________80%_________|.16%_(2.4%)_|__.04%_(3%)__|_.02%_(3.8%)_|
+
+ isp
+
+ ________________________________________________________________
+ |_________10%_________|3.37%_(2.1%)|_2.23%_(3.3%)|_1.78%_(7.7%)|
+ |_________80%_________|1.54%_(5.4%)|_.42%_(6.6%)_|_.14%_(10.4%)|
+
+ 8x8 mesh
+
+ Table 2: Router processing load and (bandwidth blocking).
+
+ In Table 2, processing load is expressed as the percentage of the
+ total CPU resources that are consumed by GateD processing. The same
+ table also shows the routing performance that is achieved for each
+ combination of QoS parameters, so that comparison of the different
+ processing cost/routing performance trade-offs can be made. Routing
+ performance is measured using the bandwidth blocking ratio, defined
+ as the sum of requested bandwidth of the requests that were rejected
+ over the total offered bandwidth. As can be seen from Table 2,
+ processing load is low even when the QoS routing table is recomputed
+ every second, and LSAs are generated every time the available
+ bandwidth on a link changes by more than 10% of the last advertised
+ value. This seems to indicate that given today's processor
+ technology, QoS routing should not be viewed as a costly enhancement,
+ at least not in terms of its processing requirements. Another
+ general observation is that while network size has obviously an
+ impact, it does not seem to drastically affect the relative influence
+ of the different parameters. In particular, despite the differences
+ that exist between the isp and mesh topologies, changing the pre-
+ computation period or the update threshold translates into
+ essentially similar relative changes.
+
+ Similar conclusions can be drawn for the update traffic shown in
+ Table 3. In all cases, this traffic is only a small fraction of the
+ link's capacity. Clearly, both the router load and the link
+ bandwidth consumption depend on the router and link that was the
+ target of the measurements and will vary for different choices. The
+ results shown here are meant to be indicative, and a more complete
+ discussion can be found in [AGK99].
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 31]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ _______________________________________
+ |_Link_state_threshold_|_______________|
+ |_________10%__________|3112_bytes/sec_|
+ |_________80%__________|177_bytes/sec__|
+
+ isp
+ ________________________________________
+ |_________10%__________|15438_bytes/sec_|
+ |_________80%__________|1053_bytes/sec__|
+
+ 8x8 mesh
+
+ Table 3: Link state update traffic
+
+ Summarizing, by carrying out the implementation of the proposed QoS
+ routing extensions to OSPF we demonstrated that such extensions are
+ fairly straightforward to implement. Furthermore, by measuring the
+ performance of the real system we were able to demonstrate that the
+ overheads associated with QoS routing are not excessive, and are
+ definitely within the capabilities of modern processor and
+ workstation technology.
+
+5. Security Considerations
+
+ The QoS extensions proposed in this document do not raise any
+ security considerations that are in addition to the ones associated
+ with regular OSPF. The security considerations of OSPF are presented
+ in [Moy98]. However, it should be noted that this document assumes
+ the availability of some entity responsible for assessing the
+ legitimacy of QoS requests. For example, when the protocol used for
+ initiating QoS requests is the RSVP protocol, this capability can be
+ provided through the use of RSVP Policy Decision Points and Policy
+ Enforcement Points as described in [YPG97]. Similarly, a policy
+ server enforcing the acceptability of QoS requests by implementing
+ decisions based on the rules and languages of [RMK+98], would also be
+ capable of providing the desired functionality.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 32]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+APPENDICES
+
+A. Pseudocode for the BF Based Pre-Computation Algorithm
+
+ Note: The pseudocode below assumes a hop-by-hop forwarding approach
+ in updating the neighbor field. The modifications needed to support
+ explicit route construction are straightforward. The pseudocode also
+ does not handle equal cost multi-paths for simplicity, but the
+ modification needed to add this support are straightforward.
+
+Input:
+ V = set of vertices, labeled by integers 1 to N.
+ L = set of edges, labeled by ordered pairs (n,m) of vertex labels.
+ s = source vertex (at which the algorithm is executed).
+ For all edges (n,m) in L:
+ * b(n,m) = available bandwidth (according to last received update)
+ on interface associated with the edge between vertices n and m.
+ * If(n,m) outgoing interface corresponding to edge (n,m) when n is
+ a router.
+ H = maximum hop-count (at most the graph diameter).
+
+Type:
+ tab_entry: record
+ bw = integer,
+ neighbor = integer 1..N.
+
+Variables:
+ TT[1..N, 1..H]: topology table, whose (n,h) entry is a tab_entry
+ record, such that:
+ TT[n,h].bw is the maximum available bandwidth (as
+ known thus far) on a path of at most h hops
+ between vertices s and n,
+ TT[n,h].neighbor is the first hop on that path (a
+ neighbor of s). It is either a router or the
+ destination n.
+
+ S_prev: list of vertices that changed a bw value in the TT table
+ in the previous iteration.
+ S_new: list of vertices that changed a bw value (in the TT table
+ etc.) in the current iteration.
+
+The Algorithm:
+
+begin;
+
+ for n:=1 to N do /* initialization */
+ begin;
+ TT[n,0].bw := 0;
+
+
+
+Apostolopoulos, et al. Experimental [Page 33]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ TT[n,0].neighbor := null
+ TT[n,1].bw := 0;
+ TT[n,1].neighbor := null
+ end;
+ TT[s,0].bw := infinity;
+
+ reset S_prev;
+ for all neighbors n of s do
+ begin;
+ TT[n,1].bw := max( TT[n,1].bw, b[s,n]);
+ if (TT[n,1].bw = b[s,n]) then TT[n,1].neighbor := If(s,n);
+ /* need to make sure we are picking the maximum */
+ /* bandwidth path for routers that can be reached */
+ /* through both networks and point-to-point links */
+ if (n is a router) then
+ S_prev := S_prev union {n}
+ /* only a router is added to S_prev, */
+ /* if it is not already included in S_prev */
+ else /* n is a network: */
+ /* proceed with network--router edges, without */
+ /* counting another hop */
+ for all (n,k) in L, k <> s, do
+ /* i.e., for all other neighboring routers of n */
+ begin;
+ TT[k,1].bw := max( min( TT[n,1].bw, b[n,k]), TT[k,1].bw );
+ /* In case k could be reached through another path */
+ /* (a point-to-point link or another network) with */
+ /* more bandwidth, we do not want to update TT[k,1].bw */
+ if (min( TT[n,1].bw, b[n,k]) = TT[k,1].bw )
+ /* If we have updated TT[k,1].bw by going through */
+ /* network n */
+ then TT[k,1].neighbor := If(s,n);
+ /* neighbor is interface to network n */
+ if ( {k} not in S_prev) then S_prev := S_prev union {k}
+ /* only routers are added to S_prev, but we again need */
+ /* to check they are not already included in S_prev */
+ end
+ end;
+
+
+ for h:=2 to H do /* consider all possible number of hops */
+ begin;
+ reset S_new;
+ for all vertices m in V do
+ begin;
+ TT[m,h].bw := TT[m,h-1].bw;
+ TT[m,h].neighbor := TT[m,h-1].neighbor
+ end;
+
+
+
+Apostolopoulos, et al. Experimental [Page 34]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ for all vertices n in S_prev do
+ /* as shall become evident, S_prev contains only routers */
+ begin;
+ for all edges (n,m) in L do
+ if min( TT[n,h-1].bw, b[n,m]) > TT[m,h].bw then
+ begin;
+ TT[m,h].bw := min( TT[n,h-1].bw, b[n,m]);
+ TT[m,h].neighbor := TT[n,h-1].neighbor;
+ if m is a router then S_new := S_new union {m}
+ /* only routers are added to S_new */
+ else /* m is a network: */
+ /* proceed with network--router edges, without counting */
+ /* them as another hop */
+ for all (m,k) in L, k <> n,
+ /* i.e., for all other neighboring routers of m */
+ if min( TT[m,h].bw, b[m,k]) > TT[k,h].bw then
+ begin;
+ /* Note: still counting it as the h-th hop, as (m,k) is */
+ /* a network--router edge */
+ TT[k,h].bw := min( TT[m,h].bw, b[m,k]);
+ TT[k,h].neighbor := TT[m,h].neighbor;
+ S_new := S_new union {k}
+ /* only routers are added to S_new */
+ end
+ end
+ end;
+ S_prev := S_new;
+ /* the two lists can be handled by a toggle bit */
+ if S_prev=null then h=H+1 /* if no changes then exit */
+ end;
+
+end.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 35]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+B. On-Demand Dijkstra Algorithm for QoS Path Computation
+
+ In the main text, we described an algorithm that allows pre-
+ computation of QoS routes. However, it may be feasible in some
+ instances, e.g., limited number of requests for QoS routes, to
+ instead perform such computations on-demand, i.e., upon receipt of a
+ request for a QoS route. The benefit of such an approach is that
+ depending on how often recomputation of pre-computed routes is
+ triggered, on-demand route computation can yield better routes by
+ using the most recent link metrics available. Another benefit of
+ on-demand path computation is the associated storage saving, i.e.,
+ there is no need for a QoS routing table. This is essentially the
+ standard trade-off between memory and processing cycles.
+
+ In this section, we briefly describe how a standard Dijkstra
+ algorithm can, for a given destination and bandwidth requirement,
+ generate a minimum hop path that can accommodate the required
+ bandwidth and also has maximum bandwidth. Because the Dijkstra
+ algorithm is already used in the current OSPF route computation, only
+ differences from the standard algorithm are described. Also, while
+ for simplicity we do not consider here zero-hop edges, the
+ modification required for supporting them is straightforward.
+
+ The algorithm essentially performs a minimum hop path computation, on
+ a graph from which all edges, whose available bandwidth is less than
+ that requested by the flow triggering the computation, have been
+ removed. This can be performed either through a pre-processing step,
+ or while running the algorithm by checking the available bandwidth
+ value for any edge that is being considered (see the pseudocode that
+ follows). Another modification to a standard Dijkstra based minimum
+ hop count path computation, is that the list of equal cost next
+ (previous) hops which is maintained as the algorithm proceeds, needs
+ to be sorted according to available bandwidth. This is to allow
+ selection of the minimum hop path with maximum available bandwidth.
+ Alternatively, the algorithm could also be modified to, at each step,
+ only keep among equal hop count paths the one with maximum available
+ bandwidth. This would essentially amount to considering a cost that
+ is function of both hop count and available bandwidth.
+
+ Note: The pseudocode below assumes a hop-by-hop forwarding approach
+ in updating the neighbor field. Addition of routes to stub networks
+ is done in a second phase as usual. The modifications needed to
+ support explicit route construction are straightforward. The
+ pseudocode also does not handle equal cost multi-paths for
+ simplicity, but the modifications needed to add this support are also
+ easily done.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 36]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+Input:
+ V = set of vertices, labeled by integers 1 to N.
+ L = set of edges, labeled by ordered pairs (n,m) of vertex labels.
+ s = source vertex (at which the algorithm is executed).
+ For all edges (n,m) in L:
+ * b(n,m) = available bandwidth (according to last received update)
+ on interface associated with the edge between vertices n and m.
+ * If(n,m) = outgoing interface corresponding to edge (n,m) when n is
+ a router.
+ d = destination vertex.
+ B = requested bandwidth for the flow served.
+
+Type:
+ tab_entry: record
+ hops = integer,
+ neighbor = integer 1..N,
+ ontree = boolean.
+
+Variables:
+ TT[1..N]: topology table, whose (n) entry is a tab_entry
+ record, such that:
+ TT[n].bw is the available bandwidth (as known
+ thus far) on a shortest-path between
+ vertices s and n,
+ TT[n].neighbor is the first hop on that path (a
+ neighbor of s). It is either a router or the
+ destination n.
+ S: list of candidate vertices;
+ v: vertex under consideration;
+
+The Algorithm:
+
+begin;
+ for n:=1 to N do /* initialization */
+ begin;
+ TT[n].hops := infinity;
+ TT[n].neighbor := null;
+ TT[n].ontree := FALSE;
+ end;
+ TT[s].hops := 0;
+
+ reset S;
+ v:= s;
+ while v <> d do
+ begin;
+ TT[v].ontree := TRUE;
+ for all edges (v,m) in L and b(v,m) >= B do
+ begin;
+
+
+
+Apostolopoulos, et al. Experimental [Page 37]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ if m is a router
+ begin;
+ if not TT[m].ontree then
+ begin;
+ /* bandwidth must be fulfilled since all links >= B */
+ if TT[m].hops > TT[v].hops + 1 then
+ begin
+ S := S union { m };
+ TT[m].hops := TT[v].hops + 1;
+ TT[m].neighbor := v;
+ end;
+ end;
+ end;
+ else /* must be a network, iterate over all attached routers */
+ begin; /* each network -- router edge treated as zero hop edge */
+ for all (m,k) in L, k <> v,
+ /* i.e., for all other neighboring routers of m */
+ if not TT[k].ontree and b(m,k) >= B then
+ begin;
+ if TT[k].hops > TT[v].hops then
+ begin;
+ S := S union { k };
+ TT[k].hops := TT[v].hops;
+ TT[k].neighbor := v;
+ end;
+ end;
+ end;
+ end; /* of all edges from the vertex under consideration */
+
+ if S is empty then
+ begin;
+ v=d; /* which will end the algorithm */
+ end;
+ else
+ begin;
+ v := first element of S;
+ S := S - {v}; /* remove and store the candidate to consider */
+ end;
+ end; /* from processing of the candidate list */
+end.
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 38]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+C. Precomputation Using Dijkstra Algorithm
+
+ This appendix outlines a Dijkstra-based algorithm that allows pre-
+ computation of QoS routes for all destinations and bandwidth values.
+ The benefit of using a Dijkstra-based algorithm is a greater synergy
+ with existing OSPF implementations. The solution to compute all
+ "best" paths is to consecutively compute shortest path spanning trees
+ starting from a complete graph and removing links with less bandwidth
+ than the threshold used in the previous computation. This yields
+ paths with possibly better bandwidth but of course more hops.
+ Despite the large number of Dijkstra computations involved, several
+ optimizations such as incremental spanning tree computation can be
+ used and allow for efficient implementations in terms of complexity
+ as well as storage since the structure of computed paths leans itself
+ towards path compression [ST83]. Details including measurements and
+ applicability studies can be found in [Prz95] and [BP95].
+
+ A variation of this theme is to trade the "accuracy" of the pre-
+ computed paths, (i.e., the paths being generated may be of a larger
+ hop count than needed) for the benefit of using a modified version of
+ Dijkstra shortest path algorithm and also saving on some
+ computations. This loss in accuracy comes from the need to rely on
+ quantized bandwidth values, which are used when computing a minimum
+ hop count path. In other words, the range of possible bandwidth
+ values that can be requested by a new flow is mapped into a fixed
+ number of quantized values, and minimum hop count paths are generated
+ for each quantized value. For example, one could assume that
+ bandwidth values are quantized as low, medium, and high, and minimum
+ hop count paths are computed for each of these three values. A new
+ flow is then assigned to the minimum hop path that can carry the
+ smallest quantized value, i.e., low, medium, or high, larger than or
+ equal to what it requested. We restrict our discussion here to this
+ "quantized" version of the algorithm.
+
+ Here too, we discuss the elementary case where all edges count as
+ "hops", and note that the modification required for supporting zero-
+ hop edges is straightforward.
+
+ As with the BF algorithm, the algorithm relies on a routing table
+ that gets built as the algorithm progresses. The structure of the
+ routing table is as follows:
+
+The QoS routing table:
+
+ - a K x Q matrix, where K is the number of vertices and Q is the
+ number of quantized bandwidth values.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 39]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ - The (n;q) entry contains information that identifies the minimum
+ hop count path to destination n, which is capable of accommodating
+ a bandwidth request of at least bw[q] (the qth quantized bandwidth
+ value). It consists of two fields:
+
+ * hops: the minimal number of hops on a path between the source
+ node and destination n, which can accommodate a request of at
+ least bw[q] units of bandwidth.
+
+ * neighbor: this is the routing information associated with the
+ minimum hop count path to destination node n, whose available
+ bandwidth is at least bw[q]. With a hop-by-hop routing
+ approach, the neighbor information is simply the identity of
+ the node adjacent to the source node on that path.
+
+ The algorithm operates again on a directed graph where vertices
+ correspond to routers and transit networks. The metric associated
+ with each edge in the graph is as before the bandwidth available on
+ the corresponding interface, where b(n;m) is the available bandwidth
+ on the edge between vertices n and m. The vertex corresponding to
+ the router where the algorithm is being run is selected as the source
+ node for the purpose of path selection, and the algorithm proceeds to
+ compute paths to all other nodes (destinations).
+
+ Starting with the highest quantization index, Q, the algorithm
+ considers the indices consecutively, in decreasing order. For each
+ index q, the algorithm deletes from the original network topology all
+ links (n;m) for which b(n;m) < bw[q], and then runs on the remaining
+ topology a Dijkstra-based minimum hop count algorithm (10) between
+ the source node and all other nodes (vertices) in the graph. Note
+ that as with the Dijkstra used for on-demand path computation, the
+ elimination of links such that b(n;m) < bw[q] could also be performed
+ while running the algorithm.
+
+ After the algorithm terminates, the q-th column in the routing table
+ is updated. This amounts to recording in the hops field the hop
+ count value of the path that was generated by the algorithm, and by
+ updating the neighbor field. As before, the update of the neighbor
+ field depends on the scope of the path computation. In the case of a
+ hop-by-hop routing decision, the neighbor field is set to the
+ identity of the node adjacent to the source node (next hop) on the
+ path returned by the algorithm. However, note that in order to
+ ensure that the path with the maximal available bandwidth is always
+ chosen among all minimum hop paths that can accommodate a given
+ quantized bandwidth, a slightly different update mechanism of the
+ neighbor field needs to be used in some instances. Specifically,
+ when for a given row, i.e., destination node n, the value of the hops
+ field in column q is found equal to the value in column q+1 (here we
+
+
+
+Apostolopoulos, et al. Experimental [Page 40]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ assume q<Q), i.e., paths that can accommodate bw[q] and bw[q+ 1] have
+ the same hop count, then the algorithm copies the value of the
+ neighbor field from entry (n;q+1) into that of entry (n;q).
+
+ Note: The pseudocode below assumes a hop-by-hop forwarding approach
+ in updating the neighbor field. The modifications needed to support
+ explicit route construction are straightforward. The pseudocode also
+ does not handle equal cost multi-paths for simplicity, but the
+ modification needed to add this support have been described above.
+ Details of the post-processing step of adding stub networks are
+ omitted.
+
+Input:
+ V = set of vertices, labeled by integers 1 to N.
+ L = set of edges, labeled by ordered pairs (n,m) of vertex labels.
+ s = source vertex (at which the algorithm is executed).
+ bw[1..Q] = array of bandwidth values to "quantize" flow requests to.
+ For all edges (n,m) in L:
+ * b(n,m) = available bandwidth (according to last received update)
+ on interface associated with the edge between vertices n and m.
+ * If(n,m) = outgoing interface corresponding to edge (n,m) when n is
+ a router.
+
+Type:
+ tab_entry: record
+ hops = integer,
+ neighbor = integer 1..N,
+ ontree = boolean.
+
+Variables:
+ TT[1..N, 1..Q]: topology table, whose (n,q) entry is a tab_entry
+ record, such that:
+ TT[n,q].bw is the available bandwidth (as known
+ thus far) on a shortest-path between
+ vertices s and n accommodating bandwidth b(q),
+ TT[n,q].neighbor is the first hop on that path (a
+ neighbor of s). It is either a router or the
+ destination n.
+ S: list of candidate vertices;
+ v: vertex under consideration;
+ q: "quantize" step
+
+The Algorithm:
+
+begin;
+ for r:=1 to Q do
+ begin;
+ for n:=1 to N do /* initialization */
+
+
+
+Apostolopoulos, et al. Experimental [Page 41]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ begin;
+ TT[n,r].hops := infinity;
+ TT[n,r].neighbor := null;
+ TT[n,r].ontree := FALSE;
+ end;
+ TT[s,r].hops := 0;
+ end;
+ for r:=1 to Q do
+ begin;
+ S = {s};
+ while S not empty do
+ begin;
+ v := first element of S;
+ S := S - {v}; /* remove and store the candidate to consider */
+ TT[v,r].ontree := TRUE;
+ for all edges (v,m) in L and b(v,m) >= bw[r] do
+ begin;
+ if m is a router
+ begin;
+ if not TT[m,r].ontree then
+ begin;
+ /* bandwidth must be fulfilled since all links >= bw[r] */
+ if TT[m,r].hops > TT[v,r].hops + 1 then
+ begin
+ S := S union { m };
+ TT[m,r].hops := TT[v,r].hops + 1;
+ TT[m,r].neighbor := v;
+ end;
+ end;
+ end;
+ else /* must be a network, iterate over all attached
+ routers */
+ begin;
+ for all (m,k) in L, k <> v,
+ /* i.e., for all other neighboring routers of m */
+ if not TT[k,r].ontree and b(m,k) >= bw[r] then
+ begin;
+ if TT[k,r].hops > TT[v,r].hops + 2 then
+ begin;
+ S := S union { k };
+ TT[k,r].hops := TT[v,r].hops + 2;
+ TT[k,r].neighbor := v;
+ end;
+ end;
+ end;
+ end; /* of all edges from the vertex under consideration */
+ end; /* from processing of the candidate list */
+ end; /* of "quantize" steps */
+
+
+
+Apostolopoulos, et al. Experimental [Page 42]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+end.
+
+D. Explicit Routing Support
+
+ As mentioned before, the scope of the path selection process can
+ range from simply returning the next hop on the QoS path selected for
+ the flow, to specifying the complete path that was computed, i.e., an
+ explicit route. Obviously, the information being returned by the
+ path selection algorithm differs in these two cases, and constructing
+ it imposes different requirements on the path computation algorithm
+ and the data structures it relies on. While the presentation of the
+ path computation algorithms focused on the hop-by-hop routing
+ approach, the same algorithms can be applied to generate explicit
+ routes with minor modifications. These modifications and how they
+ facilitate constructing explicit routes are discussed next.
+
+ The general approach to facilitate construction of explicit routes is
+ to update the neighbor field differently from the way it is done for
+ hop-by-hop routing as described in Section 2.3. Recall that in the
+ path computation algorithms the neighbor field is updated to reflect
+ the identity of the router adjacent to the source node on the partial
+ path computed. This facilitates returning the next hop at the source
+ for the specific path. In the context of explicit routing, the
+ neighbor information is updated to reflect the identity of the
+ previous router on the path.
+
+ In general, there can be multiple equivalent paths for a given hop
+ count. Thus, the neighbor information is stored as a list rather
+ than single value. Associated with each neighbor, additional
+ information is stored to facilitate load balancing among these
+ multiple paths at the time of path selection. Specifically, we store
+ the advertised available bandwidth on the link from the neighbor to
+ the destination in the entry.
+
+ With this change, the basic approach used to extract the complete
+ list of vertices on a path from the neighbor information in the QoS
+ routing table is to proceed `recursively' from the destination to the
+ origin vertex. The path is extracted by stepping through the
+ precomputed QoS routing table from vertex to vertex, and identifying
+ at each step the corresponding neighbor (precursor) information. The
+ process is described as recursive since the neighbor node identified
+ in one step becomes the destination node for table look up in the
+ next step. Once the source router is reached, the concatenation of
+ all the neighbor fields that have been extracted forms the desired
+ explicit route. This applies to algorithms of Section 2.3.1 and
+ Appendix C. If at a particular stage there are multiple neighbor
+ choices (due to equal cost multi-paths), one of them can be chosen at
+ random with a probability that is weighted, for example, by the
+
+
+
+Apostolopoulos, et al. Experimental [Page 43]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ associated bandwidth on the link from the neighbor to the (current)
+ destination.
+
+ Specifically, assume a new request to destination, say, d, and with
+ bandwidth requirements B. The index of the destination vertex
+ identifies the row in the QoS routing table that needs to be checked
+ to generate a path. The row is then searched to identify a suitable
+ path. If the Bellman-Ford algorithm of Section 2.3.1 was used, the
+ search proceeds by increasing index (hop) count until an entry is
+ found, say at hop count or column index of h, with a value of the bw
+ field that is equal to or greater than B. This entry points to the
+ initial information identifying the selected path. If the Dijkstra
+ algorithm of Appendix C is used, the first quantized value qB such
+ that qB >= B is first identified, and the associated column then
+ determines the first entry in the QoS routing table that identifies
+ the selected path.
+
+ Once this first entry has been identified, reconstruction of the
+ complete list of vertices on the path proceeds similarly, whether the
+ table was built using the algorithm of Section 2.3.1 or Appendix C.
+ Specifically, in both cases, the neighbor field in each entry points
+ to the previous node on the path from the source node and with the
+ same bandwidth capabilities as those associated with the current
+ entry. The complete path is, therefore, reconstructed by following
+ the pointers provided by the neighbor field of successive entries.
+
+ In the case of the Bellman-Ford algorithm of Section 2.3.1, this
+ means moving backwards in the table from column to column, using at
+ each step the row index pointed to by the neighbor field of the entry
+ in the previous column. Each time, the corresponding vertex index
+ specified in the neighbor field is pre-pended to the list of vertices
+ constructed so far. Since we start at column h, the process ends
+ when the first column is reached, i.e., after h steps, at which point
+ the list of vertices making up the path has been reconstructed.
+
+ In the case of the Dijkstra algorithm of Appendix C, the backtracking
+ process is similar although slightly different because of the
+ different relation between paths and columns in the routing table,
+ i.e., a column now corresponds to a quantized bandwidth value instead
+ of a hop count. The backtracking now proceeds along the column
+ corresponding to the quantized bandwidth value needed to satisfy the
+ bandwidth requirements of the flow. At each step, the vertex index
+ specified in the neighbor field is pre-pended to the list of vertices
+ constructed so far, and is used to identify the next row index to
+ move to. The process ends when an entry is reached whose neighbor
+ field specifies the origin vertex of the flow. Note that since there
+ are as many rows in the table as there are vertices in the graph,
+ i.e., N, it could take up to N steps before the process terminates.
+
+
+
+Apostolopoulos, et al. Experimental [Page 44]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Note that the identification of the first entry in the routing table
+ is identical to what was described for the hop-by-hop routing case.
+ However, as described in this section, the update of the neighbor
+ fields while constructing the QoS routing tables, is being performed
+ differently in the explicit and hop-by-hop routing cases. Clearly,
+ two different neighbor fields can be kept in each entry and updates
+ to both could certainly be performed jointly, if support for both
+ xplicit routing and hop-by-hop routing is needed.
+
+Endnotes
+
+ 1. In this document we commit the abuse of notation of calling a
+ "network" the interconnection of routers and networks through
+ which we attempt to compute a QoS path.
+
+ 2. This is true for uni-cast flows, but in the case of multi-cast
+ flows, hop-by-hop and an explicit routing clearly have different
+ implications.
+
+ 3. Some hysteresis mechanism should be added to suppress updates when
+ the metric value oscillates around a class boundary.
+
+ 4. In this document, we use the terms node and vertex
+ interchangeably.
+
+ 5. Various hybrid methods can also be envisioned, e.g., periodic
+ computations except if more than a given number of updates are
+ received within a shorter interval, or periodic updates except if
+ the change in metrics corresponding to a given update exceeds a
+ certain threshold. Such variations are, however, not considered
+ in this document.
+
+ 6. Modifications to support explicit routing are discussed in
+ Appendix D.
+
+ 7. Note, that this does not say anything on whether to differentiate
+ between outgoing and incoming bandwidth on a shared media network.
+ As a matter of fact, a reasonable option is to set the incoming
+ bandwidth (from network to router) to infinity, and only use the
+ outgoing bandwidth value to characterize bandwidth availability on
+ the shared network.
+
+ 8. exponent in parenthesis
+
+ 9. Access to some of the more recent versions of the GateD software
+ is restricted to the GateD consortium members.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 45]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ 10. Note that a Breadth-First-Search (BFS) algorithm [CLR90] could
+ also be used. It has a lower complexity, but would not allow
+ reuse of existing code in an OSPF implementation.
+
+References
+
+ [AGK99] G. Apostolopoulos, R. Guerin, and S. Kamat. Implementation
+ and performance meassurements of QoS routing extensions to
+ OSPF. In Proceedings of INFOCOM'99, pages 680--688, New
+ York, NY, March 1999.
+
+ [AGKT98] G. Apostolopoulos, R. Guerin, S. Kamat, and S. K. Tripathi.
+ QoS routing: A performance perspective. In Proceedings of
+ ACM SIGCOMM'98, pages 17--28, Vancouver, Canada, October
+
+ [Alm92] Almquist, P., "Type of Service in the Internet Protocol
+ Suite", RFC 1349, July 1992.
+
+ [AT98] G. Apostolopoulos and S. K. Tripathi. On reducing the
+ processing cost of on-demand QoS path computation. In
+ Proceedings of ICNP'98, pages 80--89, Austin, TX, October
+ 1998.
+
+ [BP95] J.-Y. Le Boudec and T. Przygienda. A Route Pre-Computation
+ Algorithm for Integrated Services Networks. Journal of
+ Network and Systems Management, 3(4), 1995.
+
+ [Car79] B. Carre. Graphs and Networks. Oxford University Press,
+ ISBN 0-19-859622-7, Oxford, UK, 1979.
+
+ [CLR90] T. H. Cormen, C. E. Leiserson, and R. L. Rivest.
+ Introduction to Algorithms. MIT Press, Cambridge, MA, 1990.
+
+ [Con] Merit GateD Consortium. The Gate Daemon (GateD) project.
+
+ [GJ79] M.R. Garey and D.S. Johnson. Computers and Intractability.
+ Freeman, San Francisco, 1979.
+
+ [GKH97] R. Guerin, S. Kamat, and S. Herzog. QoS Path Management
+ with RSVP. In Proceedings of the 2nd IEEE Global Internet
+ Mini-Conference, pages 1914-1918, Phoenix, AZ, November
+
+ [GKR97] Guerin, R., Kamat, S. and E. Rosen, "An Extended RSVP
+ Routing Interface, Work in Progress.
+
+ [GLG+97] Der-Hwa G., Li, T., Guerin, R., Rosen, E. and S. Kamat,
+ "Setting Up Reservations on Explicit Paths using RSVP", Work
+ in Progress.
+
+
+
+Apostolopoulos, et al. Experimental [Page 46]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ [GO99] R. Guerin and A. Orda. QoS-Based Routing in Networks with
+ Inaccurate Information: Theory and Algorithms. IEEE/ACM
+ Transactions on Networking, 7(3):350--364, June 1999.
+
+
+ [GOW97] R. Guerin, A. Orda, and D. Williams. QoS Routing Mechanisms
+ and OSPF Extensions. In Proceedings of the 2nd IEEE Global
+ Internet Mini-Conference, pages 1903-1908, Phoenix, AZ,
+ November 1997.
+
+ [KNB98] Nichols, K., Blake, S., Baker F. and D. Black, "Definition
+ of the Differentiated Services Field (DS Field) in the IPv4
+ and IPv6 Headers", RFC 2474, December 1998.
+
+ [LO98] D. H. Lorenz and A. Orda. QoS Routing in Networks with
+ Uncertain Parameters. IEEE/ACM Transactions on Networking,
+ 6(6):768--778, December 1998.
+
+ [Moy94] Moy, J., "OSPF Version 2", RFC 1583, March 1994.
+
+ [Moy98] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
+
+ [Prz95] A. Przygienda. Link State Routing with QoS in ATM LANs.
+ Ph.D. Thesis Nr. 11051, Swiss Federal Institute of
+ Technology, April 1995.
+
+ [RMK+98] R. Rajan, J. C. Martin, S. Kamat, M. See, R. Chaudhury, D.
+ Verma, G. Powers, and R. Yavatkar. Schema for
+ differentiated services and integrated services in networks.
+ INTERNET-DRAFT, October 1998. work in progress.
+
+ [RZB+97] Braden, R., Editor, Zhang, L., Berson, S., Herzog, S. and S.
+ Jamin, "Resource reSerVation Protocol (RSVP) Version 1,
+ Functional Specification", RFC 2205, September 1997.
+
+ [SPG97] Shenker, S., Partridge, C. and R. Guerin, "Specification of
+ Guaranteed Quality of Service", RFC 2212, November 1997.
+
+ [ST83] D.D. Sleator and R.E. Tarjan. A Data Structure for Dynamic
+ Trees. Journal of Computer Systems, 26, 1983.
+
+ [Tan89] A. Tannenbaum. Computer Networks. Addisson Wesley, 1989.
+
+ [YPG97] Yavatkar, R., Pendarakis, D. and R. Guerin, "A Framework for
+ Policy-based Admission Control", INTERNET-DRAFT, April 1999.
+ Work in Progress.
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 47]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+Authors' Addresses
+
+ George Apostolopoulos
+ IBM T.J. Watson Research Center
+ P.O. Box 704
+ Yorktown Heights, NY 10598
+
+ Phone: +1 914 784-6204
+ Fax: +1 914 784-6205
+ EMail: georgeap@watson.ibm.com
+
+
+ Roch Guerin
+ University Of Pennsylvania
+ Department of Electrical Engineering, Rm 367 GRW
+ 200 South 33rd Street
+ Philadelphia, PA 19104--6390
+
+ Phone: +1 215-898-9351
+ EMail: guerin@ee.upenn.edu
+
+
+ Sanjay Kamat
+ Bell Laboratories
+ Lucent Technologies
+ Room 4C-510
+ 101 Crawfords Corner Road
+ Holmdel, NJ 07733
+
+ Phone: (732) 949-5936
+ email: sanjayk@dnrc.bell-labs.com
+
+
+ Ariel Orda
+ Dept. Electrical Engineering
+ Technion - I.I.T
+ Haifa, 32000 - ISRAEL
+
+ Phone: +011 972-4-8294646
+ Fax: +011 972-4-8323041
+ EMail: ariel@ee.technion.ac.il
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 48]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+ Tony Przygienda
+ Siara Systems
+ 300 Ferguson Drive
+ Moutain View
+ California 94043
+
+ Phone: +1 732 949-5936
+ Email: prz@siara.com
+
+
+ Doug Williams
+ IBM T.J. Watson Research Center
+ P.O. Box 704
+ Yorktown Heights, NY 10598
+
+ Phone: +1 914 784-5047
+ Fax: +1 914 784-6318
+ EMail: dougw@watson.ibm.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 49]
+
+RFC 2676 QoS Routing Mechanisms and OSPF Extensions August 1999
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Apostolopoulos, et al. Experimental [Page 50]
+