Internet DRAFT - draft-jennings-mmusic-ice-fix
draft-jennings-mmusic-ice-fix
mmusic C. Jennings
Internet-Draft Cisco
Intended status: Informational July 06, 2015
Expires: January 7, 2016
Proposal for Fixing ICE
draft-jennings-mmusic-ice-fix-00
Abstract
This draft raises some issues and proposes some directions for
improving ICE. It is never meant to become an RFC but is for WG
discussion.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 7, 2016.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Jennings Expires January 7, 2016 [Page 1]
Internet-Draft Ice Fix July 2015
Table of Contents
1. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 2
2. Possible Solutions . . . . . . . . . . . . . . . . . . . . . 3
3. Advantages . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Diagnostics . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Timing . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Asymmetric Media . . . . . . . . . . . . . . . . . . . . 4
4. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 4
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 4
1. Problem Statement
ICE was developed roughly ten years ago and several things have been
learned that could be improved:
1. It is spectacularly difficult to debug on analyze failures or
successes in ICE or develop good automated tests. Many
implementing have had significant bugs for long periods of time.
2. It is timing depended. It relies on both sides to to do
something at roughly the same time and that ability to do this
goes down with the number of interfaces and candidates being
handled. Mobile interfaces and dual stack make this worse.
3. Many widely deployed devices do not implement aggressive
nomination.
4. Many widely deployed devices do not implement normal nomination.
5. It does not discover asymmetric routes. For example UDP leaving
a device may work just fine even thought UDP coming into that
device does not work at all.
6. Almost all deployments include a TURN server. At the time ICE
was done it was not understood if this would be too expensive or
not so ICE works without TURN but better with it.
7. The asymmetric of the controlling / controlled sides has caused
many interoperability problems and bugs.
8. Priorities are complicated in dual stack world and ICE is brittle
to changes in this part of the algorithm
Jennings Expires January 7, 2016 [Page 2]
Internet-Draft Ice Fix July 2015
2. Possible Solutions
Lets consider what we could do if both sides had a back channel that
always worked for sending information to the other side. I'll
discuss how we get a back channel later in the draft.
Each side is responsible for discovering a viable path for it's
incoming media. Each end sends media to where the other sides tells
it. There is no controlling concept or aggressive or normal
nomination. The candidates are exchanged as in normal ICE along with
some attribute that explains the extensions in this draft are
supported.
If both sides support this, each side performs it's check by sending
outbound STUN pings to open local pin holes, then tracks the life
times of theses and reopens them before they expire. It then tells
the other side using the back channel to send it a STUN ping from a
given location to one of a specific candidates. If this works, it
knows it has a viable path.
One side can tell the other side which path to use (or not use) over
the back channel. This can happen at any point of time time and
there is not concept of ICE is "done", ice is running while the
connection is up and at any point in time there some number (or
perhaps zero) viable paths for media in each direction.
There are alms no case where ICE works but that TCP data through the
TURN servers does not. The candidates that go though the TURN server
would be used for the back channel and they would be assumed to work.
There are environments where this back channel would not work but in
those cases, it is very unlikely ICE would work.
Many parts of ICE were designed to support finding multiple ports for
RTP / RTCP , voice video and so on. At this point in time we should
fully optimize for just a single port and assume bundle and rtcp-mux.
A variation of this could be each side discover a path for it's
outgoing media. Not clear where is best.
3. Advantages
3.1. Diagnostics
This makes it very easy to see which outbound connection were sent
from side A to open a pin hole, then when side A asked B to send a
test PING and if B received that. It becomes easier to set up a
client with an automated test jig that tests all the combinations and
Jennings Expires January 7, 2016 [Page 3]
Internet-Draft Ice Fix July 2015
makes sure they work as you only need to test receiving capability
and sender capability independently.
3.2. Timing
This more or less removes the timing complexity by allowing both
sides to be responsible for their own timing. If it turns out that
we can pace things much faster than 20ms (see Juberti's tests results
when they come out), then this allows us to take advantage of that
without both sides up grading at the same time. If we end up with a
lot more candidates due to v6, mobile etc, this removes the issue we
have today where a path might have worked but the two sides did not
find it due to timing issues.
3.3. Asymmetric Media
This allows media to be sent in one direction over a path that does
not work in the reverse direction.
4. Backwards Compatibility
At IETF 92 I thought it would be possible to design a backwards
compatibly solution that did roughly this. That might be possible if
all the major implementations fully implemented the current ICE spec
but many of them do not. Even worse, they implement different parts.
My proposal here is more or less make an ICE2. ICE2 advertises the
same candidates as ICE but also adds some SDP signaling to indicate
the device supports ICE and ICE2.
In the short term we would need device such as web browsers would be
requires to support ICE and the ICE2 extensions here but in the
future we could move to devices that only did ICE2.
The main mechanisms between ICE and ICE2 are largely the same but the
way paths are chosen and used is somewhat different.
Author's Address
Cullen Jennings
Cisco
Email: fluffy@iii.ca
Jennings Expires January 7, 2016 [Page 4]