Subject: [Megaco] Encoding of ASN.1 SDP_equivalents (H.248.1 Annex C.11) for multiple a-lines

From: <[email-masked]>
Date: Fri, 25 Aug 2006 12:38:57 +0300

Hi,

3GPP 29.332 specifies the usage of SDP_equivalents in H.248 interface
for binary encoding. It specifies following in table 10.1:
"Note	For binary encoding, the SDP equivalents "SDP_V", "SDP_M",
"SDP_C", "SDP_A", and SDP_B" in ITU-T Recommendation H.248.1 [9], Annex
C.11, shall be used to encode the corresponding SDP lines. Other SDP
equivalents may be used, for details see Annex A. The SDP equivalents
shall be used in the order specified for the corresponding SDP lines in
IETF RFC 2327 [17]. Rules for the usage of SDP in ITU-T Recommendation
H.248.1 [9] shall also be applied to the SDP equivalents."
ITU-T H.248.1 chapter 7.1.8. specifies
"When binary encoding the protocol, the descriptor consists of groups of
properties (tag-value pairs) as specified in Annex C. Each such group
may contain the parameters of a session description."
ITU-T H.248.8 specifies an error code if a property appears twice in a
descriptor
"4.2.34	Error code #: 456 
Name: Property appears twice in this Descriptor
Definition: The command, including the property, is not executed due to
the parameter or property appearing twice in this descriptor.
Error text in the error descriptor: The Property Name is included in the
Error text in the error descriptor.
Comment: -

ITU-T H.248.1 Annex A specifies the usage of Property as follows:
   -- In PropertyParm, value is a SEQUENCE OF octet string.  When sent 
   -- by an MGC the interpretation is as follows: 
   -- empty sequence means CHOOSE 
   -- one element sequence specifies value 
   -- If the sublist field is not selected, a longer sequence means  
   -- "choose one of the values" (i.e. value1 OR value2 OR ...) 
   -- If the sublist field is selected, 
   -- a sequence with more than one element encodes the value of a 
   -- list-valued property (i.e. value1 AND value2 AND ...).
   -- The relation field may only be selected if the value sequence 
   -- has length 1.  It indicates that the MG has to choose a value 
   -- for the property. E.g., x > 3 (using the greaterThan 
   -- value for relation) instructs the MG to choose any value larger 
   -- than 3 for property x. 
   -- The range field may only be selected if the value sequence 
   -- has length 2.  It indicates that the MG has to choose a value 
   -- in the range between the first octet in the value sequence and 
   -- the trailing octet in the value sequence, including the 
   -- boundary values. 
   -- When sent by the MG, only responses to an AuditCapability request 
   -- may contain multiple values, a range, or a relation field. 
    
   PropertyParm ::= SEQUENCE <X690_WW7.DOC>  
   { 
        name            PkgdName <\l > , 
        value           SEQUENCE <X690_WW7.DOC>  OF OCTET STRING
<X690_WW7.DOC> , 
        extraInfo       CHOICE <X690_WW7.DOC>  
                { 
                        relation        Relation <\l > , 
                        range           BOOLEAN <X690_WW7.DOC> , 
                        sublist         BOOLEAN <X690_WW7.DOC>  
                }                                  OPTIONAL, 
        ... 
   } 

Unfortunately these specification gives just a theoretical explanation
about SDP equivalents usage for binary encoding
regarding multiple SDP lines, there exists in general only text-encoding
examples. 
In following example binary encoding is depicted with help of
ASN.1-syntax definitions and we'd like to have clarification 
about detailed syntax how binary encoding should look like in case of
using SDP_equivalents(H.248.1 Annex C).

Basically the question is for ASN.1: What is the limit to decide when
there is a question of one specific property. 
Is the SDP_A tag a property or shall the MG dig out the value of SDP_A
before it can determine/decide 
that the question is about different parameters of a-line in SDP ?  
So when ABNF SDP contains for example multiple a-lines, are they in
ASN.1 encoded as separate values (a list) of one SDP_a 
or shall we encode as many SDP_A properties as there are a-lines in ABNF
SDP ?

Following example illustrates the problem.
In the example the used codecs are only examples of possible use case, 
it is not relevant if this is codec modification or reservation, just
the encoding principle is important.
If the use case is for ABNF as follows
		          Local {
				v=0
				c=IN IP4 $
				m=audio $ RTP/AVP 96 97 
				a=rtpmap:96 iLBC/8000 
				a=fmtp:96 mode=20 
				a=rtpmap:97 PCMU/8000  
				a=gpmd:97 vbd=yes 
           }
How should these a-lines look in ASN:1 ?
1.)
				LocalDescriptor{
				---cut--+ other mandatory parameters
				---Cut--
				PkgdName=0x000B00C	/*SDP_A String
Zero or more session attributes * /
				      value= "rtpmap:96 iLBC/8000" ,	
					             "fmtp: 96 mode=20",
				                   "rtpmap:97
PCMU/8000",
	
"gpmd: 97 vbd=yes". 
Or 2.)

				LocalDescriptor{
				---cut--+ other mandatory parameters
				---Cut---
				PkgdName=0x000B00C	/*SDP_A String
Zero or more session attributes * /
				      value= "rtpmap:96 iLBC/8000"
/*HEX*/
				PkgdName=0x000B00C	/*SDP_A String
Zero or more session attributes * /
					value= "fmtp: 96 mode=20". 
				PkgdName=0x000B00C	/*SDP_A String
Zero or more session attributes * /
				      value= "rtpmap:97 PCMU/8000"
/*HEX*/
				PkgdName=0x000B00C	/*SDP_A String
Zero or more session attributes * /
				              value= "gpmd: 97 vbd=yes"
/*HEX*/ 

Or something else ?

br manfred

_______________________________________________
Megaco mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/megaco

---

From: Terry Howe <[email-masked]>
Date: Fri, 25 Aug 2006 07:54:42 -0600

I was under the impression that option 2 was correct.  Of course there
are going to be duplicate tags in the PropertyParm.  That error message
should only be used in the case where there is a duplicate value that
is illegal such as two versions.  It has been a long while since I
looked at SDP in ASN.1 though.

On Fri, 2006-08-25 at 12:38 +0300, [email-masked] wrote:
>                                                                 PkgdName=0x000B00C      /*SDP_A String Zero or more session attributes * / 
>                                                                 
>                                                                 value=
>                                                                 "rtpmap:96 iLBC/8000" /*HEX*/ 
>                                                                 PkgdName=0x000B00C      /*SDP_A String Zero or more session attributes * / 
>                                                                 
>                                                                 value=
>                                                                 "fmtp:
>                                                                 96
>                                                                 mode=20". 
>                                                                 PkgdName=0x000B00C      /*SDP_A String Zero or more session attributes * / 
>                                                                 
>                                                                 value=
>                                                                 "rtpmap:97 PCMU/8000" /*HEX*/ 
>                                                                 PkgdName=0x000B00C      /*SDP_A String Zero or more session attributes * /
>                                                                 
> 
>                                               value= "gpmd: 97
> vbd=yes" /*HEX*/