Subject: Re: [Insipid] Adam Roach's No Objection on draft-ietf-insipid-logme-marking-12: (with COMMENT)

From: "Dawes, Peter, Vodafone Group" <[email-masked]>
Date: Thu, 6 Sep 2018 10:42:26 +0000

Hello Adam,

Thanks again for the detailed review and helpful pointers. Please see inline our proposed resolutions. Some of the section numbers have changed in the revision -13 we have prepared (not yet submitted), so section numbers for changes don't always match the review of -12.

Best regards,

Peter and Arun

>From:      insipid <[email-masked]> on behalf of Adam Roach

><[email-masked]>

>Sent:      16 August 2018 01:19

>To:  The IESG

>Cc:  [email-masked]; [email-masked];

>[email-masked]; [email-masked]

>Subject:   [Insipid] Adam Roach's No Objection on draft-ietf-insipid-logme-

>marking-12: (with COMMENT)

>Adam Roach has entered the following ballot position for

>draft-ietf-insipid-logme-marking-12: No Objection

>When responding, please keep the subject line intact and reply to all email addresses included in the To

>and CC lines. (Feel free to cut this introductory paragraph, however.)

>Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html

>for more information about IESG DISCUSS and COMMENT positions.

>The document, along with other ballot positions, can be found here:

>https://datatracker.ietf.org/doc/draft-ietf-insipid-logme-marking/

>----------------------------------------------------------------------

>COMMENT:

>----------------------------------------------------------------------

>Thanks to everyone who has contributed work towards this document. I have several comments of

>varying importance, and believe that this document requires significant changes before publication.

>---------------------------------------------------------------------------

>General:

>All of the examples in this document use IPv4 addresses. Please use either a mix of IPv4 and IPv6, or IPv6

>only. See https://www.iab.org/2016/11/07/iab-statement-on-ipv6/ for additional guidance.

Figure 2 now uses IPv6 as below.

F1 INVITE Transferee -> Transferor

          INVITE sips:[email-masked] SIP/2.0

          Via: SIP/2.0/TLS [2001:db8::1];branch=z9hG4bKnas432

          Max-Forwards: 70

          To: <sips:[email-masked]>

          From: <sips:[email-masked]>;tag=7553452

          Call-ID: 090459243588173445

          Session-ID: ab30317f1a784dc48ff824d0d3715d86

             ;remote=00000000000000000000000000000000;logme

          CSeq: 29887 INVITE

          Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY

          Supported: replaces, gruu, tdialog

          Contact: <sips:[email-masked];gr=3413kj2ha>

          Content-Type: application/sdp

          Content-Length: ...

>---------------------------------------------------------------------------

>Abstract:

>>  SIP networks use signaling monitoring tools to diagnose user reported

>Nit: "...user-reported..."

In the Abstract, changed user reported to user-reported.

   SIP networks use signaling monitoring tools to diagnose user-reported

   problems and for regression testing if network or user agent software

   is upgraded.

>---------------------------------------------------------------------------

>§3.2:

>>  "User-Agent" header value, or for a specific set of called party

>Nit: "...header field value..."

In 3.2 changed to “User-Agent” header field value as per the comment.

>---------------------------------------------------------------------------

>§3.6:

>>  The entire SIP message (SIP headers and message body) SHOULD be

>Nit: Choose either "SIP header fields and message body" or "SIP header and message body". See the

>definitions of "Header" and "Header Field" in RFC 3261 at the bottom of page 21 for assistance.

>More substantive comment: it is probably useful to also log the request line (method, request-URI, and

>SIP version) or response line (SIP version, response code, and reason phrase), as applicable, in addition

>to the header and body.

Revised the first sentence of 3.6 to:

   The entire SIP message (SIP request line, response line, header

   fields and message body) SHOULD be logged since troubleshooting might

   be difficult if information is missing.

>---------------------------------------------------------------------------

>§3.7:

>This scenario is hard to follow. These points seem contradictory:

>  - "[Alice's] terminal is configured to log signaling for calls from the

>    network administrator Bob"

>  - Bob's terminal is presumably *not* configured to add "log me" marking, since

>    the document doesn't mention this, and implies that the configuration at

>    Alice's terminal is sufficient

>  - "Logging by Alice's terminal begins when it receives and echoes the

>    "logme" marker in INVITE F1"

>Why does INVITE F1 have a "logme" marker in it?

>  - "Logging by Bob's terminal begins when it sends INVITE F1, which

>    includes the "logme" marker"

>Again: why does this happen? The scenario doesn't include any special configuration at Bob's terminal.

Revised the beginning of the second paragraph in 3.7 as follows.

   In the example shown in Figure 2, Alice has reported problems making

   call transfers.  Her terminal is placed in debug mode in preparation

   to log marked signaling from the network administrator Bob. Bob's

   terminal is configured to "log me" mark and log signaling for calls

   originated during the troubleshooting session (e.g. for a duration of

   15 minutes).  Bob, who is troubleshooting the problem, arranges to

   make a call that Alice can attempt to transfer.  Bob calls Alice,

   which creates initial dialog1, and then Alice transfers the call to

   connect Bob to Carol.  Logged signaling is correlated using the test

   case identifier, which is the local UUID

   ab30317f1a784dc48ff824d0d3715d86 in the Session-ID header field of

   INVITE request F1.

>>  F1 - Bob's UA inserts the "logme" parameter in the Session-ID header

>> of the INVITE request that creates dialog1.

>Same question.

The new text in 3.7 indicates that Bob’s terminal is configured to both mark and log signaling. Changed Session-ID header to Session-ID header field throughout the document.

>Nit: "...header field..."

>>  F3 - Alice's UA inserts the "logme" parameter in the Session-ID

>> header of the REFER request that creates dialog2 which is related to

>> dialog1.

>Nit: "...header field..."

Changed Session-ID header to Session-ID header field throughout the document.

>---------------------------------------------------------------------------

>§3.7:

>>                   |  REFER F3 (Target-Dialog:1)             |

>>           dialog2 |------------------->|                    |

>>                   |  202 Accepted      |                    |

>>           dialog2 |<-------------------|                    |

>The use of 202 in this context is deprecated. See RFC 7647 §5.

In Figure 2, changed 202 Accepted to 200 OK

                    |  ACK               |                    |

            dialog1 |------------------->|                    |

                    |  REFER F3 (Target-Dialog:1)             |

            dialog2 |------------------->|                    |

                    |  200 OK            |                    |

            dialog2 |<-------------------|                    |

                    | NOTIFY (100 Trying) F4                  |

            dialog2 |<-------------------|                    |

>---------------------------------------------------------------------------

>§3.8:

>>  A SIP intermediary MUST copy the "log me" marker into forked requests

>> (see sections 4, 16.6 in [RFC3261]).

>It's generally bad form to reiterate normative protocol requirements in different language. Please

>rephrase to something along the lines of:

>   A SIP intermediary is required to copy the "log me" marker into forked

>   requests by the rules defined in sections 4 and 16.6 of [RFC3261].

Revised 3.8 to:

3.8.  Forked Requests

   A SIP intermediary is required to copy the "log me" marker into

   forked requests.  SIP request forking is discussed in sections 4 and

   16.6 of [RFC3261].

>---------------------------------------------------------------------------

>§4.1

>>  o  The mechanisms in this section limit initiation of "log me"

>>     marking only in dialog creation requests (e.g.  SIP INVITE) sent

>>     by an originating endpoint or an intermediary that marks on behalf

>>     of the originating endpoint.  The final terminating endpoint or an

>>     intermediary that marks on behalf of the terminating endpoint

>>     detects an incoming "log me" marker and takes action as defined in

>>     Section 4.2 and Section 4.3.

>To be clear, this implies that a terminating endpoint has no means of activating

>logging; only an originating endpoint (or an intermediary acting on its

>behalf) is capable of doing so. If that is the intention, it needs to be stated

>explicitly -- because that constraint is unclear enough that even this

>document appears to have gotten it wrong (see my comments on §3.7, above).

Revised the second bullet of 4.1 to make it clear that the originating endpoint controls the start of logging. The terminating endpoint can only reflect the marking as follows:

   o  If a dialog is to be marked, the only way to initiate "log me"

      marking is at the dialog creating request (e.g.  SIP INVITE) sent

      by an originating endpoint or an intermediary that marks on behalf

      of the originating endpoint.  Marking that appears mid-dialog is

      an error as described in Section 5.1.2.  The final terminating

      endpoint or an intermediary that marks on behalf of the

      terminating endpoint cannot initiate marking but takes action as

      defined in Section 4.2 and Section 4.3 if it receives an incoming

      "log me" marker.

>---------------------------------------------------------------------------

>§4.3:

>The text in here implies, but does not state, that intermediaries acting on behalf of endpoints generally

>need to understand RFC 4538 ("Target-Dialog"), RFC 3911 ("Join"), and RFC 3819 ("Replaces").  This

>needs to be explicitly noted, as intermediaries typically do not act on these header fields in any way.

In 4.3, added the sentence:

   Originating and

   terminating intermediaries that are configured for "log me" marking

   on behalf of the endpoint must also mark dialog-creating requests

   that contain Target-Dialog [RFC4538], Join [RFC3911] and Replaces

   [RFC3891] header fields and corresponding responses.

>---------------------------------------------------------------------------

>§4.5.2.5:

>>  In Figure 6 below Proxy 2 removes "log me" marking from all SIP

>> requests and responses entering network B and Proxy 2 does not

>> support "log me" marking.

>I'm on the fence about whether this is a DISCUSS. Per RFC 3261 processing rules, proxies simply pass

>through header fields, unchanged, that they do not understand -- so Proxy 2, if it does not support "log

>me" marking, will *NOT* remove the header field, and will *NOT* remove the "log me" marking. One of

>the only reasons that this mechanism (and the Session-ID mechanism itself) can even be deployed is

>precisely because of this proxy behavior.

>I'm pretty sure that this section needs to be revised to say that Proxy 2 doesn't remove the "log me"

>marking because it doesn't understand it, and that Bob's UA doesn't reflect it because it doesn't

>understand it. The resulting call flow would look like the following (note the changes in F4, F14, and

>F20):

>       [ NETWORK A           ]          [ NETWORK B          ]

>       Alice           Proxy 1          Proxy 2            Bob

>         |                |                |                |

>         |   INVITE F1    |                |                |

>         |   (log me)     |                |                |

>         |--------------->|                |                |

>         |                |    INVITE F2   |                |

>         |                |   (log me)     |                |

>         |                |--------------->|                |

>         |                |                |                |

>         |                |                |                |

>         |     100  F3    |                |                |

>         |   (log me)     |                |                |

>         |<---------------|                |                |

>         |                |                |   INVITE F4    |

>         |                |                |    (log me)    |

>         |                |     100  F5    |--------------->|

>         |                |   (no log me)  |                |

>         |                |<---------------|                |

>         |                |                |     180 F6     |

>         |                |                |   (no log me)  |

>         |                |                |<---------------|

>         |                |    180 F7      |                |

>         |                |   (no log me)  |                |

>         |                |<---------------|                |

>         |                |                |                |

>         |                |                |                |

>         |     180 F8     |                |                |

>         |   (log me)     |                |                |

>         |<---------------|                |     200 F9     |

>         |                |                |   (no log me)  |

>         |                |    200 F10     |<---------------|

>         |                |   (no log me)  |                |

>         |     200 F11    |<---------------|                |

>         |   (log me)     |                |                |

>         |<---------------|                |                |

>         |     ACK F12    |                |                |

>         |   (log me)     |                |                |

>         |--------------->|                |                |

>         |                |    ACK F13     |                |

>         |                |   (log me)     |                |

>         |                |--------------->|     ACK F14    |

>         |                |                |    (log me)    |

>         |                |                |--------------->|

>         |                Both Way RTP Media                |

>         |<================================================>|

>         |                |                |     BYE F15    |

>         |                |                |   (no log me)  |

>         |                |    BYE F16     |<---------------|

>         |                |   (no log me)  |                |

>         |     BYE F17    |<---------------|                |

>         |   (log me)     |                |                |

>         |<---------------|                |                |

>         |     200 F18    |                |                |

>         |   (log me)     |                |                |

>         |--------------->|                |                |

>         |                |     200 F19    |                |

>         |                |   (log me)     |                |

>         |                |--------------->|     200 F20    |

>         |                |                |    (log me)    |

>         |                |                |--------------->|

>         |                |                |                |

>The prose description for "F2" also needs to be updated to instead talk about F6, F9, and F15.

Changed the title of 4.5.2.5. from  "Log Me" marking removed by Non-Supporting Terminating Network to 4.5.2.5.  "Log Me" marking passed by Non-Supporting Terminating Network.

Revised Figure 7 to show that marking is passed by Proxy 2 (not removed) and is not echoed by Bob's UA as per the review comment.

Added the following line of explanatory text below Figure 7 to point out that Bob's UA does not echo marking:

   F6 - Bob's UA does not support "log me" marking and does not echo the

   "log me" marker in response F6.  The same applies to responses F9 and

   F15.

>---------------------------------------------------------------------------

>§4.6:

>>  Two error types are defined in Section 5, a missing marker error and

>Nit: "...Section 5: a missing..."

>                  ^

Changed comma to colon as per the review comment.

>---------------------------------------------------------------------------

>§5.2:

>This section needs to address what is supposed to happen when "Join" (RFC 3911) is used to combine

>two dialogs, where one was started with "log me" marking, and the other one was not.

Added the following non-error case section 5.2.3 "Combining Dialogs Non-Error Case" to describe combining dialogs:

5.2.3.  Combining Dialogs Non-Error Case

   When troubleshooting call flows that involve the SIP Join header

   field specified in [RFC3911], the ideal scenario is to have "log me"

   marking enabled on all UAs and intermediaries participating in the

   end-to-end session.  If the ideal scenario is not feasible, the

   following rules apply.

   o  If a "log me" aware endpoint or intermediary that is already "log

      me" marking a dialog receives a SIP INVITE with a Join header

      field and without a "log me" marker, it MUST NOT "log me" mark

      responses and requests exchanged within the new dialog established

      as a result of processing the SIP INVITE.

   o  If a "log me" aware endpoint or intermediary that is not "log me"

      marking a dialog receives a SIP INVITE with a Join header field

      and with a "log me" marker, it MUST "log me" mark responses and

      requests exchanged within the new dialog established as a result

      of processing the SIP INVITE as per Section 4 of this document.

>---------------------------------------------------------------------------

>§7:

>>  "logme"parameter for the Session-ID header field defined in Section 5

>Nit: insert space before "parameter"

inserted space as per review comment.

>---------------------------------------------------------------------------

>§8.4:

>This section needs to also include information about using GRUUs not based on AORs (see RFC 5627

>§3.1.2).

>This section should further mention that fields beyond those cited here might contain information that

>can be traced to the user or a small set of users; e.g., the "user" field in the "o=" parameter of an SDP

>body, and the Request URI itself. Basically, it's going to be very difficult to ensure that the identity of the

>calling and/or called users is completely removed in all circumstances, and operators must not assume

>that messages are anonymized even when the techniques in this section are applied.

Revised the Privacy section (now a top-level section renamed Privacy Considerations) to include the following new text:

8.  Privacy Considerations

   Logging includes all SIP header fields.  The SIP privacy mechanisms

   defined in [RFC3323] can be used to ensure that logs do not divulge

   personal identity information in the core SIP header fields specified

   in [RFC3261].

   Privacy mechanisms might also need to be applied to header fields

   defined by SIP extensions and for managing the confidentiality of the

   Request URI and SIP header fields and bodies.

8.1.  Personal Identifiers

   "Log me" marking is defined for the SIP Protocol, and SIP has header

   fields such as From, Contact, P-Asserted-Identity that can carry

   personal identifiers.  Different protocol interactions can be

   correlated using the Session-ID and Call-ID header fields, but such

   correlation is limited to a single end-to-end session.

   In order to protect user privacy during logging, privacy settings can

   be enabled or requested by the terminal used by the end user.

   [RFC3323] suggests two mechanisms:

   o  By using the value anonymous in the From header field

   o  By requesting header and session level privacy from SIP

      intermediaries using the Privacy header

   Endpoints that support Globally Routable User Agent URIs (GRUUs) can

   use a temporary GRUU (see Section 3.1.2 of [RFC5627]) assigned by the

   Registrar in order to protect user privacy as discussed in

   Section 10.3 of [RFC5627].

   Intermediaries that perform "log me" marking on behalf of the

   endpoints (see Section 4.3) may also be configured to apply privacy

   (as defined in Section 3.3 of [RFC3323]) on messages that belong to a

   dialog that is "log me" marked.

   Complete anonymization (e.g. the Request URI and the "username" field in

   the "o=" parameter of an SDP body) may not be possible in all

   circumstances and therefore administrators of the originating and

   terminating networks should consider how privacy will be ensured when

   providing consent for "log me" marking.

   "Log me" marking is typically used for troubleshooting and regression

   testing, and in some cases a service provider owned device with a

   dummy account can be used instead of a customer device.  In such

   cases, no personal identifiers are included in the logged signaling

   messages.

>---------------------------------------------------------------------------

>§8.4.6:

>I share some of Benjamin's concerns, and am somewhat surprised that this section does not include

>guidance to ensure that the user is informed of sessions on which "log me" marking has been activated.

>Although we don't deal with UI in the IETF, it's completely fair game to require that UAs that are capable

>of indicating that logging is taking place MUST do so.

Added the following paragraph to 8.6:

8.6.  User Control of Logging

   Consent to turn on "log me" marking for a given session MUST be

   provided by the end user or by the network administrator.  It is

   handled outside of the protocol through user interface or application

   programming interfaces at the end point, call control elements and

   network management systems.

   Originating and terminating endpoints that are "log me" aware and

   have a user interface MUST indicate (using text, icon etc.) to the

   user that a session is being logged.

   SIP entities across the communication path MAY be configured to pass

   through the "log me" marking but not honor the request i.e. not log

   the data based on local policies.

>_______________________________________________

>insipid mailing list

>[email-masked]

>https://www.ietf.org/mailman/listinfo/insipid

________________________________
From: insipid <[email-masked]> on behalf of Adam Roach <[email-masked]>
Sent: 16 August 2018 16:34
To: Dawes, Peter, Vodafone Group; The IESG; Arun Arunachalam (carunach) ([email-masked])
Cc: [email-masked]; [email-masked]; [email-masked]; [email-masked]
Subject: Re: [Insipid] Adam Roach's No Objection on draft-ietf-insipid-logme-marking-12: (with COMMENT)

On 8/16/18 07:31, Dawes, Peter, Vodafone Group wrote:
> Regarding non-supporting networks and the example in 4.5.2.5, 3.4.3 (below) states that "log me" marking can either be dropped or passed by a non-supporting intermediary using similar language to Section 7 of RFC 7989 (End-to-End Session Identification in IP-Based Multimedia Communication Networks). Maybe we need to include both the case that it is dropped and the case that it is passed, which would operate as you describe in your review.
>
> 3.4.3.  Across a Non-Supporting SIP Intermediary
>     "Log me" marking is most effective if passed end-to-end.  However,
>     intermediaries that do not comply with this specification might pass
>     the "log me" marker unchanged or drop it entirely.

The problem here is definitional. Section 3.4.3 talks about
intermediaries removing this marker, but that's only true if the
intermediary in question is a B2BUA. Section 4.5.2.5 talks about
proxies, whose behavior is governed by RFC 3261 §16.6:

>          The proxy starts with a copy of the received request.  The copy
>          MUST initially contain all of the header fields from the
>          received request.  Fields not detailed in the processing
>          described below MUST NOT be removed.

/a

_______________________________________________
insipid mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/insipid

---

From: Adam Roach <[email-masked]>
Date: Fri, 14 Sep 2018 14:42:26 -0500

Hi! Thanks, these all look like good resolutions to the issues I raised. 
I have a small handful of editorial nits (below). They're extremely 
minor, and all have to do with hyphenation of compound adjectives.

/a

On 9/6/18 5:42 AM, Dawes, Peter, Vodafone Group wrote:

> oIf a dialog is to be marked, the only way to initiate "log me"
>
> marking is at the dialog creating request (e.g.SIP INVITE) sent
>

"...dialog-creating request..."

> oIf a "log me" aware endpoint or intermediary that is already "log
>

'If a "log me"-aware endpoint...'

> oIf a "log me" aware endpoint or intermediary that is not "log me"
>

'If a "log me"-aware endpoint...'

>
> oBy requesting header and session level privacy from SIP
>

"...header- and session-level privacy..."

---

From: "Arun Arunachalam (carunach)" <[email-masked]>
Date: Fri, 14 Sep 2018 19:47:00 +0000

Thanks Adam!

We will incorporate the additional suggestions and publish a new draft version.

Thanks!
Peter and Arun

On Sep 14, 2018, at 3:42 PM, Adam Roach <[email-masked]<mailto:[email-masked]>> wrote:

Hi! Thanks, these all look like good resolutions to the issues I raised. I have a small handful of editorial nits (below). They're extremely minor, and all have to do with hyphenation of compound adjectives.

/a