[184707] in North American Network Operators' Group

home help back first fref pref prev next nref lref last post

Re: Google's peering, GGC, and congestion management

daemon@ATHENA.MIT.EDU (Patrick W. Gilmore)
Thu Oct 15 16:00:37 2015

X-Original-To: nanog@nanog.org
From: "Patrick W. Gilmore" <patrick@ianai.net>
In-Reply-To: <CAPkb-7BOtGnf4a27SPJ4UaKhuB2UqcGJN41Ku56VCdFf75ekPg@mail.gmail.com>
Date: Thu, 15 Oct 2015 16:00:33 -0400
To: NANOG list <nanog@nanog.org>
Errors-To: nanog-bounces@nanog.org

On Oct 15, 2015, at 3:50 PM, Baldur Norddahl <baldur.norddahl@gmail.com> =
wrote:
> On 15 October 2015 at 16:35, Patrick W. Gilmore <patrick@ianai.net> =
wrote:

>> The 100% number is silly. My guess? They=E2=80=99re at 98%.
>>=20
>> That is easily do-able because all the traffic is coming from them.
>> Coordinate the HTTPd on each of the servers to serve traffic at X =
bytes per
>> second, ensure you have enough buffer in the switches for =
micro-bursts,
>> check the NICs for silliness such as jitter, and so on. It is =
non-trivial,
>> but definitely solvable.
>>=20
>=20
> You would not need to control the servers to do this. All you need is =
the
> usual hash function of src+dst ip+port to map sessions into buckets =
and
> then dynamically compute how big a fraction of the buckets to route =
through
> a different path.
>=20
> A bit surprising that this is not a standard feature on routers.

The reason routers do not do that is what you suggest would not work.

First, you make the incorrect assumption that inbound will never exceed =
outbound. Almost all CDN nodes have far more capacity between the =
servers and the router than the router has to the rest of the world. And =
CDN nodes are probably the least complicated example in large networks. =
The only way to ensure A < B is to control A or B - and usually A.

Second, the router has no idea how much traffic is coming in at any =
particular moment. Unless you are willing to move streams mid-flow, you =
can=E2=80=99t guarantee this will work even if sum(in) < sum(out). Your =
idea would put Flow N on Port X when the SYN (or SYN/ACK) hits. How do =
you know how many Mbps that flow will be? You do not, therefore you =
cannot do it right. And do not say you=E2=80=99ll wait for the first few =
packets and move then. Flows are not static.

Third=E2=80=A6. Actually, since 1 & 2 are each sufficient to show why it =
doesn=E2=80=99t work, not sure I need to go through the next N reasons. =
But there are plenty more.

--=20
TTFN,
patrick


home help back first fref pref prev next nref lref last post