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

Abstract

Minimal in-band firewall and load balancer signaling for UDP.

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 February 5, 2017.

Copyright Notice

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.

1. Introduction

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].

1.1. Requirements

2. Terminology

3. Protocol Specification

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).

3.1. Bit pattern: Initiator

 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:

3.2. Bit pattern: Responder

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:

3.3. Indication of implementation

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.

3.4. Reset bit

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.

4. Processing

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.

4.1. Processing by applications

4.2. Processing by path elements

4.3. From inside to outside:

4.4. From outside to inside:

(TODO: determine if reverse timer is useful)

5. Guidelines for next layer

New transport’ protocols like QUIC.

6. Security Considerations

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.

7. IANA Considerations

Do we need a registry of magic numbers?

8. Informative References

[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.

Authors' Addresses

Joe Hildebrand Cisco Systems EMail: jhildebr@cisco.com
Brian Trammell ETH Zurich EMail: ietf@trammell.ch

Table of Contents