Re: [Pce] Genart last call review of draft-ietf-pce-pceps-14

worley@ariadne.com (Dale R. Worley) Mon, 31 July 2017 00:56 UTC

Return-Path: <worley@alum.mit.edu>
X-Original-To: pce@ietfa.amsl.com
Delivered-To: pce@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D18FC131471 for <pce@ietfa.amsl.com>; Sun, 30 Jul 2017 17:56:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.933
X-Spam-Level:
X-Spam-Status: No, score=-1.933 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id T8ofRJLJ2ZPj for <pce@ietfa.amsl.com>; Sun, 30 Jul 2017 17:56:30 -0700 (PDT)
Received: from resqmta-ch2-10v.sys.comcast.net (resqmta-ch2-10v.sys.comcast.net [IPv6:2001:558:fe21:29:69:252:207:42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 62F5D131461 for <pce@ietf.org>; Sun, 30 Jul 2017 17:56:30 -0700 (PDT)
Received: from resomta-ch2-08v.sys.comcast.net ([69.252.207.104]) by resqmta-ch2-10v.sys.comcast.net with ESMTP id bz0Sd6Tp0bO55bz0Xd6Pqr; Mon, 31 Jul 2017 00:56:29 +0000
Received: from hobgoblin.ariadne.com ([IPv6:2601:192:4603:9471:222:fbff:fe91:d396]) by resomta-ch2-08v.sys.comcast.net with SMTP id bz0VdKDBNFVt8bz0Wdqt0p; Mon, 31 Jul 2017 00:56:29 +0000
Received: from hobgoblin.ariadne.com (hobgoblin.ariadne.com [127.0.0.1]) by hobgoblin.ariadne.com (8.14.7/8.14.7) with ESMTP id v6V0uRSa003558; Sun, 30 Jul 2017 20:56:27 -0400
Received: (from worley@localhost) by hobgoblin.ariadne.com (8.14.7/8.14.7/Submit) id v6V0uQNr003555; Sun, 30 Jul 2017 20:56:26 -0400
X-Authentication-Warning: hobgoblin.ariadne.com: worley set sender to worley@alum.mit.edu using -f
From: worley@ariadne.com
To: Dhruv Dhody <dhruv.dhody@huawei.com>
Cc: gen-art@ietf.org, draft-ietf-pce-pceps.all@ietf.org, pce@ietf.org, ietf@ietf.org, dhruv.ietf@gmail.com
In-Reply-To: <23CE718903A838468A8B325B80962F9B8CB95DF7@blreml501-mbb> (dhruv.dhody@huawei.com)
Sender: worley@ariadne.com
Date: Sun, 30 Jul 2017 20:56:26 -0400
Message-ID: <87379de85h.fsf@hobgoblin.ariadne.com>
X-CMAE-Envelope: MS4wfNGHrMV/tGkmygmWI5IRePHJtXqX3uLOLhLbpZdSkmRczGUQym/ZvG+Nqms6C2BERBO0JLgOlrBd9gVfa2jUiHC5kLFNUgibcHVdaRBYGXj1XEw44B1i yuEvM+TMVffGHuM+itU8q/WWqOnOR+SAxY4OaEqvQdCaRw8w/SvMyChH3W8AvzCpWrVyCbBiqoSJ+zSb3EOZ6rR6ZUP7AtjhvlnKpo3Fzu97+qcnqIDu8ysk 2RrNkZYReRGtFWJJHmmDH0Bni+ObyocW/VvmASMewlBHWAruWvoxeZtcSU+A/URo2zVAFYY356UFCSma351hAw==
Archived-At: <https://mailarchive.ietf.org/arch/msg/pce/7oR66Qhra7AfkTp8Almh655XAxY>
Subject: Re: [Pce] Genart last call review of draft-ietf-pce-pceps-14
X-BeenThere: pce@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Path Computation Element <pce.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pce>, <mailto:pce-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/pce/>
List-Post: <mailto:pce@ietf.org>
List-Help: <mailto:pce-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pce>, <mailto:pce-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 31 Jul 2017 00:56:32 -0000

Dhruv Dhody <dhruv.dhody@huawei.com> writes:

The bulk of these items I either agree with completely or am willing to
defer to your judgment.  The items that seem to merit further
discussion are below.  Most of these items are consolidations of several
remarks I made that seem to be the same fundamental question.

>> section 3.2: whether error TBA2/2 is distinct from error 1/1 

> [[Dhruv Dhody]] The context of these error are different, one is
> before TLS establishment (startTLS) and another is during PCEP session
> establishment (which is after TLS has been established). IMHO it is
> better to keep them distinct. 

It's more complicated than that:  If a PCE does not like the first
message it receives, if it implements PCEPS, it replies TBA2/2.  But if
it does not implement PCEPS, it replies 1/1.  Similarly, a PCC may
reject an initial message with either of these error codes, depending on
the situation.  If the other endpoint does not implement PCEPS, it might
be surprised by receiving TBA2/2, which it has no way of understanding
in detail (although it will probably simply disconnect, which is what it
would do in reaction to a 1/1).

A non-implementing endpoint rejects an initial message only with 1/1.

OTOH, once TLS has been established, then both endpoints can only object
to the first encrypted message with 1/1.

There's nothing intrinsically incorrect about this, but it is rather
complicated, particularly in the upward-compatibility case where the PCC
is willing to accept either PCEPS-implementing or non-PCEPS-implementing
connections.

>> section 3.3: the distinction between StartTLSWait and OpenWait

> [[Dhruv Dhody]] Both timers are wait timers but they wait for
> different messages and used in different context. Also the values can
> be set differently based on the deployment. 

There's a complication if a PCE allows both PCEPS and PCEP connections.
In that case, it does not send its initial message until it receives a
message from the PCC.  If the message is StartTLS, the PCC wants to
connect using PCEPS and the PCE sends StartTLS; if the message is Open,
the PCC wants to connect using PCEP and the PCE sends Open.

The question is, what timeout does the PCE use while waiting for the
initial message?  If the connection *will be* PCEPS, it should use
StartTLSWait (per draft-ietf-pce-pceps), if the connection *will be*
PCEP, it should use OpenWait (per RFC 5440).  But it does not have the
information to choose the timer.  The difficulty is that initially, the
PCE is simulating both a PCEP and a PCEPS device, and using the message
it receives from the PCC to disambiguate its situation.  But the timeout
values prescribed for the two situations are different.

My feeling is that the two situations -- waiting for Open and waiting
for StartTLS -- are not sufficiently distinguishable to allow
prescribing two different timers.  Of course, this could be cured by
proper configuration -- giving the same value to StartTLSWait and
OpenWait.

OTOH, once TLS has been established and the Open messages are awaited,
both endpoints use OpenWait.  However, this situation is not really the
same as when the TCP connection has been just been established.  And
yet, a PCE may be obligated to use the same timer for both situations.

>> 3.2.  Initiating the TLS Procedures
...
> Do you feel strongly about changing this? 

Of course, I'm only a reviewer, you needn't defer to my opinion about
anything.

>> Is there a well-defined way for a participant in a TLS connection start to
>> receive *either* a PCErr message in the clear *or* whatever comes next in
>> TLS setup -- and know which case has happened?  Is there a way to use
>> popular modular TLS libraries and have the application above the library
>> receive such a PCErr message?  I don't understand TLS nearly well enough
>> to know the answer to this, but it would probably help implementors if
>> answers were given to these questions.
>
> [[Dhruv Dhody]] If the TLS handshake is successful, both local and
> remote parties are aware of this. Same is the case for TLS failure. So
> receiving an error message in clear will not be a surprise. 
>
> Also, I checked some of the other documents that describe the use of
> TLS, but did not find any such handling. 

OK, I think I understand now; my previous comment was based on a
misunderstanding.  The correct sequence of operations for PCEPS
setup is:  Both endpoints send a StartTLS to each other.  After that, the
initiator starts the TLS setup.  Alternatively, the PCC sends StartTLS
and the non-PCEPS-implementing PCE sends a PCErr.  In either case, the
PCC sends a StartTLS and then listens for a PCEP message in response.
In any case, neither endpoint is ever in a situation where it could
receive either a PCEP message or a TLS setup message.

>> 5.  Backward Compatibility
...
> [[Dhruv Dhody]] Updated. 
>
>    If a PCEP implementation that does not support PCEPS receives a
>    StartTLS message, ...

I think this is a significant improvement, as you can never be too
careful about upward-compatibility issues, especially when security is
involved.

--

Concerning the figures:

                  +-+-+                 +-+-+
                  |PCC|                 |PCE|
                  +-+-+                 +-+-+
                    |                     | Does not send
                    |      StartTLS       | StartTLS as
                    |-------------------->| cannot establish
                    |                     | TLS
                    |                     |
                    |<--------------------| Send Error
                    |      PCErr          | Error-Value 3/4
                    |                     |


   Figure 2: Both PCEP Speaker supports PCEPS, But cannot establish TLS


                  +-+-+                 +-+-+
                  |PCC|                 |PCE|
                  +-+-+                 +-+-+
                    |                     |  Does not support
                    | StartTLS            |  PCEPS and thus
                    | msg                 |  sends Open
                    |-------              |
                    |       \   Open      |
                    |        \  msg       |
                    |         \  ---------|
                    |          \/         |
                    |          /\         |
                    |         /  -------->|
                    |        /            |
                    |<------              |
                    |                     |
                    |<--------------------| Send Error
                    |       PCErr         | (non-Open message
                    |                     |  received)


             Figure 3: One PCEP Speaker does not support PCEPS

IIUC, in Figure 2 the error has error-value 3/4 and is "Not supported
object" ... is that right?  I'd think it would be TBA2/4, "Failure,
connection without TLS possible" (or TBA2/3, depending on
circumstances).  And in Figure 3, the error is 1/1.  It seems like it
would be clearer if both the number and the text were shown for the
error messages in both the figures.

Is there also this flow?

                  +-+-+                 +-+-+
                  |PCC|                 |PCE|
                  +-+-+                 +-+-+
                    |                     |  Does not support
                    | StartTLS            |  PCEPS and thus
                    | msg                 |  sends Open
                    |-------              |
                    |       \   Open      |
                    |        \  msg       |
                    |         \  ---------|
                    |          \/         |
                    |          /\         |
                    |         /  -------->|
                    |        /            |
                    |<------              |
                    |                     |
                    |-------------------->|
                    |       PCErr         |
                    |                     |

Where the error indicates "Expecting a StartTLS but received an Open"?
Or is this situation always signaled by the receiver (as in Figure 3)
rather than the initiator?

Dale