Subject: [quicwg/base-drafts] Error space (#96)

From: Mike Bishop <[email-masked]>
Date: Thu, 22 Dec 2016 15:19:58 -0800

Breaks the error space into different regions (#74) for the different components and starts defining error codes in each document.  (Note:  I didn't move anything into the loss-detection document, because I don't know what belongs there versus core transport.  Please help.)

Definitely need review and discussion here -- I may have deleted or moved error codes inappropriately.  Feel free to make changes to this branch.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/96

-- Commit Summary --

  * Fixing what appear to be mangled error code descriptions
  * Use definition list format for error codes.
  * Added error code ranges
  * Remove non-wire-facing and migration-specific error codes
  * Moving crypto errors into TLS document
  * Define HTTP-layer error codes in HTTP document

-- File Changes --

    M draft-ietf-quic-http.md (130)
    M draft-ietf-quic-tls.md (88)
    M draft-ietf-quic-transport.md (305)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/96.patch
https://github.com/quicwg/base-drafts/pull/96.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/96

---

From: Martin Thomson <[email-masked]>
Date: Thu, 22 Dec 2016 22:01:25 -0800

Sorry Mike, but I'm taking the next week off.  I'll get back to this in the new year.

In the meantime, would you mind including a summary of what you think the design principles need to be.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/96#issuecomment-268944637

---

From: Mike Bishop <[email-masked]>
Date: Fri, 23 Dec 2016 15:15:28 -0800

Hm.  Thought I had responded, but I don't see it here.

The basic principles I see are:

- The "owner" of a stream (TLS or app-layer) can reset that stream, or the connection, at any point for a reason it provides to QUIC.  QUIC will send this to the remote peer.
- QUIC can itself reset any stream or the entire connection for a reason that it surfaces to the app-layer and the remote peer.
- When a peer receives an error code in a RST_STREAM, GOAWAY, or CONNECTION_CLOSE, it needs:
    + A reasonable likelihood of figuring out what the error code means
    + A guarantee that it will *not* confuse the error code with some other error code.

To achieve this, I think we need to allocate a portion of the error space to QUIC, crypto, and the app-layer.  The remote knows the QUIC version, which implies the crypto protocol, and the application -- that means it can probably figure out what set of error codes to use for each region.  If extensions define new error codes, they would want to do so within the appropriate registries to avoid collisions and thereby confusion.

It's less clear whether congestion control / loss-detection should fall in the same bucket.  Since the remote doesn't know what congestion control algorithm I'm using, it doesn't have the same view into what set of errors would be appropriate.  I've currently allocated a chunk to it, but not moved any error codes.

Likewise, there might be value in defining an experimental range, either as a separate universe or as a subset of each range.  But then again, you could as easily have an experimental version of QUIC or the app-layer instead, which would have its own mappings and could define anything it wants.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/96#issuecomment-269055639