Subject: RE: [Megaco] ABNF TerminationId definition

From: Raphael Tryster <[email-masked]>
Date: Sun, 21 Dec 2003 11:57:18 +0200

Trying again and adding some more questions; maybe someone will answer this
time.

TerminationID        = "ROOT" / pathNAME / "$" / "*" 
 
pathNAME        = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" ) ["@"
pathDomainName ] 

NAME = ALPHA *63(ALPHA / DIGIT / "_" ) 

1.	All the examples I have seen suggest that the unit of wildcarding is
delimited by slashes. "For example, if there were TerminationIDs of R13/3/1,
R13/3/2 and R13/3/3, the TerminationID R13/3/* would match all of them".
But the ABNF seems to allow "*" to appear just about anywhere.  From a
performance point of view, it is much more efficient to index termination
identifiers by easily recognizable logical units, e.g. term1/term2/term3,
than to allow wildcarding in arbitrary places, requiring searching for
matches.  Do actual implementations allow unrestricted freedom, or can one
make simplifying assumptions?

2.	Is it legitimate to use underscore "_" instead of slash "/" as a
logical delimiter?  Does anyone actually do this?  Is anything else a
legitimate delimiter?

3.	Would the above definition of pathNAME be any different if ALPHA was
substituted for NAME?  The existing definition seems to be ambiguous, as for
example, an identifier consisting entirely of alphabetic characters could be
parsed such that all characters are assigned to NAME, or the first assigned
to NAME and the rest in the repeating optional ALPHA, or anything in
between.

4.	"Terminations are referenced by a TerminationID, which is an
arbitrary schema chosen by the MG".  Does this mean that only an MGC has to
worry about what form the MGs it works with might choose for their
termination identifier, while an MG can impose whatever restrictions it
wants without concern that it will impede interoperability?  

Raphael Tryster

	-----Original Message-----
	From:	Raphael Tryster [SMTP:[email-masked]]
	Sent:	Tuesday, 13 August 2002 16:02
	To:	[email-masked]'
	Subject:	RE: [Megaco] ABNF TerminationId definition

	Here is something I found in the archive that nobody answered.  In
addition to Steven's questions, for which I would also be interested in the
answers, I am curious about the following:

	What is the purpose of the leading "*" in pathNAME?  Following it
with NAME seems to restrict wildcarding in strange ways.  For example:

	[email-masked] <mailto:[email-masked]>  is allowed. 
	abc/[email-masked] <mailto:abc/[email-masked]>  is allowed. 
	abc/[email-masked] <mailto:abc/[email-masked]>  is allowed. 
	*/[email-masked] <mailto:*/[email-masked]>  is not allowed. 

	Can anyone explain the reasoning? 

	Raphael Tryster 

	-----Original Message----- 
	From:   Steven Weisz [SMTP:[email-masked]] 
	Sent:   Monday, 15 October, 2001 10:53 PM 
	To:     [email-masked]' 
	Subject:        [Megaco] ABNF TerminationId definition 

	Hi List, 

	        I've taken a close look at the H.248 document and the latest
IG and 
	I noticed that the ABNF does not allow TerminationIds in the form 

	[email-masked] 

	OR 

	[email-masked] 

	If you look closely at the ABNF we have: 

	; Total length of pathNAME must not exceed 64 chars. 
	pathNAME             = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" /
"$" ) 
	                       ["@" pathDomainName ] 

	; ABNF allows two or more consecutive "." although it is meaningless

	; in a path domain name. 
	pathDomainName       = (ALPHA / DIGIT / "*" ) 
	                       *63(ALPHA / DIGIT / "-" / "*" / ".") 
	                       
	TerminationID        = "ROOT" / pathNAME / "$" / "*" 

	What I'm wondering, are [email-masked] and [email-masked] valid TerminationIds
and the 
	ABNF doesn't cover them or are they not allowed. 

	Thanks, 

	Steven 

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

---

From: Christian Groves <[email-masked]>
Date: Mon, 22 Dec 2003 10:04:43 +1100

Hello Raphael,

When the termination ID structure was thought of, I at least thought that the 
structure was meant to be heirarchical, that is you'd only ever wildcard the RHS 
of the structure. A "?" or "*" was for a particular instance/s of the heirarchy.

See my comments below.

Regards, Christian

Raphael Tryster wrote:

> Trying again and adding some more questions; maybe someone will answer 
> this time.
> 
> pathNAME        = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" ) 
> ["@" pathDomainName ]
> 
>    1. All the examples I have seen suggest that the unit of wildcarding
>       is delimited by slashes. "For example, if there were
>       TerminationIDs of R13/3/1, R13/3/2 and R13/3/3, the TerminationID
>       R13/3/* would match all of them".  But the ABNF seems to allow "*"
>       to appear just about anywhere.  From a performance point of view,
>       it is much more efficient to index termination identifiers by
>       easily recognizable logical units, e.g. term1/term2/term3, than to
>       allow wildcarding in arbitrary places, requiring searching for
>       matches.  Do actual implementations allow unrestricted freedom, or
>       can one make simplifying assumptions?

[CHG] See my intro comment.

>       logical delimiter?  Does anyone actually do this?  Is anything
>       else a legitimate delimiter?

[CHG] Slash "/" is the only logical delimiter to use at least in the text version.

> 
>    3. Would the above definition of pathNAME be any different if ALPHA
>       was substituted for NAME?  The existing definition seems to be
>       ambiguous, as for example, an identifier consisting entirely of
>       alphabetic characters could be parsed such that all characters are
>       assigned to NAME, or the first assigned to NAME and the rest in
>       the repeating optional ALPHA, or anything in between.

[CHG] Yes??

>       arbitrary schema chosen by the MG".  Does this mean that only an
>       MGC has to worry about what form the MGs it works with might
>       choose for their termination identifier, while an MG can impose
>       whatever restrictions it wants without concern that it will impede
>       interoperability? 

[CHG] This statement was added because it was seen that as the MG owned the 
hardware which related to particular terminations that it would impose a certain 
structure. The MGC would have to use this structure.

>       addition to Steven's questions, for which I would also be
>       interested in the answers, I am curious about the following:
> 
>               I've taken a close look at the H.248 document and the
>       latest IG and
>       pathNAME             = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_"
>       / "$" )
>                              ["@" pathDomainName ]
> 
>       What I'm wondering, are [email-masked] and [email-masked] valid
>       TerminationIds and the

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

---

From: Christian Groves <[email-masked]>
Date: Mon, 22 Dec 2003 10:04:43 +1100

Hello Raphael,

See my comments below.

Regards, Christian

[CHG] Yes??

---

From: Tom Taylor <[email-masked]>
Date: Mon, 22 Dec 2003 11:51:33 -0500

The points Raphael raises are now related to implementations, and I am 
not really in a position to comment in that respect.  However, in the 
original development of the protocol, the question came up as to where 
in the string the wildcard could appear and I suggested at the time that 
it could appear anywhere.  I have since regretted that rather 
theoretical stance as an unnecessary generalization of the protocol. 
Christian's view is probably the one that meets practical needs, but it 
is, as I said at the beginning, now a matter of what people have 
implemented.

The matter of terminationID structures was never agreed for 
Megaco/H.248.  I was always doctrinaire on the side of saying that the 
terminationIDs were a matter solely between the MG and MGC.  This came 
from my legacy switching background, which involves a lot of 
configuration of network elements.  It also reflected experience with 
the differing naming conventions reflecting differing vendor 
architectures.  The SGCP-IPDC-MGCP tradition from the beginning has been 
to pre-define naming conventions, regardless of actual equipment 
architecture.

On the circuit side, there is also a distinction between physical 
circuit identities (something along the lines of a 
frame-card-port-timeslot number hierarchy), and logical identities (in 
North American terminology, trunk group name and trunk number within the 
group).  The logical identity is the basis for call routing in the MGC. 
  The most likely arrangement is that the MGC is configured with data 
indicating the relationship between physical terminationIDs and logical 
circuit identities, but other arrangements with more data in the MG are 
possible.

This distinction between call routing entities and physical sets of 
terminations limits the usefulness of wildcarding in the Add command. 
In normal practice, one can find that individual transmission facilities 
are divided between multiple trunk groups (because trunk groups have a 
number of attributes besides simply which offices they link), nad that 
individual trunk groups are spread over multiple transmission facilities 
(for reliability).  That means that for wildcarding, assuming a 
physically-based termination naming system in the MG, the MGC has to 
select the transmission facility and then specify a range of timeslots 
(as they translate into terminationID terms) as the eleigible entities.

So how does this reflect on Ralph's questions?  I believe the answers 
are a matter of agreed practice.  The protocol itself does not impose 
limits on what set of characters a wildcard represents, or what 
delimiters if any are used in a naming path.  If we could come to common 
agreements, it would probably be of benefit to MG vendors, less so to 
MGC vendors, because they have to be configured with the correspondence 
between terminationIDs and call routes in any event.

In particular, my answer to the Ralph's fourth question is to say that I 
see no impact on interoperability for the MG to choose an arbitrary 
naming scheme.

Christian Groves wrote:
> Hello Raphael,
> 
> When the termination ID structure was thought of, I at least thought 
> that the structure was meant to be heirarchical, that is you'd only ever 
> wildcard the RHS of the structure. A "?" or "*" was for a particular 
> instance/s of the heirarchy.
> 
> See my comments below.
> 
> Regards, Christian
> 
> Raphael Tryster wrote:
> 
> [CHG] This statement was added because it was seen that as the MG owned 
> the hardware which related to particular terminations that it would 
> impose a certain structure. The MGC would have to use this structure.
> 
>>
>>
>>
>> Raphael Tryster
>>

---

From: Tom Taylor <[email-masked]>
Date: Mon, 22 Dec 2003 11:51:33 -0500