Subject: [Sipping] SIP/IPv6 torture test and possible interaction with rfc3261 ABNF

From: "Vijay K. Gurbani" <[email-masked]>
Date: Mon, 27 Feb 2006 17:40:01 -0600

The sipping agenda is fairly full, so I decided to see if I can get
some friendly folks to read the sipping-ipv6-02 and get consensus on
an issue listed below in this email before asking for agenda time.

The I-D can be fetched from
http://www.ietf.org/internet-drafts/draft-gurbani-sipping-ipv6-sip-02.txt,
and it provides a set of torture tests for IPv6 identifiers in SIP.

Based on the comments of the Vancouver IETF, I have pared the
draft down to individual test cases.  However, I really need folks,
especially implementors, to go through the draft and suggest new
test cases.

Also, there may be a possible interaction of the test cases with
the SIP ABNF for representing an IPv6 identifier in the Via header.

Here's the current ABNF for the "received" production rule.

via-received   =  "received" EQUAL (IPv4address / IPv6address)
IPv6address    =  hexpart [ ":" IPv4address ]
hexpart        =  hexseq / hexseq "::" [ hexseq ] / "::" [ hexseq ]
hexseq         =  hex4 *( ":" hex4)
hex4           =  1*4HEXDIG

Based on this, if there is an IPv6 address in the "received" parameter,
it would be represented as:

    Via: ...;received=2001::db8

i.e., *without* the "[" and "]" bracketing the address.  RFC2732
specifies the "[" and "]" format for IPv6 addresses in URL only.
So, not putting the "[" and "]" may be okay in a ";received"
parameter, especially given that parameter does not contain a port
which needs to be separated by a ":" from the IPv6 address.

Still, it seems appropriate that we should put the delimiting "["
and "]", and that is what sipping-ipv6-02 does right now.  That is,
it represents the Via with a ";received" parameter as:

    Via: ...;[received=2001::db8]

It would seem that specifying the via-received production rule as:

via-received   = "received" EQUAL (IPv4address / IPv6reference)

solves this problem since IPv6reference is defined as:

IPv6reference  =  "[" IPv6address "]"

Comments?

Thanks,

- vijay
-- 
Vijay K. Gurbani  vkg@{lucent.com,research.bell-labs.com,acm.org}
Bell Laboratories, Lucent Technologies, Inc.
2701 Lucent Lane, Rm. 9F-546, Lisle, Illinois 60532 (USA)
_______________________________________________
Sipping mailing list  https://www1.ietf.org/mailman/listinfo/sipping
This list is for NEW development of the application of SIP
Use [email-masked] for questions on current sip
Use [email-masked] for new developments of core SIP

---

From: Thejeswara Reddy <[email-masked]>
Date: Tue, 28 Feb 2006 02:11:48 +0000 (GMT)

hi,
      i hope folowing needed to be added.
      Multiple IPv6 address in contact header.
      loop back address related.
      IPv6 and IPv4 addresses and domain address in single message.
  thanks
  theja

"Vijay K. Gurbani" <[email-masked]> wrote:  The sipping agenda is fairly full, so I decided to see if I can get
some friendly folks to read the sipping-ipv6-02 and get consensus on
an issue listed below in this email before asking for agenda time.

Comments?

Thanks,

- vijay

---------------------------------
 Jiyo cricket on Yahoo! India cricket
Yahoo! Messenger Mobile Stay in touch with your buddies all the time.

---

From: "Vijay K. Gurbani" <[email-masked]>
Date: Tue, 28 Feb 2006 08:42:50 -0600

Marco Ambu wrote:
> Vijay K. Gurbani ha scritto:
> 
> According to what you say below, this should be
> Via...;received=[2001::db8]

Yes, of course (fast fingers, sorry).  Regardless, the question remains:
Is it better this way (i.e., with the brackets)?  I think it is.
At least we do not have to special case the parser to look for
brackets in one place and not in another when dealing with IPv6
network addresses.

- vijay

---

From: "Jeroen van Bemmel" <[email-masked]>
Date: Tue, 28 Feb 2006 20:54:54 +0100

Vijay,

[copy from your post ] current RFC3261 ABNF:
via-received   =  "received" EQUAL (IPv4address / IPv6address)
IPv6address    =  hexpart [ ":" IPv4address ]

IMO this is clearly a bug.

The general ABNF rules for header parameters are:
generic-param  =  token [ EQUAL gen-value ]
gen-value      =  token / host / quoted-string

The intention of the 'via-received' rule is clearly to restrict the allowed 
values of 'gen-value' by allowing only IP addresses (v4/v6). As such, its 
possible values should be a subset of those produced by the "gen-value" 
rule. However, the ":" character is not part of "token" and can therefore 
only be produced as part of "host" (i.e. between '[' ']' brackets) or as 
part of quoted-string (i.e. between '"' '"' quotes)

via-received should have been written as "host" but excluding "hostname", 
i.e.
via-received = IPv4address / IPv6reference as you stated

Historical note: RFC2543 defined it as
via-received	   = "received" "=" hostHowever, "host" was defined as
host            = hostname | IPv4addressso IPv6 addresses were not 
considered back then, and even hostnames were allowed. Considering that 
RFC3261 now defines "host" as
host             =  hostname / IPv4address / IPv6referenceit is again clear 
(and consistency mandates) that "IPv6reference" is correct

Regards,

Jeroen

----- Original Message ----- 
From: "Vijay K. Gurbani" <[email-masked]>
To: "SIPPING LIST" <[email-masked]>
Cc: "SIP Implementors" <[email-masked]>
Sent: Tuesday, February 28, 2006 12:40 AM
Subject: [Sip-implementors] SIP/IPv6 torture test and possible 
interactionwith rfc3261 ABNF

> Sip-implementors mailing list
> [email-masked]
> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>