Subject: [alto] Problems of encoding path-vector in multi-cost

From: Chan Dawn <[email-masked]>
Date: Mon, 27 Feb 2017 14:56:26 +0000

Hi authors of draft-multi-cost and draft-alto-path-vector and all,

I just find a problem of encoding cost-mode "path-vector" in multi-cost service. Here is the details of the problem.

Suppose an ALTO client queries the ALTO server in this format:
.........
"multi-cost-type"[
        {"cost-metric": "bw", "cost-mode": "path-vector"} ,
        {"cost-metric": "delay", "cost-mode": "path-vector"}
 ]
"endpoints"{
        "srcs": ["ipv4: 192.0.1.1"] ,
        "dsts": [
                "ipv4: 192.0.1.2" ,
                "ipv4: 192.0.1.4"
        ]
}
......

Two cost types with the same cost-mode but different cost-metrics. So, what is the ALTO server supposed to return? Should the server return one single map taking both metrics into consideration? Or should the server return two independent maps seperating two cost types?

Possible results are listed here :

1. Return one single map
......
"cost-map": {
        "ipv4: 192.0.1.1": {
                "ipv4: 192.0.1.2": ["ne57","ne59"],
                "ipv4: 192.0.1.4": ["ne57", "ne74"]
}
"nep-map": {
        "ne57": {"bw": 100, "delay": 10},
        "ne59": {"bw": 100, "delay": 20},
        "ne74": {"bw": 100, "delay": 15}
}
......

2. Return two independent maps
......
"cost-map": {
        ["ipv4: 192.0.1.1": {
                "ipv4: 192.0.1.2": ["ne57"],
                "ipv4: 192.0.1.4": ["ne57", "ne74"]
        }]
        ["ipv4: 192.0.1.1": {
                "ipv4: 192.0.1.2": ["ne34", "ne56"],
                "ipv4: 192.0.1.4": ["ne56", "ne68"]
        ]}
}
"nep-map1": {
         "ne57": {"bw": 100},
        "ne74": {"bw": 100}
}
"nep-map1": {
        "ne34": {"delay": 15},
        "ne56": {"delay": 15},
        "ne68": {"delay": 10}
}
......

The possible solution to eliminate such ambiguity is that we make some changes on the cost types in the multi-cost design. That is to say, there can be several cost metrics with one specific cost mode in a cost type, so the design of cost type may look like this:
object {
        CostMetric cost-metric <1..*> ;
        CostMode cost-mode;
        [JSONString description;]
}CostType;

Or maybe we can modify the cost-mode path-vector, but I don't have a clear idea about this. Any comment on this problem?

Regards,
Dawn

---

From: Jensen Zhang <[email-masked]>
Date: Tue, 28 Feb 2017 11:33:57 +0800

Hi Dawn,

The "possible result2" doesn't make sense:

1. "nep-map" is a property, not a mutable key. It's hard to understand what
is "nep-map1" and "nep-map2".
2. "cost-map" is a map, not a list... The schema looks a little strange...
3. Why there are different path vectors between the same pair?

I think you want to talk about these two options for the response:

Option 1:

"cost-map": {
        "ipv4: 192.0.1.1": {
},

Option 2: (Although it doesn't make sense because of the different
routings.)

"cost-map": {
        "ipv4: 192.0.1.1": {
                "ipv4: 192.0.1.2": [["ne57"], ["ne34", "ne56"]],
                "ipv4: 192.0.1.4": [["ne57", "ne74"], ["ne56", "ne68"]]
        }
},
"nep-map": [{
        "ne57": {"bw": 100},
        "ne74": {"bw": 100}
}, {
        "ne34": {"delay": 15},
        "ne56": {"delay": 15},
        "ne68": {"delay": 10}
}]

I agree that it is a real issue when path-vector wants to be compatible
with multi-cost. Actually, I think the major problem is from the "nep-map"
design in the path-vector. Shall "nep-map" be a property of the cost-map or
the cost-type? I prefer it as a property of the cost-map. So I prefer
option 1.

There are two reasons for me to support option1:

1. Path-vector should be a static property of the network (suppose the
routing is static and we don't use RSA). So when we query multi-costs with
path-vector, we actually want to query multi-metrics of the same
path-vector.
2. Very simple reason: option 2 is redundant, right?

Now I have a question. Is it really necessary for us to query multiple
cost-modes in one request? Or we just need to query multiple cost-metrics
with the same cost-mode? e.g. shall we need to send a query like
`[{"cost-mode": "numeric", "cost-metric": "hopcount"}, {"cost-mode":
"ordinal", "cost-metric": "routingcost"}]`? @Sabine and @Wendy, may I know
your thoughts?

Thanks,
Jensen

On Mon, Feb 27, 2017 at 10:56 PM, Chan Dawn <[email-masked]> wrote:

> I just find a problem of encoding cost-mode "path-vector" in multi-cost
> service. Here is the details of the problem.
>
> Two cost types with the same cost-mode but different cost-metrics. So,
> what is the ALTO server supposed to return? Should the server return one
> single map taking both metrics into consideration? Or should the server
> return two independent maps seperating two cost types?
>
> The possible solution to eliminate such ambiguity is that we make some
> changes on the cost types in the multi-cost design. That is to say, there
> can be several cost metrics with one specific cost mode in a cost type, so
> the design of cost type may look like this:
> object {
> Or maybe we can modify the cost-mode path-vector, but I don't have a clear
> idea about this. Any comment on this problem?
>
> Regards,
> Dawn
>
>
> _______________________________________________
> alto mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/alto
>
>