RFC 5356

Reliable Server Pooling Policies

๐Ÿ“… published September 2008, from ietf

RFC 5356: Reliable Server Pooling Policies โœจ

Okay bestie, let's start with the title block ๐Ÿ’– This one is from the Network Working Group, written by T. Dreibholz (University of Duisburg-Essen) and M. Tuexen (Muenster Univ. of Applied Sciences), dated September 2008. It's filed as an Experimental category document ๐Ÿงช and the header doesn't list any RFCs it obsoletes or updates, so nothing gets replaced or changed here ๐Ÿฆ‹


Status of This Memo ๐Ÿ“œ

So the vibe is that this memo defines an Experimental Protocol for the Internet community ๐Ÿ”ฌ It is not an Internet standard of any kind, so don't treat it like one. The authors are literally asking for discussion and suggestions for improvement ๐Ÿซถ And distribution of this memo is unlimited, so share it with everyone ๐Ÿ’…

Abstract ๐ŸŒธ

This document is all about server pool policies for Reliable Server Pooling (RSerPool) ๐ŸŠโ€โ™€๏ธ It covers how to implement these policies at Endpoint Handlespace Redundancy Protocol (ENRP) servers and at pool users, which is the part where it gets really juicy โœจ

Table of Contents ๐Ÿ—‚๏ธ

1. Introduction ....................................................3
2. Conventions .....................................................3
3. Terminology and Definitions .....................................3
   3.1. Load .......................................................3
   3.2. Weight .....................................................3
4. Non-Adaptive Policies ...........................................4
   4.1. Round Robin Policy .........................................4
        4.1.1. Description .........................................4
        4.1.2. ENRP Server Considerations ..........................4
        4.1.3. Pool User Considerations ............................4
        4.1.4. Pool Member Selection Policy Parameter ..............4
   4.2. Weighted Round Robin Policy ................................5
        4.2.1. Description .........................................5
        4.2.2. ENRP Server Considerations ..........................5
        4.2.3. Pool User Considerations ............................5
        4.2.4. Pool Member Selection Policy Parameter ..............5
   4.3. Random Policy ..............................................5
        4.3.1. Description .........................................5
        4.3.2. ENRP Server Considerations ..........................6
        4.3.3. Pool User Considerations ............................6
        4.3.4. Pool Member Selection Policy Parameter ..............6
   4.4. Weighted Random Policy .....................................6
        4.4.1. Description .........................................6
        4.4.2. ENRP Server Considerations ..........................6
        4.4.3. Pool User Considerations ............................6
        4.4.4. Pool Member Selection Policy Parameter ..............7
   4.5. Priority Policy ............................................7
        4.5.1. Description .........................................7
        4.5.2. ENRP Server Considerations ..........................7
        4.5.3. Pool Element Considerations .........................7
        4.5.4. Pool Member Selection Policy Parameter ..............7
5. Adaptive Policies ...............................................8
   5.1. Least Used Policy ..........................................8
        5.1.1. Description .........................................8
        5.1.2. ENRP Server Considerations ..........................8
        5.1.3. Pool User Considerations ............................8
        5.1.4. Pool Member Selection Policy Parameter ..............8
   5.2. Least Used with Degradation Policy .........................9
        5.2.1. Description .........................................9
        5.2.2. ENRP Server Considerations ..........................9
        5.2.3. Pool User Considerations ............................9
        5.2.4. Pool Member Selection Policy Parameter ..............9
   5.3. Priority Least Used Policy ................................10
        5.3.1. Description ........................................10
        5.3.2. ENRP Server Considerations .........................10
        5.3.3. Pool User Considerations ...........................10
        5.3.4. Pool Member Selection Policy Parameter .............10
   5.4. Randomized Least Used Policy ..............................11
        5.4.1. Description ........................................11
        5.4.2. ENRP Server Considerations .........................11
        5.4.3. Pool User Considerations ...........................11
        5.4.4. Pool Member Selection Policy Parameter .............11
6. Security Considerations ........................................11
7. IANA Considerations ............................................12
   7.1. A New Table for RSerPool Policy Types .....................12
8. Reference Implementation .......................................13
9. References .....................................................13
   9.1. Normative References ......................................13
   9.2. Informative References ....................................14

1. Introduction ๐ŸŽ€

Okay so the protocols in [RFC5353], [RFC5352], and [RFC5354] support a whole bunch of server policies ๐Ÿงš Some policies use dynamic load information about the pool elements and some don't, so we sort them into adaptive and non-adaptive buckets ๐Ÿ’œ Picking a pool element is handled by two different entities: the ENRP server and the pool user. Some of the consequences for policies that are not stateless are described in [ICN2005] and [LCN2005] ๐Ÿ‘€

So this document doesn't just give you packet formats. It also goes into detail on the procedures that the ENRP servers and the pool users have to follow to implement each server policy ๐Ÿ”ฅ

2. Conventions ๐Ÿ“

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Iykyk ๐Ÿ™ˆ

3. Terminology and Definitions ๐Ÿ“š

3.1. Load ๐Ÿ”‹

Load is a value that says how much a pool element's resources are currently being used ๐Ÿ“ˆ 0x00000000 means the pool element is not utilized at all (0%), and 0xffffffff means it's fully utilized (100%) ๐Ÿ’€ What utilization actually means depends on the application, and that's out of scope for RSerPool. Still, it is required that all pool elements of the same pool using load information have the same definition of load โœจ

For example, load could be how many users an FTP server has out of a maximum, the CPU usage of a database server, or the memory utilization of a compute service ๐Ÿ“

3.2. Weight โš–๏ธ

Weight is how much service capacity a pool element has compared to the other pool elements in the same pool ๐Ÿ’ช In theory there's no upper limit on weight values (it's only limited by the datatype size). What values weights get compared as is application-dependent and out of scope for RSerPool. Still, it is required that all pool elements of the same pool using weight information have the same definition of weight ๐Ÿซถ

A weight of 0 means the pool element can't provide any service at all ๐Ÿ˜ญ A higher weight means the pool element can provide better service than one with a lower weight ๐Ÿ‘‘

For example, weight could describe a compute service's computation capacity. So a pool element of weight 100 will finish a work package in half the time it takes a pool element of weight 50 ๐Ÿง 

4. Non-Adaptive Policies ๐ŸŒˆ

4.1. Round Robin Policy ๐ŸŽ 

4.1.1. Description ๐Ÿ’…

The Round Robin (RR) policy is super simple and efficient, but it does require state ๐Ÿง  This policy is the default policy, and it MUST be supported by all RSerPool components. No exceptions, periodt ๐Ÿ‘‘

4.1.2. ENRP Server Considerations ๐Ÿ–ฅ๏ธ

The ENRP server SHOULD hold the pool elements of each server pool in a circular list. It SHOULD also store a pointer to one of the elements, called the head ๐ŸŽฏ When a handle resolution request comes in, the ENRP server SHOULD return the pool elements from the circular list, starting with the head. Then the head SHOULD be advanced by one element โœจ

Using this algorithm makes sure that not all lists given to the pool users start with the same element ๐Ÿฆ‹

4.1.3. Pool User Considerations ๐Ÿ™‹โ€โ™€๏ธ

A pool user SHOULD use the list of pool elements returned by the ENRP server in a round robin fashion, starting with the first one. If all elements of the list have been used, it should start from the beginning again until the information is out of date ๐Ÿ”„

4.1.4. Pool Member Selection Policy Parameter ๐Ÿงฉ

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0x8          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x00000001                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.2. Weighted Round Robin Policy ๐Ÿ‹๏ธโ€โ™€๏ธ

4.2.1. Description ๐Ÿ’–

The Weighted Round Robin (WRR) policy is a generalization of the RR policy ๐ŸŒŸ If all weights are 1, then WRR is just RR. Literally the same thing, just dressed up ๐Ÿ’…

4.2.2. ENRP Server Considerations ๐Ÿ–ฅ๏ธ

The ENRP server SHOULD follow the same rules as RR, but it initializes and modifies the circular list differently ๐Ÿ”€ The ENRP server puts each pool element into the list possibly multiple times, such that:

  • The ratio of the number of occurrences of a pool element to the list length is the same as the ratio of the weight of that pool element to the sum of weights.
  • The multiple entries of each pool element should be as evenly distributed as possible in the circular list.

4.2.3. Pool User Considerations ๐Ÿ™‹โ€โ™€๏ธ

The pool user SHOULD follow the same rules as RR. Easy peasy ๐Ÿ‹

4.2.4. Pool Member Selection Policy Parameter ๐Ÿงฉ

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0xc          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x00000002                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Weight                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Weight (32 bits, unsigned integer): Weight constant for the WRR process.

4.3. Random Policy ๐ŸŽฒ

4.3.1. Description ๐ŸŒธ

The Random (RAND) policy is a very simple stateless policy ๐Ÿซง

4.3.2. ENRP Server Considerations ๐Ÿ–ฅ๏ธ

The ENRP server selects, at most, the requested number of pool elements from the list of pool elements. Each element MUST NOT be reported more than once to the pool user. Not twice, not ever, bestie ๐Ÿ™…โ€โ™€๏ธ

4.3.3. Pool User Considerations ๐Ÿ™‹โ€โ™€๏ธ

Each time the pool user must select one pool element, it does this by randomly selecting one element from the list of pool elements received from the ENRP server ๐ŸŽฐ

4.3.4. Pool Member Selection Policy Parameter ๐ŸŽ€

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0x8          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x00000003                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.4. Weighted Random Policy ๐ŸŽฒ

4.4.1. Description

Okay so the Weighted Random (WRAND) policy is basically RAND's glow-up ๐Ÿ’…. It adds a weight to every pool element entry. And RAND? That's just WRAND with every weight set to 1, which is so iconic ๐ŸŒธ.

4.4.2. ENRP Server Considerations

The ENRP server SHOULD pick, at most, the number of pool elements that was requested, and it should choose them randomly from the list of pool elements ๐Ÿฆ‹. Each element MUST NOT be reported more than once to the pool user, so no repeats, bestie ๐Ÿ™…. The probability of picking a pool element should be the ratio of that element's weight to the sum of all the weights ๐Ÿ“Š.

4.4.3. Pool User Considerations

Every time the pool user needs to pick one pool element, it does that by randomly choosing one element from the list of pool elements the ENRP server handed back ๐Ÿงš.

4.4.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0xc          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x00000004                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Weight                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Weight (32 bits, unsigned integer): the weight constant used for the WRAND process ๐Ÿ’œ

4.5. Priority Policy ๐Ÿ‘‘

4.5.1. Description

The Priority (PRIO) policy can be used to always select a pool element with the highest priority. It's giving VIP section ๐Ÿ’–.

4.5.2. ENRP Server Considerations

The ENRP server MUST pick the pool elements with the highest priorities ๐Ÿ”ฅ. They MUST be reported in decreasing order, so highest first. If several pool elements share the same priority, they may be listed in any order, lowkey whatever ๐Ÿคท.

4.5.3. Pool Element Considerations

The pool user MUST select the active pool element with the highest priority โœจ.

4.5.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0xc          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x00000005                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            Priority                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Priority (32 bits, unsigned integer): larger numbers mean higher priorities ๐Ÿ“ˆ

5. Adaptive Policies โœจ

5.1. Least Used Policy ๐Ÿชซ

5.1.1. Description

The Least Used (LU) policy looks at the load info the pool elements send in, then picks the lowest-loaded pool elements inside the pool ๐Ÿงƒ.

5.1.2. ENRP Server Considerations

The ENRP server SHOULD pick, at most, the number of pool elements that was requested. Their load values SHOULD be the lowest possible ones within the pool. Each element MUST NOT be reported more than once to the pool user ๐Ÿ™…. If there's a tie between equal-loaded pool elements, round robin selection SHOULD be made among those elements ๐Ÿ”. The returned list of pool elements MUST be sorted in ascending order by load value ๐Ÿ“‹.

5.1.3. Pool User Considerations

The pool user should try to use the pool elements in the order the ENRP server returned them. A later call for handle resolution may give back the same list, so it is RECOMMENDED that a pool user request multiple entries to have a good stash of feasible backups ๐Ÿ›Ÿ.

5.1.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0xc          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x40000001                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Load                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Load (32 bits, unsigned integer): the current load of the pool element ๐ŸŒก๏ธ

5.2. Least Used with Degradation Policy ๐Ÿ“‰

5.2.1. Description

The Least Used with Degradation (LUD) policy builds on LU by adding a load degradation value, which describes how much a pool element's load goes up when a new service association gets accepted ๐Ÿ’ซ.

5.2.2. ENRP Server Considerations

For every pool element entry, a degradation counter MUST be stored ๐Ÿ—‚๏ธ. When a pool element entry is added or updated by registration or re-registration, this counter MUST be set to 0. When an entry is selected to be returned to a pool user, the internal degradation counter MUST be incremented by 1. Selection works like it does for LU, except the selected pool element entries SHOULD have the lowest possible sum of load value + degradation counter * load degradation value ๐Ÿงฎ.

5.2.3. Pool User Considerations

See LU policy ๐Ÿ’….

5.2.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0x10         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x40000002                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Load                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Load Degradation                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Load (32 bits, unsigned integer): the current load of the pool element ๐ŸŒก๏ธ
  • Load Degradation (32 bits, unsigned integer): the Load Degradation constant of the pool element ๐ŸŽข

5.3. Priority Least Used Policy ๐Ÿฅ‡

5.3.1. Description

The Priority Least Used (PLU) policy uses load info from the pool elements to pick the lowest-loaded pool elements inside the pool, under the assumption that a new application request gets accepted by those pool elements. So pool elements also have to specify load degradation info too ๐Ÿง .

Example: Pool elements A and B are both loaded by 50%, but A's load will only go up by 10% from a new application request, while B will be fully loaded ๐Ÿ˜ญ. PLU lets you specify this load degradation in the policy information, and the selection is made on the lowest sum of load and degradation value. So A gets picked (50+10=60) over B (50+50=100) ๐Ÿ†.

5.3.2. ENRP Server Considerations

The ENRP server SHOULD pick, at most, the number of pool elements that was requested. Their sums of load + degradation SHOULD be the lowest possible ones within the pool. Each element MUST NOT be reported more than once to the pool user ๐Ÿ™…. If there's a tie between equal-valued pool element entries, round robin SHOULD be made among these elements ๐Ÿ”. The returned list of pool elements MUST be sorted ascending by the sum of load and degradation value ๐Ÿ“‹.

5.3.3. Pool User Considerations

The pool user should try to use the pool elements in the order the ENRP server returned them. A later call for handle resolution may give back the same list, so it is RECOMMENDED that a pool user request multiple entries to have a good stash of feasible backups ๐Ÿ›Ÿ.

5.3.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0x10         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x40000003                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Load                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Load Degradation                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Load (32 bits, unsigned integer): the current load of the pool element ๐ŸŒก๏ธ
  • Load Degradation (32 bits, unsigned integer): the Load Degradation constant of the pool element ๐ŸŽข

5.4. Randomized Least Used Policy ๐ŸŽฐ

5.4.1. Description

The Randomized Least Used (RLU) policy mixes LU and WRAND together. So the pool element entries get selected randomly ๐ŸŽฒ. The probability for a pool element entry A, using load_A, to get selected is (0xFFFFFFFF - load_A) / (sum(0xFFFFFFFF-load_x)). In other words, it's this PE's unload part compared to the whole pool's unload rate ๐Ÿง.

5.4.2. ENRP Server Considerations

The ENRP server SHOULD behave like WRAND, with every PE's weight set to 0xffffffff -- load value provided by the pool element โš–๏ธ.

5.4.3. Pool User Considerations

See WRAND policy ๐Ÿ’–.

5.4.4. Pool Member Selection Policy Parameter

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Param Type = 0x8           |         Length = 0xc          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Policy Type = 0x40000004                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              Load                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Load (32 bits, unsigned integer): the current load of the pool element ๐ŸŒก๏ธ

6. Security Considerations ๐Ÿ”’

Real talk, bestie ๐Ÿซถ: the security threats for RSerPool have already been analyzed in RSerPool threats [RFC5355]. The server policy descriptions in this document do not add any other threats, so this part is covered.

7. IANA Considerations ๐Ÿงพ

This document (RFC 5356) is the reference for all registrations described in this section. All registrations have been listed on the RSerPool Parameters page ๐Ÿ“š.

7.1. A New Table for RSerPool Policy Types โœจ

okay so bestie, RSerPool policy types that are 4-byte values are maintained by IANA ๐ŸŽ€ Here's how the policy type value is laid out, and it's giving very bit-level organization ๐Ÿ’…

      0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |X|A|                   Policy Number                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • X is the flag that says whether the policy is user defined. If it's set to 1, the policy is user defined and not standardized. All standards policies reserved by the IETF use X=0 ๐ŸŒธ
  • A tells you if the policy is adaptive. If it's set to 1, the policy is adaptive. Otherwise, it's non-adaptive ๐Ÿฆ‹
  • Policy Number is the actual number of the policy ๐Ÿงš

Nine initial policy types have been assigned, and they live in a brand new table called "RSerPool Policy Types" ๐Ÿ‘‘

   Value           Policy                                  Reference
   -----           ---------                               ---------
   0x00000000      (reserved, invalid value)               RFC 5356
   0x00000001      Round Robin                             RFC 5356
   0x00000002      Weighted Round Robin                    RFC 5356
   0x00000003      Random                                  RFC 5356
   0x00000004      Weighted Random                         RFC 5356
   0x00000005      Priority                                RFC 5356
   0x00000006      (reserved by IETF)                      RFC 5356
   ...
   0x3fffffff      (reserved by IETF)                      RFC 5356

   0x40000000      (reserved, invalid value)               RFC 5356
   0x40000001      Least Used                              RFC 5356
   0x40000002      Least Used with Degradation             RFC 5356
   0x40000003      Priority Least Used                     RFC 5356
   0x40000004      Randomized Least Used                   RFC 5356
   0x40000005      (reserved by IETF)                      RFC 5356
   ...
   0x7fffffff      (reserved by IETF)                      RFC 5356

   0x80000000      (private use, non-standard policy)      RFC 5356
   ...
   0xffffffff      (private use, non-standard policy)      RFC 5356

Requests to register an RSerPool policy type in this table should be sent to IANA. The number must be unique and use the appropriate upper bits. The "Specification Required" policy of [RFC5226] MUST be applied ๐Ÿ”ฅ

The policy type space from 0x80000000 to 0xffffffff is designated for private use, so that's your sandbox, bestie ๐ŸŒˆ

8. Reference Implementation โœจ

A reference implementation of RSerPool and the policies described in this document is available at [RSerPoolPage] and described in [Dre2006]. Go check it out ๐Ÿ“

9. References ๐Ÿ’œ

9.1. Normative References

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
  • [RFC5354] Stewart, R., Xie, Q., Stillman, M., and M. Tuexen, "Aggregate Server Access Protocol (ASAP) and Endpoint Handlespace Redundancy Protocol (ENRP) Parameters", RFC 5354, September 2008.
  • [RFC5352] Stewart, R., Xie, Q., Stillman, M., and M. Tuexen, "Aggregate Server Access Protocol (ASAP)", RFC 5352, September 2008.
  • [RFC5353] Xie, Q., Stewart, R., Stillman, M., Tuexen, M., and A. Silverton, "Endpoint Handlespace Redundancy Protocol (ENRP)", RFC 5353, September 2008.
  • [RFC5355] Stillman, M., Ed., Gopal, R., Guttman, E., Holdrege, M., and S. Sengodan, "Threats Introduced by Reliable Server Pooling (RSerPool) and Requirements for Security in Response to Threats", RFC 5355, September 2008.

9.2. Informative References

  • [RSerPoolPage] Dreibholz, T., "Thomas Dreibholz's RSerPool Page", http://tdrwww.iem.uni-due.de/dreibholz/rserpool/.
  • [Dre2006] Dreibholz, T., "Reliable Server Pooling -- Evaluation, Optimization and Extension of a Novel IETF Architecture", Ph.D. Thesis University of Duisburg-Essen, Faculty of Economics, Institute for Computer Science and Business Information Systems, March 2007, http://duepublico.uni-duisburg-essen.de/servlets/DerivateServlet/Derivate-16326/Dre2006-final.pdf.
  • [LCN2005] Dreibholz, T. and E. Rathgeb, "On the Performance of Reliable Server Pooling Systems", Proceedings of the 30th IEEE Local Computer Networks Conference, November 2005.
  • [ICN2005] Dreibholz, T., Rathgeb, E., and M. Tuexen, "Load Distribution Performance of the Reliable Server Pooling Framework", Proceedings of the 4th IEEE International Conference on Networking, April 2005.

Authors' Addresses ๐ŸŽ€

Thomas Dreibholz
University of Duisburg-Essen, Institute for Experimental Mathematics
Ellernstrasse 29
45326 Essen, Nordrhein-Westfalen
Germany

Phone: +49-201-1837637
Fax:   +49-201-1837673
EMail: dreibh@iem.uni-due.de
URI:   http://www.iem.uni-due.de/~dreibh/


Michael Tuexen
Muenster University of Applied Sciences
Stegerwaldstrasse 39
48565 Steinfurt
Germany

Phone: +49-2551-962550
Fax:   +49-2551-962563
EMail: tuexen@fh-muenster.de

Copyright (C) The IETF Trust (2008).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property ๐Ÿฆ‹

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. ๐Ÿ’–

๐Ÿ“ฆ where this page comes from