RFC 4115

A Differentiated Service Two-Rate, Three-Color Marker with Efficient Handling of in-Profile Traffic

πŸ“… published July 2005, from ietf

RFC 4115: A Differentiated Service Two-Rate, Three-Color Marker with Efficient Handling of in-Profile Traffic πŸ¦‹βœ¨

okay bestie, this one is from July 2005 and it's an Informational RFC πŸ’… That means it's just sharing info for the Internet community, not a standard. It's by O. Aboul-Magd and S. Rabie from Nortel Networks. The doc doesn't say it obsoletes or updates anything, so it's a standalone moment 🌸

Status of This Memo πŸ“

this memo is here to give info to the Internet community. it's NOT specifying an Internet standard of any kind πŸ™ˆ distribution is unlimited, so share it with everyone πŸ’–

Copyright (C) The Internet Society (2005).

IESG Note 🚨

this RFC is not a candidate for any level of Internet Standard. the IETF doesn't know whether it's fit for any purpose, and it especially isn't saying it reviewed the security, congestion control, or inappropriate interaction with deployed protocols. the RFC Editor picked to publish this at their discretion, so readers should be careful about how much they trust it for implementing or deploying. see RFC 3932 for more info 🫢

Abstract πŸŽ€

this doc describes a two-rate, three-color marker that has been in use for data services, including Frame Relay services πŸ“ it can be used to meter per-flow traffic in the emerging IP and L2 VPN services. the marker is different from earlier markers in how it handles in-profile traffic, and it doesn't put peak-rate shaping requirements on customer edge (CE) devices. no shaping stress for the CE. iykyk πŸ’…

1. Introduction ✨

so the differentiated service defines a quality-of-service (QoS) architecture for the Internet [RFC2475]. two big pieces of that are traffic metering and marking πŸ‘‘ this doc describes a two-rate, three-color metering/marker algorithm that fits differentiated service apps like IP and L2 VPNs. it's been in use for data services, including Frame Relay Service πŸ¦‹

the metering/marker here is different from the ones in [RFC2697] and [RFC2698] πŸ”₯ compared to [RFC2697], it's a two-rate, three-color marker. [RFC2697] is a single-rate marker. compared to [RFC2698], the difference is how the parameters are defined, which lets it handle in-profile traffic better for the main service scenarios across a wider range of traffic parameters. literally a glow-up 🌈

also, this algorithm means the CE doesn't have to shape its traffic down to a certain peak information rate (PIR). that can happen with the marker in [RFC2698] when the peak burst size (PBS) is smaller than the committed burst size (CBS) πŸ’€

the marker here works in both color-blind and color-aware modes, as defined in [RFC2698] πŸ’œ

2. Configuration 🧚

the marker runs on two rate values: the committed information rate (CIR) and the excess information rate (EIR) 🌸 CIR and EIR set the token generation rate of a token bucket. the bucket sizes are the committed burst size (CBS) and the excess burst size (EBS), respectively ✨

CBS and EBS are measured in bytes, and they must be configured to be greater than the expected maximum length of the incoming PDU πŸ™ˆ CIR and EIR are both measured in bits/s. you can set CIR and EIR independently of each other. OR you can link them together by defining a burst duration parameter, T, where T=CBS/CIR=EBS/EIR 🫢

3. Metering and Marking πŸ’…

the meter's behavior is defined by its mode and two token buckets, C and E. they have rates CIR and EIR, and maximum sizes CBS and EBS πŸŽ€

the token buckets C and E start full at time 0, so Tc(0) = CBS and Te(0) = EBS. after that, the token count Tc goes up by one CIR times per second (up to CBS), and the token count Te goes up by one EIR times per second (up to EBS) πŸ¦‹

in color-aware operation, the algorithm is assumed to be able to recognize the color of the incoming packet: green, yellow, or red 🌈 here's how color-aware metering goes:

When a green packet of size B arrives at time t:

  • if Tc(t)- B > 0, the packet is green, and Tc(t) is decremented by B; else
  • if Te(t)- B > 0, the packet is yellow, and Te(t) is decremented by B; else
  • the packet is red.

When a yellow packet of size B arrives at time t:

  • if Te(t)- B > 0, the packet is yellow, and Te(t) is decremented by B; else
  • the packet is red.

Incoming red packets aren't tested against either token bucket and stay red πŸ’€

in color-blind operation, the meter assumes every incoming packet is green. it works like color-aware mode does for green packets πŸ™ˆ

the big highlight: traffic within the defined CIR gets colored green directly, no extra conformance tests needed πŸ‘‘ this is the main way this algorithm differs from [RFC2698], where traffic only gets marked green after passing two conformance tests (for PIR and CIR). in either mode, needing to pass two tests could drop packets at the PIR token bucket even when they're totally within their CIR (in-profile traffic) 😭 and in color-aware mode, those two tests could let yellow traffic starve incoming in-profile green packets. not it πŸ’…

here's the flow chart for how the algorithm works πŸ“

                 +---------------------------------+
                 |periodically every T sec.        |
                 | Tc(t+)=MIN(CBS, Tc(t-)+CIR*T)   |
                 | Te(t+)=MIN(EBS, Te(t-)+EIR*T)   |
                 +---------------------------------+

        Packet of size
            B arrives   /----------------\
       ---------------->|color-blind mode|
                        |       OR       |YES  +---------------+
                        |  green packet  |---->|packet is green|
                        |      AND       |     |Tc(t+)=Tc(t-)-B|
                        |    B <= Tc(t-) |     +---------------+
                        \----------------/
                                |
                                | NO
                                v
                        /----------------\
                        |color-blind mode|
                        |       OR       |YES  +----------------+
                        | NOT red packet |---->|packet is yellow|
                        |      AND       |     |Te(t+)=Te(t-)-B |
                        |    B <= Te(t-) |     +----------------+
                        \----------------/
                                |
                                | NO
                                v
                        +---------------+
                        |packet is red  |
                        +---------------+

            Figure 1: Traffic Metering/Marking Algorithm

in Figure 1, X(t-) and X(t+) mean the value of a parameter X right before and right after time t 🧚

4. Service Scenario 🌸

this marker can mark an IP packet stream in a service where packets that are green, yellow, or red get different, decreasing levels of assurance (either absolute or relative) ✨ for example, a service might discard all red packets (they went over the service rates), forward yellow packets as best effort, and forward green packets with low drop probability 🫢 it could also meter L2 VPN services, like the emerging Ethernet transport over IP networks πŸ¦‹

5. Security Considerations πŸ”₯

security issues from this doc are similar to the ones mentioned in [RFC2697] and [RFC2698] 😭 go read those for the full picture, bestie πŸ’…

6. Informative References πŸ“š

[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z.,
          and W. Weiss, "An Architecture for Differentiated Service",
          RFC 2475, December 1998.

[RFC2697] Heinanen, J. and R. Guerin, "A Single Rate Three Color
          Marker", RFC 2697, September 1999.

[RFC2698] Heinanen, J. and R. Guerin, "A Two Rate Three Color
          Marker", RFC 2698, September 1999.

[RFC3932] Alvestrand, H., "The IESG and RFC Editor Documents:
          Procedures", BCP 92, RFC 3932, October 2004.

Authors' Addresses 🧚

Osama Aboul-Magd
Nortel Networks
3500 Carling Ave
Ottawa, ON K2H8E9
EMail: osama@nortel.com

Sameh Rabie
Nortel Networks
3500 Carling Ave
Ottawa, ON K2H8E9
EMail: rabie@nortel.com

Copyright (C) The Internet Society (2005).

this document is subject to the rights, licenses and restrictions contained in BCP 78 and at www.rfc-editor.org/copyright.html, and except as set forth there, the authors keep all their rights πŸŽ€

this document and the info in it are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY 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 on 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 in this document, or whether any license under those rights might be available. it also doesn't say it made any independent effort to find such rights 🌈 info on how rights work for RFC documents is in BCP 78 and BCP 79 ✨

copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for implementers or users to use these proprietary rights can be found in the IETF online 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 required to implement this standard. send that info to ietf-ipr@ietf.org πŸ’…

Acknowledgement πŸ’œ

funding for the RFC Editor function is currently provided by the Internet Society 🌸

πŸ“¦ where this page comes from