Subject: [alto] The size of the cost map

From: Sebastian Kiesel <[email-masked]>
Date: Fri, 22 Mar 2013 08:30:14 +0100

Hi,

lately we've been discussing linear vs. quadratic growth of the cost map,
but at least I had no real feeling what this means in terms of bytes on
the wire, using our JSON encoding. So I made a short experiment that I
want to share:

1. Full cost map

I created a short program that creates a dummy full cost map for a given
number of pids, with random costs. For example for n=4 we get:

"map": {
    "PID1": { "PID1": 46798, "PID2": 40641, "PID3": 79519, "PID4": 42365 },
    "PID2": { "PID1": 38326, "PID2": 40822, "PID3": 39478, "PID4": 92488 },
    "PID3": { "PID1": 20699, "PID2": 17894, "PID3": 23255, "PID4": 72587 },
    "PID4": { "PID1": 98813, "PID2": 84046, "PID3": 77717, "PID4": 32574 }
}

For different values of n and with optional gzip compression I got:

costmap-10.json             1681
costmap-10.json.gz          538
costmap-50.json             40K
costmap-50.json.gz          12K
costmap-100.json            160K
costmap-100.json.gz         48K
costmap-500.json            4.1M
costmap-500.json.gz         1.3M
costmap-1000.json           17M
costmap-1000.json.gz        5.1M
costmap-5000.json           424M
costmap-5000.json.gz        133M
costmap-10000.json          1.7G
costmap-10000.json.gz       534M

2. Partial cost map

draft-ietf-alto-protocol-14, section 9.1.2.5. says: "An ALTO Server MAY
omit entries for which a Path Cost is not defined (e.g., both the Source
and Destination PIDs contain addresses outside of the Network Provider's
administrative domain)."

So for this experiment I assume that only "PID1" is within our
administrative domain and I produced a cost map like this (n=4):

"map": {
    "PID1": { "PID1": 32856, "PID2": 31071, "PID3": 16000, "PID4": 84296 },
    "PID2": { "PID1": 35004 },
    "PID3": { "PID1": 88374 },
    "PID4": { "PID1": 11789 }
}

resulting sizes:

costvector-10.json          457
costvector-10.json.gz       180
costvector-50.json          2377
costvector-50.json.gz       654
costvector-100.json         4779
costvector-100.json.gz      1230
costvector-500.json         24K
costvector-500.json.gz      6079
costvector-1000.json        52K
costvector-1000.json.gz     12K
costvector-5000.json        252K
costvector-5000.json.gz     60K
costvector-10000.json       508K
costvector-10000.json.gz    112K

Thanks
Sebastian