Re: [Sip] SIPit21: BNF future-proofing problem?

Jonathan Rosenberg <jdrosen@cisco.com> Wed, 05 December 2007 22:14 UTC

Return-path: <sip-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1J02Vp-0000zC-SL; Wed, 05 Dec 2007 17:14:37 -0500
Received: from sip by megatron.ietf.org with local (Exim 4.43) id 1J02Vo-0000yo-2E for sip-confirm+ok@megatron.ietf.org; Wed, 05 Dec 2007 17:14:36 -0500
Received: from [10.90.34.44] (helo=chiedprmail1.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1J02Vn-0000ye-Mv for sip@ietf.org; Wed, 05 Dec 2007 17:14:35 -0500
Received: from sj-iport-4.cisco.com ([171.68.10.86]) by chiedprmail1.ietf.org with esmtp (Exim 4.43) id 1J02Vn-0005xX-1Y for sip@ietf.org; Wed, 05 Dec 2007 17:14:35 -0500
Received: from sj-dkim-1.cisco.com ([171.71.179.21]) by sj-iport-4.cisco.com with ESMTP; 05 Dec 2007 14:14:35 -0800
Received: from sj-core-2.cisco.com (sj-core-2.cisco.com [171.71.177.254]) by sj-dkim-1.cisco.com (8.12.11/8.12.11) with ESMTP id lB5MEYap019297; Wed, 5 Dec 2007 14:14:34 -0800
Received: from xbh-sjc-211.amer.cisco.com (xbh-sjc-211.cisco.com [171.70.151.144]) by sj-core-2.cisco.com (8.12.10/8.12.6) with ESMTP id lB5MET77001380; Wed, 5 Dec 2007 22:14:34 GMT
Received: from xfe-sjc-211.amer.cisco.com ([171.70.151.174]) by xbh-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 5 Dec 2007 14:14:31 -0800
Received: from [10.21.94.113] ([10.21.94.113]) by xfe-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 5 Dec 2007 14:14:30 -0800
Message-ID: <475722EB.4030203@cisco.com>
Date: Wed, 05 Dec 2007 17:15:07 -0500
From: Jonathan Rosenberg <jdrosen@cisco.com>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: Robert Sparks <rjsparks@nostrum.com>
Subject: Re: [Sip] SIPit21: BNF future-proofing problem?
References: <316F9CB1-959B-4CB9-AED5-DCB46AC2741A@nostrum.com>
In-Reply-To: <316F9CB1-959B-4CB9-AED5-DCB46AC2741A@nostrum.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Dec 2007 22:14:31.0000 (UTC) FILETIME=[35587D80:01C8378C]
DKIM-Signature: v=0.5; a=rsa-sha256; q=dns/txt; l=4691; t=1196892874; x=1197756874; c=relaxed/simple; s=sjdkim1004; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=jdrosen@cisco.com; z=From:=20Jonathan=20Rosenberg=20<jdrosen@cisco.com> |Subject:=20Re=3A=20[Sip]=20SIPit21=3A=20BNF=20future-proofing=20problem? |Sender:=20; bh=XeF7tdqbvgy/ALDyiYSNsQDRExhq7qJG+6SpyYNIK8M=; b=Xu9VFU+KVFyPBys/aqwGt3qMnaPmFXKXBXxmsec3p4eisz0vAiOohCF2n9fhqYHobTGTszzv nzXckwzVasS3mcTkFtg20KBia+y3xcha5jgGl9HoCZLwxDYksmbhSLQzMKsFMkf/lfuOgw6gfW IRqx7sjASGIsXlt+9VKkWH3mk=;
Authentication-Results: sj-dkim-1; header.From=jdrosen@cisco.com; dkim=pass ( sig from cisco.com/sjdkim1004 verified; );
X-Spam-Score: 0.0 (/)
X-Scan-Signature: e1b0e72ff1bbd457ceef31828f216a86
Cc: sip List <sip@ietf.org>
X-BeenThere: sip@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Session Initiation Protocol <sip.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:sip@ietf.org>
List-Help: <mailto:sip-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=subscribe>
Errors-To: sip-bounces@ietf.org

This strikes me as a problem in theory and not in practice. AFAICT, the 
only characters you can't use are ascii 0x00-0x19 (0x20 is space and is 
possible through the LWS construct as Christer pointed out). Is there a 
practical use case for any of these? They are:

   Decimal   Octal   Hex    Binary     Value
        -------   -----   ---    ------     -----
          000      000    000   00000000      NUL    (Null char.)
          001      001    001   00000001      SOH    (Start of Header)
          002      002    002   00000010      STX    (Start of Text)
          003      003    003   00000011      ETX    (End of Text)
          004      004    004   00000100      EOT    (End of Transmission)
          005      005    005   00000101      ENQ    (Enquiry)
          006      006    006   00000110      ACK    (Acknowledgment)
          007      007    007   00000111      BEL    (Bell)
          008      010    008   00001000       BS    (Backspace)
          009      011    009   00001001       HT    (Horizontal Tab)
          010      012    00A   00001010       LF    (Line Feed)
          011      013    00B   00001011       VT    (Vertical Tab)
          012      014    00C   00001100       FF    (Form Feed)
          013      015    00D   00001101       CR    (Carriage Return)
          014      016    00E   00001110       SO    (Shift Out)
          015      017    00F   00001111       SI    (Shift In)
          016      020    010   00010000      DLE    (Data Link Escape)
          017      021    011   00010001      DC1 (XON) (Device Control 1)
          018      022    012   00010010      DC2       (Device Control 2)
          019      023    013   00010011      DC3 (XOFF)(Device Control 3)
          020      024    014   00010100      DC4       (Device Control 4)
          021      025    015   00010101      NAK    (Negative 
Acknowledgement)
          022      026    016   00010110      SYN    (Synchronous Idle)
          023      027    017   00010111      ETB    (End of Trans. Block)
          024      030    018   00011000      CAN    (Cancel)
          025      031    019   00011001       EM    (End of Medium)
          026      032    01A   00011010      SUB    (Substitute)
          027      033    01B   00011011      ESC    (Escape)
          028      034    01C   00011100       FS    (File Separator)
          029      035    01D   00011101       GS    (Group Separator)
          030      036    01E   00011110       RS    (Request to 
Send)(Record Separator)
          031      037    01F   00011111       US    (Unit Separator)


I don't think this is a real problem.

-Jonathan R.

Robert Sparks wrote:
> The BNF in 3261 says the following:
> 
> extension-header  =  header-name HCOLON header-value
> header-value      =  *(TEXT-UTF8char / UTF8-CONT / LWS)
> 
> This is intended to be the catch-all field for all future extensions - 
> older parsers working against this BNF shouldn't barf
> when we introduce a new header field.
> 
> Now, we may have new fields in the future that look like:
> 
> NewHeader = new-header-name HCOLON quoted-string
> 
> And down inside quoted-string, we get:
> 
>       quoted-string  =  SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE
>       qdtext         =  LWS / %x21 / %x23-5B / %x5D-7E
>                         / UTF8-NONASCII
>       quoted-pair  =  "\" (%x00-09 / %x0B-0C
>                        / %x0E-7F)
> 
> So, for instance, we could have inside a quoted string the 2 byte 
> sequence \ NULL
> 
> This does not parse against header-value above...
> 
> Is this a problem? Some of the SIPit21 participants argued that it is.
> 
> The projects I've been involved in don't parse unknown headers and the 
> stacks will just hand up an unparsed bucket of bits (the only rules
> used are those necessary to identify the next header-field starting).
> 
> Would it be worth the effort to make the BNF reflect that rather than 
> continuing with the incongruity that we currently specify?
> 
> RjS
> 
> 
> _______________________________________________
> Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
> This list is for NEW development of the core SIP Protocol
> Use sip-implementors@cs.columbia.edu for questions on current sip
> Use sipping@ietf.org for new developments on the application of sip
> 

-- 
Jonathan D. Rosenberg, Ph.D.                   499 Thornall St.
Cisco Fellow                                   Edison, NJ 08837
Cisco, Voice Technology Group
jdrosen@cisco.com
http://www.jdrosen.net                         PHONE: (408) 902-3084
http://www.cisco.com


_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use sip-implementors@cs.columbia.edu for questions on current sip
Use sipping@ietf.org for new developments on the application of sip