Internet DRAFT - draft-herbert-fast

draft-herbert-fast







Network Working Group                                         T. Herbert
Internet-Draft                                                   SiPanda
Intended status: Standards Track                          7 October 2023
Expires: 9 April 2024


                      Firewall and Service Tickets
                         draft-herbert-fast-07

Abstract

   This document describes the Firewalls and Service Tickets (FAST)
   protocol.  This is a generic and extensible protocol for hosts to
   signal network nodes to request services or to gain admission into a
   network.  A ticket is data that accompanies a packet and indicates a
   granted right to traverse a network or a request for network services
   to be applied (in the latter case the ticket serves as a service
   profile).  Applications request tickets from a local agent in their
   network and attach issued tickets to packets.  Firewall tickets are
   issued to grant packets the right to traverse a network; service
   tickets indicate the desired service to be applied to packets.  A
   single ticket may provide both firewall and service ticket
   information and semantics.  Tickets are sent in IPv6 Hop-by-Hop
   options.

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 https://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 9 April 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.





Herbert                   Expires 9 April 2024                  [Page 1]

Internet-Draft                    FAST                      October 2023


   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://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 Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Motivation for FAST . . . . . . . . . . . . . . . . . . .   3
     1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Hop-by-Hop Options as a signal carrier  . . . . . . . . . . .   4
     2.1.  Motivation for using Hop-by-Hop Options . . . . . . . . .   4
     2.2.  Drawbacks of Hop-by-Hop Options . . . . . . . . . . . . .   5
       2.2.1.  Mitigating Hop-by-Hop Options packet drops  . . . . .   5
       2.2.2.  Support in IPv4 . . . . . . . . . . . . . . . . . . .   6
   3.  Architecture  . . . . . . . . . . . . . . . . . . . . . . . .   7
     3.1.  Example communications flow . . . . . . . . . . . . . . .   8
   4.  Protocol format . . . . . . . . . . . . . . . . . . . . . . .  10
     4.1.  Option format . . . . . . . . . . . . . . . . . . . . . .  10
     4.2.  Option types  . . . . . . . . . . . . . . . . . . . . . .  11
     4.3.  Ticket Data format  . . . . . . . . . . . . . . . . . . .  11
   5.  Operation . . . . . . . . . . . . . . . . . . . . . . . . . .  12
     5.1.  Origin and reflection properties  . . . . . . . . . . . .  12
     5.2.  Origin application processing . . . . . . . . . . . . . .  13
       5.2.1.  Ticket requests . . . . . . . . . . . . . . . . . . .  13
       5.2.2.  Ticket identification . . . . . . . . . . . . . . . .  14
       5.2.3.  Ticket use  . . . . . . . . . . . . . . . . . . . . .  14
       5.2.4.  Ticket agent delegation . . . . . . . . . . . . . . .  14
     5.3.  Origin network processing . . . . . . . . . . . . . . . .  15
     5.4.  Destination host processing . . . . . . . . . . . . . . .  16
     5.5.  Processing reflected tickets  . . . . . . . . . . . . . .  16
       5.5.1.  Network processing  . . . . . . . . . . . . . . . . .  16
       5.5.2.  Host processing . . . . . . . . . . . . . . . . . . .  16
     5.6.  Removing tickets from packets . . . . . . . . . . . . . .  17
       5.6.1.  Methods to remove tickets . . . . . . . . . . . . . .  17
         5.6.1.1.  Overwriting with a null ticket  . . . . . . . . .  17
         5.6.1.2.  Removing Hop-by-Hop Options containing tickets  .  17
       5.6.2.  Removing tickets without loss of functionality  . . .  17
       5.6.3.  Removing tickets with loss of functionality . . . . .  18
   6.  Implementation considerations . . . . . . . . . . . . . . . .  19
     6.1.  Origin applications . . . . . . . . . . . . . . . . . . .  19
     6.2.  Router implementation . . . . . . . . . . . . . . . . . .  20
     6.3.  Ticket reflection . . . . . . . . . . . . . . . . . . . .  20
     6.4.  Security Considerations . . . . . . . . . . . . . . . . .  20



Herbert                   Expires 9 April 2024                  [Page 2]

Internet-Draft                    FAST                      October 2023


   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  21
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  22
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  22
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  22
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  23

1.  Introduction

   Firewall and Service Tickets (FAST) is a protocol to allow an
   application to signal the network to request admission and services
   for packets.  FAST is the carrier of signals in host to network
   signaling.  The motivation and use cases of host to network signaling
   are discussed in [I-D.herbert-host2netsig].

   A ticket is data that is attached to a packet by a source node and is
   validated and processed by some or all intermediate nodes in a
   network.  Tickets can express a grant for packets to traverse a
   network or have services applied to them.  Tickets can be opaque or
   have a visible structure containing attributes of requested services.
   Tickets may be encrypted and integrity protected to limit visibility
   and prevent abuse.

   An application requests tickets for admission or services from a
   ticket agent in their local network.  The agent issues tickets to the
   application which in turn attaches them to its packets.  In the
   forwarding path, intermediate network nodes may interpret tickets and
   apply requested services on packets.

   Tickets are validated for authenticity by the network and may contain
   an expiration time so that they cannot be easily forged.  Tickets do
   not have a global interpretation, they can only be interpreted in the
   context of the network or limited domain [RFC8799] that issues them.
   In order to apply services to inbound packets for a communication,
   remote peers reflect received tickets in packets they send without
   interpreting them.  Tickets are stateless within the network, however
   they can be used to attain per flow semantics.  Firewall and service
   tickets should be non-transferable and revocable.

   Tickets are coded in IPv6 Hop-by-Hop options.

1.1.  Motivation for FAST

   The general motivation and use cases for host to network signaling is
   discussed in [I-D.herbert-host2netsig].  The motivation for using
   IPv6 Hop-by-Hop Options as the carrier of host to network signals is
   discussed below.





Herbert                   Expires 9 April 2024                  [Page 3]

Internet-Draft                    FAST                      October 2023


1.2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  Hop-by-Hop Options as a signal carrier

   The carrier of host to network signaling in FAST is IPv6 Hop-by-Hop
   Options [RFC8200].  This section discusses the motivation for using
   Hop-by-Hop Options, the drawbacks of Hop-by-Hop Options, and methods
   to mitigate those drawbacks.

2.1.  Motivation for using Hop-by-Hop Options

   [I-D.herbert-host2netsig] discusses some alternatives that might be
   considered for the carrier protocol of host to network signaling.
   Compared to the these alternatives, Hop-by-Hop Options has a number
   advantages that motivate the use of Hop-by-Hop Options as the
   ubiquitous carrier of host to network signals:

   *  IPv6 Hop-by-Hop Options are explicitly designed to be a standard
      and extensible protocol for host to network signaling on a per
      packet basis.  Hop-by-Hop options also facilitate network to host
      signaling.

   *  Hop-by-Hop Options are defined as part of an Internet standard STD
      86 [RFC8200].

   *  Hop-by-Hop Options are a network layer protocol and are
      independent of both transport layer and link layer protocols.

   *  Hop-by-Hop Options work with any transport protocol, encrypted
      IPsec tunnels, as well as any other encapsulation protocols in
      IPv6.

   *  Hop-by-Hop Options are variable length to allow rich expression.

   *  Hop-by-Hop Options are stateless.

   *  Hop-by-Hop Options can change between packets of the same flow.

   *  Hop-by-Hop Options are explicitly intended to be processed by
      intermediate nodes in the path of a packet.







Herbert                   Expires 9 April 2024                  [Page 4]

Internet-Draft                    FAST                      October 2023


   *  Hop-by-Hop Options are located in headers of a packet as opposed
      to trailers, and the Hop-by-Hop Options header immediately follows
      the IPv6 header at a fixed offset in the packet.  These
      characteristics make Hop-by-Hop Options amenable to efficient
      processing in both software and hardware implementations.

2.2.  Drawbacks of Hop-by-Hop Options

   Hop-by-Hop Options have two main drawbacks:

   *  Packets containing Hop-by-Hop Options headers may be summarily
      discarded by some network providers as a matter of policy
      [RFC7872],[RFC9098].

   *  Hop-by-Hop Options is an IPv6 specific protocol, there is no
      equivalent protocol in IPv4.

   The sections below describe mitigations for these drawbacks.

2.2.1.  Mitigating Hop-by-Hop Options packet drops

   The original processing requirements of IPv6 [RFC2460] Hop-by-Hop
   Options required all routers in the path to process the Hop-by-Hop
   Options header and its options.  In response to this requirement,
   some routers deferred processing of Hop-by-Hop Options to the
   software slow path, others ignored them, and still others elected to
   summarily discard all packets containing Hop-by-Hop Options.  A
   related issue was that the number of Hop-by-Hop Options in a packet
   was only limited by the MTU for the packet.  The lack of a limit,
   combined with the requirement that nodes must skip over unknown
   options when the high order bit in the option type isn't set, created
   the opportunity for DOS attacks by sending long lists of unknown Hop-
   by-Hop options.  The net effect of these issues was that deployment
   of Hop-by-Hop Options on the Internet was significantly impeded to
   the point that the current data suggests that packet with Hop-by-Hop
   Options have more than a 99% drop rate [APNIC-EH].

   There is ongoing work to fix, or at least mitigate, the deployability
   problems of Hop-by-Hop options:

   *  [RFC8200] specifies that intermediate nodes MAY ignore Hop-by-Hop
      options.  There is no concept of a Hop-by-Hop option that must be
      processed by all nodes, and the current assumption in defining any
      new option is that it may be processed by only by some nodes in
      the path or even none at all.  Allowing nodes to ignore options
      they're not interested in, instead of just discarding the packets,
      preserves the usability of Hop-by-Hop across the whole path.




Herbert                   Expires 9 April 2024                  [Page 5]

Internet-Draft                    FAST                      October 2023


   *  [I-D.ietf-6man-hbh-processing] modifies the processing of Hop-by-
      Hop options described in [RFC8200] to make processing of the IPv6
      Hop-by-Hop Options header practical.  In particular, this
      clarifies the expectation that Hop-by-Hop Options should not be
      processed in the slow path and that new Hop-by-Hop options are
      designed to always be processed in the fast path.

   *  [I-D.ietf-6man-eh-limits] specifies that intermediate nodes that
      process Hop-by-Hop Options may set and apply configurable limits
      on Hop-by-Hop Options processing.  For instance, one limit is for
      the number of options that are processed; if the limit is exceeded
      then options processing is terminated and the packet is forwarded
      without any ill-effects.  The use of limits is optional and while
      specific default limits are recommended, there are no specific
      "hard" limits that must be enforced.

   *  [I-D.herbert-eh-inflight-removal] describes a protocol to remove
      Hop-by-Hop Options headers from packets in-flight.  This could be
      applied in FAST by arranging that the last router that processes a
      ticket in a Hop-by-Hop option removes the Hop-by-Hop Options
      header from the packet.  By removing the Hop-by-Hop Options
      header, downstream nodes would allow the packet and no
      functionality is lost since the ticket isn't relevant to the
      downstream routers.

2.2.2.  Support in IPv4

   A new IPv4 option could be defined to contain tickets.  IPv4 options
   are designed to be inspected by intermediate nodes, however support
   is not widespread to the extent that they may be less deployable than
   even IPv6 Hop-by-Hop Options.  A major reason for this is that the
   IPv4 header, unlike the IPv6 header, is variable length.  Many
   hardware devices have long assumed that the IPv4 header is twenty
   bytes, processing a larger header will likely be problematic causing
   packet discards or packets being relegated to slow path processing.

   An alternative to IPv4 Options is to enable Extension Headers in IPv4
   [I-D.herbert-ipv4-eh] and use Hop-by-Hop Options in IPv4 packets.
   This solution doesn't affect the IP header, but does introduce a new
   IP protocol to IPv4 devices.  Some routers might need to be
   configured to forward IPv4 packets with IP Protocol 0 for Hop-by-Hop
   Options.  This scheme would affect ECMP routing since the transport
   layer headers, continuing the port numbers used in ECMP, would not be
   parsed.  [I-D.herbert-ipv4-eh] describes repurposing the
   Identification field of the IPv4 header to be a flow label to
   compensate for the effects on routers if they can't access transport
   layer headers.




Herbert                   Expires 9 April 2024                  [Page 6]

Internet-Draft                    FAST                      October 2023


3.  Architecture

   The figure below illustrates an example of network paths between
   three communicating hosts.  Each host connects to the Internet via a
   provider network, and provider networks are connected in the Internet
   by transit networks.  In this example, User 1 and User 2 reside in
   Provider A's network and User 2 is in Provider B's network.  With
   respect to FAST, we'll assume User 1 and User 2 are in the same
   limited domain and User 3 is in a different limited domain than User
   1 and User 2.

                                   _____
                   __________     (     )      __________
   +--------+    (          )    (       )    (          )    +--------+
   | User 1 +---( Provider A )--( Transit )--( Provider B )---+ User 3 |
   +--------+    (__________)    (       )    (__________)    +--------+
                       |          (_____)
                   +--------+
                   | User 2 |
                   +--------+
                                   Figure 1

   Within each provider network, services may be provided on behalf of
   the users of the network.  In the figure above, Provider 1 may
   provide services and service agreements for users in its network
   including User 1 and User 2; and likewise Provider B can provide
   services to users in its network including User 3.  We assume transit
   networks don't typically provide user specific services or service
   differentiation.  Services provided by different provider networks
   may be very different and dependent on the implementation of the
   network as well as the policies of the provider.

   Based on this model, services and service differentiation can be
   considered local to each network provider.  FAST is a mechanism
   whereby each user and application can request from its local provider
   the services to be applied to its traffic.  A request for service is
   made to a FAST "ticket agent".  The contents of the request describe
   the services that the application desires.  The ticket agent responds
   with a "ticket" that the application sets in its packets.  The ticket
   has meaning in its "origin network", that is the provider network in
   which the ticket was created.  A ticket provided by a local ticket
   agent is attached to packets as an "origin ticket".

   When a packet is sent by the application with an attached origin
   ticket, the ticket is interpreted by nodes in the local provider
   network as the origin network of the ticket.  The ticket is
   interpreted and processed to allow the packet to traverse the network
   and to map it to the appropriate services.  A ticket is only relevant



Herbert                   Expires 9 April 2024                  [Page 7]

Internet-Draft                    FAST                      October 2023


   to the origin network that issued the ticket; to the application
   itself and nodes outside of the provider's network and its limited
   domain, the ticket is an uninterpretable opaque object.

   To facilitate network traversal and service mapping in the reverse
   direction for a flow, that is packets sent from a peer host, peer
   hosts reflect tickets without modification or interpretation.  This
   is done by saving the ticket received in packets of a flow and
   attaching the ticket as a "reflected ticket" to packets being sent on
   the flow.  When a packet with a reflected ticket enters the origin
   network of the ticket, the ticket is processed by a network node to
   allow the packet to traverse the network and to map it to the
   appropriate services.

   The use of tickets may be bilateral for a flow so that each peer
   requests service from its local network.  Therefore packets may
   contain two types of tickets: one that is set by the sending host to
   signal its local provider network, and the other is the reflected
   ticket that is a signal to the provider network of the peer endpoint.

   Tickets are scoped values, they only have meaning in the network in
   which they were issued.  The format, meaning, and interpretation of
   tickets are network specific.  By mutual agreement, two networks may
   share the policy and interpretations of tickets.  For instance, there
   could be an agreement between two provider networks to interpret each
   others tickets or to use a common format.

3.1.  Example communications flow

   Figure 2 provides an example communications flow using FAST with
   reflected tickets.




















Herbert                   Expires 9 April 2024                  [Page 8]

Internet-Draft                    FAST                      October 2023


       1. Ticket                   +--------+
          request  +------------>  | Ticket |
                  /   +----------  | Agent  |
             +---+   /  2. Ticket  +--------+
            / +-----+      reply              ______
           /  v              __________      (      )
       +--------+           (          )    (        )    +--------+
       | Client +----------( Provider A )--( Internet )---+ Server |
       +--------+           (__________)    (        )    +--------+
                                             (______)

     3. App sends,      4,5. Net applies   6. Ignore ticket 7,8. Server
        ticket attached      services         in Internet        reflect
     -------------------> -----------------> --------------------+
                                                                  \
                                 Reverse path                     /
     ------------------ ----------------- --------------------+
      12. Validate           10,11. Network applies  9. Ignore ticket
          reflected ticket          services            in Internet

                                Figure 2

   Referencing figure 2, consider that the Client is establishing a
   video chat with the Server and wishes to have low latency service for
   video applied by its local network (Provider A).  The flow of events
   may be:

   1.   The Client makes a ticket request to a ticket agent of Provider
        A that describes the video application and may include detailed
        characteristics such as resolution, frame rate, latency, etc.

   2.   The ticket agent issues a ticket to the Client that indicates
        that packets of the flow have a right to traverse the network
        and the services to be applied to the packets of the flow.  A
        ticket reply is sent to the Client.

   3.   The video chat application sends packets for the video chat with
        the ticket attached in Hop-by-Hop Options.

   4.   The first hop node in Provider A's network interprets the ticket
        in packets and applies the appropriate services (e.g.  sets
        diffserv, forwards on a network slice, encapsulates in MPLS,
        encapsulates with segment routing, etc.).

   5.   Packets traverse Provider A's network with the appropriate
        services being applied.





Herbert                   Expires 9 April 2024                  [Page 9]

Internet-Draft                    FAST                      October 2023


   6.   Packets traverse transit networks and the Server's provider
        network, the attached tickets are ignored.

   7.   Packets are received at the Server.  Attached tickets are saved
        in the context of the flow for the video chat.

   8.   The Server's video chat application sends packets back to the
        Client.  The last ticket previously received from the Client is
        now reflected in these packets.

   9.   Packets traverse the Server's provider network and transit
        networks, the reflected ticket is ignored.

   10.  An ingress node in Provider A's network interprets the reflected
        ticket and applies appropriate services to the packets for
        traversing the local network.

   11.  Packets are forwarded within Provider's A network with the
        appropriate services applied.

   12.  Packets are received at the host for the Client.  The reflected
        ticket may be validated by comparing the received reflected
        ticket with that being sent for the flow.

4.  Protocol format

   A ticket is sent in an option in a Hop-by-Hop Options header.

4.1.  Option format

   The format of a Hop-by-Hop option containing a ticket is:

                          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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Type  |  Opt Data Len | Pr|        Ticket Type        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      ~                         Ticket Data                           ~
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Fields:

   *  Option Type: Type of Hop-by-Hop option.  This document proposes
      two possible types for FAST ticket options: an unmodifiable and a
      modifiable variant.




Herbert                   Expires 9 April 2024                 [Page 10]

Internet-Draft                    FAST                      October 2023


   *  Opt Data Len: Length of the option data field.  The option data is
      comprised the Pr, Ticket Type, and Ticket Data fields.

   *  Pr: Indicates the origin and reflection properties of the ticket.
      Possible values are:

      -  0x0: Origin ticket not reflected.  Don't reflect at receiver

      -  0x1: Origin ticket to be reflected.  Ticket is requested to be
         reflected by the destination host

      -  0x2: Reflected ticket.  The ticket was reflected by a
         destination host and is being returned to the origin source
         host

      -  0x3: Reserved

   *  Ticket Type: The type and format of the ticket.  This value is
      used by nodes in the origin network to interpret the rest of the
      ticket data.  Values for this field are specific to the network
      that issues the ticket.  The type is an IANA managed number space.
      A type of 0 indicates a "null" ticket that isn't to be processed
      by receivers.

   *  Ticket Data: Contains the ticket data that describes the service
      applied.  The format of the data is determined by the Ticket Type.

4.2.  Option types

   The are two option numbers requested for the ticket option: 0x0F and
   0x2F.  The latter allows modification by network nodes.  Since
   tickets are secured, only the nodes in the network that created a
   ticket will be able to modify it.

4.3.  Ticket Data format

   The Ticket Data in FAST Ticket option encodes service parameters that
   describe the desired services as well as additional fields that would
   be used to provide privacy and integrity.

   The format of Ticket Data is not fixed and is determined by the
   Ticket Type and the origin network of the ticket.  A ticket should be
   obfuscated or encrypted for privacy so that only the local network
   can interpret it.  It should be uninterpretable to any nodes outside
   the network and to the application or host that is granted a ticket.
   A ticket should be resistant to spoofing so that an attacker cannot
   illegitimately get service by applying a ticket observed on other
   flows.



Herbert                   Expires 9 April 2024                 [Page 11]

Internet-Draft                    FAST                      October 2023


   It is RECOMMENDED that tickets are encrypted to prevent unnecessary
   information exposure and abuse of tickets.  It is also RECOMMENDED
   that tickets have an expiration time.  For instance, a ticket may be
   created by encrypting the ticket data with an expiration time and
   using the source address, destination address, and a shared key as
   the key for encryption.

   For example, a ticket with an expiration time may have the format:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Expiration Time                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      ~                     Service Parameters                        ~
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Where the Expiration Time is in a format understood by the local
   network nodes which maintain synchronized time.  The Service
   Parameters are relevant to local network nodes and describe the
   services to be applied.  The Service Parameters could simply be a set
   of flags for services, an index to a service profile table shared
   amongst the network nodes, or possibly have more elaborate structure
   that could indicate numerical values for characteristics that have a
   range.

   A simple ticket containing a service protocol index might have the
   format:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Expiration time                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Service Profile Index                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Where the Ticket Type would indicate the Ticket Data contains a
   service profile index.  Service Profile Index could be used as an
   index into a table that describes the services to be applied.

5.  Operation

5.1.  Origin and reflection properties

   There are three origin and reflection properties that may be applied
   to a ticket:




Herbert                   Expires 9 April 2024                 [Page 12]

Internet-Draft                    FAST                      October 2023


   *  Origin tickets not reflected

   *  Origin tickets to be reflected

   *  Reflected tickets

   Origin tickets are those set by an application that was issued a
   ticket and have an additional property indicating whether they are to
   be reflected by a peer host.  Reflected tickets are those that have
   been received and reflected by a peer host.

   A sender SHOULD set at most one ticket option for each property in a
   packet.  If ticket options with different properties are set within a
   single packet, they SHOULD have the following ordering in the Hop-by-
   Hop Options list:

   *  Origin ticket not reflected

   *  Reflected ticket

   *  Origin ticket to be reflected

   If a packet contains more than one ticket option with the same origin
   and reflection property, only the first ticket option appearing in
   the list for the property is processed.  Additional options for the
   same property MAY be parsed but SHOULD NOT be processed.

5.2.  Origin application processing

   An origin application requests tickets, sets them in packets, and
   validates reflected tickets.

5.2.1.  Ticket requests

   An application that wishes to use network services first requests
   tickets from a ticket agent.  The application request could be in the
   form of an XML structure with canonical elements (the definition is
   outside the scope of this document).  The application makes a request
   to a ticket agent in its local network.  This could be done via a web
   service using REST APIs.  Internally in the host, the ticket agent
   might be accessed through a library that interfaces to a ticket
   daemon that in turn arbitrates requests between the applications and
   a ticket agent in the network.

   An issued ticket is opaque to the application and the application
   SHOULD NOT attempt to interpret it or take any other action other
   than to attach the ticket to its packets.




Herbert                   Expires 9 April 2024                 [Page 13]

Internet-Draft                    FAST                      October 2023


   A ticket agent MAY provide both an origin ticket not reflected and
   one that is to be reflected.  The intent is that different tickets
   can be used between the forward and return paths for the flow.  In
   the case that two tickets are provided, the origin ticket not
   reflected MUST appear first in the options list and the origin ticket
   to be reflected SHOULD NOT be processed in the forward path.

   The protocols and details for making requests to ticket agents are
   out of scope for this specification.

5.2.2.  Ticket identification

   Tickets are valid for the specific IP source and destination
   addresses for which they were issued.  Transport layer ports and
   other transport layer information are not included ticket
   identification, however an application can request tickets and
   validate reflected tickets on a per flow basis.  Issued tickets are
   stored in the flow context and the saved information is used to
   validate reflected tickets.

5.2.3.  Ticket use

   When the ticket agent issues and returns a ticket, the application
   sets the ticket as a Hop-by-Hop option in packets.  This is typically
   done by setting a socket option on a socket (in the case of TCP) or
   by indicating the option in the ancillary data when sending on a
   unconnected socket (in the case of UDP).  The application SHOULD
   continue to use the same ticket for the flow until it is updated with
   a new ticket.

   The ticket agent SHOULD return an expiration time with the ticket.
   An application can use the ticket until the expiration time, at which
   point it can request a new ticket to continue communications.  In
   order to make the ticket transition process seamless, an application
   MAY request a new ticket before the old one expires.

5.2.4.  Ticket agent delegation

   A network MAY delegate creation of tickets to hosts in a limited
   fashion.  This would entail the network ticket agent issuing a master
   ticket to a host ticket agent which in turn can use the master ticket
   to create a limited number of tickets for its own use.  The details
   of ticket agent delegation are outside the scope of this document.








Herbert                   Expires 9 April 2024                 [Page 14]

Internet-Draft                    FAST                      October 2023


5.3.  Origin network processing

   When a packet with a ticket enters a network, an ingress network node
   can determine if the ticket originated in its network and must be
   processed.  This is done by considering the origin of the ticket and
   the source or destination IP address.  For an origin ticket (i.e. a
   ticket is not reflected), the source address is considered.  If the
   source address is local to the network then the ticket can be
   interpreted.  For a reflected ticket, the destination address is
   considered.  If the destination address is local to the network then
   the ticket can be interpreted.

   If the ticket origin is determined to be the local network then the
   ticket is processed.  The ticket is decrypted if necessary and the
   expiration time is checked.  If the ticket is verified to be
   authentic and valid then the packet is mapped to be processed by the
   requested services.  For instance, in a 5G network the packet may be
   forwarded on a network slice for the characteristics that the
   application has requested (real-time video for instance).

   If an origin ticket cannot be verified, for instance the ticket
   cannot be authenticated, then the ticket SHOULD be ignored and the
   packet processed as though no ticket were present.

   Note that there are logically only two ingress points into the
   network at which a provider needs to process tickets: when a local
   user sends a packet into the provider network with an origin ticket,
   and when a packet from an external network enters the provider's
   network with a reflected ticket.  Typically, a ticket should only
   need to be processed at most once within a network at one of these
   ingress points.  Once a ticket is processed and mapped to the
   network's service mechanisms, it should not normally need further
   processing or examination.

   If there is more than one origin ticket present, then the first one
   encountered is processed and any additional origin tickets SHOULD be
   ignored by a network node.  Note that this will be the case if a
   ticket agent issued both a origin ticket not reflected and one to be
   reflected; the origin ticket not reflected should appear first in the
   packet and thus would be the one processed by nodes in the origin
   network of the ticket.

   If there is more than one reflected ticket present, then the first
   one encountered is processed and any additional reflected tickets
   SHOULD be ignored.






Herbert                   Expires 9 April 2024                 [Page 15]

Internet-Draft                    FAST                      October 2023


5.4.  Destination host processing

   When a host receives a packet with an origin ticket to be reflected,
   it SHOULD save the ticket in its flow context and reflect it on
   subsequent packets.  When the application reflects the option, it
   copies the whole option and only modifies the type to indicate a
   "reflected ticket".  The application SHOULD continue to reflect the
   ticket for packets of the flow until a different one is received from
   the origin or a packet without an origin ticket to be reflected is
   received on the flow.  Note that the latest ticket received is the
   one to be reflected, if packets have been received out of order for a
   flow it is possible that the reflected ticket is from an earlier
   packet in a flow.

   If there is more than one origin ticket to be reflected present, then
   the first one encountered is processed and any additional origin
   tickets to be reflected SHOULD be ignored.

   A destination host MUST ignore received origin tickets not reflected.

5.5.  Processing reflected tickets

5.5.1.  Network processing

   When a packet with a reflected ticket enters the origin network of
   the ticket, the ticket SHOULD be processed.  The ticket is validated.
   Validation entails decoding or decrypting the ticket and checking the
   expiration time.  If the ticket is valid and has not expired then the
   ticket is processed.

   A network MAY accept expired reflected tickets for some configurable
   period after the expiration time.  Rate limiting MAY be applied to
   packets with expired reflected tickets.  Accepting expired tickets is
   useful in the case that a connection goes idle and after sometime the
   remote peer starts to send.  The ticket it reflects may be expired
   and presumably the receiving host of the reflected ticket will
   quickly respond with a new origin ticket to be reflected.

5.5.2.  Host processing

   Upon receiving a packet with a reflected ticket, an end host MAY
   validate the ticket before accepting the packet.  This verification
   is done by comparing the received ticket to that which is set to be
   sent on the corresponding flow.  If the tickets do not match then the
   event SHOULD be logged.

   A host MAY accept expired tickets that are reflected to allow a peer
   time to receive and reflect an updated ticket.



Herbert                   Expires 9 April 2024                 [Page 16]

Internet-Draft                    FAST                      October 2023


5.6.  Removing tickets from packets

   Once the last node in a network path has processed a ticket in a
   packet, any network downstream nodes won't need to access the ticket.
   As stated above, typically only one node in the network needs to
   process a ticket.  Once a ticket has been processed by the last node
   that processes it, it can safely be removed from the packet since
   it's not needed by any downstream nodes.  The motivation for removing
   tickets in-flight is two-fold: 1) It's a security measure to minimize
   visibility of the data, and 2) It simplifies the packet to increase
   chances of successful delivery across a network.

5.6.1.  Methods to remove tickets

   There are two methods to remove a ticket from a packet:

   *  Create a "null" ticket option by writing zeros in the option data.

   *  Remove the Hop-by-Hop Options header containing the ticket

5.6.1.1.  Overwriting with a null ticket

   A ticket can be removed from a packet by overwriting the option data
   of the ticket with all zeroes.  The ticket option type MUST be the
   modifiable variant.  Ticket Type 0 is reserved as the "null" type and
   is not processed by any receivers.  Using this method to remove the
   option eliminates visibility of ticket data to downstream network
   nodes.

5.6.1.2.  Removing Hop-by-Hop Options containing tickets

   Tickets can be removed from packets by removing the Hop-by-Hop Option
   header containing the tickets.  The protocol for removing the Hop-by-
   Hop Options header in-flight is specified in
   [I-D.herbert-eh-inflight-removal].  Note that a Hop-by-Hop Options
   may contain multiple tickets or other unrelated options, if multiple
   options are present then the effects of removing the whole Hop-by-Hop
   Options header should be considered
   ([I-D.herbert-eh-inflight-removal] offers some guidance).

5.6.2.  Removing tickets without loss of functionality

   A ticket may be removed from a packet without loss of functionality
   under these conditions:







Herbert                   Expires 9 April 2024                 [Page 17]

Internet-Draft                    FAST                      October 2023


   *  The last network node that processes a packet containing an origin
      ticket not reflected MAY remove the ticket from a packet.  It may
      be typical that the last network node that processes the ticket is
      the first hop router in the network, so removing the ticket
      minimizes visibility of the ticket data to network nodes.

   *  The last network node that processes a reflected ticket MAY remove
      the ticket from a packet.  It may be typical that the last network
      node to process a reflected ticket will be the ingress network
      node of packets received from an external network.

   An origin ticket to be reflected cannot be removed from a packet
   without affecting functionality.  In order for the ticket to be
   reflected back to the source host, it must be received by the
   destination host.

5.6.3.  Removing tickets with loss of functionality

   In some cases it may be beneficial to remove tickets from packets at
   the cost of losing some functionality.  For instance, when a packet
   with tickets is exiting a limited domain, it may be better to remove
   the Hop-by-Hop Options header containing the ticket rather than
   forwarding the packet outside of the limited domain and risking that
   the packet will be discarded because it contains a Hop-by-Hop Options
   header.  In the case of FAST, the effects of removing Hop-by-Hop
   Options depends on the properties of tickets in the Hop-by-Hop
   Options that are being removed:

   *  If an origin ticket not reflected is removed then presumably no
      intermediate nodes outside the limited domain would process the
      ticket, so there is no expected loss of functionality.

   *  If an origin ticket to be reflected is removed then the ticket
      will not be seen by the peer host and will thus never be
      reflected.  Ingress routers in the return path from the peer will
      need to employ alternative mechanisms to deduce packet
      characteristics for applying services or may just perform default
      processing of packets.













Herbert                   Expires 9 April 2024                 [Page 18]

Internet-Draft                    FAST                      October 2023


   *  If a reflected ticket is removed then the peer network will not
      see the ticket and thus its ingress nodes may need to employ
      alternate mechanisms to deduce packet characteristics for applying
      services or may just perform default processing of packets.  Note
      that when a reflected ticket is sent this indicates that an origin
      ticket to be reflected was received by a destination host.  This
      establishes that Hop-by-Hop Options are viable over the path from
      the original source of the ticket to the reflecting host.  If the
      network path is symmetric in both directions, then this might
      indicate that Hop-by-Hop Options are viable in the return
      direction as well.

   Removing a Hop-by-Hop Options header containing reflected tickets or
   tickets to be reflected when a packet exits a limited domain
   represents a tradeoff.  On one hand, the benefits and functionality
   of ticket reflection are lost, but on the other hand packet discards
   may be avoided so communications are still viable and any origin
   tickets sent can still be applied in the origin network before the
   Hop-by-Hop Options header is removed.  To preserve the benefits as
   much as possible, the limited domain can be extended to be as large
   as possible.  As suggested in Figure 1, if two hosts reside in the
   same limited domain, like User 1 and User 2, then there is no need to
   discard packets with tickets to be reflected or reflected tickets.

   It conceivable that methods like probing could be used to extend the
   limited domain for Hop-by-Hop Options header viability.  For
   instance, a type of Happy Eyeballs probing could be done where hosts
   or network nodes probe the capabilities of a path to a destination by
   sending a number of packets with tickets to be reflected.  The
   sending host can observe whether packets with tickets are being
   properly reflected.  If tickets are successfully being reflected then
   that is evidence that Hop-by-Hop Options are viable the network path
   to and from the destination.  A table of destination networks could
   be distributed to egress routers of the network, and when they
   forward packets with tickets, the routers could consult the table to
   determine if the Hop-by-Hop Options header containing the tickets
   should be removed.

6.  Implementation considerations

6.1.  Origin applications

   Existing client applications can be modified to request tickets and
   set them in packets.  The OS networking stack may need some changes
   or configuration to enable an application to specify the Hop-by-Hop
   option in its packets.





Herbert                   Expires 9 April 2024                 [Page 19]

Internet-Draft                    FAST                      October 2023


   The interface to the ticket agent would likely be via a library API.


   For a connected socket (TCP, SCTP, or connected UDP socket), a Hop-
   by-Hop option can be set on the socket via the setsockopt system call
   in BSD sockets API.  For an unconnected socket (UDP) the ticket
   option can be set as ancillary data in the sendmsg system call.

6.2.  Router implementation

   Routers that process tickets will need to process Hob-by-Hop Options
   headers.  As described in [I-D.ietf-6man-hbh-processing], routers
   should process the ticket options in the fast path.  Routers can also
   apply the limits described in [I-D.ietf-6man-eh-limits] to limit
   processing to only FAST options.  For instance, if a Hop-by-Hop
   Options header contains FAST options, the router would need to
   process or parse at most two options (an origin ticket and a
   reflected ticket).  Thus the router could enforce a limit on number
   of Hop-by-Hop options in a packet to be two (presuming there are no
   other Hop-by-Hop Options of interest and that the FAST options always
   precede other Hop-by-Hop options that might not be relevant to the
   router).

   If the tickets defined in a network are all some well known fixed
   length then a router could implement processing of fixed length Hop-
   by-Hop Options headers instead of variable length ones.  Since the
   Hop-by-Hop Options header immediately follows the IPv6 header, the
   combination of the IPv6 header and the Hop-by-Hop Options header
   could be processed as one extended fixed length header.

6.3.  Ticket reflection

   To perform ticket reflection, servers must be updated.  In the case
   of a connected socket (TCP, SCTP, or a connected UDP socket) this can
   be done as relatively minor change to the kernel networking stack
   which would be transparent to applications.  For unconnected UDP, an
   application could receive the ticket as part of the ancillary data in
   recvmsg system call, and then send the reflected ticket in a reply
   using ancillary data in sendmsg.

6.4.  Security Considerations

   There are two main security considerations:

   *  Leakage of content specific information to untrusted third parties
      must be avoided.





Herbert                   Expires 9 April 2024                 [Page 20]

Internet-Draft                    FAST                      October 2023


   *  Tickets cannot be forged, illegitimately used, or otherwise
      abused.

   Tickets may be visible to the Internet including untrusted and
   unknown networks in the path of sent packets.  Therefore, tickets
   should be encrypted or obfuscated by the origin network.  The details
   of encrypting tickets are outside the scope of this document.

   Tickets need to have an expiration time, must be resistant to
   forgery, and must be non-transferable.  A ticket should be valid for
   the specific source and destination addresses that it was issued for.
   Tickets may be revocable by implemented a black-list contained
   revoked tickets.

7.  IANA Considerations

   IANA is requested to assigned the following Hop-By-Hop options:

         +-----------+---------------+-------------+---------------+
         | Hex Value | Binary value  | Description | Reference     |
         |           | act chg rest  |             |               |
         +-----------+---------------+-------------+---------------+
         | 0x0F      | 00   0  01111 | Firewall    | This document |
         |           |               | and Service |               |
         |           |               | Ticket      |               |
         +-----------+---------------+-------------+---------------+
         | 0x2F      | 00   1  01111 | Modifiable  | This document |
         |           |               | Firewall    |               |
         |           |               | and Service |               |
         |           |               | Ticket      |               |
         +-----------+---------------+-------------+---------------+

   IANA is requested to set up a registry for the Ticket Property.
   These types are 2 bit values.

         +----------------+--------------------+---------------+
         | Ticket type    | Description        | Reference     |
         +----------------+--------------------+---------------+
         | 0x0            | Ticket from origin | This document |
         |                | and don't reflect  |               |
         +----------------+--------------------+---------------+
         | 0x1            | Ticket from origin | This document |
         |                | and reflect        |               |
         +----------------+--------------------+---------------+
         | 0x2            | Reflected ticket   | This document |
         +----------------+--------------------+---------------+
         | 0x3            | Reserved           | This document |
         +----------------+--------------------+---------------+



Herbert                   Expires 9 April 2024                 [Page 21]

Internet-Draft                    FAST                      October 2023


   IANA is requested to create a new sub-registry titled "FAST Ticket
   Types" for ticket types.  The "FAST Ticket Types" registry consists
   of 14-bit hexadecimal values along with descriptive strings,
   assignee/contact information, and references.  The registration rules
   for the new registry are (as defined by [RFC8126]):

         +-------------------+------------------------------------+
         | Range             | Registration Procedures            |
         +-------------------+------------------------------------+
         | 0x0000            | This document ("null" type)        |
         +-------------------+------------------------------------+
         | 0x0001-0x00FF     | IETF Review                        |
         +-------------------+------------------------------------+
         | 0x0100-0x3EFF     | First Come First Served            |
         +-------------------+------------------------------------+
         | 0x3F00-0x3FFF     | Experimental Use                   |
         +-------------------+------------------------------------+

8.  References

8.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8200]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", STD 86, RFC 8200,
              DOI 10.17487/RFC8200, July 2017,
              <https://www.rfc-editor.org/info/rfc8200>.

8.2.  Informative References

   [APNIC-EH] Huston, G., "IPv6 extension headers revisited", October
              2022, <https://blog.apnic.net/2022/10/13/ipv6-extension-
              headers-revisited>.

   [I-D.herbert-eh-inflight-removal]
              Herbert, T., "Infight Removal of IPv6 Hop-by-Hop and
              Routing Headers", Work in Progress, Internet-Draft, draft-
              herbert-eh-inflight-removal-01, 2 October 2023,
              <https://datatracker.ietf.org/doc/html/draft-herbert-eh-
              inflight-removal-01>.







Herbert                   Expires 9 April 2024                 [Page 22]

Internet-Draft                    FAST                      October 2023


   [I-D.herbert-host2netsig]
              Herbert, T., "Host to Network Signaling", Work in
              Progress, Internet-Draft, draft-herbert-host2netsig-00, 4
              October 2023, <https://datatracker.ietf.org/doc/html/
              draft-herbert-host2netsig-00>.

   [I-D.herbert-ipv4-eh]
              Herbert, T., "IPv4 Extension Headers and Flow Label", Work
              in Progress, Internet-Draft, draft-herbert-ipv4-eh-01, 2
              May 2019, <https://datatracker.ietf.org/doc/html/draft-
              herbert-ipv4-eh-01>.

   [I-D.ietf-6man-eh-limits]
              Herbert, T., "Limits on Sending and Processing IPv6
              Extension Headers", Work in Progress, Internet-Draft,
              draft-ietf-6man-eh-limits-07, 27 September 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-6man-eh-
              limits-07>.

   [I-D.ietf-6man-hbh-processing]
              Hinden, R. M. and G. Fairhurst, "IPv6 Hop-by-Hop Options
              Processing Procedures", Work in Progress, Internet-Draft,
              draft-ietf-6man-hbh-processing-10, 26 September 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-6man-
              hbh-processing-10>.

   [RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460,
              December 1998, <https://www.rfc-editor.org/info/rfc2460>.

   [RFC7872]  Gont, F., Linkova, J., Chown, T., and W. Liu,
              "Observations on the Dropping of Packets with IPv6
              Extension Headers in the Real World", RFC 7872,
              DOI 10.17487/RFC7872, June 2016,
              <https://www.rfc-editor.org/info/rfc7872>.

   [RFC8799]  Carpenter, B. and B. Liu, "Limited Domains and Internet
              Protocols", RFC 8799, DOI 10.17487/RFC8799, July 2020,
              <https://www.rfc-editor.org/info/rfc8799>.

   [RFC9098]  Gont, F., Hilliard, N., Doering, G., Kumari, W., Huston,
              G., and W. Liu, "Operational Implications of IPv6 Packets
              with Extension Headers", RFC 9098, DOI 10.17487/RFC9098,
              September 2021, <https://www.rfc-editor.org/info/rfc9098>.

Author's Address





Herbert                   Expires 9 April 2024                 [Page 23]

Internet-Draft                    FAST                      October 2023


   Tom Herbert
   SiPanda
   Santa Clara, CA,
   United States of America
   Email: tom@herbertland.com














































Herbert                   Expires 9 April 2024                 [Page 24]