Re: [spring] Suggest some text //RE: Request to close the LC and move forward//RE: WGLC - draft-ietf-spring-srv6-network-programming

神明達哉 <> Wed, 04 March 2020 23:45 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2710E3A0C1B; Wed, 4 Mar 2020 15:45:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.399
X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 58ZnxXxR3Jis; Wed, 4 Mar 2020 15:45:14 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 35FAC3A0C12; Wed, 4 Mar 2020 15:45:14 -0800 (PST)
Received: by with SMTP id a5so4244204wmb.0; Wed, 04 Mar 2020 15:45:14 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2ixwyXdgdoek52WdRhsQJW2X/4PzmVGVjI3ZP65ei+o=; b=q7TnnDVKTCK8uu/t4lnXWTHn24xTIfAjmpV7ISv5LL3MvRDm9tT3Mfjzd3zCgwhYuW Rf7NsFarE+hgsAldIrHmMnThm+hUsz9WOoCYn69R/8M+cD6dMW+EQOomvc9O52FrBB/Q dnyAfBJZUnjNyMa71tFAwwFwpycN2kNp/hb/oRNKaSZcmxOutnh1COStuCL4qISzlR/4 VBKLYBtLklBypAL9zZvIlNvQTfDMREwT8nKVOtx0kveWwgikIwOQxIxAiBNRB+blnmIM I4ePP9oIGFK5FEbU3GmwNxME81jE7IvlqoNGFeh+7HXNha/ksVqmdwfEwzDAEWry4LQa VXXQ==
X-Gm-Message-State: ANhLgQ3lKhIBXuZYEg7fw4ajEoGqGhmZG03lsQP0XOCsDlvLcMcPsm0x DKsQNKYOalrfCPC0uVrky3UZF9y0/gORALtmXQya7MIN
X-Google-Smtp-Source: =?utf-8?q?ADFU+vt7HHV5J9ieaBYGrCIzggNOJoxW/CrWCdAvXnGz?= =?utf-8?q?AeFqt7cCmkWb2c+9rCOpQKOxqjLE4bl5mXDVeMZvQ4RWIm0=3D?=
X-Received: by 2002:a1c:df45:: with SMTP id w66mr5740433wmg.171.1583365512168; Wed, 04 Mar 2020 15:45:12 -0800 (PST)
MIME-Version: 1.0
References: <> <> <> <> <>
In-Reply-To: <>
From: =?UTF-8?B?56We5piO6YGU5ZOJ?= <>
Date: Wed, 4 Mar 2020 15:45:00 -0800
Message-ID: <>
To: "Pablo Camarillo (pcamaril)" <>
Cc: Robert Raszuk <>, "" <>, "" <>, Bob Hinden <>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <>
Subject: Re: [spring] Suggest some text //RE: Request to close the LC and move forward//RE: WGLC - draft-ietf-spring-srv6-network-programming
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Source Packet Routing in NetworkinG \(SPRING\)" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 04 Mar 2020 23:45:17 -0000

At Wed, 4 Mar 2020 12:17:07 +0000,
"Pablo Camarillo (pcamaril)" <> wrote:

> Inline PC1.

Thank you for the clarification.  I'm not sure why you included the
expanded processing logic instead of just saying correct or incorrect

> PC1:
> This is the exact processing at S2 combined End (4.1) with PSP (4.16.1):

...but I interpret the entire response as my understanding is correct.

Then, going back to the message from Robert:

>>> "Extension headers cannot be added to a packet after it has left its
>>> source node and extension headers cannot be removed from a packet until it
>>> has arrived at its ultimate destination".
>> PSP would be still not be violating anything said in this sentence. Reason
>> being is that we are dealing here with an *encapsulated* packet which has
>> as its ultimate destination SR node X. That SR node X is to perform or not
>> PSP. So it is still fully compliant with the specification.

This explanation is still cryptic to me, but based on the
now-hopefully-correct understanding of the PSP behavior,
- We originally have (T, S1) (S3, S2, S1; SL=2) [payload=encapsulated
IPv6 pakcet]
  There are 3 nodes in the routing header.
- At the node identified by S2 (second node in the routing header), we
  remove the routing header, so we have (T, S3) [payload=encapsulated
IPv6 pakcet]
- Packet arrives at the node identified by S3, the payload is processed

If we argue this behavior as not violating "extension headers cannot
be removed from a packet until it has arrived at its ultimate
destination" because "segment left" is 0 at that point (and therefore
S2 is the "final destination"), that's a very innovative
interpretation of the specification (not really surprisingly, given
how "innovative" SRv6 people are:-).  In fact, with that kind of
logic, we could write a specification which allows any intermediate
node in a routing header decreases the segment left to 0 (regardless
of the previous value of it) at its own discretion, and then claim
it's the final (ultimate) destination and does whatever is allowed for
the final destination node.

Overall, it seems so artificial, if not cheating, only for avoiding to
be told that it violates RFC8200.  The PSP behavior essentially gives
an intermediate ("penultimate") node in the routing header an option
to remove the routing header from the packet.  I can't think of a
reason why we can't just say so and say that it updates the
corresponding part of RFC8200 accordingly, than for cheaply avoiding
the discussions involved in updates to an existing standard.

Now, I've noticed an argument whether or not this spec
violates/updates RFC8200 isn't important.  In a sense I see the point:
what matters is to discuss the effect of the proposed behavior and
make sure it doesn't cause unexpected problems; whether it updates the
pre-exiting spec is a matter of formality in some sense.  But in this
specific case, I still believe that's a bad move for two reasons:

1. (seemingly) as a result of trying to insist it's standard
   compliant, the processing logic becomes unnecessarily cryptic.
   There's essentially no need to decrease 'segment left' and then
   check if it is 0.  A more explicit condition that it's the
   penultimate node is that 'segment left == 1' on receiving the
   packet; we can simply perform the special PSP behavior from there.
   If we're willing to say it updates RFC8200, we can simply say the
   penultimate node has an option to remove the routing header and
   show the more straightforward logic.
2. I'm afraid this would establish an unfortunate precedent for future
   protocol development to look for a wording loophole in existing
   standards and exploit it as an easy shortcut to publish something
   possibly controversial.  Just as we saw, even a very carefully
   reviewed document like RFC8200 always has some glitches and
   ambiguities.  If we allow casually exploiting these loopholes for
   the convenience of new protocol designers, more and more people
   will follow and we'll eventually have very inconsistent protocols
   and, in worse cases, loss of interoperabaility and other harm.  On
   the other hand, we could use this opportunity for a good precedent
   to show no standard is set in stone and can be updated with new
   developments and proper discussions and justifications.

For this reason, I disagree with this text of

   This behavior does not contravene Section 4 of [RFC8200] because the
   current destination address of the incoming packet is the address of
   the node executing the PSP behavior.

If I were to offer something in order to be hopefully more
constructive, that would be something like this:

- Add a tag of "Updates RFC8200 (if approved)"

- In Section 4.16.1, simply say something like: "A penultimate SR
  Segment Node MAY remove the SRH from the IPv6 packet it forwards,
  even if it is not the final (ultimate) destination in the path
  specified in the SRH". (I notice network-programming-12 is already
  pretty close to this)

- Perhaps change the pseudo code as follows
  S11.1   If (Segments Left == 1) { /* meaning this is a penultimate node */
  S11.2      Update IPv6 DA with Segment List[0]
  S12.3.     Update the Next Header field in the preceding header to the
             Next Header value of the SRH
  S12.4.     Decrease the IPv6 header Payload Length by the Hdr Ext Len
             value of the SRH
  S12.5.     Remove the SRH from the IPv6 extension header chain
  S12.6.     Go to S15
  S12.7.  }

- Clarify it's an update to RFC8200, e.g. as follows:

    This behavior formally updates Section 4 of [RFC8200], which does
    not allow deleting an extension header until the packet arrives at
    the destination.  While the literal text of RFC8200 could read as
    if the deletion were allowed for an intermediate node specified in
    a routing header, this document takes a safer and tighter
    interpretation as described in [the expected draft by Ron here]
    and updates it.

    The update is believed to be sufficiently safe and worthwhile:
    [Justifications here: why we need PSP; explain it doesn't break
    PMTUD; add considerations on AH, etc]

Like Brian's proposed text, whether such an update is acceptable is a
different question.  But it's at least a fair game to me.  I'd
seriously consider the justifications, and, depending on its details,
it's quite possible that it's something I can support.

(Whether we really need such a hack as PSP may also be a question, as
some others have questioned.  It seems cleaner to me if we could avoid
the hack in the first place, but I guess I don't have enough knowledge
to judge how badly it is needed and whether there's really no
"cleaner" alternative, so I wouldn't comment on it here).

JINMEI, Tatuya