Dear David,
Thank you very much for your answer. Please find my answers inline.
On 7/25/2017 8:03 PM, David Schinazi wrote:
Hi Gabor,
I don't think the problem space is quite as simple:
1) Many content providers will return different DNS results based on
where you're querying from. For this reason you need to perform DNS
and your transport protocol on the same interface to be efficient.
You are completely right. Unfortunately the deployment scenarios are
completely missing from the draft. I plan to include them into version
"-01".
As for the current examples, I would call the applicable scenario as
"MPT service provider scenario", which is the following:
- The client side MPT server is executed on my laptop (or smartphone).
- The service provider side MPT server is executed by an "MPT service
provider". (*)
- An MPT tunnel is set up between the two above MPT servers using all
the available paths (WiFi, LTE)
- Client software (in our case Meetecho, Skype, Viber, etc.) uses the
tunnel IP for all communication (both for sending DNS queries and VoIP
data).
(*) In my case it would be an MPT server at NAIST. In general, there are
two conditions:
(1) it should be close to the client
(2) it should have high speed Internet connection
Of course, what I can achieve is not as good as if I would sit in my
room at NAIST and use the Gigabit Ethernet connection, but the
reliability of the solution is better than that of using WiFi only, and
the price of the solution is less than that of using LTE only.
In general, an "MPT service provider" can be an independent provider or
some ISPs also may provide this service. Multipath resilience and
throughput aggregation apply only to the section between the two MPT
servers. This is the most problematic part by means of unreliability and
cost.
Other possible scenarios would include MPT servers at data center sites
interconnected by several independent high speed paths...
2) Congestion properties can differ greatly per link, for that reason
you'll need to have separate per-link congestion control to avoid
starving one link or risking congestion collapse on the other.
Yes, this is another issue, which has not been addressed yet. I add this
also to the "ToDo" list.
For these reasons, transport-layer solutions like MPTCP or MPQUIC are
preferable: you perform DNS on your favorite link and connect there,
the server provides you with extra addresses and the client host can
then open up different paths via link selection or source address
selection.
The problem with this solution is that MPTCP provides only TCP. Its
retransmission mechanism is probably disadvantageous for real-time
traffic. (Sometimes loss may be better than very long delay, which
applies for all the following data.)
Don't get me wrong, in general I'm a very big proponent of using IP as
our narrow waist to allow innovation at the above and below layers.
However, in this case I don't think you can build a safe and efficient
solution exclusively at the IP layer, because what you're trying to
improve is transport-layer performance (again the only motivation I
see in the draft is "throughput" and "resilience" [Abstract] which I
don't see as main goals for a networking stack, latency is still the
first priority [1].
Whereas I agree with the main message of [1], I would say that Delay,
Throughput and Resilience (or Reliability) are all important and none of
them may be neglected. (Since the time when we used modems, there was a
huge development in the transmission rates, and it has its results:
currently about 75% of the Internet traffic is video and it is
increasing. -- I could not dream of video calling of my wife from Japan
to Hungary without this development.)
You may have solved these issues, but I couldn't find that in the
draft. For example, in draft-lencse-tsvwg-mpt-00 section 5.2, you
mention that "(E.g. WiFi is used for Torrent traffic and LTE is used
for VoIP calls.)" without specifying how the IP layer can
differentiate these various types of traffic.
Section 5.2 is still "Under construction".
Our idea is that the usual 5-tuple (source IP address, source port
number, destination IP address, destination port number, and protocol
number (TCP or UDP)) could be used for the identification of the flows.
(Yes, this method uses more than just IP layer header information.
Perhaps calling MPT as "Network Layer Multipath" solution is
questionable. By calling MPT so, we would like to emphasize that we use
a tunnel IP layer over which both TCP or UDP may be used.) But the
details are missing. (E.g. how to describe the flows, how they can be
efficiently identified, etc.)
And when it comes to per-packet mappings, sending a percentage of
packets on various links and then adding delay to reorder at the MPT
server will add buffer bloat to match the worst link.
Our experience shows that it is worth aggregating only the capacity of
the links with similar speeds and delay. Otherwise it is worth sending
the traffic through the better link and use the other link as "spinning
reserve" for resiliency purposes, if the better link fails.
I may be missing something, but after reading the draft I think this
proposal will be harmful to users as it exclusively focuses on
throughput at the expense of many other priorities.
While it's commonly assumed we can solve any problem by introducing an
extra level of indirection or IP headers, I don't think tunnels are
the solution to all woes.
[1] http://www.stuartcheshire.org/rants/latency.html
Thanks,
David Schinazi
Whereas I try to "defend" our draft, and I hope that our conversation
will result in a better draft, which will be useful for many people, I
also admit, that there may be fundamental flaws in our concept, which we
do not see. I honestly thank you for pointing them out in the past and
in the future, too. And if the final outcome will be that we shell
abandon the draft, I will still be grateful to you for saving us
possibly years spent with something unusable.
So, I really appreciate your reply and wait for further comments from
you and from anyone else interested in our draft.
Best regards,
Gabor
On Jul 25, 2017, at 08:59, Gabor Lencse <[email protected]
<mailto:[email protected]>> wrote:
Dear INTAREA WG members,
I am Gabor Lencse, the first author of a "-00" draft about the MPT
Network Layer Multipath Library:
https://tools.ietf.org/html/draft-lencse-tsvwg-mpt-00
It was introduced to the INTAREA WG by our co-author Marius Georgescu
at IETF 99.
I would like to elaborate on the feedback we received during the
presentation.
Q1 (David, from Apple): What is the motivation, what you are trying
to solve? Why are you trying to use multiple interfaces?
A1: Throughput aggregation between two sites. (E.g. between data centers)
My answer:
The problem to be solved is the following. Due to the design of the
TCP/IP protocol stack and its socket interface, even if a device has
multiple network interfaces, only one of them can be used for a
communications session. And it is a serious limitation many times!
Example: Somebody is remotely participating at an IETF meeting using
Meetecho on his laptop using WiFi connection (to save costs). When he
receives permission to ask a question, the WiFi connection brakes. By
the time he manages to switch over to LTE, it is too late. --
According to our tests, MPT can do the switchover seamlessly.
How common is this situation? I think many people have smartphones,
with WiFi and LTE, and uses WiFi when available in order to save
costs. Many of them use free video calls (e.g. by Skype, Viber,
WhatsApp, etc.) and would be happy if the free WiFi could be backed
up by seamless switchover to LTE during the calls.
There are a number of multi path solutions, which shows that the
problem is real, but I contend that MPT differs from them and MPT can
be more suitable for certain purposes than they for different reasons:
- MPTCP [RFC6824] is good, but it is "built together" with TCP. Some
applications, e.g. DNS resolution or RTP use UDP. (They can work well
with MPT.)
- Huawei's GRE Tunnel Bonding Protocol [RFC8157] was designed for
this very purpose, but it uses GRE, which is filtered out in many
networks. (MPT uses GRE-in-UDP, thus MPT behaves as a standard UDP
application in the carrier networks.)
- BANANA
https://tools.ietf.org/html/draft-leymann-banana-data-encap-00 aims
to do bandwidth aggregation, but it also uses GRE and not GRE-in-UDP.
And I am not sure if it is able to provide a resilient tunnel (that
is switching over from a given underlying path to another one).
- Load Sharing for SCTP
https://tools.ietf.org/html/draft-tuexen-tsvwg-sctp-multipath-14 is
also a multipath solution, but it is very specific. MPT provides an
IP tunnel, which can be used for any purpose.
All in all, I could not find any other solutions that would provide
such flexible, multipurpose IP tunnel (providing both IPv4 and IPv6),
which is both resilient and can aggregate the transmission capacity
of several (even high number of) underlying paths, and which can be
used in any networks, where UDP is carried over either IPv4 or IPv6.
I would be interested in hearing about any similar solutions.
And I would like to receive your feedback about MPT. All your
questions, comments, suggestions, etc.
Best regards,
Gabor
_______________________________________________
Int-area mailing list
[email protected] <mailto:[email protected]>
https://www.ietf.org/mailman/listinfo/int-area
_______________________________________________
Int-area mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/int-area