I’ve read many suggested improvements to TCP and simply congestion control on the Internet in general. Here’s one I tend to believe might work, especially if when it is possible to legislate the requirement for weights, otherwise all routers in country X will assume that your packets are the lowest weighted and favor local traffic over international services.
For lazy/visual people, the following illustrates the problem with throttling BitTorrent, and what the proposed weighted version would do:
And the following illustrates the “refeedback” mechanism proposed in the article.
Understand? No? Ok here’s the Karang Guni version (still suggest you read the original 4 pages haha):
Suppose you collect trash and sort them out. People dump things on you all the time, and what you want to do is to sieve through all of it, find good stuff and then put the real trash away. As your business grows big you start to realize that some of your “customer” simply dump everything onto you, constantly, but doesn’t matter if you pay them slowly as you sieve through the pile of stuff, when others, who actually practice recycling, effectively wants to “sell” you their old goods that they know are worth something. You really want to serve those who give you the good stuff as soon as possible, since they won’t be able to wait for you in a queue or something, nor would they want to wait for you to work on the big piles you have, so you’d just measure, pay the guy something and shoo him off. When those are cleared, you’ll go back to your big pile and work on it.
The above illustration is the “money” version in the article that didn’t work because unlike selling old newspapers, people want to know how much they would be paying (or getting) upfront. But in the weighted version, it’s similar in the sense that those who want to recycle things quick gets to go first by having some “credits” system. The KG would only see how much you present at any point in time to decide whether to serve you first. This is because the KG at any point in time have no idea how much trash he has to sort through, and when would he get through all of it, so he would just have to prioritize using these weights. He’d be working full time anyway, but recyclers of different needs are all satisfied.
You can put any congestion situation to the above problem, especially when the congestion is comprise of a large network with different needs and wants, and it would still make sense. e.g. instead of reserving the bus lane for buses, suppose it is possible to set the law such that no car should obstruct a bus, then a busy road can be fully utilized and optimized locally without a need to reserve the entire lane. Or the passenger tickets for the train versus that of goods. Or the clearing out of smaller tables of guests in a hurry to eat before handling the large group of friends out for a long night of gathering. Or the emergency department in the hospital for the person about to die. Or your father insisting that you pause your video for a while so that he can see the real time stock market summary for a minute. Basically all these situation – the main hogger of the resource can wait, at least a short while, and on the whole still see progress.
What a coincidence – today LTA sent me a letter about this: Mandatory Give Way to Bus! This is precisely what was pointed out on the algorithm above! The “weights” definitely goes to the buses, since there’s no way to say you’re more important than me, a bus is the densest vehicle around so naturally it gets the most “weights” (it’s heavy too). What is also similar is that the law forces you to give way, but if you don’t give and nobody sees you, everything would still be fine, much like how the decentralized way of weighting the TCP packets won’t break if there are some rogue routers who cheat, as long as the number is small.