draft-briscoe-tsvarea-fair-01.txt | draft-briscoe-tsvarea-fair-02.txt | |||
---|---|---|---|---|
Transport Area Working Group B. Briscoe | Transport Area Working Group B. Briscoe | |||
Internet-Draft BT & UCL | Internet-Draft BT & UCL | |||
Intended status: Informational March 05, 2007 | Intended status: Informational July 06, 2007 | |||
Expires: September 6, 2007 | Expires: January 7, 2008 | |||
Flow Rate Fairness: Dismantling a Religion | Flow Rate Fairness: Dismantling a Religion | |||
draft-briscoe-tsvarea-fair-01.pdf | draft-briscoe-tsvarea-fair-02.pdf | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
skipping to change at page 1, line 34 | skipping to change at page 1, line 34 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on September 6, 2007. | This Internet-Draft will expire on January 7, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
Abstract | Abstract | |||
Resource allocation and accountability have been major unresolved | Resource allocation and accountability have been major unresolved | |||
problems with the Internet ever since its inception. The reason we | problems with the Internet ever since its inception. The reason we | |||
never resolve these issues is a broken idea of what the problem is. | never resolve these issues is a broken idea of what the problem is. | |||
skipping to change at page 2, line 16 | skipping to change at page 2, line 16 | |||
Comparing flow rates should never again be used for claims of | Comparing flow rates should never again be used for claims of | |||
fairness in production networks. Instead, we should judge fairness | fairness in production networks. Instead, we should judge fairness | |||
mechanisms on how they share out the `cost' of each user's actions on | mechanisms on how they share out the `cost' of each user's actions on | |||
others. | others. | |||
Summary of Changes (to be removed by the RFC Editor on Publication) | Summary of Changes (to be removed by the RFC Editor on Publication) | |||
Full diffs created using the rfcdiff tool are available at | Full diffs created using the rfcdiff tool are available at | |||
<http://www.cs.ucl.ac.uk/staff/B.Briscoe/pubs.html#rateFairDis> | <http://www.cs.ucl.ac.uk/staff/B.Briscoe/pubs.html#rateFairDis> | |||
From -01 to -02 (the present version): | ||||
Introduction: Added motivation for more optimal fairness so ISPs | ||||
don't try to make allocations more optimal manually using DPI etc. | ||||
Clarified minimal impact on 'legacy' protocols using flow rate | ||||
fairness as a goal, even if it is no longer a goal for future | ||||
protocols. | ||||
Section 3.1: clarified that cost fairness and re-ECN are not | ||||
equivalent in any sense. | ||||
Considerably clarified Section 4 "Cost, not Benefit", explaining | ||||
better why the product of congestion and rate represents the cost | ||||
to other users and why being able to reduce prices towards cost is | ||||
desirable for users. Emphasised that cost fairness does not | ||||
require congestion pricing and we do not recommend it. Also | ||||
emphasised that ISPs don't have to use the congestion metric to | ||||
enforce cost fairness, even if it is available. Clarified that | ||||
fairness is relevant within more Diffserv behaviour aggregates | ||||
than just best effort. Clarified that congestion includes | ||||
congestion of lower layer resources including radio resources etc. | ||||
Recommended Siris's algorithm rather than MulTCP. | ||||
Section 5.2 "Comparing Costs": expanded on the marginal cost | ||||
example. Re-emphasised that putting a limit on congestion in a | ||||
service level agreement is not congestion pricing. | ||||
Section 7 "Seminal Literature": added Jain's index of fairness. | ||||
Added reference to the new TFRC-SP RFC in Section 8.3 on TFRC and | ||||
in Section 9 on "Implications for the RFC Series". | ||||
Section 8.5 on "Packet Size and Fairness": Summarised advice in | ||||
referenced I-D. | ||||
Updated references and numerous other minor edits and | ||||
clarifications. | ||||
From -00 to -01: | From -00 to -01: | |||
Toned down the polemic. | Toned down the polemic. | |||
Added Section 8 "Critiques of Specific Schemes", adding | Added Section 8 "Critiques of Specific Schemes", adding | |||
subsections on TCP and WFQ to previously disparate material on | subsections on TCP and WFQ to previously disparate material on | |||
max-min fairness, TFRC & router-based fairness approaches like | max-min fairness, TFRC & router-based fairness approaches like | |||
XCP, which have been shortened and clarified. Also added | XCP, which have been shortened and clarified. Also added | |||
subsections on TCP-style fairness wrt RTT and packet size that has | subsections on TCP-style fairness wrt. RTT and packet size that | |||
been copied by other transports. | has been copied by other transports. | |||
Added substantial new Section 9 "Implications for the RFC Series". | Added substantial new Section 9 "Implications for the RFC Series". | |||
Added to the introduction the importance of the issue and the | Added to the introduction the importance of the issue and the | |||
general implications. | general implications. | |||
Created an expanded and clarified new subsection Section 5.2 | Created an expanded and clarified new subsection Section 5.2 | |||
"Comparing Costs" from text previously at the end of Section 5.1 | "Comparing Costs" from text previously at the end of Section 5.1 | |||
"Something to Integrate the Allocations" | "Something to Integrate the Allocations" | |||
Added quote on flow granularity from RFC2309 & RFC2914. | Added quote on flow granularity from RFC2309 & RFC2914. | |||
Clarified and expanded Section 5.3.2 "Enforcing Cost Fairness". | Clarified and expanded Section 5.3.2 "Enforcing Cost Fairness". | |||
Various clarifications throughout. | Various clarifications throughout. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Requirements notation . . . . . . . . . . . . . . . . . . . . 6 | 2. Requirements notation . . . . . . . . . . . . . . . . . . . . 8 | |||
3. Fair Allocation of What Among What? . . . . . . . . . . . . . 7 | 3. Fair Allocation of What Among What? . . . . . . . . . . . . . 8 | |||
3.1. Structure of Document . . . . . . . . . . . . . . . . . . 7 | 3.1. Structure of Document . . . . . . . . . . . . . . . . . . 9 | |||
4. Cost, not Benefit . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Cost, not Benefit . . . . . . . . . . . . . . . . . . . . . . 9 | |||
5. Economic Entities not Flows . . . . . . . . . . . . . . . . . 11 | 5. Economic Entities not Flows . . . . . . . . . . . . . . . . . 14 | |||
5.1. Something to Integrate the Allocations . . . . . . . . . . 11 | 5.1. Something to Integrate the Allocations . . . . . . . . . . 14 | |||
5.2. Comparing Costs . . . . . . . . . . . . . . . . . . . . . 13 | 5.2. Comparing Costs . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.3. Enforcement of Fairness . . . . . . . . . . . . . . . . . 15 | 5.3. Enforcement of Fairness . . . . . . . . . . . . . . . . . 18 | |||
5.3.1. Cheating with Whitewashed or Split Flow Identities . . 15 | 5.3.1. Cheating with Whitewashed or Split Flow Identities . . 18 | |||
5.3.2. Enforcing Cost Fairness . . . . . . . . . . . . . . . 17 | 5.3.2. Enforcing Cost Fairness . . . . . . . . . . . . . . . 20 | |||
6. Fairness between Fairnesses . . . . . . . . . . . . . . . . . 19 | 6. Fairness between Fairnesses . . . . . . . . . . . . . . . . . 22 | |||
7. The Seminal Literature . . . . . . . . . . . . . . . . . . . . 21 | 7. The Seminal Literature . . . . . . . . . . . . . . . . . . . . 24 | |||
8. Critiques of Specific Schemes . . . . . . . . . . . . . . . . 24 | 8. Critiques of Specific Schemes . . . . . . . . . . . . . . . . 27 | |||
8.1. Max-min flow rate fairness . . . . . . . . . . . . . . . . 24 | 8.1. Max-min flow rate fairness . . . . . . . . . . . . . . . . 27 | |||
8.2. TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 8.2. TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
8.3. TFRC . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 8.3. TFRC . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
8.4. RTT and Fairness . . . . . . . . . . . . . . . . . . . . . 25 | 8.4. RTT and Fairness . . . . . . . . . . . . . . . . . . . . . 29 | |||
8.5. Packet Size and Fairness . . . . . . . . . . . . . . . . . 26 | 8.5. Packet Size and Fairness . . . . . . . . . . . . . . . . . 29 | |||
8.6. XCP and router-based fairness schemes . . . . . . . . . . 26 | 8.6. XCP and router-based fairness schemes . . . . . . . . . . 30 | |||
8.7. WFQ . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 8.7. WFQ . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
9. Implications for the RFC Series . . . . . . . . . . . . . . . 27 | 9. Implications for the RFC Series . . . . . . . . . . . . . . . 31 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | |||
12. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 12. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 32 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
14. Comments Solicited . . . . . . . . . . . . . . . . . . . . . . 32 | 14. Comments Solicited . . . . . . . . . . . . . . . . . . . . . . 36 | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . . 32 | 15.1. Normative References . . . . . . . . . . . . . . . . . . . 36 | |||
15.2. Informative References . . . . . . . . . . . . . . . . . . 33 | 15.2. Informative References . . . . . . . . . . . . . . . . . . 37 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 39 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 40 | Intellectual Property and Copyright Statements . . . . . . . . . . 44 | |||
1. Introduction | 1. Introduction | |||
"But he has nothing on at all." | "But he has nothing on at all." | |||
_The Emperor's New Clothes, Hans Christian Andersen_ | _The Emperor's New Clothes, Hans Christian Andersen_ | |||
This document is deliberately destructive. It sets out to destroy an | This document is deliberately destructive. It sets out to destroy an | |||
ideology that is blocking progress---the idea that fairness between | ideology that is blocking progress--the idea that fairness between | |||
multiplexed packet traffic can be achieved by controlling relative | multiplexed packet traffic can be achieved by controlling relative | |||
flow rates alone. Flow rate fairness was the goal behind fair | flow rates alone. Flow rate fairness was the goal behind fair | |||
resource allocation in widely deployed protocols like weighted fair | resource allocation in widely deployed protocols like weighted fair | |||
queuing (WFQ), TCP congestion control and TCP-friendly rate | queuing [WFQ], TCP congestion control [RFC2581] and TCP-friendly | |||
control [WFQ][RFC2581][RFC3448]. But it is actually just | rate control [RFC3448]. But it is actually just unsubstantiated | |||
unsubstantiated dogma to say that equal flow rates are fair. This is | dogma to say that equal flow rates are fair. This is why resource | |||
why resource allocation and accountability keep reappearing on every | allocation and accountability keep reappearing on every list of | |||
list of requirements for the Internet architecture | requirements for the Internet architecture (e.g. [NewArchReq]), but | |||
(e.g. [NewArchReq]), but never get solved. Obscured by this broken | never get solved. Obscured by this broken idea, we wouldn't know a | |||
idea, we wouldn't know a good solution from a bad one. | good solution from a bad one. | |||
Controlling relative flow rates _alone_ is a completely impractical | Controlling relative flow rates _alone_ is a completely impractical | |||
way of going about the problem. To be realistic for large-scale | way of going about the problem. To be realistic for large-scale | |||
Internet deployment, relative flow rates should be the _outcome_ of | Internet deployment, relative flow rates should be the _outcome_ of | |||
another fairness mechanism, not the mechanism itself. That other | another fairness mechanism, not the mechanism itself. That other | |||
mechanism should share out the `cost' of one user's actions on | mechanism should share out the `cost' of one user's actions on | |||
others---how much each user's transfers restrict other transfers, | others--how much each user's transfers restrict other transfers, | |||
given capacity constraints. Then flow rates will depend on a deeper | given capacity constraints. Then flow rates will depend on a deeper | |||
level of fairness that has so far remained unnamed in the literature, | level of fairness that has so far remained unnamed in the literature, | |||
but is best termed `cost fairness'. | but is best termed `cost fairness'. | |||
It really is only the idea of flow rate fairness that needs | It really is only the idea of flow rate fairness that needs | |||
destroying---nearly everything we've engineered can remain. The | destroying--nearly everything we've engineered can remain. The | |||
Internet architecture needs some minor additions, but otherwise it is | Internet architecture needs some minor additions, but otherwise it is | |||
largely already suited to cost fairness. | largely already suited to cost fairness. | |||
The metric required to arbitrate cost fairness is simply volume of | The metric required to arbitrate cost fairness is simply volume of | |||
congestion, that is congestion times the bit rate of each user | congestion, that is congestion times the bit rate of each user | |||
causing it, taken over time. In engineering terms, for each user it | causing it, taken over time. In engineering terms, for each user it | |||
can be measured very easily as the amount of data the user sent that | can be measured very easily as the amount of data the user sent that | |||
was dropped. Or with explicit congestion notification | was dropped. Or with explicit congestion notification | |||
(ECN [RFC3168]) the amount of each user's data to have been | (ECN [RFC3168]) the amount of each user's data to have been | |||
congestion marked. Importantly, unlike flow rates, this metric | congestion marked. Importantly, unlike flow rates, this metric | |||
integrates easily and correctly across different flows on different | integrates easily and correctly across different flows on different | |||
paths and across time. | paths and across time, so it can be easily incorporated into future | |||
service level agreements of ISPs. | ||||
What we call cost fairness has been in the literature for nearly a | What we call cost fairness has been in the literature for nearly a | |||
decade, but it hasn't been put so bluntly before. We were moved to | decade, but it hasn't been put so bluntly before. We were moved to | |||
spell it out unambiguously (and avoiding maths), because this isn't | spell it out unambiguously (and avoiding maths), because this isn't | |||
just some dry academic fairness debate that might change allocation | just some dry academic fairness debate that might change allocation | |||
percentages somewhere in the third decimal place. The outcomes due | percentages somewhere in the third decimal place. The outcomes due | |||
to flow rate fairness that we see on the Internet today are | to flow rate fairness that we see on the Internet today are | |||
hopelessly unlike the outcomes that would result from cost fairness. | hopelessly unlike the outcomes that would result from cost fairness. | |||
Not that the outcomes we see are the deliberate intent of flow rate | Not that the outcomes we see are the deliberate intent of flow rate | |||
skipping to change at page 5, line 20 | skipping to change at page 6, line 23 | |||
control, because flow rate fairness isn't even capable of reasoning | control, because flow rate fairness isn't even capable of reasoning | |||
about questions like, "How many flows is it fair to start between two | about questions like, "How many flows is it fair to start between two | |||
endpoints? or over different routes?" or, "What rate is fair for a | endpoints? or over different routes?" or, "What rate is fair for a | |||
flow that has been running longer than another?". | flow that has been running longer than another?". | |||
Resource allocation and accountability are two issues that reappear | Resource allocation and accountability are two issues that reappear | |||
on every list of requirements for a new Internet | on every list of requirements for a new Internet | |||
architecture [NewArchReq]. We could have started filling this | architecture [NewArchReq]. We could have started filling this | |||
architectural vacuum a decade ago, but architecture not only requires | architectural vacuum a decade ago, but architecture not only requires | |||
foundational ideas, it also requires consensus. In 1997, the basis | foundational ideas, it also requires consensus. In 1997, the basis | |||
of the dominant consensus was completely undermined, but it didn't | of the dominant consensus was completely undermined, but its | |||
even notice. | believers didn't even notice. | |||
While everyone prevaricates, novel p2p applications have started to | While everyone prevaricates, novel p2p applications have started to | |||
thoroughly exploit this architectural vacuum with no guilt or shame, | thoroughly exploit this architectural vacuum with no guilt or shame, | |||
by just running more flows for longer. Application developers | by just running more flows for longer. Application developers | |||
assume, and they have been led to assume, that fairness is dealt with | assume, and they have been led to assume, that fairness is dealt with | |||
by TCP at the transport layer. In response some ISPs are deploying | by TCP at the transport layer. In response some ISPs are deploying | |||
kludges like volume caps or throttling specific applications using | kludges like volume caps or throttling specific applications using | |||
deep packet inspection. Innocent experimental probing has turned | deep packet inspection. Innocent experimental probing has turned | |||
into an arms race. The p2p community's early concern for the good of | into an arms race. The p2p community's early concern for the good of | |||
the Internet is being set aside, aided and abetted by commercial | the Internet is being set aside, aided and abetted by commercial | |||
skipping to change at page 5, line 43 | skipping to change at page 6, line 46 | |||
are fighting back. Bystanders sharing the same capacity are | are fighting back. Bystanders sharing the same capacity are | |||
suffering heavy collateral damage. | suffering heavy collateral damage. | |||
This trend has spread beyond the p2p community. There is now no | This trend has spread beyond the p2p community. There is now no | |||
shame in opening multiple TCP connections, or offering VoIP or video | shame in opening multiple TCP connections, or offering VoIP or video | |||
streaming software without any congestion control. | streaming software without any congestion control. | |||
Whether the prevailing notion of flow rate fairness has been the root | Whether the prevailing notion of flow rate fairness has been the root | |||
cause or not, there will certainly be no solution until the | cause or not, there will certainly be no solution until the | |||
networking community gets its head out of the sand and understands | networking community gets its head out of the sand and understands | |||
how unrealistic its view is, and how important this issue is. | how unrealistic its view is; and how important this issue is--a | |||
Certainly fairness is not a question of technical function---any | conflict between the vested interests of real businesses and real | |||
allocation `works'. But getting it hopelessly wrong badly skews the | people. | |||
outcome of conflicts between the vested interests of real businesses | ||||
and real people. | Certainly fairness is not a question of technical function--any | |||
allocation `works'. But allowing self-interest to go largely | ||||
unchecked leads to an outcome hopelessly skewed away from one that | ||||
would better satisfy more people more of the time. ISPs intuitively | ||||
know that their capacity isn't being shared in the best interests of | ||||
the majority of their customers. This is why technologies like deep | ||||
packet inspection middleboxes have been developed--ISPs know that | ||||
throttling certain applications puts them at a considerable | ||||
competitive advantage over ISPs that don't. These middleboxes are | ||||
blocking the potential of the Internet to evolve future applications, | ||||
but instead of wringing our hands over this issue, we should provide | ||||
a protocol architecture that does a much better job of automatically | ||||
sharing out Internet capacity. Then ISPs won't need these kludges to | ||||
protect the experience of their customers. | ||||
But isn't it a basic article of faith that multiple views of fairness | But isn't it a basic article of faith that multiple views of fairness | |||
should be able to co-exist, the choice depending on policy? | should be able to co-exist, the choice depending on policy? | |||
Absolutely correct---and we shall return to how this can be done | Absolutely correct--and we shall return to how this can be done | |||
later. But that doesn't mean we have to give the time of day to any | later. But that doesn't mean we have to give the time of day to any | |||
random idea of fairness. | random idea of fairness. | |||
Fair allocation of rates between flows was used in good faith as a | Fair allocation of rates between flows was used in good faith as a | |||
guiding principle, but it isn't based on any respected definition of | guiding principle, but it isn't based on any respected definition of | |||
fairness from philosophy or the social sciences. It has just | fairness from philosophy or the social sciences. It has just | |||
gradually become the way things are done in networking. But it's | gradually become the way things are done in networking. But it's | |||
actually self-referential dogma. Or put more bluntly, bonkers. | actually self-referential dogma. Or put more bluntly, bonkers. | |||
We expect to be fair to people, groups of people, institutions, | We expect to be fair to people, groups of people, institutions, | |||
companies---things the security community would call `principals'. | companies--things the security community would call `principals'. | |||
But a flow is merely an information transfer between two | But a flow is merely an information transfer between two | |||
applications. Where does the argument come from that information | applications. Where does the argument come from that information | |||
transfers should have equal rights with each other? It's equivalent | transfers should have equal rights with each other? It's equivalent | |||
to claiming food rations are fair because the boxes are all the same | to claiming food rations are fair because the boxes are all the same | |||
size, irrespective of how many boxes each person gets or how often | size, irrespective of how many boxes each person gets or how often | |||
they get them. | they get them. | |||
Because flows don't deserve rights in real life, it is not surprising | Because flows don't deserve rights in real life, it is not surprising | |||
that two loopholes the size of barn doors appear when trying to | that two loopholes the size of barn doors appear when trying to | |||
allocate rate fairly to flows in a non-co-operative environment. If | allocate rate fairly to flows in a non-cooperative environment. If | |||
at every instant a resource is shared among the flows competing for a | at every instant a resource is shared among the flows competing for a | |||
share, any real-world entity can gain by i) creating more flows than | share, any real-world entity can gain by i) creating more flows than | |||
anyone else, and ii) keeping them going longer than anyone else. | anyone else, and ii) keeping them going longer than anyone else. | |||
We appeal to the networking community to quietly set aside rate | We appeal to the networking community to quietly set aside rate | |||
fairness between flows. It had its time, but now it has been shown | fairness between flows. It had its time, but now it has been shown | |||
to be unfounded, unrealistic and impractical. Papers and standards | to be unfounded, unrealistic and impractical. Future papers and | |||
proposals using it should be rejected. No-one should ever have to | standards proposals claiming fairness on the basis of flow rates | |||
cater for it in future Internet protocols---it places arbitrary | should be rejected. This does not mean we need to phase out 'legacy' | |||
requirements on the system that can't be met and wouldn't achieve any | protocols that aimed for flow rate fairness--they will continue to | |||
meaningful sort of fairness even if they could be met. | function adequately (Section 9); they simply might not make best use | |||
of future service level agreements offered by ISPs. But no-one | ||||
should ever set flow rate fairness as a goal in future Internet | ||||
protocols--it places arbitrary requirements on the system that can't | ||||
be met and wouldn't achieve any meaningful sort of fairness even if | ||||
they could be met. | ||||
Alternatively, someone should write a defence of flow rate fairness. | Alternatively, someone should write a defence of flow rate fairness. | |||
Continuing to use flow rate fairness as the dominant ideology, | Continuing to use flow rate fairness as the dominant ideology, | |||
without rebutting Kelly's seminal 1997 paper that undermined it, just | without rebutting Kelly's seminal 1997 paper that undermined it, just | |||
leaves the Internet community divided into religious sects, making a | leaves the Internet community divided into religious sects, making a | |||
mockery of the scientific process towards consensus. | mockery of the scientific process towards consensus. | |||
2. Requirements notation | 2. Requirements notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
skipping to change at page 7, line 19 | skipping to change at page 8, line 36 | |||
fairness doesn't even allocate the correct thing. And it doesn't | fairness doesn't even allocate the correct thing. And it doesn't | |||
allocate it among the correct entities either. At this most basic | allocate it among the correct entities either. At this most basic | |||
level we will contrast the two main contending views: | level we will contrast the two main contending views: | |||
o Allocate rate among flows (flow rate fairness) | o Allocate rate among flows (flow rate fairness) | |||
o Allocate congestion cost among the bits sent by economic entities | o Allocate congestion cost among the bits sent by economic entities | |||
(cost fairness) | (cost fairness) | |||
When cost fairness was proposed, it stated its case in terms of the | When cost fairness was proposed, it stated its case in terms of the | |||
dominant belief system---flow rate fairness. Unfortunately, this | dominant belief system--flow rate fairness. Unfortunately, this | |||
meant that the dominant belief system didn't notice it had been | meant that the dominant belief system didn't notice it had been | |||
struck an intellectual death blow. Its believers carried on | struck an intellectual death blow. Its believers carried on | |||
regardless and it remains dominant today. | regardless and it remains dominant today. | |||
As a result, one sees talk of weighted proportional fairness in the | As a result, one sees talk of weighted proportional fairness in the | |||
same context as proportional, max-min or min-max fairness as if they | same context as proportional, max-min or min-max fairness as if they | |||
are all members of the same set. They are not. Weighted | are all members of the same set. They are not. Weighted | |||
proportional fairness has an extra weight parameter w that all the | proportional fairness has an extra weight parameter w that all the | |||
others lack. With weighted proportional fairness, the interesting | others lack. With weighted proportional fairness, the interesting | |||
bit is what regulates users in their choice of w. Otherwise, it | bit is what regulates users in their choice of w. Otherwise, it | |||
skipping to change at page 7, line 47 | skipping to change at page 9, line 18 | |||
bits sent by economic entities, regardless of which flows the bits | bits sent by economic entities, regardless of which flows the bits | |||
are in. A user's choice of w then depends on that. | are in. A user's choice of w then depends on that. | |||
3.1. Structure of Document | 3.1. Structure of Document | |||
The body of this document is structured around our question, "Fair | The body of this document is structured around our question, "Fair | |||
allocation of what among what?": | allocation of what among what?": | |||
o Section 4 answers the "...of what...?" question, explaining why | o Section 4 answers the "...of what...?" question, explaining why | |||
fair allocation of costs is a sufficient and realistic form of | fair allocation of costs is a sufficient and realistic form of | |||
fairness, and allocation of rate is not. A sub-section also | fairness, and allocation of rate is not. | |||
explains why TCP fair rate control (TFRC) causes greater | ||||
congestion costs than TCP, because it wrongly tries to achieve | ||||
equality of flow rate. | ||||
o Section 5 answers the "...among what?" question, explaining why | o Section 5 answers the "...among what?" question, explaining why | |||
fairness among flows can only be myopic whereas fairness among | fairness among economic entities naturally spans all flows from | |||
economic entities naturally spans all flows and spans time. Also | that entity across the Internet (space) and across time, whereas | |||
we show fairness among flows is hard, if not impossible, to | fairness among flows can only be myopic; in one location and at | |||
enforce while enforcing fairness among economic entities seems | one instant. Also, to demonstrate that it would be practical to | |||
practical. | enforce cost fairness, we briefly outline a protocol proposal | |||
called re-ECN. Note that cost fairness and re-ECN are in no sense | ||||
equivalent; re-ECN is just one possible way in which cost fairness | ||||
might be enforced and anyway re-ECN was actually designed to | ||||
enforce both cost fairness and flow rate fairness. | ||||
Having debunked the dominant ideology of flow rate fairness, and | Having debunked the dominant ideology of flow rate fairness, and | |||
replaced it with cost fairness, in Section 6 we discuss how other | replaced it with cost fairness, in Section 6 we discuss how other | |||
forms of fairness can be asserted locally. Then, before we draw | forms of fairness can be asserted locally. Then, before we draw | |||
conclusions, Section 7 maps the progression of seminal ideas in the | conclusions, Section 7 maps the progression of seminal ideas in the | |||
literature on which this memo is based and Section 8 outlines | literature on which this memo is based and Section 8 outlines | |||
concrete criticisms of specific fairness schemes: max-min flow rate | concrete criticisms of specific fairness schemes: max-min flow rate | |||
fairness, TCP, TFRC, WFQ and XCP as well as discussions of dependence | fairness, TCP, TFRC, WFQ and XCP as well as discussions of dependence | |||
on RTT and packet size. Finally, Section 9 surveys the implications | on RTT and packet size. Finally, Section 9 surveys which RFCs will | |||
on the RFC series if we are to dismantle all traces of flow rate | have to be updated if we are to stop using flow rate fairness as a | |||
fairness. A FAQ Web page [FairFAQ] is planned to answer some | goal for future IETF protocols. A FAQ Web page [FairFAQ] is also | |||
frequently asked questions that didn't fit easily into the main flow | planned to answer some frequently asked questions that didn't fit | |||
of this document. | easily into the main flow of this document. | |||
4. Cost, not Benefit | 4. Cost, not Benefit | |||
The issues of fair allocation of resources comes under the domain of | The issues of fair allocation of resources comes under the domain of | |||
political economy, with philosophy reasoning about our judgements. | political economy, with philosophy reasoning about our judgements. | |||
In Section 6 we will discuss how different fairness policies can co- | In Section 6 we will discuss how different fairness policies can co- | |||
exist. But to answer our question, "Fair allocation of what?" we | exist. But to answer our question, "Fair allocation of what?" we | |||
start from the premise used in economics (and life) that fairness | start from the premise used in microeconomics (and life) that | |||
concerns comparing benefits, costs or both. | fairness concerns comparing benefits, costs or both. | |||
The benefit of a data transfer can be assumed to increase with flow | The benefit of a data transfer can be assumed to increase with flow | |||
rate, but the shape and size of the function relating the two (the | rate, but the shape and size of the function relating the two (the | |||
utility function) is unknown, subjective and private to each user. | utility function) is unknown, subjective and private to each user. | |||
Flow rate itself is an extremely inadequate measure for comparing | Flow rate itself is an extremely inadequate measure for comparing | |||
benefits: user benefit per bit rate might be ten orders of magnitude | benefits: user benefit per bit rate might be ten orders of magnitude | |||
different for different types of flow (e.g. SMS and video). So | different for different types of flow (e.g. SMS and video). So | |||
different applications might derive completely different benefits | different applications might derive completely different benefits | |||
from equal flow rates and equal benefits might be derived from very | from equal flow rates and equal benefits might be derived from very | |||
different flow rates. | different flow rates. | |||
Turning to the cost of a data transfer across a network, flow rate | Turning to the cost of a data transfer across a network, flow rate | |||
alone is not the measure of that either. Cost is also dependent on | alone is not the measure of that either. Cost is also dependent on | |||
the level of congestion on the path. This is counter-intuitive for | the level of congestion on the path. This is counter-intuitive for | |||
some people so we shall explain a little further. Once a network has | some people so we shall explain a little further. Once a network has | |||
been provisioned at a certain size, it doesn't cost a network | been provisioned at a certain size, it doesn't cost a network | |||
operator any more whether a user sends more data or not. But if the | operator any more whether a user sends more data or not. But if the | |||
network becomes congested, each user restricts every other user, | network becomes congested, each user restricts every other user, | |||
which can be interpreted as a cost _to all_---an externality in | which can be interpreted as a cost _to all_--an externality in | |||
economic terms. For any level of congestion, Kelly | economic terms. When there is no congestion, more usage costs | |||
showed [wPropFair] that the system is optimal if the blame for | nothing. But at each instant that congestion exists, continued usage | |||
congestion is attributed among all the users causing it, in | of the congested resource leads to a cost to all those trying to use | |||
it. This cost is proportional to the risk of data not being | ||||
forwarded--the loss rate. Each user causes the cost to everyone else | ||||
as well as to themselves. | ||||
Kelly showed [wPropFair] that the system becomes optimal if the blame | ||||
for congestion is attributed among all the users causing it, in | ||||
proportion to their bit rates. That's exactly what routers are | proportion to their bit rates. That's exactly what routers are | |||
designed to do anyway. During congestion, a queue randomly | designed to do anyway. During congestion, a queue randomly | |||
distributes the losses so all flows see about the same loss rate (or | distributes the losses so all flows see about the same loss rate (or | |||
ECN marking rate); if a flow has twice the bit rate of another it | ECN marking rate); if a flow has twice the bit rate of another it | |||
should see twice the losses. In this respect random early detection | should see twice the losses. In this respect random early detection | |||
(RED [RFC2309]) is slightly fairer than drop tail, but to a first | (RED [RFC2309]) is slightly fairer than drop tail, but to a first | |||
order approximation they both meet this criterion. | order approximation they both meet this criterion. | |||
So in networking, the cost of one flow's behaviour depends on the | So in networking, the usage cost of one flow's behaviour depends on | |||
congestion volume it causes which is the product of its instantaneous | the congestion volume it causes, which is the product of its | |||
flow rate and congestion on its path, integrated over time. For | instantaneous flow rate and congestion on its path, integrated over | |||
instance, if two users are sending at 200kbps and 300kbps into a | time. For instance, if two users are sending at 200kbps and 300kbps | |||
450kbps line for 0.5s, congestion is (200+300-450)/(200+300) = 10% so | into a 450kbps line for 0.5s, congestion is (200+300-450)/(200+300) = | |||
the congestion volume each causes is 200kx 10%x 0.5 = 10kb and 15kb | 10% so the congestion volume each causes is 200kx 10%x 0.5 = 10kb and | |||
respectively. | 15kb respectively. | |||
So cost depends not only on flow rate, but on congestion as well. | So cost depends not only on flow rate, but on congestion as well. | |||
Typically congestion might be in the fractions of a percent but it | Typically congestion might be in the fractions of a percent but it | |||
varies from zero to tens of percent. So, flow rate can never alone | varies from zero to tens of percent. So, flow rate can never alone | |||
serve as a measure of cost. | serve as a measure of cost. | |||
To summarise so far, flow rate is a hopelessly incorrect proxy both | To summarise so far, flow rate is a hopelessly incorrect proxy both | |||
for benefit and for cost. Even if the intent was to equalise | for benefit and for cost. Even if the intent was to equalise | |||
benefits, equalising flow-rates wouldn't achieve it. Even if the | benefits, equalising flow-rates wouldn't achieve it. Even if the | |||
intent was to equalise costs, equalising flow-rates wouldn't achieve | intent was to equalise costs, equalising flow-rates wouldn't achieve | |||
it. | it. | |||
But actually a realistic resource allocation mechanism only needs to | But actually a realistic resource allocation mechanism only needs to | |||
concern itself with costs. If we set aside political economy for a | concern itself with costs, then benefits will look after themselves. | |||
moment and use pure microeconomics, we can use a competitive market | ||||
to arbitrate fairness, which handles the benefits side, as we shall | ||||
now explain. Then once we have a feasible, scalable system that at | ||||
least implements one defined form of fairness, we will show how to | ||||
build other forms of fairness within that. | ||||
In life, as long as people cover the cost of their actions, it is | In life, as long as people cover the cost of their actions, it is | |||
generally considered fair enough. If one person enjoys a hot shower | generally considered fair enough. If one person enjoys a hot shower | |||
more than their neighbour enjoys the toast they made with equal units | more than their neighbour enjoys the toast they made with equal units | |||
of electricity, no-one expects the one who enjoyed the shower to have | of electricity, no-one expects the one who enjoyed the shower to have | |||
to pay more. If someone makes more of their lot in life than | to pay more. If someone makes more of their lot in life than | |||
another, some complain it's not fair, but most call this envy, not | another, some complain it's not fair, but most call this envy, not | |||
unfairness. | unfairness. Market economics works on the same premise | |||
(unsurprisingly given life and market economics are closely related). | ||||
Market economics works on the same premise (unsurprisingly given life | The ideal of pure microeconomics is to ensure that everyone pays as | |||
and market economics are closely related). In fact, a market adjusts | little as possible (the cost) for the things they value. The reason | |||
supply to meet demand so that benefits are as fairly distributed as | we try to ensure markets are competitive is that any provider who | |||
is consistent with the pre-existing inequalities in life. But this | tries to sell above cost price will be undercut by a competitor. And | |||
fairness between benefits is an _outcome_ and it is only met as long | once things are sold at cost, the idea is that people will choose not | |||
as a market mechanism makes people accountable for the costs of their | to have an item if they will get less benefit from it than it costs. | |||
actions (and various market failures are avoided). | Being prevented from having something if you aren't prepared to cover | |||
the cost is a basic level of fairness that is particularly important | ||||
when the cost is suffered by others around you. | ||||
The problem with the current Internet architecture is that the cost | ||||
of usage (congestion volume) is hidden from network providers. | ||||
Everyone would like prices to drop towards cost, but even if Internet | ||||
provision gets more competitive, there is no mechanism to reveal what | ||||
the costs are. So no-one can stop certain users causing more costs | ||||
to others than they have paid for (except by using the damaging | ||||
kludges mentioned early). | ||||
So far, we have only used the pure microeconomics of a market. But | ||||
this only ensures benefits are as fairly distributed as is consistent | ||||
with the pre-existing inequalities in life, setting aside other forms | ||||
of fairness that might be required (the concern of political | ||||
economy). But once we have a feasible, scalable system that | ||||
counterbalances basic self-interest and at least implements one | ||||
defined form of fairness, we will show (in Section 6) how to build | ||||
other forms of fairness within that. | ||||
To further summarise so far, making people accountable for the cost | ||||
of their actions is a basic form of fairness, and we can only achieve | ||||
various more sophisticated forms of fairness if a basic market | ||||
mechanism can make people accountable for the costs of their actions | ||||
(and various market failures are avoided). | ||||
We deliberately say `make people accountable' to avoid the phrase | We deliberately say `make people accountable' to avoid the phrase | |||
`make people pay', because users tend to prefer flat rate | `make people pay', because users tend to prefer flat rate | |||
subscription for Internet access. So, ISPs want to be able to limit | subscription for Internet access not unpredictable congestion | |||
the congestion costs they are able to cause (Section 5.3.2), not just | charges. So, ISPs will want to be able to limit the congestion costs | |||
charge them for whatever unlimited costs they cause. | their users are able to cause (Section 5.3.2), rather than charge | |||
them for whatever unlimited costs they cause. We are certainly not | ||||
advocating congestion pricing for retail users. No matter how many | ||||
times we say this, people still wrongly jump to this conclusion. So | ||||
note well again: we neither require nor recommend that retail users | ||||
pay congestion prices to be able to achieve cost fairness. | ||||
Indeed, all we are saying is that a congestion metric should be | ||||
visible to those ISPs who want to include it in their service level | ||||
agreements. We are _not_ saying ISPs _should_ do this, just that it | ||||
is in everyone's interests that the costs people cause can be limited | ||||
to what they have paid. So the Internet architecture should be | ||||
_able_ to reveal a cost metric. | ||||
If we do make users truly accountable for the cost of the congestion | If we do make users truly accountable for the cost of the congestion | |||
they cause, a form of fairness between flow rates emerges | they cause, a form of fairness between flow rates emerges | |||
automatically. As everyone increases the rate of each of their | automatically. As everyone increases the rate of each of their | |||
flows, congestion rises. As congestion rises, everyone pays due | flows, congestion rises. As congestion rises, everyone pays due | |||
regard to the share of the cost attributed to them. So, each | regard to the share of the cost attributed to them. So, each | |||
individual will want their congestion control algorithm to | individual will want their congestion control algorithm to | |||
continuously adjust its rate to maximise their net utility---benefit | continuously adjust its rate to maximise their net utility--benefit | |||
minus cost. Kelly [wPropFair] shows that even if each user keeps | minus cost. Kelly [wPropFair] shows that even if each user keeps | |||
their utility function private but we _model_ all the different users | their utility function private but we _model_ all the different users | |||
by an arbitrary weight that scales their utility function relative to | by an arbitrary weight that scales their utility function relative to | |||
others, users will allocate themselves flow rates so that the cost | others, users will allocate themselves flow rates so that the cost | |||
they cause will equal the weight they choose---weighted proportional | they cause will equal the weight they choose--weighted proportional | |||
fairness. | fairness. | |||
But such a flow rate allocation is not the measure of fairness, it is | But such a flow rate allocation is not the measure of fairness, it is | |||
merely a possible _outcome_ caused by cost fairness, given some | merely a possible _outcome_ caused by cost fairness, given some | |||
assumptions about how to model the shape of users' private utility | assumptions about how to model the shape of users' private utility | |||
functions. Enforcing underlying cost fairness is in itself a | functions. Enforcing underlying cost fairness is in itself a | |||
sufficient form of fairness. We repeat: _the resulting relative flow | sufficient form of fairness. We repeat: _the resulting relative flow | |||
rates are not the measure of fairness_. | rates are not the measure of fairness_. | |||
Most importantly, Kelly proved cost fairness would lead everyone to | Most importantly, Kelly proved cost fairness would lead everyone to | |||
maximise their combined aggregate utility across the whole Internet. | maximise their combined aggregate utility across the whole Internet. | |||
In other words, if anyone was allocated more and someone else less, | In other words, if anyone was allocated more and someone else less, | |||
the outcome would be worse as a whole. This is why cost fairness is | the outcome would be less aggregate utility as a whole. This is why | |||
so important, as other forms of fairness cannot be better, unless | cost fairness is so important, as other forms of fairness cannot be | |||
some major flaw is found in Kelly's assumptions. Kelly _et al_ also | better, unless some major flaw is found in Kelly's assumptions. | |||
proved that, even though relative flow rates would likely be very | Kelly _et al_ also proved that, even though relative flow rates would | |||
different from those seen today, the Internet would remain stable | likely be very different from those seen today, the Internet would | |||
given reasonable constraints and assumptions [wPropStab]. | remain stable given reasonable constraints and | |||
assumptions [wPropStab]. | ||||
While on the subject of assumptions, we should add that the benefit | While on the subject of assumptions, we should add that the benefit | |||
of a real-time application depends on jitter, not just transfer rate. | of a real-time application depends on jitter, not just transfer rate. | |||
But simple scaling arguments show that it will be possible for | But simple scaling arguments show that it will be possible for | |||
network operators to minimise congestion delay as networks increase | network operators to minimise congestion delay as networks increase | |||
in capacity ([SelfMan] S.2), an argument supported by recent research | in capacity ([SelfMan] S.2), an argument supported by recent research | |||
showing that router buffers are often significantly | showing that router buffers are often significantly | |||
oversized [BufSizUp]. | oversized [BufSizUp]. | |||
On the other hand, no-one has even tried to claim that flow rate | We should also point out that fairness can be relevant within any | |||
equality achieves any fairness objective. It has just been asserted | Diffserv behaviour aggregate [RFC2475], not just best effort, and | |||
as an arbitrary engineer's dogma. This is why flow rate fairness is | that congestion is not solely a property of network layer buffers. | |||
so open to criticism as unrealistic---having no basis in any | Path congestion can consist of contributions from near-exhaustion of | |||
recognised form of fairness in real life, science or philosophy. | all sorts of physical resources at all layers: e.g. radio transmitter | |||
power, spectrum interference and battery power. Siris | ||||
[ECNFixedWireless] explains how all these can and should be collected | ||||
together along a path into ECN markings at the network layer to be | ||||
fed back to the source transport. | ||||
These are what we mean by reasonable assumptions around Kelly's | ||||
fairness definition. On the other hand, no-one has even tried to | ||||
claim that flow rate equality achieves any fairness objective. It | ||||
has just been asserted as an arbitrary engineer's dogma. This is why | ||||
flow rate fairness is so open to criticism as unrealistic--having no | ||||
basis in any recognised form of fairness in real life, science or | ||||
philosophy. | ||||
Proponents of flow-rate fairness might be forgiven for aiming for an | Proponents of flow-rate fairness might be forgiven for aiming for an | |||
`unrealistic' form of fairness if a `realistic' form was difficult to | `unrealistic' form of fairness if a `realistic' form was difficult to | |||
implement in practice. In fact, it is flow rate fairness that is | implement in practice. In fact, it is flow rate fairness that is | |||
completely impractical to enforce (Section 5.3.1). The reason we are | completely impractical to enforce (Section 5.3.1). The reason we are | |||
resurrecting cost fairness is that we believe there are now much more | resurrecting cost fairness is that we believe there are now much more | |||
practical ways to enforce it---ways that are built around existing | practical ways to enforce it--ways that are built around existing | |||
Internet congestion control but, unlike Kelly's, they don't require | Internet congestion control but, unlike Kelly's, they don't require | |||
all ISPs to change their retail model to congestion charging | all ISPs to change their retail model to congestion charging | |||
(Section 5.3.2). | (Section 5.3.2). | |||
But how would users "allocate themselves flow rates in proportion to | But how would users "allocate themselves flow rates in proportion to | |||
the share of the cost that they cause"? If they were made | the share of the cost that they cause"? If they were made | |||
accountable for congestion, they would install a version of TCP with | accountable for congestion, they would install a version of TCP with | |||
a weight parameter (for example MulTCP [MulTCP]), at least for TCP- | a weight parameter, at least for TCP-based applications. | |||
based applications. Of course, most users wouldn't want the fuss of | MulTCP [MulTCP] is a simple example of such a TCP. An application | |||
weighting each individual flow. But if they chose to set policies on | can give it a parameter w to emulate the congestion behaviour of w | |||
average for large classes of flows (or to accept the defaults set by | TCP flows. MulTCP is conceptually useful for those familiar with | |||
application developers), the resulting suboptimal outcome for | TCP, but it has various failings (e.g. w<1 became increasingly | |||
themselves would be their own private choice to trade optimality | problematic). Instead we would recommend an algorithm such as | |||
against hassle. The underlying fairness criterion would still be | Siris's weighted window-based control [WindowPropFair]. | |||
met: that people should be accountable for the costs they cause to | ||||
others. | Of course, most users wouldn't want the fuss of weighting each | |||
individual flow. But if they chose to set policies on average for | ||||
large classes of flows (or to accept the defaults set by application | ||||
developers), the resulting suboptimal outcome for themselves would be | ||||
their own private choice to trade optimality against hassle. The | ||||
underlying fairness criterion would still be met: that people should | ||||
be accountable for the costs they cause to others. | ||||
In contrast, with flow-rate fairness, two flows may cause orders of | In contrast, with flow-rate fairness, two flows may cause orders of | |||
magnitude different costs to others (for instance if one has been | magnitude different costs to others (for instance if one has been | |||
running orders of magnitude longer) by running at equal rates. | running orders of magnitude longer) by running at equal rates. | |||
Nowhere do we find any justification for the dogma that flow rates | Nowhere do we find any justification for the dogma that flow rates | |||
must be equal to be fair. Nowhere do we find any rebuttal of Kelly's | must be equal to be fair. Nowhere do we find any rebuttal of Kelly's | |||
destruction of flow rate fairness, even after nine years. | destruction of flow rate fairness, even after ten years. | |||
5. Economic Entities not Flows | 5. Economic Entities not Flows | |||
5.1. Something to Integrate the Allocations | 5.1. Something to Integrate the Allocations | |||
Imagine loaves of bread are regularly delivered to a famine-struck | Imagine loaves of bread are regularly delivered to a famine-struck | |||
refugee camp. Each time a loaf is brought out, a queue forms and the | refugee camp. Each time a loaf is brought out, a queue forms and the | |||
loaf is divided equally among those in the queue. If the individuals | loaf is divided equally among those in the queue. If the individuals | |||
who appear in each queue are always different, except for one who | who appear in each queue are always different, except for one who | |||
always appears in every queue, would it still be fair to share each | always appears in every queue, would it still be fair to share each | |||
skipping to change at page 12, line 21 | skipping to change at page 14, line 47 | |||
So a fairness mechanism that claims to support commercially realistic | So a fairness mechanism that claims to support commercially realistic | |||
fairness policies must be structured to hold individual history | fairness policies must be structured to hold individual history | |||
without destroying scalability. And here, `individual' means some | without destroying scalability. And here, `individual' means some | |||
real-world entity with an economic existence, not a flow. | real-world entity with an economic existence, not a flow. | |||
Router-based flow rate fairness mechanisms tend to have to be myopic. | Router-based flow rate fairness mechanisms tend to have to be myopic. | |||
To be otherwise would seem to require holding the history of most | To be otherwise would seem to require holding the history of most | |||
Internet connected individuals on most routers, because a flow from | Internet connected individuals on most routers, because a flow from | |||
nearly any individual in the world might appear at nearly any router. | nearly any individual in the world might appear at nearly any router. | |||
So instead, router-based schemes tend to share out flow rate at each | So instead, router-based schemes tend to share out flow rate at each | |||
instant without regard to individual history---and unfortunately | instant without regard to individual history--and unfortunately | |||
without regard to commercial reality. | without regard to commercial reality. | |||
Instead of arbitrating fairness on routers, fairness can be and | Instead of arbitrating fairness on routers, fairness can be and | |||
already is arbitrated where state can be held scalably---at the | already is arbitrated where state can be held scalably--at the | |||
endpoints where the congestion costs of each individual are already | endpoints where the congestion costs of each individual are already | |||
collected together. One reason for our frustration with the | collected together. One reason for our frustration with the | |||
networking community's focus on flow rate fairness is that the TCP/ | networking community's focus on flow rate fairness is that the TCP/ | |||
IP-based architecture of the Internet already has a structure very | IP-based architecture of the Internet already has a structure very | |||
close to that required to arbitrate fairness based on the costs that | close to that required to arbitrate fairness based on the costs that | |||
individuals cause, rather than on flow rates. | individuals cause, rather than on flow rates. | |||
Congested routers generate cost signals (losses or ECN marks) that | Congested routers generate cost signals (losses or ECN marks) that | |||
are carried to the transport causing the congestion, piggy-backed in | are carried to the transport causing the congestion, piggy-backed in | |||
the packet stream either as gaps in the transport stream or as ECN | the packet stream either as gaps in the transport stream or as ECN | |||
marks. These congestion signals are already fed back to the sending | marks. These congestion signals are already fed back to the sending | |||
transport by nearly all transport protocols. And congestion control | transport by nearly all transport protocols. And congestion control | |||
algorithms like TCP already adapt their flow rates in response to | algorithms like TCP already adapt their flow rates in response to | |||
congestion. So all we would need to change would be to use a | congestion. So all we would need to change would be to use a | |||
weighted TCP algorithm [MulTCP] (or equivalent for inelastic | weighted TCP algorithm [WindowPropFair] (or equivalent for inelastic | |||
applications) that could weight itself under the control of a process | applications) that could weight itself under the control of a process | |||
overarching all the flows of one user, which would take into account | overarching all the flows of one user, which would take into account | |||
the user's cost history across all flows. | the user's cost history across all flows. | |||
Of course, there is no incentive for anyone to voluntarily subject | Of course, there is no incentive for anyone to voluntarily subject | |||
themselves to such fairness (nonetheless, they already subject | themselves to such fairness (nonetheless, they already subject | |||
themselves to TCP which voluntarily halves its rate whenever it | themselves to TCP which voluntarily halves its rate whenever it | |||
senses congestion). But as we shall see in Section 5.3.1, policing | senses congestion). But as we shall see in Section 5.3.1, policing | |||
fairness between individuals (and between networks) at their point of | fairness between individuals (and between networks) at their point of | |||
attachment to the Internet has already been solved, whereas getting | attachment to the Internet has already been solved, whereas getting | |||
skipping to change at page 13, line 28 | skipping to change at page 16, line 7 | |||
connection with the global economy. | connection with the global economy. | |||
Different types of users (heavy users, light users, servers, server | Different types of users (heavy users, light users, servers, server | |||
farms, companies) will want to be able to cause different volumes of | farms, companies) will want to be able to cause different volumes of | |||
congestion. As long as congestion can be equated to cost, it can be | congestion. As long as congestion can be equated to cost, it can be | |||
related to the amount each user has paid for their attachment to the | related to the amount each user has paid for their attachment to the | |||
Internet. Even if some localised authority asserts a non-economic | Internet. Even if some localised authority asserts a non-economic | |||
variant of fairness between some sub-set of users (e.g. in a | variant of fairness between some sub-set of users (e.g. in a | |||
university or corporation), the authority as a whole will still align | university or corporation), the authority as a whole will still align | |||
its understanding of cost with that of the global economy (see | its understanding of cost with that of the global economy (see | |||
Section 6). | Section 6) on Fairness between Fairnesses. | |||
To be able to compare costs globally, we cannot merely talk of volume | To be able to compare costs globally, we cannot merely talk of volume | |||
of congestion as a cost to other users without calibrating it--- | of congestion as a cost to other users without calibrating it-- | |||
without specifying how it relates to monetary cost. In a competitive | without specifying how it relates to monetary cost. In a competitive | |||
market, the monetary cost that should be assigned to congestion | market, the monetary cost that should be assigned to congestion | |||
volume turns out to be the marginal cost of the capacity needed to | volume turns out to be the marginal cost of the capacity needed to | |||
alleviate the congestion [PrCong] (see FAQ [FairFAQ] for details) | alleviate the congestion [PrCong] (see FAQ [FairFAQ] for details). | |||
The term `marginal' cost is used in economics for the slope of the | The term `marginal' cost is used in economics for the slope of the | |||
curve of cost against capacity. To take a toy example, imagine a | curve of cost against capacity. To take a toy example, imagine a | |||
10Gbps interface card costs $1,000 and the cost follows a rough | 10Gbps interface card costs $1,000 and the cost follows a rough | |||
square root law so that a 20Gbps interface card will cost about | square root law so that a 20Gbps interface card will cost about | |||
$1,400 (sqrt(2)x the cost for 2x the capacity). Even though the | $1,400 (2 times the capacity costs sqrt(2) times as much). Even | |||
average cost of the 10Gbps card is $100 per Gbps, the marginal cost | though the average cost of the 10Gbps card is $100 per Gbps, the | |||
is only $50 per Gbps, implying an 11Gbps card (if cards could be | marginal cost is only $50 per Gbps. (Because: If X is capacity, C is | |||
upgraded with such fine granularity) would cost about $1,050. | cost and k is a constant, we have assumed C = k sqrt(X), so marginal | |||
cost = dC/dX = k/2sqrt(X) = C/2X, which is half of the average cost = | ||||
C/X). This implies an 11Gbps card (if cards could be upgraded with | ||||
such fine granularity) would cost about $1,050. | ||||
Note that when we say that the cost of congestion equates to the | Note that when we say that the cost of congestion equates to the | |||
marginal cost of capacity, we are not introducing any additional | marginal cost of capacity, we are not introducing any additional | |||
cost; we are merely categorising cost into sub-divisions. So, an | cost; we are merely categorising cost into sub-divisions. So, an | |||
existing flat fee Internet charge should be considered to consist of | existing flat fee Internet charge should be considered to consist of | |||
parts to cover: | parts to cover: | |||
o operational (non-capacity) costs; | o operational (non-capacity) costs; | |||
o capacity upgrade costs to alleviate congestion (the $50/Gbps); | o capacity upgrade costs to alleviate congestion (the $50/Gbps | |||
marginal cost); | ||||
o the balance of the cost of capacity ($100-$50=$50/Gbps). | o the balance of the average cost of capacity ($100-$50=$50/Gbps). | |||
The distinction between the last two is important, because the cost | The distinction between the last two is important, because the cost | |||
of capacity is traditionally shared out in proportion to access link | of capacity is traditionally shared out in proportion to access link | |||
capacity. But different users with the same access link capacity can | capacity. But different users with the same access link capacity can | |||
cause _hugely_ different volumes of congestion across time and across | cause _hugely_ different volumes of congestion across time and across | |||
all the Internet links they regularly use, so it is fair to share out | all the Internet links they regularly use, so it is fair to share out | |||
the upgrade cost part in proportion to congestion caused, not access | the upgrade cost part in proportion to congestion caused, not access | |||
link capacity. | link capacity. | |||
Once a cost is assigned to congestion that equates to the cost of | Once a cost is assigned to congestion that equates to the cost of | |||
alleviating it, users will only cause congestion if they want extra | alleviating it, users will only cause congestion if they want extra | |||
capacity enough to be willing to pay its cost. Of course, there will | capacity enough to be willing to pay its cost (e.g. using up | |||
be no need to be too precise about that rule. Perhaps some people | congestion quota they have paid for). Of course, there will be no | |||
might be allowed to get more than they pay for and others less. | need to be too precise about that rule. Perhaps some people might be | |||
Perhaps some people will be prepared to pay for what others get, and | allowed to get more than they pay for and others less. Perhaps some | |||
so on. | people will be prepared to pay for what others get, and so on. | |||
But, in a system the size of the Internet, there has to be be some | But, in a system the size of the Internet, there has to be some | |||
handle to arbitrate how much cost some users cause to others. Flow | handle to arbitrate how much cost some users cause to others. Flow | |||
rate fairness comes nowhere near being up to the job. It just isn't | rate fairness comes nowhere near being up to the job. It just isn't | |||
realistic to create a system the size of the Internet and define | realistic to create a system the size of the Internet and define | |||
fairness within the system without reference to fairness outside the | fairness within the system without reference to fairness outside the | |||
system---in the real world where everyone grudgingly accepts that | system--in the real world where everyone grudgingly accepts that | |||
fairness usually means "you get what you pay for". | fairness usually means "you get what you pay for". | |||
Note that we use the phrase "you get what you pay for" not just "you | Note that we use the phrase "you get what you pay for" not just "you | |||
pay for what you get". In Kelly's original formulation, users had to | pay for what you get". In Kelly's original formulation, users had to | |||
pay for the congestion they caused, which was unlikely to be taken up | pay for the congestion they caused, which was unlikely to be taken up | |||
commercially. But the reason we are revitalising Kelly's work is | commercially. But the reason we are revitalising Kelly's work is | |||
that recent advances (Section 5.3.2) should allow ISPs to keep their | that recent advances (Section 5.3.2) should allow ISPs to keep their | |||
popular flat fee pricing packages by aiming to ensure that users | popular flat fee pricing packages along with a service level | |||
cannot cause more congestion costs than their flat fee pays for. | agreement that ensures users cannot cause excessive congestion (e.g. | |||
not more congestion cost than their flat fee pays for). Note that | ||||
limiting congestion is _not_ congestion pricing, just as a volume cap | ||||
is not volume charging. | ||||
The engineering details of all these commercially realistic systems | The engineering details of all these commercially realistic | |||
don't have to concern the research or standards communities in | accountability systems don't have to concern the research or | |||
networking. It is sufficient to design protocols so that congestion | standards communities in networking. It is sufficient to design | |||
costs _can_ be integrated into one simple counter across different | protocols so that congestion costs _can_ be integrated into one | |||
flows and across time for some higher layer to use, so that senders | simple counter across different flows and across time for some higher | |||
_can_ be made accountable for the congestion they cause. Systems and | layer to use, so that senders _can_ be made accountable for the | |||
protocols intended for Internet deployment do not have to _always_ | congestion they cause. Systems and protocols intended for Internet | |||
realise the sort of fairness over time that we find around us in the | deployment do not have to _always_ realise the sort of fairness over | |||
real world, but they must _be able_ to. | time that we find around us in the real world, but they must _be | |||
able_ to. | ||||
This subtle connection with the global economy at every Internet | This subtle connection with the global economy at every Internet | |||
attachment point ensures that there is no need for some system to | attachment point ensures that there is no need for some system to | |||
decide how far back the history of each individual's costs should | decide how far back the history of each individual's costs should | |||
still be taken into account. Once the cost that one entity causes to | still be taken into account. Once the cost that one entity causes to | |||
others (integrated over time and over all its flows) has been | others (integrated over time and over all its flows) has been | |||
suffered by that entity itself, it can be forgotten. Just like the | suffered by that entity itself (e.g. by subtracting from a quota), it | |||
costs for all the other benefits everyone assimilates in their daily | can be forgotten. Just like the costs for all the other benefits | |||
lives. And the concept of a customer account also naturally ensures | everyone assimilates in their daily lives. And the concept of a | |||
that a user cannot escape accountability merely by roaming or | customer account also naturally ensures that a user cannot escape | |||
mobility. | accountability merely by roaming or mobility. | |||
Finally, note well that this `ISP' and `customer' terminology doesn't | Finally, note well that this `ISP' and `customer' terminology doesn't | |||
preclude peer-to-peer creations that arbitrate fair use of the | preclude peer-to-peer creations that arbitrate fair use of the | |||
resources of a self-provided community network [ArchP2pEcon]. | resources of a self-provided community network [ArchP2pEcon]. | |||
5.3. Enforcement of Fairness | 5.3. Enforcement of Fairness | |||
5.3.1. Cheating with Whitewashed or Split Flow Identities | 5.3.1. Cheating with Whitewashed or Split Flow Identities | |||
In the real world of deployed networks, if it is easy to cheat the | In the real world of deployed networks, if it is easy to cheat the | |||
skipping to change at page 16, line 5 | skipping to change at page 18, line 40 | |||
whitewashed reputation for its traffic. | whitewashed reputation for its traffic. | |||
And it's no good imagining that a router will be able to tell which | And it's no good imagining that a router will be able to tell which | |||
flow IDs are actually all from the same entity (either in the | flow IDs are actually all from the same entity (either in the | |||
security sense or the economic sense), because routers have to | security sense or the economic sense), because routers have to | |||
arbitrate between flows emanating from networks many domains away. | arbitrate between flows emanating from networks many domains away. | |||
They cannot be expected to know which sets of flow identifiers should | They cannot be expected to know which sets of flow identifiers should | |||
be treated as a single entity. Flows between a pair of IP addresses | be treated as a single entity. Flows between a pair of IP addresses | |||
may even be attributable to more than one entity, for instance, an IP | may even be attributable to more than one entity, for instance, an IP | |||
address may be shared by many hundreds of accounts on a Web or e-mail | address may be shared by many hundreds of accounts on a Web or e-mail | |||
hosting site or behind a NAT. | hosting site or behind a NAT. And anyway, even if entities could be | |||
identified separately, not all entities are equal, for instance | ||||
compare your granny's PC with a large server. | ||||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
|See draft-briscoe-tsvarea-fair-01.pdf version for figure here | |See draft-briscoe-tsvarea-fair-02.pdf version for figure here | |||
| | | | |||
| | | | |||
| | | | |||
Figure 1: Splitting flow identifiers to cheat against flow rate | Figure 1: Splitting flow identifiers to cheat against flow rate | |||
fairness. | fairness. | |||
Bottleneck policers [pBox],[XCHOKe],[AFD], suffer from the same | Bottleneck policers [pBox],[XCHOKe],[AFD], suffer from the same | |||
inherent problem. They look for a flow ID at a bottleneck that is | inherent problem. They look for a flow ID at a bottleneck that is | |||
consuming much more bit rate than other flows in order to police use | consuming much more bit rate than other flows in order to police use | |||
skipping to change at page 17, line 19 | skipping to change at page 20, line 16 | |||
"We would guess that the source/destination host pair gives the most | "We would guess that the source/destination host pair gives the most | |||
appropriate granularity in many circumstances. The granularity of | appropriate granularity in many circumstances. The granularity of | |||
flows for congestion management is, at least in part, a policy | flows for congestion management is, at least in part, a policy | |||
question that needs to be addressed in the wider IETF community.". | question that needs to be addressed in the wider IETF community.". | |||
Given identifiers can generally be freely created in cyberspace, it | Given identifiers can generally be freely created in cyberspace, it | |||
is well-known that they shouldn't be relied on for resource | is well-known that they shouldn't be relied on for resource | |||
allocation (or more generally for negative | allocation (or more generally for negative | |||
reputation) [FrRideP2p],[CheapPseud]. Kelly [wPropFair] chose cost- | reputation) [FrRideP2p],[CheapPseud]. Kelly [wPropFair] chose cost- | |||
based fairness (his term was `pricing per unit share') because it was | based fairness (his term was `pricing per unit share') because it was | |||
immune to this problem---it allocates cost to bits not to flows and | immune to this problem--it allocates cost to bits not to flows and | |||
hence doesn't rely on any cyber-identifiers. | hence doesn't rely on any cyber-identifiers. | |||
In summary, once one accepts that fairness should be based on | In summary, once one accepts that fairness should be based on | |||
concepts from social science, fairness can only be meaningful between | concepts from social science, fairness can only be meaningful between | |||
entities with real-world identities---humans, organisations, | entities with real-world identities--humans, organisations, | |||
institutions, businesses. Otherwise two entities can claim to have | institutions, businesses. Otherwise two entities can claim to have | |||
arbitrarily many flows between them, making fairness between flows | arbitrarily many flows between them, making fairness between flows | |||
completely meaningless. | completely meaningless. | |||
5.3.2. Enforcing Cost Fairness | 5.3.2. Enforcing Cost Fairness | |||
If enforcing flow rate fairness is impractical, is enforcing cost | If enforcing flow rate fairness is impractical, is enforcing cost | |||
fairness any more achievable? Happily, the Internet's architecture | fairness any more achievable? Happily, the Internet's architecture | |||
is already suited to carrying the right cost information for cost | is already suited to carrying the right cost information for cost | |||
fairness mechanisms to be enforced in a non-co-operative environment. | fairness mechanisms to be enforced in a non-cooperative environment. | |||
Kelly's stated motivation for his focus on pricing was so that the | Kelly's stated motivation for his focus on pricing was so that the | |||
system would be applicable to a non-co-operative environment. In | system would be applicable to a non-cooperative environment. In | |||
1999, Gibbens and Kelly went further, pointing out [Evol_cc] that | 1999, Gibbens and Kelly went further, pointing out [Evol_cc] that | |||
ECN [RFC3168] provided an ideal basis on which to base cost fairness. | ECN [RFC3168] provided an ideal basis on which to base cost fairness. | |||
The idea was simply for network operators to ECN mark traffic at | The idea was simply for network operators to ECN mark traffic at | |||
congested routers without regard to flows, then to apply a price to | congested routers without regard to flows, then to apply a price to | |||
the volume of traffic carrying ECN marks, which would make the | the volume of traffic carrying ECN marks, which would make the | |||
transport endpoints accountable for the congestion they caused. | transport endpoints accountable for the congestion they caused. | |||
However, understandably, the idea of Internet retailers charging | However, understandably, the idea of Internet retailers charging | |||
their end-customers directly for congestion met strong resistance. | their end-customers directly for congestion met strong resistance. | |||
Customers are known to be highly averse to unpredictable charges for | Customers are known to be highly averse to unpredictable charges for | |||
services ([PMP] S.5) so duration charging for each Internet flow was | services ([PMP] S.5) so Kelly's duration charging for each Internet | |||
unlikely to replace flat monthly charging. | flow was unlikely to replace flat monthly charging. | |||
Many threw out the baby with the bath water, associating Kelly's | Many threw out the baby with the bath water, associating Kelly's | |||
theoretical work solely with its suggested pricing model. But over | theoretical work solely with its suggested pricing model. But over | |||
the ensuing years, an active research community has sought to keep | the ensuing years, an active research community has sought to keep | |||
the underlying theory but wrapped around with a more realistic | the underlying theory but wrapped around with more realistic and | |||
incarnation. | flexible pricing and service possibilities. | |||
Indeed the recent proposal called re-ECN [Re-TCP] claims to do just | Indeed the recent proposal called re-ECN [Re-TCP] claims to do just | |||
that. Here the discussion is confined to whether the economic | that. We will give an overview or re-ECN below, but first we must | |||
structure and functional effect on the network service that re-ECN | make it absolutely clear that re-ECN shouldn't be equated with cost | |||
aspires to is valid. If it is, the research agenda should be focused | fairness. Re-ECN could provide one way to achieve cost fairness but | |||
on producing that outcome, even if re-ECN itself isn't the answer. | other mechanisms might also be feasible. Also re-ECN was designed to | |||
be able to enforce flow rate fairness as well as cost fairness. | ||||
So here the discussion is confined to whether the economic structure | ||||
and functional effect on the network service that re-ECN aspires to | ||||
is valid. If it is, the research agenda should be focused on | ||||
producing that outcome, even if re-ECN itself isn't the answer. | ||||
(Readers tempted to game re-ECN shouldn't rely on the brief | (Readers tempted to game re-ECN shouldn't rely on the brief | |||
description here; rather they should use the full spec above, which, | description here; rather they should use the full spec above, which, | |||
as of early 2007, documents one outstanding vulnerability and | as of mid-2007, documents one outstanding vulnerability and defences | |||
defences against other known attacks.) | against other known attacks.) | |||
Re-ECN aims not to constrain retail pricing, requiring no change to | Re-ECN aims not to constrain retail pricing, requiring no change to | |||
typical flat rate Internet contracts. But it enables addition of a | typical flat rate Internet contracts. But it enables addition of a | |||
policer that can limit the volume of congestion a customer's sent | policer that can limit the volume of congestion a customer's sent | |||
traffic causes over, say, a moving month. Thus, if endpoint | traffic causes over, say, a moving month. Thus, if endpoint | |||
congestion control (e.g. MulTCP [MulTCP]) doesn't voluntarily act | congestion control doesn't voluntarily act fairly the network ingress | |||
fairly the network ingress can force it to. It is expected that | can force it to. It is expected that various styles of policing | |||
various styles of policing (including none) will evolve through | (including none) will evolve through market selection. Policing can | |||
market selection. | be per-user or per flow, but bulk per-user policing is sufficient for | |||
cost fairness. | ||||
Although Gibbens & Kelly rightly identified that standard ECN reveals | Although Gibbens & Kelly rightly identified that standard ECN reveals | |||
the necessary information for cost-based fairness, it doesn't reveal | the necessary information for cost-based fairness, it doesn't reveal | |||
it in the right place for network layer policing---at the _sender's_ | it in the right place for network layer policing--at the _sender's_ | |||
network attachment. In the current TCP/IP architecture, congestion | network attachment. In the current TCP/IP architecture, congestion | |||
information emerges from the end of a forward data path, which is the | information emerges from the end of a forward data path, which is the | |||
last point in the feedback loop that any network operator can | last point in the feedback loop that any network operator can | |||
reliably intercept it---the wrong end for policing the sender. | reliably intercept it--the wrong end for policing the sender. | |||
Re-ECN preserves IP's datagram model, but makes delivery conditional | Re-ECN reveals congestion at the start of a data path while managing | |||
on the sender `pre-loading' packet streams with enough `credit' to | to preserve IP's connectionless datagram model. It makes delivery | |||
remain non-negative despite being decremented by congestion | conditional on the sender `pre-loading' packet streams with enough | |||
experienced along the path. It should then be in _both_ the | `credit' to remain non-negative despite being decremented by | |||
endpoints' interests for the sender to use a pattern of feedback | congestion experienced along the path. It should then be in _both_ | |||
the endpoints' interests for the sender to use a pattern of feedback | ||||
where the sender re-inserts the feedback from each congestion event | where the sender re-inserts the feedback from each congestion event | |||
into the next sent packet as a `credit' (re-feedback [Re-fb]). It | into the next sent packet as a `credit' (re-feedback [Re-fb]). It | |||
should also be in the sender's interest to start every flow slowly | should also be in the sender's interest to start every flow slowly | |||
and with some initial `credit' while it establishes the path's | and with some initial `credit' while it establishes the path's | |||
congestion level. | congestion level. | |||
Like Kelly's original proposal, re-ECN uses ECN routers (and | Like Kelly's original proposal, re-ECN uses ECN routers (and | |||
receivers) unchanged to ensure the cost of congestion is communicated | receivers) unchanged to ensure the cost of congestion is communicated | |||
to each transport causing it, precisely in proportion to their bit | to each transport causing it, precisely in proportion to their bit | |||
rates, without any per-flow processing in the network. But, unlike | rates, without any per-flow processing in the network. But, unlike | |||
Kelly, sources not receivers are held responsible and the network | Kelly, sources not receivers are held responsible and the network | |||
cannot raise unsolicited charges without the sender deliberately | cannot raise unsolicited charges without the sender deliberately | |||
marking packets itself. | marking packets itself. | |||
Re-ECN also aims to ensure cost-fairness between whole networks. | Re-ECN also aims to ensure cost-fairness between whole networks. | |||
Because the congestion level in every stream of packets decrements | Because the congestion level in every stream of packets decrements | |||
towards zero, at an inter-domain border both neighbouring networks | towards zero, at an inter-domain border both neighbouring networks | |||
can count the bulk volume of congestion that the passing packets are | can count the bulk volume of congestion that the passing packets are | |||
causing downstream of the border. If the downstream neighbour | causing downstream of the border. If the downstream neighbour | |||
charges the upstream neighbour this cost (complementing fixed | penalises the upstream neighbour proportionate to this volume of | |||
capacity charges), the upstream network should in turn want to ensure | congestion (complementing fixed capacity charges), the upstream | |||
its upstream users (or networks) are accountable for their share of | network should in turn want to ensure its upstream users (or | |||
these costs arriving from their borders. | networks) are accountable for their share of these costs arriving | |||
from their borders. | ||||
Each network could choose to share out its downstream costs between | Each network could choose to share out its downstream costs between | |||
its upstream customers by some other fairness policy than cost | its upstream customers by some other fairness policy than cost | |||
(including absence of policy, which ensures incremental deployment). | (including absence of policy, which ensures incremental deployment). | |||
So, on the grander scale, re-ECN aims to ensure that networks have to | So, on the grander scale, re-ECN aims to ensure that networks have to | |||
be fair to each other, and that different fairness policies can co- | be fair to each other, and that different fairness policies can co- | |||
exist, which is the subject of the next section. | exist, which is the subject of the next section. | |||
6. Fairness between Fairnesses | 6. Fairness between Fairnesses | |||
skipping to change at page 19, line 47 | skipping to change at page 23, line 6 | |||
`realistic' form of fairness; a form of fairness that people | `realistic' form of fairness; a form of fairness that people | |||
grudgingly accept they have to live with, where the buyer gets no | grudgingly accept they have to live with, where the buyer gets no | |||
more than she pays for, at a competitive price that reflects the | more than she pays for, at a competitive price that reflects the | |||
effort expended by the seller. | effort expended by the seller. | |||
However, monarchs, governments, charities and so on have also been | However, monarchs, governments, charities and so on have also been | |||
stamping their own view of fairness on this backdrop, sometimes less | stamping their own view of fairness on this backdrop, sometimes less | |||
equal sometimes more. But even if different allocation schemes are | equal sometimes more. But even if different allocation schemes are | |||
chosen locally, perhaps taking account of social inequality, on a | chosen locally, perhaps taking account of social inequality, on a | |||
global scale arbitration between local views on fairness has largely | global scale arbitration between local views on fairness has largely | |||
been through market economics---we are not asking anyone to judge | been through market economics--we are not asking anyone to judge | |||
whether this is good or bad, it just is. The Internet should at | whether this is good or bad, it just is. The Internet should at | |||
least be able to cope with the world as it is (as well as how it | least be able to cope with the world as it is (as well as how it | |||
might be). This doesn't imply we believe that economic forces are | might be). This doesn't imply we believe that economic forces are | |||
somehow above policy control. Rather, we observe that market forces | somehow above policy control. Rather, we observe that market forces | |||
(aside from wars) have been the default _global_ resource allocation | (aside from wars) have been the default _global_ resource allocation | |||
mechanism over many centuries. In the Greco-Roman civilisations, in | mechanism over many centuries. In the Greco-Roman civilisations, in | |||
the Buddhist, Confucian and later in the Islamic world, trade was a | the Buddhist, Confucian and later in the Islamic world, trade was a | |||
necessary but not central aspect of life. And over the last two | necessary but not central aspect of life. And over the last two | |||
decades, Western civilisations have been going through a phase of | decades, Western civilisations have been going through a phase of | |||
`economics imperialism', where attempting to exert policy control | `economics imperialism', where attempting to exert policy control | |||
over economics is even viewed as counter-productive. | over economics is even viewed as counter-productive. | |||
However, we must not assume the current globalisation trend [Saul05] | However, we must not assume the current globalisation trend [Saul05] | |||
heralds the end of history. The Internet should be able to reflect | heralds the end of history. The Internet should be able to reflect | |||
the shifting of societal forces as different local fairness regimes | the shifting of societal forces as different local fairness regimes | |||
come and go---`design for tussle' [Tussle]. On the whole, | come and go--`design for tussle' [Tussle]. On the whole, | |||
interworking of resource allocation between most parts of the | interworking of resource allocation between most parts of the | |||
Internet must _be able_ to be based on market economics, but it | Internet must _be able_ to be based on market economics, but it | |||
should be possible to apply other fairness criteria locally. For | should be possible to apply other fairness criteria locally. For | |||
instance, a University might choose to allocate network resources to | instance, a University might choose to allocate network resources to | |||
each student equally rather than by how much their parents can | each student equally rather than by how much their parents can | |||
afford. But the network resources one whole University gets relative | afford. But the network resources one whole University gets relative | |||
to another institution depend on how much each pays their service | to another institution depend on how much each pays their service | |||
provider. | provider. | |||
With arbitration of fairness at the network edge, these enclaves | With arbitration of fairness at the network edge, these enclaves | |||
where local fairness prevails can be virtual overlays; they need not | where local fairness prevails can be virtual networks of disparate | |||
align with physical network boundaries. A distance-learning | users; they need not align with physical network boundaries and users | |||
University or company with a mobile sales-force could buy quotas from | could roam too, with their service level agreement following them. A | |||
different networks and redistribute the aggregate among its members | distance-learning University or company with a mobile sales-force | |||
using its own view of fairness. Or whole countries might arrange to | could buy quotas from different networks and redistribute the | |||
subsidise a minimum universal service obligation for Internet | aggregate among its members using its own view of fairness. Or whole | |||
_usage_, but still, the country as a whole would be expected to pay | countries might arrange to subsidise a minimum universal service | |||
its way in the world. | obligation for Internet _usage_, but still, the country as a whole | |||
would be expected to pay its way in the world. | ||||
On the other hand, in market-led countries, commercial ISPs might | On the other hand, in market-led countries, commercial ISPs might | |||
solely allocate resources proportionate to customer subscriptions. | solely allocate resources proportionate to customer subscriptions. | |||
Local pockets of heterogeneity will exist, from computer clubs to | Local pockets of heterogeneity will exist, from computer clubs to | |||
NATO, but the overall fabric of resource allocation gluing all these | NATO, but the overall fabric of resource allocation gluing all these | |||
pockets together at the (inter)network layer is likely to be market- | pockets together at the (inter)network layer is likely to be market- | |||
based. | based. | |||
This is what we mean by `realistic'---fitting the commercial reality | This is what we mean by `realistic'--fitting the commercial reality | |||
of a global market economy. We are fully aware that the power of | of a global market economy. We are fully aware that the power of | |||
market economics can be stretched too far; controlling aspects of | market economics can be stretched too far; controlling aspects of | |||
society where economic assumptions break down (prompting Samuelson to | society where economic assumptions break down (prompting Samuelson to | |||
describe Friedman as "...somebody who had learned how to spell banana | describe Friedman as "...somebody who had learned how to spell banana | |||
but didn't know where to stop" [Swed90]). But we are not advocating | but didn't know where to stop" [Swed90]). But we are not advocating | |||
that one religion should replace another---market economics replacing | that one religion should replace another--market economics replacing | |||
flow rate fairness. However, in the case of Internet resource | flow rate fairness. However, in the case of Internet resource | |||
allocation, it must at least _be possible_ to use market economics, | allocation, it must at least _be possible_ to use market economics, | |||
despite its known failings, given it is currently the most | despite its known failings, given it is currently the most | |||
appropriate tool for managing conflicting demands on resources from | appropriate tool for managing conflicting demands on resources from | |||
any part of the globe. | any part of the globe. | |||
A market is meant to optimise allocations in the face of conflicts of | A market is meant to optimise allocations in the face of conflicts of | |||
self-interest. If we want to assert other fairness regimes, we must | self-interest. If we want to assert other fairness regimes, we must | |||
recognise this acts against self-interest. If we don't understand | recognise this acts against self-interest. If we don't understand | |||
how to overcome self-interest, its invisible hand will force its will | how to overcome self-interest, its invisible hand will force its will | |||
skipping to change at page 21, line 40 | skipping to change at page 24, line 47 | |||
ways. | ways. | |||
7. The Seminal Literature | 7. The Seminal Literature | |||
For a rigorous tutorial on the various form of fairness, the reader | For a rigorous tutorial on the various form of fairness, the reader | |||
is referred to Le Boudec [ccFairTut]. | is referred to Le Boudec [ccFairTut]. | |||
Max-min flow rate fairness has a long history in networking, with | Max-min flow rate fairness has a long history in networking, with | |||
research to find distributed (router-based) max-min algorithms | research to find distributed (router-based) max-min algorithms | |||
starting in 1980 [DeMaxMin] and Nagle proposing a novel approach in | starting in 1980 [DeMaxMin] and Nagle proposing a novel approach in | |||
1985 [RFC0970]. All these early `fair queuing' algorithms gave equal | 1985 [RFC0970]. All these early `fair queuing' algorithms considered | |||
rights to each source. In 1989, to solve the problem of some sources | fairness should be considered among sources and that equality implied | |||
deserving more rate than others, the authors of `weighted fair | fairness. Indeed, in 1984, Jain et al proposed an index of fairness | |||
queuing' (WFQ) proposed that per-source destination pair would be a | [FairIdx] that quantified how far a set of shares were from equality. | |||
better model of the size of different sources. It was admitted that | ||||
a source could deny service to other sources by faking transfers with | In 1989, to solve the problem of some sources deserving more rate | |||
numerous destinations, but a reasonable trade-off between efficiency | than others, the authors of `weighted fair queuing' (WFQ) proposed | |||
and security was required [WFQ]. Recently, an approach called | that per-source destination pair would be a better model of the size | |||
of different sources. It was admitted that a source could deny | ||||
service to other sources by faking transfers with numerous | ||||
destinations, but a reasonable trade-off between efficiency and | ||||
security was required [WFQ]. Recently, an approach called | ||||
Justice [Jstce] has proposed a return to (weighted) per source fair | Justice [Jstce] has proposed a return to (weighted) per source fair | |||
queuing, but with configurable link weights throughout the network. | queuing, but with configurable link weights throughout the network. | |||
However, all these `fair queuing' approaches allocate bit rate as | However, all these `fair queuing' approaches allocate bit rate as | |||
their measure of fairness. | their measure of fairness. | |||
TCP congestion control was also introduced in the late 1980s [TCPcc], | TCP congestion control was also introduced in the late 1980s [TCPcc], | |||
based on the assumption that it would be fair if flow rates through a | based on the assumption that it would be fair if flow rates through a | |||
single bottleneck converged on equality. | single bottleneck converged on equality. | |||
In 1991, Mazumdar _et al_ [UtilFair] pointed out that there was | In 1991, Mazumdar _et al_ [UtilFair] pointed out that there was | |||
skipping to change at page 23, line 25 | skipping to change at page 26, line 35 | |||
traffic: elastic and inelastic, distinguished respectively by their | traffic: elastic and inelastic, distinguished respectively by their | |||
concave and sigmoid utility functions [FundUtil]. Whatever the | concave and sigmoid utility functions [FundUtil]. Whatever the | |||
utility function, Kelly teaches us that covering congestion costs is | utility function, Kelly teaches us that covering congestion costs is | |||
sufficient to achieve fairness. But then the outcome (in terms of | sufficient to achieve fairness. But then the outcome (in terms of | |||
flow rates) depends on the type of utility function: | flow rates) depends on the type of utility function: | |||
o Weighted proportionally fair flow rates will be the outcome for | o Weighted proportionally fair flow rates will be the outcome for | |||
elastic traffic streaming; | elastic traffic streaming; | |||
o Inelastic traffic flows hit a discontinuity once congestion rises | o Inelastic traffic flows hit a discontinuity once congestion rises | |||
beyond a certain level, at which point each is better off with | beyond a certain level, at which point no-one derives any useful | |||
zero rate, leading to a need for some form of admission control, | value unless some are given zero rate, leading to a need for some | |||
whether self-admission control or arbitrated by the | form of admission control, whether self-admission control or | |||
network [DCAC]. This was the theoretical backing to the IETF | arbitrated by the network [DCAC]. This was the theoretical | |||
working group on doing admission control using pre-congestion | backing to the IETF working group recently chartered to | |||
notification (PCN), which is in the process of being chartered | standardise admission control using pre-congestion notification | |||
[PCNcharter]. | (PCN) [PCNcharter]. | |||
o Key & Massoulie identified a third major class of network traffic | o Key & Massoulie identified a third major class of network traffic | |||
where utility is derived solely from the duration required to | where utility is derived solely from the duration required to | |||
complete transfer of a fixed volume of data [UtilFile]. They | complete transfer of a fixed volume of data [UtilFile]. They | |||
proposed that, if cost fairness applied, self-interested | proposed that, if cost fairness applied, self-interested | |||
congestion control would toggle between full line rate and zero | congestion control would toggle between full line rate and zero | |||
(with occasional probes). Such behaviour alone can destabilise | (with occasional probes). Such behaviour alone can destabilise | |||
the network, but it can be stabilised by mixing with streaming | the network, but it can be stabilised by mixing with streaming | |||
traffic [FairIntgr]. Research on the second order incentives | traffic [FairIntgr]. Research on the second order incentives | |||
necessary to encourage stability continues. Policing rather than | necessary to encourage stability continues. Policing rather than | |||
skipping to change at page 24, line 11 | skipping to change at page 27, line 18 | |||
has continued, but the main thrust of research has been to find more | has continued, but the main thrust of research has been to find more | |||
realistic and practical ways of applying the insights, a process | realistic and practical ways of applying the insights, a process | |||
which is now bearing fruit (see Section 5.3.2). | which is now bearing fruit (see Section 5.3.2). | |||
8. Critiques of Specific Schemes | 8. Critiques of Specific Schemes | |||
8.1. Max-min flow rate fairness | 8.1. Max-min flow rate fairness | |||
In 1997, Kelly demonstrated [wPropFair] that realistic users would | In 1997, Kelly demonstrated [wPropFair] that realistic users would | |||
not choose max-min flow rate fairness if they were accountable for | not choose max-min flow rate fairness if they were accountable for | |||
the congestion they caused to others. Users would only have chosen | the congestion they caused to others. Users would only choose max- | |||
max-min if they valued bit rate with an unrealistically extreme set | min if they valued bit rate with an unrealistically extreme set of | |||
of utility functions that were all identical and that all valued low | utility functions that were all identical and that all valued low bit | |||
bit rate infinitesimally less than high bit rate. To spell Kelly's | rate infinitesimally less than high bit rate. To spell Kelly's | |||
result out even more bluntly, max-min fair rate allocation would only | result out even more bluntly, max-min fair rate allocation would only | |||
be considered fair if _everyone_ valued bit rate in a really weird | be considered fair if _everyone_ valued bit rate in a really weird | |||
way: that is, they all valued very low bit rate hardly any less than | way: that is, they all valued very low bit rate hardly any less than | |||
very high bit rate and they all valued bit rate exactly the same as | very high bit rate and they all valued bit rate exactly the same as | |||
each other. (Note that max-min could be meaningful if allocating | each other. (Note that max-min could be meaningful if allocating | |||
something like utility among users, but not rate among flows.) | something like utility among users, but not rate among flows.) | |||
8.2. TCP | 8.2. TCP | |||
TCP's congestion avoidance [RFC2581] leads to a form of fairness | TCP's congestion avoidance [RFC2581] leads to a form of fairness | |||
similar to cost fairness, except it is myopic, only being concerned | similar to cost fairness, except it is myopic, only being concerned | |||
with each instant in time and with each flow, as explained in | with each instant in time and with each flow, as explained in | |||
Section 5. To be cost fair each user would have to take account of | Section 5. To be cost fair each user would have to take account of | |||
costs across time and across flows, and weight each class of TCP flow | costs across time and across flows, and weight each TCP flow | |||
according to its importance to them, as can be done with | according to its importance to them, as can be done with | |||
MulTCP [MulTCP]. | MulTCP [MulTCP]. | |||
8.3. TFRC | 8.3. TFRC | |||
An algorithm that converges on the same flow rate as TCP at | An algorithm that converges on the same flow rate as TCP at | |||
equilibrium is called TCP-friendly. It can only claim to be TCP- | equilibrium is called TCP-friendly. It can only claim to be TCP- | |||
compatible if it also exhibits the same dynamics as the TCP | compatible if it also exhibits the same dynamics as the TCP | |||
specification [RFC2581]. Certain streaming applications won't work | specification [RFC2581]. Certain streaming applications won't work | |||
unless they are allowed a more sluggish response to congestion than | unless they are allowed a more sluggish response to congestion than | |||
TCP's, so researchers invented TCP-friendly rate control | TCP's, so researchers invented TCP-friendly rate control | |||
(TFRC [RFC3448]) to define fair use of the network in competition | (TFRC [RFC3448]) to define fair use of the network in competition | |||
with TCP-compatible flows. | with TCP-compatible flows. | |||
`TCP-friendly' congestion control currently has proposed standard | `TCP-friendly' congestion control currently has proposed standard | |||
status in the IETF [RFC3448], and it is incorporated into one of the | status in the IETF [RFC3448], and it is incorporated into one of the | |||
congestion control profiles of the new datagram congestion control | congestion control profiles of the new datagram congestion control | |||
protocol (DCCP [RFC4342]) that is also a proposed standard. | protocol (DCCP [RFC4342]) that is also a proposed standard. An | |||
experimental small packet variant has also been proposed [RFC4828]. | ||||
Given TFRC aims to emulate TCP, by far its most significant fairness | Given TFRC aims to emulate TCP, by far its most significant fairness | |||
problems are those it shares with TCP as just mentioned. However, | problems are those it shares with TCP as just mentioned. However, | |||
even if we set aside this myopia in time and within flows, TFRC | even if we set aside this myopia in time and within flows, TFRC | |||
exhibits an extra fairness problem because its design was based | exhibits an extra fairness problem because its design was based | |||
wholly on the broken idea that it is fair for a TCP-friendly flow to | wholly on the broken idea that it is fair for a TCP-friendly flow to | |||
get the same rate as a TCP-compatible flow. | get the same rate as a TCP-compatible flow. | |||
| | | | |||
| | | | |||
skipping to change at page 25, line 21 | skipping to change at page 28, line 31 | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
| | | | |||
|See draft-briscoe-tsvarea-fair-01.pdf version for figure here | |See draft-briscoe-tsvarea-fair-02.pdf version for figure here | |||
| | | | |||
| | | | |||
| | | | |||
Figure 2: Schematic showing `TCP-friendly' flows cause more | Figure 2: Schematic showing `TCP-friendly' flows cause more | |||
congestion than TCP. A TCP-friendly flow is smoother than a TCP- | congestion than TCP. A TCP-friendly flow is smoother than a TCP- | |||
compatible one but with the same mean rate if measured over long | compatible one but with the same mean rate if measured over long | |||
enough time. Therefore at times of high congestion (t_2) it uses more | enough time. Therefore at times of high congestion (t_2) it uses more | |||
bandwidth than TCP while at times of low congestion (t_1) it uses | bandwidth than TCP while at times of low congestion (t_1) it uses | |||
less. | less. | |||
skipping to change at page 25, line 48 | skipping to change at page 29, line 10 | |||
schematic plots of congestion and flow rate are shown as mirror | schematic plots of congestion and flow rate are shown as mirror | |||
images of each other. A more sluggish rate response is not as good | images of each other. A more sluggish rate response is not as good | |||
at tracking the fast-changing congestion process. So the sluggish | at tracking the fast-changing congestion process. So the sluggish | |||
flow more often uses higher bandwidth when congestion is high, and | flow more often uses higher bandwidth when congestion is high, and | |||
more often uses lower bandwidth when congestion is low, causing more | more often uses lower bandwidth when congestion is low, causing more | |||
volume of congestion on average. Giving more during times of plenty | volume of congestion on average. Giving more during times of plenty | |||
doesn't compensate for taking it back during times of scarcity. | doesn't compensate for taking it back during times of scarcity. | |||
8.4. RTT and Fairness | 8.4. RTT and Fairness | |||
TCP, and congestion controls such as SCTP that inherit from it, | TCP, and congestion controls such as SCTP [RFC2960] that inherit from | |||
converge on a rate that is inversely proportional to round trip time | it, converge on a rate that is inversely proportional to round trip | |||
(RTT). This is due to TCP's original design goal of avoiding adding | time (RTT). This is due to TCP's original design goal of avoiding | |||
more than one segment to the data in flight each RTT. | adding more than one segment to the data in flight each RTT. | |||
Congestion controls certainly have to take RTT delay in the feedback | Congestion controls certainly have to take RTT delay in the feedback | |||
loop into account to ensure stability, but RTT is not in itself a | loop into account to ensure stability. Nonetheless, It is perfectly | |||
factor that affects fairness. In fact, once a sender is accountable | possible to design a robust congestion control that responds more | |||
for the congestion it causes, it will be in its own interests to be | slowly to changes on longer paths, but still converges to the same | |||
more cautious on longer RTT paths, as it has proportionately more | rate as it would with a shorter RTT. FAST TCP [FAST] is an example | |||
data in flight so it risks causing more congestion before it can | of such a congestion control. Siris's weighted window-based | |||
react. | congestion controller [WindowPropFair] also has dynamics that are | |||
sensitive to RTT, while converging on a bit-rate that is independent | ||||
of RTT. | ||||
It is perfectly possible to design a robust congestion control that | RTT is not in itself a factor that affects fairness. In fact, once a | |||
responds more slowly to changes on longer paths, but still converges | sender is accountable for the congestion it causes, it will be in its | |||
to the same rate as it would with a shorter RTT. FAST TCP [FAST] is | own interests to be more cautious on longer RTT paths, as it has | |||
an example of such a congestion control. Siris's weighted window- | proportionately more data in flight so it risks causing more | |||
based congestion controller [WindowPropFair] also has dynamics that | congestion before it can react. | |||
are sensitive to RTT, while converging on a bit-rate that is | ||||
independent of RTT. | ||||
Broadly the extra risk of causing congestion with larger RTTs is | Broadly the extra risk of causing congestion with larger RTTs is | |||
usually sufficient to encourage behaviour that leads to stability. | usually sufficient to encourage behaviour that leads to stability. | |||
However, this gross generalisation needs to be couched in assumptions | However, this gross generalisation needs to be couched in assumptions | |||
and constraints that are beyond the scope of this memo (and beyond my | and constraints that are beyond the scope of this memo (and beyond my | |||
ability to keep up with the literature). | ability to keep up with the literature). | |||
8.5. Packet Size and Fairness | 8.5. Packet Size and Fairness | |||
The issue of how to take packet size into account and whether packet | The issue of how to take packet size into account is covered in | |||
size should be adjusted for in the network (AQM algorithm) or in the | [BytePktMark]. In summary, it advises that packet size should not be | |||
transport (rate control algorithm) will be covered in [BytePktMark]. | adjusted for in the network (i.e. not in the AQM algorithm), which | |||
merely drops (marks) every packet with the current drop (marking) | ||||
probability. Instead, the transport (rate control algorithm) should | ||||
take account of the size of lost or ECN marked packets. Essentially | ||||
an ECN marked packet should be treated by the transport as if every | ||||
byte is ECN marked, just as every byte is dropped when a packet it | ||||
dropped. | ||||
8.6. XCP and router-based fairness schemes | 8.6. XCP and router-based fairness schemes | |||
This document has focused on the fairness ideas we see in the | This document has focused on the fairness ideas we see in the | |||
production networks around us today. However, our most pressing | production networks around us today. However, our most pressing | |||
concern is that these broken ideas also pervade the community working | concern is that these broken ideas also pervade the community working | |||
on replacing the Internet architecture. It is well-known that TCP | on replacing the Internet architecture. It is well-known that TCP | |||
congestion control is running out of dynamic range and many proposals | congestion control is running out of dynamic range and many proposals | |||
for replacements that can take advantage of higher link capacities by | for replacements that can take advantage of higher link capacities by | |||
accelerating faster have been put forward. XCP was the first of a | accelerating faster have been put forward. XCP was the first of a | |||
family of router-based hi-speed congestion control mechanism, but it | family of router-based hi-speed congestion control mechanism, but it | |||
is particularly of interest because it claims to allow different | is particularly of interest because it claims to allow different | |||
fairness criteria to be configured. | fairness criteria to be configured. | |||
However, XCP fairness is based on the myopic flow-rate-based view | However, XCP fairness is based on the myopic flow-rate-based view | |||
that we have so roundly criticised in this document. For instance, | that we have so roundly criticised in this document. For instance, | |||
XCP claims to be able to achieve a weighted proportional fair rate | XCP claims to be able to achieve a weighted proportional fair rate | |||
allocation[XCP] S.6 by adding a weight field to each packet, but it | allocation ([XCP] S.6) by adding a weight field to each packet, but | |||
glosses over how anyone could regulate each user's choice of the | it glosses over how anyone could regulate each user's choice of the | |||
weight. If we compare weighted fair XCP with Kelly's original ATM- | weight. If we compare weighted fair XCP with Kelly's original ATM- | |||
based weighted proportional fairness, the weight parameter advises | based weighted proportional fairness, the weight parameter advises | |||
network equipment on what allocation it should give each flow, but | network equipment on what allocation it should give each flow, but | |||
there is no direct congestion information in the XCP protocol that | there is no direct congestion information in the XCP protocol that | |||
could be used at the ingress to make each source accountable for its | could be used at the ingress to make each source accountable for its | |||
choice of weight. | choice of weight. | |||
Further, we believe it will be necessary to be able to apply | Further, we believe it will be necessary to be able to apply | |||
different fairness criteria to different subsets of users of a | different fairness criteria to different subsets of users of a | |||
network and subsets across an internetwork as outlined in Section 6. | network and subsets across an internetwork as outlined in Section 6. | |||
We cannot immediately see how this would be feasible with router- | We cannot immediately see how this would be feasible with router- | |||
based approaches like XCP, where routers would seem to have to share | based approaches like XCP, where routers would seem to have to know | |||
information on the history of each user with potentially every other | what sort of fairness each IP address was keeping to, and each router | |||
router in the world (as explained in Section 5.1). | would seem to have to share information on the history of each user | |||
with potentially every other router in the world (as explained in | ||||
Section 5.1). | ||||
A combination of XCP's protocol fields could yield approximate | A combination of XCP's protocol fields could yield approximate | |||
congestion information to integrate each sender's congestion cost | congestion information to integrate each sender's congestion cost | |||
history at the access network close to the sender. This would allow | history at the access network close to the sender. This would allow | |||
the user's choice of weight to be regulated and enable different | the user's choice of weight to be regulated and enable different | |||
forms of fairness to be asserted locally. But one then has to | forms of fairness to be asserted locally. But one then has to | |||
question whether it would be simpler for the end system to do the | question whether it would be simpler for the end system to do the | |||
rate control, given it has to give routers all the information they | rate control, given it has to give routers all the information they | |||
need to arbitrate fairness between flows anyway. | need to arbitrate fairness between flows anyway. | |||
skipping to change at page 27, line 45 | skipping to change at page 31, line 19 | |||
and as sold commercially) would be interesting given features of the | and as sold commercially) would be interesting given features of the | |||
two approaches overlap even though they don't have the same goals. | two approaches overlap even though they don't have the same goals. | |||
But this subject would require a dedicated paper. | But this subject would require a dedicated paper. | |||
9. Implications for the RFC Series | 9. Implications for the RFC Series | |||
This document points out that the question of cost-fairness between | This document points out that the question of cost-fairness between | |||
congestion controls sits above the transport layer as a policy | congestion controls sits above the transport layer as a policy | |||
concern. Applications would then exert policy control over | concern. Applications would then exert policy control over | |||
congestion control in transport protocols (e.g. by setting a | congestion control in transport protocols (e.g. by setting a | |||
weight). This implies that the IETF is not (and never has been) the | weight). This implies that the IETF should not be (and never has | |||
arbiter of cost-fairness between its protocols, but it should still | been) the arbiter of cost-fairness between its protocols, but it | |||
be responsible for their stability and perhaps their efficiency. | should still be responsible for their stability and perhaps their | |||
This would seem to have wide-ranging implications on the current | efficiency. This contrasts with the current position where the IETF | |||
approach to congestion control standardisation throughout the IETF's | takes responsibility for the fairness of its congestion control | |||
RFC series. | algorithms, because they are not under policy control. This would | |||
seem to have wide-ranging implications on the current approach to | ||||
congestion control standardisation throughout the IETF's RFC series. | ||||
RFCs on congestion control fall into the following categories with | RFCs on congestion control fall into the following categories with | |||
respect to who is mandated (or encouraged) to do what: | respect to who is mandated (or encouraged) to do what: | |||
o Those that specify a congestion control algorithm as a building | o Those that specify a congestion control algorithm as a building | |||
block without specifying where it should be used (e.g. TFRC | block without specifying where it should be used (e.g. TFRC | |||
[RFC3448]); | [RFC3448] and TFRC-SP [RFC4828]); | |||
o Those that specify the implementation of congestion control for a | o Those that specify the implementation of congestion control for a | |||
specific transport which often draw on building block congestion | specific transport which often draw on building block congestion | |||
controls such as TFRC above or TCP (e.g. TCP [RFC2581], SCTP | controls such as TFRC above or TCP (e.g. TCP [RFC2581], SCTP | |||
[RFC2960], the DCCP CCIDs [RFC4341][RFC4342] and the RTP profiles | [RFC2960], the DCCP CCIDs [RFC4341][RFC4342] and the RTP profiles | |||
such as that for RTP/AVP [RFC3551] and RTP/AVPF with earlier | such as that for RTP/AVP [RFC3551] and RTP/AVPF with earlier | |||
feedback [RFC4585] as well as a number of experimental unicast and | feedback [RFC4585] as well as a number of experimental unicast and | |||
multicast protocols); | multicast protocols); | |||
o Those that specify that hosts must implement a particular | o Those that specify that hosts must implement a particular | |||
skipping to change at page 28, line 26 | skipping to change at page 32, line 4 | |||
such as that for RTP/AVP [RFC3551] and RTP/AVPF with earlier | such as that for RTP/AVP [RFC3551] and RTP/AVPF with earlier | |||
feedback [RFC4585] as well as a number of experimental unicast and | feedback [RFC4585] as well as a number of experimental unicast and | |||
multicast protocols); | multicast protocols); | |||
o Those that specify that hosts must implement a particular | o Those that specify that hosts must implement a particular | |||
transport (e.g. the `Requirements for Internet Hosts' [RFC1122]); | transport (e.g. the `Requirements for Internet Hosts' [RFC1122]); | |||
o Those that specify what hosts must do if they implement certain | o Those that specify what hosts must do if they implement certain | |||
congestion control enhancements (e.g. the `Congestion Manager' | congestion control enhancements (e.g. the `Congestion Manager' | |||
[RFC3124]); | [RFC3124]); | |||
o Those that specify that applications must implement safe | o Those that specify that applications must implement safe | |||
congestion control behaviour (e.g. HTTP/1.1 [RFC2616] and RTP | congestion control behaviour (e.g. HTTP/1.1 [RFC2616] and RTP | |||
[RFC3550]); | [RFC3550]); | |||
o Those that specify the meaning of congestion notifications and how | o Those that specify the meaning of congestion notifications and how | |||
buffer implementations should generate them (e.g. recommendations | buffer implementations should generate them (e.g. recommendations | |||
on AQM [RFC2309] and explicit congestion notification [RFC3168]); | on AQM [RFC2309] and explicit congestion notification [RFC3168]); | |||
o Those that specify best current practice, guidelines and | o Those that specify best current practice, guidelines and | |||
principles for implementers of congestion control (e.g. the | principles for designers of congestion control (e.g. the `Gateway | |||
`Gateway Congestion Control Survey' [RFC1254], recommendations on | Congestion Control Survey' [RFC1254], recommendations on AQM | |||
AQM [RFC2309], `Congestion Control Principles' [RFC2914], `General | [RFC2309], `Congestion Control Principles' [RFC2914], `General | |||
Architectural and Policy Considerations' [RFC3426] and IAB | Architectural and Policy Considerations' [RFC3426] and IAB | |||
Concerns Regarding Congestion Control for Voice Traffic | Concerns Regarding Congestion Control for Voice Traffic | |||
[RFC3714]); | [RFC3714]); | |||
o Those that recommend how new transport protocols should interact | o Those that recommend how new transport protocols should interact | |||
with existing ones (e.g. recommendations on AQM [RFC2309], | with existing ones (e.g. recommendations on AQM [RFC2309], | |||
Criteria for Evaluating Reliable Multicast Transports [RFC2357] | Criteria for Evaluating Reliable Multicast Transports [RFC2357], | |||
and `Congestion Control Principles' [RFC2914]). | `Congestion Control Principles' [RFC2914] and guidelines for new | |||
RTP profiles [RFC3550]). | ||||
Generally, the RFC series standardises congestion control by | Generally, the RFC series standardises congestion control by | |||
specifying what implementations of a particular transport protocol | specifying what implementations of a particular transport protocol | |||
should or must do in response to congestion events. RFCs generally | should or must do in response to congestion events. RFCs generally | |||
avoid mandating what users should do, or what networks should allow, | avoid mandating what users should do, or what networks should allow, | |||
which are considered policy concerns. For instance, a TCP | which are considered policy concerns. For instance, a TCP | |||
implementation must comply with the congestion control in RFC2581 to | implementation must comply with the congestion control in RFC2581 to | |||
be able to claim it is standard TCP, but the RFCs haven't told | be able to claim it is standard TCP, but the RFCs haven't told | |||
applications that they must use TCP and they certainly haven't told | applications that they must use TCP and they certainly haven't told | |||
users that they must only use applications that use TCP (or a TCP- | users that they must only use applications that use TCP (or a TCP- | |||
skipping to change at page 29, line 27 | skipping to change at page 33, line 6 | |||
must be available, not that applications must use it. | must be available, not that applications must use it. | |||
The RFCs that specify that applications (HTTP/1.1 and RTP) must | The RFCs that specify that applications (HTTP/1.1 and RTP) must | |||
implement safe congestion control behaviour are sufficiently broadly | implement safe congestion control behaviour are sufficiently broadly | |||
stated that they are still meaningful after a shift of the congestion | stated that they are still meaningful after a shift of the congestion | |||
control goal-posts. | control goal-posts. | |||
The RFCs that define congestion notification (RED [RFC2309] and ECN | The RFCs that define congestion notification (RED [RFC2309] and ECN | |||
[RFC3168]) are critical standards for cost-fairness and they are | [RFC3168]) are critical standards for cost-fairness and they are | |||
already in line with what is required (except for the uncertainty in | already in line with what is required (except for the uncertainty in | |||
RFC2309 over byte-mode packet marking, which will be addressed in | RFC2309 over byte-mode packet marking, is addressed in | |||
[BytePktMark]). | [BytePktMark]). | |||
The RFCs that specify best current practice, guidelines and | The RFCs that specify best current practice, guidelines and | |||
principles generally give excellent advice on congestion control. | principles generally give excellent advice on congestion control. | |||
However, we will have to deal with the RFCs that recommended that | However, we will have to deal with the RFCs that recommended that | |||
applications should use congestion control that results in a flow | applications should use congestion control that results in a flow | |||
rate similar to that TCP would achieve under the same conditions, | rate similar to that TCP would achieve under the same conditions, | |||
specifically [RFC2309][RFC2357] and [RFC2914]. For instance RFC2357 | specifically [RFC2309][RFC2357] and [RFC2914]. For instance RFC2357 | |||
says, "Note that congestion control mechanisms that operate on the | says, "Note that congestion control mechanisms that operate on the | |||
network more aggressively than TCP will face a great burden of proof | network more aggressively than TCP will face a great burden of proof | |||
that they don't threaten network stability." | that they don't threaten network stability." | |||
These RFCs were written in good faith based on the idea that the IETF | These RFCs were written in good faith based on the idea that the IETF | |||
is responsible for fairness between flow rates, but this memo has now | is responsible for fairness between flow rates, but this memo has now | |||
shown that there is nothing at all special about flow rates that | shown that there is nothing at all special about flow rates that | |||
happen to be equal when the number of flows from one user and flow | happen to be equal (when the number of flows from one user and flow | |||
durations are considered. We can safely assume that the IETF | durations are considered). We can safely assume that the IETF | |||
certainly does not believe it should have any control over the | certainly does not believe it should have any control over the | |||
duration of flows, or whether a user should open different flows | duration of flows, or whether a user should open different flows | |||
across different parts of the Internet at different times. | across different parts of the Internet at different times. | |||
Therefore we will have to update this guidance on fairness to take | Therefore we will have to update this guidance on fairness to take | |||
account of the desires of users and of networks for a fairer outcome | account of the desires of users and of networks for a fairer outcome | |||
than we have at present. This guidance will also have to address the | than we have at present. This guidance will also have to address the | |||
concerns of the users of transports that implement currently | concerns of the users of transports that implement currently | |||
standardised variants of flow-rate fairness. | standardised variants of flow-rate fairness. | |||
Some of these `legacy' flows would use more resources and others less | Some of these `legacy' flows would use more resources and others less | |||
if they were under policy control: | if they were under policy control: | |||
o A future network that protects careful users from aggressive users | o A future network that protects careful users from aggressive users | |||
might well curtail some legacy flows from over-aggressive users | might well curtail some legacy flows sent by over-aggressive users | |||
(e.g. they might be using application that open many TCP | (e.g. they might be using application that open many TCP | |||
connections that transfer for very long durations). | connections that transfer for very long durations). | |||
o Those legacy flows that use less than they would under policy | o Those legacy flows that use less than they would under policy | |||
control seem to be of concern, because they will receive a smaller | control seem to be of concern, because they will receive a smaller | |||
share of capacity than they would if other flows were not policy- | share of capacity than they would if other flows were not policy- | |||
controlled. However, they can upgrade to use policy control if | controlled. However, they can upgrade to use policy control if | |||
they choose, and they have an incentive to do so. The network | they choose, and they have an incentive to do so. The network | |||
will appear more congested than it used to for these flows, but | will appear more congested than it used to for these flows, but | |||
they should still _function_ ok, given they were designed to work | they should still _function_ OK, given they were designed to work | |||
over a best efforts service. | over a best efforts service. | |||
Nonetheless, we need to discuss this issue further and reach | Nonetheless, we need to discuss this issue further and reach | |||
community agreement on how best to handle the transition towards the | community agreement on how best to handle the transition towards the | |||
more rigorous form of fairness introduced in this memo. | different goal of the more rigorous form of fairness introduced in | |||
this memo, and the transition away from IETF control and towards user | ||||
policy control of fairness. | ||||
10. IANA Considerations | 10. IANA Considerations | |||
This document includes no request to IANA. | This document includes no request to IANA. | |||
11. Security Considerations | 11. Security Considerations | |||
The whole of Section 5.3 discusses how there are no known ways of | The whole of Section 5.3 discusses how there are no known ways of | |||
enforcing flow rate fairness securely in a non-co-operative | enforcing flow rate fairness securely in a non-cooperative | |||
environment like the current Internet, whereas practical, secure | environment like the current Internet, whereas practical, secure | |||
solutions have been proposed for enforcing cost-fairness. | solutions have been proposed for enforcing cost-fairness. | |||
12. Conclusions | 12. Conclusions | |||
The outstanding barrier to realistic resource allocation for the | The outstanding barrier to realistic resource allocation for the | |||
Internet is purely religious. In much of the networking community | Internet is purely religious. In much of the networking community | |||
you have to put fairness in terms of flow rates, otherwise your work | you have to put fairness in terms of flow rates, otherwise your work | |||
is `obviously' irrelevant. At minimum, you are an outcast, if not a | is `obviously' irrelevant. At minimum, you are an outcast, if not a | |||
heretic. But actually basing fairness on flow rates is a false | heretic. But actually basing fairness on flow rates is a false | |||
god---it has no grounding in philosophy, science, or for that matter | god--it has no grounding in philosophy, science, or for that matter | |||
`commercial reality'. | `commercial reality'. | |||
It is a classic case of a hegemony where those living within the box | It is a classic case of a hegemony where those living within the box | |||
have been unaware of the existence of the box, let alone the world | have been unaware of the existence of the box, let alone the world | |||
outside the box. This memo was written from frustration that no-one | outside the box. This memo was written from frustration that no-one | |||
inside the box believed that voices outside the box should be | inside the box believed that voices outside the box should be | |||
listened to. We expect complaints about the blunt style of this | listened to. We expect complaints about the blunt style of this | |||
document, but it seemed the only way forward was to force the issue, | document, but it seemed the only way forward was to force the issue, | |||
by making the box look ridiculous in its own terms. | by making the box look ridiculous in its own terms. | |||
Cost fairness was derived from economic concepts of fairness back in | Cost fairness was derived from economic concepts of fairness back in | |||
1997. Flow rate fairness had been used in good faith as a guiding | 1997. Flow rate fairness had been used in good faith as a guiding | |||
principle, but when it is seen through the wider angle of this | principle, but when it is seen through the wider angle of this | |||
economic analysis it is clearly broken, even on its own terms. The | economic analysis it is clearly broken, even on its own terms. The | |||
criticism is far more damning than merely whether allocations are | criticism is far more damning than merely whether allocations are | |||
fair. Both the thing being allocated (rate) and what it is allocated | fair. Both the thing being allocated (rate) and what it is allocated | |||
among (flows) now appear completely daft---both unrealistic and | among (flows) now appear completely daft--both unrealistic and | |||
impractical. However, the Internet community continued to judge | impractical. However, most of the Internet community continued to | |||
fairness using flow rates, apparently unaware that this approach had | judge fairness using flow rates, apparently unaware that this | |||
been shown to have no intellectual basis. In fact, flow rate | approach had been shown to have no intellectual basis. In fact, flow | |||
fairness algorithms are myopic in both space and time---they are | rate fairness algorithms are myopic in both space and time--they are | |||
completely unable to control fairness at all, because they don't | completely unable to control fairness at all, because they don't | |||
adjust depending on how many flows users create and for how long. | adjust depending on how many flows users create nor on how long flows | |||
last. | ||||
To be clear, this accusation applies to the so-called `fairness' that | To be clear, this accusation applies to the so-called `fairness' that | |||
emerges from the TCP algorithm and the various fair queuing | emerges from the TCP algorithm and the various fair queuing | |||
algorithms used in production networks. And, more worryingly, this | algorithms used in production networks. And, more worryingly, this | |||
broken idea of flow rate fairness has carried over into the community | broken idea of flow rate fairness has carried over into the community | |||
working on replacing the Internet architecture. | working on replacing the Internet architecture. | |||
In real life, fairness generally concerns costs or benefits. Flow | In real life, fairness generally concerns costs or benefits. Flow | |||
rate doesn't come anywhere near being a good model of either. User | rate doesn't come anywhere near being a good model of either. User | |||
benefit per bit rate might be ten orders of magnitude different for | benefit per bit rate might be ten orders of magnitude different for | |||
skipping to change at page 31, line 49 | skipping to change at page 35, line 31 | |||
Worse, there is no evidence whatsoever that fairness between flows | Worse, there is no evidence whatsoever that fairness between flows | |||
relates in any way to fairness between any real-world entities that | relates in any way to fairness between any real-world entities that | |||
one would expect to treat fairly, such as people or organisations. | one would expect to treat fairly, such as people or organisations. | |||
If fairness is defined between flows, users can just create more | If fairness is defined between flows, users can just create more | |||
flows to get a larger allocation. Worse still, fairness between | flows to get a larger allocation. Worse still, fairness between | |||
flows is only defined instantaneously, which bears no relation to | flows is only defined instantaneously, which bears no relation to | |||
real-world fairness over time. Once the idea of fairness based on | real-world fairness over time. Once the idea of fairness based on | |||
integrating costs over time is understood, we cannot see any reason | integrating costs over time is understood, we cannot see any reason | |||
to take any form of instantaneous per-flow rate fairness seriously, | to take any form of instantaneous per-flow rate fairness seriously, | |||
ever again---whether max-min or TCP. | ever again--whether max-min or TCP. | |||
Even if a system is being designed somehow isolated from the economy, | Even if a system is being designed somehow isolated from the economy, | |||
where costs will never have to relate to real economic costs, we | where costs will never have to relate to real economic costs, we | |||
cannot see why anyone would adopt these forms of fairness that so | cannot see why anyone would adopt these forms of fairness that so | |||
badly relate to real-life fairness. For instance, how can people | badly relate to real-life fairness. For instance, how can people | |||
still be designing schemes to achieve max-min flow rate fairness | still be designing schemes to achieve max-min flow rate fairness | |||
years after Kelly's proof that users would have to value bit rate in | years after Kelly's proof that users would have to value bit rate in | |||
a really weird way in order for max-min fairness to be desirable? | a really weird way in order for max-min fairness to be desirable? | |||
In contrast, cost fairness promises realistic solutions to all these | In contrast, cost fairness promises realistic solutions to all these | |||
skipping to change at page 32, line 29 | skipping to change at page 36, line 12 | |||
position with reference to some previously respected fairness notions | position with reference to some previously respected fairness notions | |||
in philosophy or social science. In this memo, we have shown how the | in philosophy or social science. In this memo, we have shown how the | |||
whole ideology is unlikely to be up to such rigor. | whole ideology is unlikely to be up to such rigor. | |||
13. Acknowledgements | 13. Acknowledgements | |||
Thanks are due to Scott Shenker for persuading me to write this, | Thanks are due to Scott Shenker for persuading me to write this, | |||
Louise Burness for insight into why people think the way they do, Ben | Louise Burness for insight into why people think the way they do, Ben | |||
Strulo for giving a better way of expressing it and Marc Wennink and | Strulo for giving a better way of expressing it and Marc Wennink and | |||
Damon Wischik for challenging the ideas. Also thanks to Arnaud | Damon Wischik for challenging the ideas. Also thanks to Arnaud | |||
Jacquet, Jon Crowcroft, Frank Kelly and Peter Key for their useful | Jacquet, Jon Crowcroft, Frank Kelly, Peter Key and Toby Moncaster for | |||
reviews. And thanks to Michael Welzl and Wes Eddy for their | their useful reviews. Thanks to Michael Welzl and Wes Eddy for their | |||
excellent survey of Congestion Control in the RFC Series | excellent survey of Congestion Control in the RFC Series | |||
[I-D.irtf-iccrg-cc-rfcs], on which Section 9 is based. However, the | [I-D.irtf-iccrg-cc-rfcs], on which Section 9 is based. And thanks to | |||
author alone shoulders the blame for any offence caused by the | the many people on the tsvwg mailing list who have raised questions | |||
bluntness of style. | or challenged assertions, in the process identifying where clarifying | |||
amendments were needed. However, the author alone shoulders the | ||||
blame for any offence caused by the bluntness of style. | ||||
14. Comments Solicited | 14. Comments Solicited | |||
Comments and questions are encouraged and very welcome. They can be | Comments and questions are encouraged and very welcome. They can be | |||
addressed to the IETF Transport Area mailing list | addressed to the IETF Transport Area mailing list | |||
<tsv-area@ietf.org>, and/or to the authors. | <tsv-area@ietf.org>, and/or to the authors. | |||
15. References | 15. References | |||
15.1. Normative References | 15.1. Normative References | |||
skipping to change at page 33, line 44 | skipping to change at page 37, line 28 | |||
20230208.pdf>. | 20230208.pdf>. | |||
[BufSizUp] | [BufSizUp] | |||
Ganjali, Y. and N. McKeown, "Update on Buffer Sizing in | Ganjali, Y. and N. McKeown, "Update on Buffer Sizing in | |||
Internet Routers", ACM SIGCOMM CCR 36, October 2006, | Internet Routers", ACM SIGCOMM CCR 36, October 2006, | |||
<http://www.sigcomm.org/ccr/drupal/?q=node/72>. | <http://www.sigcomm.org/ccr/drupal/?q=node/72>. | |||
[BytePktMark] | [BytePktMark] | |||
Briscoe, B., "Byte and Packet Congestion Notification", | Briscoe, B., "Byte and Packet Congestion Notification", | |||
draft-briscoe-tsvwg-byte-pkt-mark-00 (work in progress), | draft-briscoe-tsvwg-byte-pkt-mark-00 (work in progress), | |||
March 2007. | June 2007. | |||
(to appear---work in progress) | ||||
[CheapPseud] | [CheapPseud] | |||
Friedman, E. and P. Resnick, "The Social Cost of Cheap | Friedman, E. and P. Resnick, "The Social Cost of Cheap | |||
Pseudonyms", Journal of Economics and Management | Pseudonyms", Journal of Economics and Management | |||
Strategy 10(2)173--199, 1998. | Strategy 10(2)173--199, 1998. | |||
[DCAC] Gibbens, R. and F. Kelly, "Distributed connection | [DCAC] Gibbens, R. and F. Kelly, "Distributed connection | |||
acceptance control for a connectionless network", Proc. | acceptance control for a connectionless network", Proc. | |||
International Teletraffic Congress (ITC16) pp941--952, | International Teletraffic Congress (ITC16) pp941--952, | |||
1999, <http://www.statslab.cam.ac.uk/~frank/dcac.html>. | 1999, <http://www.statslab.cam.ac.uk/~frank/dcac.html>. | |||
[DeMaxMin] | [DeMaxMin] | |||
Jaffe, J., "A Decentralized, "Optimal", Multiple-User, | Jaffe, J., "A Decentralized, "Optimal", Multiple-User, | |||
Flow Control Algorithm", Proc. Fifth Int'l. Conf. On | Flow Control Algorithm", Proc. Fifth Int'l. Conf. On | |||
Computer Communications pp839--844, October 1980. | Computer Communications pp839--844, October 1980. | |||
[ECNFixedWireless] | ||||
Siris, V., "Resource Control for Elastic Traffic in CDMA | ||||
Networks", Proc. ACM MOBICOM'02 , September 2002, <http:// | ||||
www.ics.forth.gr/netlab/publications/ | ||||
resource_control_elastic_cdma.html>. | ||||
[Evol_cc] Gibbens, R. and F. Kelly, "Resource pricing and the | [Evol_cc] Gibbens, R. and F. Kelly, "Resource pricing and the | |||
evolution of congestion control", Automatica 35(12)1969-- | evolution of congestion control", Automatica 35(12)1969-- | |||
1985, December 1999, | 1985, December 1999, | |||
<http://www.statslab.cam.ac.uk/~frank/evol.html>. | <http://www.statslab.cam.ac.uk/~frank/evol.html>. | |||
[FAST] Jin, C., Wei, D., and S. Low, "FAST TCP: Motivation, | [FAST] Jin, C., Wei, D., and S. Low, "FAST TCP: Motivation, | |||
Architecture, Algorithms, and Performance", Proc. IEEE | Architecture, Algorithms, and Performance", Proc. IEEE | |||
Conference on Computer Communications (Infocom'04) , | Conference on Computer Communications (Infocom'04) , | |||
March 2004, | March 2004, | |||
<http://www.ieee-infocom.org/2004/Papers/52_2.PDF>. | <http://www.ieee-infocom.org/2004/Papers/52_2.PDF>. | |||
[FairFAQ] Briscoe, B., "Cost Fairness FAQ", Web page , October 2006, | [FairFAQ] Briscoe, B., "Cost Fairness FAQ", Web page , July 2007, <h | |||
<http://www.cs.ucl.ac.uk/staff/B.Briscoe/projects/ | ttp://www.cs.ucl.ac.uk/staff/B.Briscoe/projects/2020comms/ | |||
2020comms/fairfaq.html>. | fairfaq.html>. | |||
[FairIdx] Jain, R., Chiu, D., and W. Hawe, "A Quantitative Measure | ||||
Of Fairness And Discrimination For Resource Allocation In | ||||
Shared Computer Systems", DEC Research Report TR-301, | ||||
September 1984, | ||||
<http://www.cs.wustl.edu/~jain/papers/fairness.htm>. | ||||
[FairIntgr] | [FairIntgr] | |||
Key, P., Massoulie, L., Bain, A., and F. Kelly, "Fair | Key, P., Massoulie, L., Bain, A., and F. Kelly, "Fair | |||
Internet traffic integration: network flow models and | Internet traffic integration: network flow models and | |||
analysis", Annales des Telecommunications 59 pp1338--1352, | analysis", Annales des Telecommunications 59 pp1338--1352, | |||
2004, <http://citeseer.ist.psu.edu/641158.html>. | 2004, <http://citeseer.ist.psu.edu/641158.html>. | |||
[FrRideP2p] | [FrRideP2p] | |||
Feldman, M., Papadimitriou, C., Chuang, J., and I. Stoica, | Feldman, M., Papadimitriou, C., Chuang, J., and I. Stoica, | |||
"FreeRiding and Whitewashing in Peer-to-Peer Systems", | "FreeRiding and Whitewashing in Peer-to-Peer Systems", | |||
skipping to change at page 35, line 22 | skipping to change at page 39, line 17 | |||
Sharing TCP", CCR 28(3) 53--69, July 1998, <http:// | Sharing TCP", CCR 28(3) 53--69, July 1998, <http:// | |||
www.cs.ucl.ac.uk/staff/J.Crowcroft/hipparch/pricing.html>. | www.cs.ucl.ac.uk/staff/J.Crowcroft/hipparch/pricing.html>. | |||
[NewArchReq] | [NewArchReq] | |||
Braden, R., Clark, D., Shenker, S., and J. Wroclawski, | Braden, R., Clark, D., Shenker, S., and J. Wroclawski, | |||
"Developing a Next-Generation Internet Architecture", | "Developing a Next-Generation Internet Architecture", | |||
DARPA white paper , July 2000, | DARPA white paper , July 2000, | |||
<http://www.isi.edu/newarch/DOCUMENTS/WhitePaper.pdf>. | <http://www.isi.edu/newarch/DOCUMENTS/WhitePaper.pdf>. | |||
[PCNcharter] | [PCNcharter] | |||
IESG Secretariat, "WG Review: Congestion and Pre- | IETF, "Congestion and Pre-Congestion Notification (pcn)", | |||
Congestion Notification (pcn)", Email archive , Feb 2007, | IETF w-g charter , Feb 2007, | |||
<http://www1.ietf.org/mail-archive/web/ietf-announce/ | <http://www.ietf.org/html.charters/pcn-charter.html>. | |||
current/msg03418.html>. | ||||
[PMP] Odlyzko, A., "A modest proposal for preventing Internet | [PMP] Odlyzko, A., "A modest proposal for preventing Internet | |||
congestion", AT&T technical report TR 97.35.1, | congestion", AT&T technical report TR 97.35.1, | |||
September 1997, | September 1997, | |||
<http://www.dtc.umn.edu/~odlyzko/doc/modest.proposal.pdf>. | <http://www.dtc.umn.edu/~odlyzko/doc/modest.proposal.pdf>. | |||
[PrCong] MacKie-Mason, J. and H. Varian, "Pricing Congestible | [PrCong] MacKie-Mason, J. and H. Varian, "Pricing Congestible | |||
Network Resources", IEEE Journal on Selected Areas in | Network Resources", IEEE Journal on Selected Areas in | |||
Communications, `Advances in the Fundamentals of | Communications, `Advances in the Fundamentals of | |||
Networking' 13(7)1141--1149, 1995, <http:// | Networking' 13(7)1141--1149, 1995, <http:// | |||
skipping to change at page 35, line 48 | skipping to change at page 39, line 42 | |||
[RFC0970] Nagle, J., "On packet switches with infinite storage", | [RFC0970] Nagle, J., "On packet switches with infinite storage", | |||
RFC 970, December 1985. | RFC 970, December 1985. | |||
[RFC1122] Braden, R., "Requirements for Internet Hosts - | [RFC1122] Braden, R., "Requirements for Internet Hosts - | |||
Communication Layers", STD 3, RFC 1122, October 1989. | Communication Layers", STD 3, RFC 1122, October 1989. | |||
[RFC1254] Mankin, A. and K. Ramakrishnan, "Gateway Congestion | [RFC1254] Mankin, A. and K. Ramakrishnan, "Gateway Congestion | |||
Control Survey", RFC 1254, August 1991. | Control Survey", RFC 1254, August 1991. | |||
[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., | ||||
and W. Weiss, "An Architecture for Differentiated | ||||
Services", RFC 2475, December 1998. | ||||
[RFC2581] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion | [RFC2581] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion | |||
Control", RFC 2581, April 1999. | Control", RFC 2581, April 1999. | |||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., | [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., | |||
Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., | Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., | |||
Zhang, L., and V. Paxson, "Stream Control Transmission | Zhang, L., and V. Paxson, "Stream Control Transmission | |||
skipping to change at page 36, line 47 | skipping to change at page 40, line 46 | |||
[RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for | [RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for | |||
Datagram Congestion Control Protocol (DCCP) Congestion | Datagram Congestion Control Protocol (DCCP) Congestion | |||
Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, | Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, | |||
March 2006. | March 2006. | |||
[RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | |||
"Extended RTP Profile for Real-time Transport Control | "Extended RTP Profile for Real-time Transport Control | |||
Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | |||
July 2006. | July 2006. | |||
[Re-TCP] Briscoe, B., Jacquet, A., Salvatori, A., and M. Koyabi, | [RFC4828] Floyd, S. and E. Kohler, "TCP Friendly Rate Control | |||
"Re-ECN: Adding Accountability for Causing Congestion to | (TFRC): The Small-Packet (SP) Variant", RFC 4828, | |||
TCP/IP", draft-briscoe-tsvwg-re-ecn-tcp-02 (work in | April 2007. | |||
progress), June 2006. | ||||
[Re-TCP] Briscoe, B., Jacquet, A., Salvatori, A., Koyabi, M., and | ||||
T. Moncaster, "Re-ECN: Adding Accountability for Causing | ||||
Congestion to TCP/IP", draft-briscoe-tsvwg-re-ecn-tcp-04 | ||||
(work in progress), July 2007. | ||||
[Re-fb] Briscoe, B., Jacquet, A., Di Cairano-Gilfedder, C., | [Re-fb] Briscoe, B., Jacquet, A., Di Cairano-Gilfedder, C., | |||
Salvatori, A., Soppera, A., and M. Koyabe, "Policing | Salvatori, A., Soppera, A., and M. Koyabe, "Policing | |||
Congestion Response in an Internetwork Using Re-Feedback", | Congestion Response in an Internetwork Using Re-Feedback", | |||
ACM SIGCOMM CCR 35(4)277--288, August 2005, <http:// | ACM SIGCOMM CCR 35(4)277--288, August 2005, <http:// | |||
www.acm.org/sigs/sigcomm/sigcomm2005/ | www.acm.org/sigs/sigcomm/sigcomm2005/ | |||
techprog.html#session8>. | techprog.html#session8>. | |||
[Saul05] Saul, J., "The Collapse of Globalism and the Reinvention | [Saul05] Saul, J., "The Collapse of Globalism and the Reinvention | |||
of the World", Pub: Viking, Canada ISBN: 0-670-06367-3, | of the World", Pub: Viking, Canada ISBN: 0-670-06367-3, | |||
skipping to change at page 37, line 25 | skipping to change at page 41, line 26 | |||
[SelfMan] Kelly, F., "Models for a Self-Managed Internet", | [SelfMan] Kelly, F., "Models for a Self-Managed Internet", | |||
Philosophical Transactions of the Royal | Philosophical Transactions of the Royal | |||
Society 358(1773)2335--2348, August 2000, | Society 358(1773)2335--2348, August 2000, | |||
<http://www.statslab.cam.ac.uk/~frank/smi.html>. | <http://www.statslab.cam.ac.uk/~frank/smi.html>. | |||
[SovJstce] | [SovJstce] | |||
Siderenko, S., "Characteristics of Perceptions of Social | Siderenko, S., "Characteristics of Perceptions of Social | |||
Justice in the Contemporary USSR", Chapter in: | Justice in the Contemporary USSR", Chapter in: | |||
Transitional Agendas: Working Papers from the Summer | Transitional Agendas: Working Papers from the Summer | |||
School for Soviet Sociologists Ch3 pp41--45, 1991, | School for Soviet Sociologists, pub: Centre for Social | |||
Anthropology and Computing, University of Kent Ch3 | ||||
pp41--45, 1991, | ||||
<http://lucy.ukc.ac.uk/csacpub/russian/siderenko.html>. | <http://lucy.ukc.ac.uk/csacpub/russian/siderenko.html>. | |||
[Swed90] Swedberg, R., "Economics and Sociology. Redefining their | [Swed90] Swedberg, R., "Economics and Sociology. Redefining their | |||
Boundaries: Conversations with Economists and | Boundaries: Conversations with Economists and | |||
Sociologists", Pub: Princeton University Press , 1990. | Sociologists", Pub: Princeton University Press , 1990. | |||
[TCPcc] Jacobson, V., "Congestion Avoidance and Control", Proc. | [TCPcc] Jacobson, V. and M. Karels, "Congestion Avoidance and | |||
ACM SIGCOMM'88 Symposium, Computer Communication | Control", Proc. ACM SIGCOMM'88 Symposium, Computer | |||
Review 18(4)314--329, August 1988, | Communication Review 18(4)314--329, Proc. ACM SIGCOMM'88 | |||
<ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z>. | Symposium, Computer Communication Review 18(4)314--329, | |||
August 1988, <http://ee.lbl.gov/papers/congavoid.pdf>. | ||||
[Tussle] Clark, D., Sollins, K., Wroclawski, J., and R. Braden, | [Tussle] Clark, D., Sollins, K., Wroclawski, J., and R. Braden, | |||
"Tussle in Cyberspace: Defining Tomorrow's Internet", ACM | "Tussle in Cyberspace: Defining Tomorrow's Internet", ACM | |||
SIGCOMM CCR 32(4)347--356, October 2002, | SIGCOMM CCR 32(4)347--356, October 2002, | |||
<http://www.acm.org/sigcomm/sigcomm2002/papers/ | <http://www.acm.org/sigcomm/sigcomm2002/papers/ | |||
tussle.pdf>. | tussle.pdf>. | |||
[UtilFair] | [UtilFair] | |||
Mazumdar, R., Mason, L., and C. Douligeris, "Fairness in | Mazumdar, R., Mason, L., and C. Douligeris, "Fairness in | |||
Network Optimal Flow Control: Optimality of Product | Network Optimal Flow Control: Optimality of Product | |||
Forms", IEEE Transactions on Communications 39(5)775--782, | Forms", IEEE Transactions on Communications 39(5)775--782, | |||
May 1991, <http://dionysos.cs.unipi.gr/~cdoulig/ | May 1991, <http://dionysos.cs.unipi.gr/~cdoulig/ | |||
Fairness%20in%20network%20optimal%20flow%20control% | Fairness%20in%20network%20optimal%20flow%20control% | |||
20optimality%20of%20product%20forms.pdf>. | 20optimality%20of%20product%20forms.pdf>. | |||
[UtilFile] | [UtilFile] | |||
Key, P. and L. Massoulie, "User policies in a network | Key, P. and L. Massoulie, "User policies in a network | |||
implementing congestion pricing", Proc. Workshop on | implementing congestion pricing", Proc. Workshop on | |||
Internet Service Quality and Economics , December 1999, | Internet Service Quality and Economics , December 1999, <h | |||
<http://www.marengoresearch.com/isqe/index.htm>. | ttp://research.microsoft.com/research/network/ | |||
publications/ISQElm.ps>. | ||||
[WFQ] Demers, A., Keshav, S., and S. Shenker, "Analysis and | [WFQ] Demers, A., Keshav, S., and S. Shenker, "Analysis and | |||
Simulation of a Fair-Queueing Algorithm", ACM SIGCOMM | Simulation of a Fair-Queueing Algorithm", ACM SIGCOMM | |||
CCR 19(4)1--12, September 1989, | CCR 19(4)1--12, September 1989, | |||
<http://portal.acm.org/citation.cfm?id=75248>. | <http://portal.acm.org/citation.cfm?id=75248>. | |||
[WindowPropFair] | [WindowPropFair] | |||
Siris, V., "Service Differentiation and Performance of | Siris, V., "Service Differentiation and Performance of | |||
Weighted Window-Based Congestion Control and Packet | Weighted Window-Based Congestion Control and Packet | |||
Marking Algorithms in ECN Networks", Computer | Marking Algorithms in ECN Networks", Computer | |||
End of changes. 108 change blocks. | ||||
313 lines changed or deleted | 489 lines changed or added | |||
This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |