Subject: [quicwg/base-drafts] d9389f: Ignore upload files

From: Martin Thomson <[email-masked]>
Date: Mon, 16 Oct 2017 22:23:31 -0700

Branch: refs/heads/master
  Home:   https://github.com/quicwg/base-drafts
  Commit: d9389f05d48bebc8caf9fc0d6dafc7e8b62a1d21
      https://github.com/quicwg/base-drafts/commit/d9389f05d48bebc8caf9fc0d6dafc7e8b62a1d21
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M .gitignore

  Log Message:
  -----------
  Ignore upload files

  Commit: ded8d4fab722c5909c97aa58e618e8da7f2d189c
      https://github.com/quicwg/base-drafts/commit/ded8d4fab722c5909c97aa58e618e8da7f2d189c
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Address validation for connection migration

This has been much-discussed, and it's a relatively isolated change, so I did it.

This modifies PING to have an optional payload and adds a PONG frame to echo
the PING.  An empty PING generates an ACK; a PING with a payload demands a
PONG.

Generating an unguessable PING is the basis of mid-connection address
validation.  If the PING is sent on the new path, and the PONG comes back, then
the remote address is probably OK to use.

I've taken the discussion in the issue into consideration here.  There's a lot
of potential nuance to capture in terms of how an endpoint might reduce and
restore send rates, but I've done what I can to thread the gap between allowing
unbounded sending along new and untested paths and allowing connections to get
back to doing business.

It's annoying that this makes PING and PONG so disparate.  I think that we have
a re-ordering of frames in our near future to correct minor infidelities like
this.  I didn't want to do that here and pollute this PR though.

Closes #161.

  Commit: a0480aae3f12a5d584c932321a1201e6c13a5759
      https://github.com/quicwg/base-drafts/commit/a0480aae3f12a5d584c932321a1201e6c13a5759
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Avoid attack on address validation during connection migration

The attack here is that an attacker might duplicate a legitimate packet and
send that packet from an invalid address such that it arrives before the real
copy.  That causes the recipient to think that there was a connection
migration.  They will attempt to validate that address and this will fail.  The
connection is then closed.

The fix is to cause a migration back to the original, legitimate address.  For
this to work, you need two things:

1. when a migration happens, abandon any validation on the old address on the
   expectation that it will fail

2. when a migration happens, make sure that you try to trigger packets from the
   old address first

For the second point, I decided to mandate address validation, rather than an
ordinary PING.  The reason being that you have to retransmit the packet on that
path and I doubt that implementations will want to have two sets of special
machinery for transmiting - and retransmitting - frames on a specific path.
Maybe this is too much of a constraint on implementations, so I'd like to hear
from people about whether they would prefer a more generic requirement (send
any packet that demands acknowledgment would work, it doesn't even have to be
the same packet every time, though the usual situation will be that the packet
will be lost, so you probably don't want to send anything important).

  Commit: 854377925432d10f42ec617e6d24ec0122cfbf5f
      https://github.com/quicwg/base-drafts/commit/854377925432d10f42ec617e6d24ec0122cfbf5f
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  More review comments

  Commit: 67849052344984d1e1bddf990717a48357b890be
      https://github.com/quicwg/base-drafts/commit/67849052344984d1e1bddf990717a48357b890be
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Require new PING on loss

  Commit: a724bdb991bea5b4470cba4077e7f338e25baf3a
      https://github.com/quicwg/base-drafts/commit/a724bdb991bea5b4470cba4077e7f338e25baf3a
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Data field, not payload

  Commit: ca3f375a8bfceacac59ee75da527cf1941c8c7f0
      https://github.com/quicwg/base-drafts/commit/ca3f375a8bfceacac59ee75da527cf1941c8c7f0
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Remove MUST

  Commit: d30f411a7bd9c5f6db6f63a4f82ef5c96bd5c4ba
      https://github.com/quicwg/base-drafts/commit/d30f411a7bd9c5f6db6f63a4f82ef5c96bd5c4ba
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-17 (Tue, 17 Oct 2017)

  Changed paths:
    M .gitignore
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge pull request #732 from quicwg/proof-of-receipt

Address validation for connection migration

Compare: https://github.com/quicwg/base-drafts/compare/dd717ab3229e...d30f411a7bd9