Network Working Group | J. Hildebrand |
Internet-Draft | Cisco Systems |
Intended status: Standards Track | B. Trammell |
Expires: February 5, 2017 | ETH Zurich |
August 04, 2016 |
PLUS Protocol
draft-hildebrand-plus-protocol
Minimal in-band firewall and load balancer signaling for UDP.
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 February 5, 2017.
Copyright (c) 2016 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.
This document defines a common minimal path layer protocol for UDP- encapsulated transport protocols with in order to provide minimal, transport- independent state exposure to support firewall and load balancer operation [EDITOR’S NOTE cite appropriate section of draft-kuehlewind-plus-ps once it exists].
The PLUS protocol fits between the UDP header and the (encrypted) upper layer transport header and payload, adding eight bytes to each packet sent by the initiator, and four bytes to each packet sent by the responder. The initiator’s PLUS header allows elements on the network path that can see both inbound and outbound traffic for an association (including typical firewalls and load balancers) to group packets together into flows with better accuracy than provided by the 5-tuple of (Source Address, Source Port, Destination Address, Destination Port, Protocol).
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Source Port | UDP Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Length | UDP Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Magic | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Association Token |R|X| tflags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Upper Layer Transport Header/Payload | | . . . |
The following bits are defined:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Length | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HMAC |R|X| tflags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following bits are defined:
The receiver performs HMAC_256(0xd80000d8, Association Token), and uses the first 3 bytes as the first 3 bytes of the reply. This is used as a further hint that the magic number use was intentional. Call this function Indicator(Association Token).
Usefully, none of these truncated HMACs return the magic number.
Set the Reset bit to tell the path that you’re shutting down. Work will need to be done on this section to define what actions the path will take; one possible approach is to shorten the association timer to a smaller, constant value.
Upper-layer transports should consider providing security around this bit before trusting that it comes from the other endpoint.
Basic idea: Initiator sends bits defined in Section 3.1, Responder sends bits defined in Section 3.2. Initiator always has to send first over every new path.
(TODO: determine if reverse timer is useful)
New transport’ protocols like QUIC.
Next layer transport protocols SHOULD discuss whether any of these bits need to be protected.
Discuss the actual number of bits that window tracking gives you for TCP. Contrast this with how useful this would be for tracking people.
Association Tokens MUST NOT be under the control of untrusted code, like JavaScript. It’s likely there’s a reason for making them not available to untrusted code as well.
Do we need a registry of magic numbers?
[I-D.ietf-taps-transports] | Fairhurst, G., Trammell, B. and M. Kuehlewind, "Services provided by IETF transport protocols and congestion control mechanisms", Internet-Draft draft-ietf-taps-transports-11, July 2016. |