Internet DRAFT - draft-foster-mgcp-ownership

draft-foster-mgcp-ownership





Internet Engineering Task Force                               B. Foster 
Internet Draft                                            Cisco Systems 
Document: <draft-foster-mgcp-ownership-00.txt>             
Category: Informational                                    January 2005 
 
 
        Media Gateway Control Protocol (MGCP) Ownership Packages 
 
Status of this Document 
 
   
  By submitting this Internet-Draft, each author certifies that any 
  applicable patent or other IPR claims of which the author is aware 
  have been disclosed, or will be disclosed, and any of which each 
  author becomes aware will be disclosed, in accordance with RFC 3668. 
   
  By submitting this Internet-draft, the authors accept the provisions 
  of Section 3 of RFC 3667 (BCP 78). 
   
  Internet-Drafts are working documents of the Internet Engineering 
  Task Force (IETF), its areas, and its working groups.  Note that 
  other groups may also distribute working documents as Internet- 
  Drafts. 
   
  Internet-Drafts are draft documents valid for a maximum of six 
  months and may be updated, replaced, or obsoleted by other documents 
  at any time.  It is inappropriate to use Internet-Drafts as 
  reference material or to cite them other than as work in progress. 
   
  The list of current Internet-Drafts can be accessed at 
  http://www.ietf.org/ietf/1id-abstracts.txt 
      
  The list of Internet-Draft Shadow Directories can be accessed at 
  http://www.ietf.org/shadow.html. 
   
  Copyright (C) The Internet Society (2004). All Rights Reserved. 
 
Abstract 
 
  In the Media Gateway Control Protocol Specification [2], there is 
  nothing preventing multiple Call Agents talking to the same endpoint. 
  However, this can present a problem if they are both trying to 
  control the endpoint at the same time. The packages defined in this 
  document solve this problem and provide new (and better) mechanisms 
  for endpoint ownership control. 
 
Conventions used in this document 
   
  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
  "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
  document are to be interpreted as described in RFC-2119 [1]. 



 
B.  Foster                   Informational                     [Page 1] 

                        MGCP Ownership Packages            January 2005 

                           Table of Contents 
 
1.  Introduction......................................................2 
2.0. Ownership Policy Package.........................................3 
 2.1. Purpose.........................................................3 
 2.2. Audit...........................................................3 
 2.3. Response Codes..................................................4 
 2.4. Request for Ownership Transfer..................................4 
 2.5. Procedures......................................................4 
3.0.  Re-associate Package............................................5 
 3.1. Purpose.........................................................5 
 3.2. Preference Parameters...........................................5 
 3.3. New Restart Method..............................................6 
 3.4. Procedures......................................................6 
4.0 Notified Entity List Package......................................7 
 4.1. Purpose.........................................................7 
 4.2.  NotifiedEntityList Extension Parameter.........................7 
5.0. Usage............................................................9 
6.0.  IANA Considerations............................................10 
7.0.  Security Considerations........................................10 
8.0.  Normative References...........................................11 
Author's Address.....................................................11 
Intellectual Property Statement......................................11 
Full Copyright Statement.............................................11 
Acknowledgement......................................................12 
 
 
 
1.  Introduction 
 
  This document includes three packages that have to do with endpoint 
  ownership. In the Media Gateway Control Protocol Specification [2], 
  there is nothing preventing multiple Call Agents talking to the same 
  endpoint. However, this can present a problem if they are both trying 
  to control the endpoint at the same time. This problem can be solved 
  by defining an ownership policy (ownership policy package) that 
  allows the endpoint to reject requests that are not from its present 
  owner.  
   
  In order to facilitate change of ownership when bringing a Call Agent 
  in and out of service, a re-associate package is also introduced. The 
  third package that is introduced is a notified entity list package. 
  This package allows better control over endpoint selection of Call 
  Agents by providing the endpoint with a preferred ordered list of 
  Call Agents to select. 
   
  Section 2 describes the ownership policy ("OP") package, section 3 
  describes the re-associate package, and section 4 describes the 
  notified entity list package. Section 5 describes the typical usage 
  (and motivation behind the introduction) of these packages. 
 



 
B.  Foster                   Informational                     [Page 2] 

                        MGCP Ownership Packages            January 2005 

2.0. Ownership Policy Package 
 
  Package Name: OP 
  Version: 0 
 
2.1. Purpose 
   
  In order to avoid the problem of two or more Call Agents thinking 
  that they are in control of an endpoint at a given point in time, an 
  ownership policy package is introduced. 
   
  Ownership policy is provisioned on the endpoint. If the policy is 
  provisioned as "single owner", the endpoint is able to reject a 
  command from a Call Agent with which it is not presently associated. 
   
  The package consists of new auditable parameters, a parameter 
  indicating ownership and a package specific response code. Also 
  included is a parameter that allows the Call Agent to request that 
  the policy be overridden. 
      
      
2.2. Audit 
 
     Ownership Policy is a configurable parameter that presently allows 
     for two ownership policy values: 
       * No policy. 
       * Single Owner. 
        
     The ownership policy package introduces two new audit endpoint 
     parameters: 
       * ownership policy (with values "no" or "single") 
       * present owner (IP address of the Call Agent with which the 
          endpoint is presently associated) 
   
     The Call Agent can request an audit of these values using two new 
     request info parameters "PO" and "OP". So for example a request 
     for ownership policy could include the following request for 
     information parameter line: 
      
          F: OP/OP 
           
     Response to ownership policy would include a parameter line with 
     the following syntax: 
      
          "OP/OP:" 0*WSP "no" | "single" 
           
     Response to request for present owner would include a parameter 
     line with the following syntax: 
      
          "OP/PO:" 0*WSP ipaddress 
      
     where the ipaddress is either an IPV4 or IPV6 IP address in the 
     same format as DomainName in appendix A of [2], e.g., 
     [128.96.41.12] 
 
B.  Foster                   Informational                     [Page 3] 

                        MGCP Ownership Packages            January 2005 

      
2.3. Response Codes 
 
  The following package-specific response code is included as part of 
  the ownership policy package: 
   
     800    Invalid owner 
     801    Ownership over-ride condition not met 
      
2.4. Request for Ownership Transfer 
 
  A new parameter is introduced which allows the Call Agent to  
  over-ride the ownership policy and request that the ownership be 
  transferred to it under certain conditions. 
   
  The parameter consists of acceptance conditions provided as a list of 
  condition parameters with the following ABNF syntax: 
   
      "OP/C:" 0*WSP condition (","0*WSP condition) 
   
      condition = "IDL" | "NOHB" | other 
   
  where other conditions may be specified in future packages or 
  extensions to this package. An empty parameter value indicates no 
  conditions. 
 
  The value "IDL" indicates that that the endpoint is idle and has no 
  connections on it. 
   
  The value "NOHB" indicates that a heartbeat from its present owner is 
  missing. 
   
  The list of conditions in a single parameter line indicates the 
  ANDing of the conditions in that parameter line, i.e. all conditions 
  in the parameter line MUST be met. Multiple parameter lines may be 
  included. The overall condition that MUST be made is determined by 
  ORing the resulting conditions from each parameter line. 
   
  Example: the request includes two parameter lines. The first 
  parameter line contains conditions "A" AND "B", while the second 
  parameter line contains condition "C". In that case the condition 
  that MUST be met is: 
   
        ("A" AND "B") OR "C" 
   
  If a request is made and the conditions specified are not met, the 
  endpoint MUST return response code 801. 
   
2.5. Procedures 
 
  Ownership policy defines the behavior of an endpoint when it receives 
  a notification, connection or endpoint configuration request. Audit 
  requests may come from multiple sources. 
   
 
B.  Foster                   Informational                     [Page 4] 

                        MGCP Ownership Packages            January 2005 

  If the ownership policy is defined as "single" and there is no 
  condition parameter or the condition is not met, the endpoint MUST 
  reject notification, connection and endpoint configuration requests 
  from a Call Agent for which it is not associated with response code 
  800, "incorrect owner". If the ownership policy is "no" (no policy) 
  or there is a condition parameter and the condition is met, the 
  endpoint MUST accept the request. 
   
  Note that acceptance of requests with condition parameters also 
  indicate transfer of ownership. The endpoint will now be associated 
  with the Call Agent that made the request and a request from the 
  previous owner will be rejected if the ownership policy is "single" 
  and no condition is specified or a specified condition is not met. 
   
3.0.  Re-associate Package 
 
  Package Name: RA 
  Version: 0 
   
3.1. Purpose 
   
  The purpose of this package is to allow a Call Agent to request an 
  endpoint or endpoints to re-associate with a Call Agent, specifying a 
  temporary preference. 
 
   
3.2. Preference Parameters 
   
  The request to re-associate is specified by including a preference 
  parameter in the endpoint configuration ("EPCF") command. The ABNF 
  syntax for the preference parameter line is as follows: 
   
     "RA/PR:" 0*WSP "NL" | other 
   
     other = prefvalue ("," 0*WSP prefvalue) 
   
     prefvalue = ("PL:" 0*WSP preferred |"RL:" 0*WSP renounce) 
   
     preferred = CAaddress (";" 0* CAaddress) 
   
     renounce  = CAaddress (";" 0* CAaddress) 
   
  where CAaddress has the same syntax as specified in Appendix A of [2] 
  for NotifiedEntity, consisting of a DomainName and optional port. The 
  DomainName portion can be either a fully qualified domain name or an 
  IPv4 or IPv6 IP address. 
   
  If "NL" is specified, the endpoint uses the existing notified entity 
  or notified entity list to identify the Call Agent with which to re-
  associate. If a notified entity list exists, the endpoint tries to 
  re-associate based on the preferred order specified by the list. Note 
  that if either the notified entity or the first item on the notified 
  entity list already resolves to the existing Call Agent, the 

 
B.  Foster                   Informational                     [Page 5] 

                        MGCP Ownership Packages            January 2005 

  endpoint(s) will not re-associate to another Call Agent but will 
  remain associated with the existing Call Agent instead. 
   
  Parameter values for "PL" may contain a single item or a list. If a 
  list is provided, it is in preferred order. On the other hand, if the 
  parameter value is empty, this parameter is ignored. If the endpoint 
  receives a value for "PL", it tries to re-associate with the address 
  of a Call Agent in the list included with this parameter. If it is 
  unable to do so, it will return to try the Call Agents identified in 
  the notified entity or notified entity list. 
   
  Parameter values supplied with "RL" indicate addresses to exclude 
  when re-associating. 
   
  Parameter values supplied with "PL" or "RL" have the effect of 
  temporarily modifying the notified entity or notified entity list. 
  The resulting list is only valid until the endpoint either develops a 
  new association with a Call Agent or fails to contact any Call Agent 
  at all based on this temporary list. In the latter case, if the 
  temporary list is exhausted without contacting a Call Agent, the 
  endpoint goes into the disconnected state and reverts to the original 
  notified entity or notified entity list. 
   
  Note that if there are no parameter values for "RA/PR", then the MG 
  will not re-associate. 
 
3.3. New Restart Method 
 
  When a request is made to re-associate by sending the endpoint or 
  endpoints parameters as specified in section 2.2, and the decision is 
  made to re-associate with a different Call Agent, the endpoint(s) 
  will try to re-associate by sending a RestartInProgress (RSIP) 
  command using a new restart method "reassociate" (based on the IP 
  addresses within the temporary list). 
   
  Note that in the case where the request to re-associate is sent to 
  the entire gateway (i.e., "all of" wild-card), the resulting RSIP 
  SHOULD also be sent with the same consolidated wildcard for the 
  endpoints that are being re-associated. 
   
  Note that the "any of" wildcard convention MUST NOT be used. The 
  "restart delay" also MUST NOT be used. Its value is considered to be 
  zero for this restart method. 
 
3.4. Procedures 
 
  If a request to re-associate results in the endpoint moving to a 
  different Call Agent, the endpoint will begin re-associating by 
  sending a RestartInProgress command with method "reassociate" based 
  on the preferences specified by the "RA/PR" parameter(s). As an 
  example: 
  * If "NL" is specified, the endpoint will attempt to re-associate 
     based on the existing notified entity or notified entity list. In 
     the case of the of a notified entity list the attempt to re-
 
B.  Foster                   Informational                     [Page 6] 

                        MGCP Ownership Packages            January 2005 

     associate will be based on the preferred order specified by the 
     list. If in the process of doing this, the notified entity or the 
     item on the notified entity list resolves to the address of the 
     Call Agent with which it is presently associated, the endpoint 
     will not do anything. It will simply remain associated with the 
     existing Call Agent. On the other hand, if it resolves to some 
     other Call Agent's IP address, the endpoint MUST send a 
     RestartInProgress command with method "reassociate". If the 
     request is rejected or there is no response after the configured 
     number or retries, the endpoint will continue with the remaining 
     items on the list. 
  * If the "PL" and/or "RL" parameters are specified, the endpoint 
     will create a temporary notified entity list. It will consist of a 
     preferred order consisting of: 
     * The IP addresses or FQDN's specified with the "PL" parameters, 
       followed by 
     * The existing notified entity or notified entity list with values 
       from the "RL" parameters removed. 
      
       The endpoint MUST then send the RSIP with method "reassociate" 
       in the order specified by this temporary list. If it manages to 
       re-associate (is accepted by a Call Agent on the list), then the 
       re-association request is complete. If it fails to contact any 
       of the Call Agents on the list, it MUST go into a "disconnected" 
       state and behave as described in [2] (or [3] for the NCS profile 
       of MGCP). 
   
  Note that the recommended use of this package is to temporarily 
  modify an existing notified entity or notified entity list, e.g. the 
  notified entity or notified entity list remains as its provisioned 
  value and is only modified temporarily for the purpose of re-
  associating. Once a new association is established the list reverts 
  to the previous notified entity or notified entity list value. 
   
   
4.0 Notified Entity List Package 
 
  Package Name: NL 
  Version: 0 
 
4.1. Purpose 
 
  The purpose of this package is to allow the use of a 
  NotifiedEntityList. This is similar to the NotifiedEntity parameter 
  in [2] but allows multiple domain names and/or IP addresses to be 
  provided.  This in turn allows endpoints to be more accurately 
  directed to alternate Call Agents in a preferred order. 
   
4.2.  NotifiedEntityList Extension Parameter 
   
  When requested by a Call Agent or when returned as part of an audit 
  endpoint request, the NotifiedEntityList parameter is encoded as "NL" 
  and is followed by a colon and a comma-separated list of 
  NotifiedEntity values as defined in the MGCP specification [2], e.g.: 
 
B.  Foster                   Informational                     [Page 7] 

                        MGCP Ownership Packages            January 2005 

   
    NL/NL: ca1@myca.whatever.net, ca2@mybackupca.whatever.net 
   
  The NotifiedEntityList works in a similar way to the NotifiedEntity 
  parameter, except that it allows multiple domain names and/or IP 
  addresses to be listed.  The NotifiedEntityList thus specifies a new 
  "notified entity" for the endpoint.   
   
  The NotifiedEntityList parameter is optional in any command or 
  response where the NotifiedEntity parameter is allowed.  Following a 
  restart, the NotifiedEntityList is initially empty, unless 
  provisioned otherwise.  In subsequent commands, it retains its 
  current value until explicitly changed.  If both a NotifiedEntity 
  parameter and a non-empty NotifiedEntityList parameter have been set 
  (not necessarily at the same time), the NotifiedEntity parameter 
  value will be viewed as implicitly added to the beginning of the 
  NotifiedEntityList parameter.  The NotifiedEntity parameter thus 
  always defines the first domain name or IP address to contact, unless 
  it has explicitly been set to empty.  In that case, the 
  NotifiedEntityList defines the "notified entity".  If the 
  NotifiedEntityList is also empty, then the normal MGCP handling of 
  having an empty "notified entity" applies.  We will refer to the list 
  of domain names and/or IP addresses that result from the above rules 
  as the "notified entity list". 
    
  When the "notified entity list" is non-empty, transmission is first 
  attempted with the first domain name in the list as in the normal 
  MGCP retransmission procedures described in [2].  Each of the IP-
  addresses for this domain name MUST first be tried as specified in 
  [2], and if this is unsuccessful, each of the IP-addresses for the 
  second domain name MUST then be attempted, etc. following the normal 
  MGCP retransmission procedures, with "N" (the number of 
  retransmissions) set to zero for each domain name (see Section 4.3 in 
  [2]).  Whenever retransmission to a new domain name is initiated, the 
  default retransmission timer value (RTO) etc. SHOULD be used - the 
  estimator (T-DELAY) and measurements (AAD and ADEV) used for the 
  transmission to the previous domain name are considered obsolete.  
  Note however, that the maximum transaction lifetime considerations 
  apply as usual, and hence retransmission to any of the IP-addresses 
  for any of the domain names MUST NOT occur more than T-Max seconds 
  after the initial sending of the command, irrespective of where it 
  was sent.  The Max1 DNS query MAY be performed for each of the domain 
  names, or it MAY simply be performed for the first domain name.  The 
  Max2 DNS query however MUST NOT be performed for any but the last 
  domain name.  Also note, that only the last IP-address for the last 
  domain name can reach Max2 retransmissions, and hence retransmission 
  to all other IP-addresses MUST end after Max1 retransmissions. 
   
  Note that each entries in the NotifiedEntityList follow the syntax of 
  DomainName as defined in Appendix A of [2]. Any entry may be either a 
  fully qualified domain name or IP address. 
   
  The current value of the NotifiedEntityList parameter can be audited 
  via AuditEndpoint; the value of the NotifiedEntity parameter will not 
 
B.  Foster                   Informational                     [Page 8] 

                        MGCP Ownership Packages            January 2005 

  be included here and hence must be audited separately.  Support for 
  the NotifiedEntityList in AuditConnection is permissible, but it is 
  neither required nor recommended.   
5.0. Usage 
 
  The ownership packages described in this draft can be used in any way 
  allowed by the package definitions described above. This section 
  describes a particular approach. 
   
  As indicated in the description of the NL package, the notified 
  entity list can be used under any situation that the notified entity 
  could be used in [2] or [3]. One particular approach is to provision 
  the notified entity list and then use the re-associate package to 
  make temporary adjustments as required. With this approach the Call 
  Agent never sends down a new notified entity or notified entity list. 
  Instead, it used the re-associate package to make these temporary 
  adjustments. 
   
  An endpoint boots up with its notified entity list indicating the 
  preferred order and ownership policy (ownership package) set to 
  "single". After boot-up, it starts sending RSIP with RestartMethod 
  "restart" to Call Agents in the order specified by the list. As soon 
  is it gets a positive response from a Call Agent, it takes that as 
  its present owner and will reject any request from any other Call 
  Agent (based on the ownership policy). If the endpoint is unable to 
  communicate with that Call Agent, it will begin to try other Call 
  Agents based on the order in its notified entity list. Once it finds 
  a new Call Agent, that Call Agent becomes the new owner and requests 
  from other Call Agents will be rejected. 
   
  The above behavior prevents situations where two Call Agents may 
  erroneously think that they "own" an endpoint at a given point in 
  time. This could occur for example if there was a temporary partition 
  between the endpoint and its Call Agent, the endpoint switched to 
  another Call Agent, then the first Call Agent came back and started 
  trying to control the endpoint based on its mistaken belief that it 
  is still the owner. 
   
  In order to take a Call Agent out of service, the Call Agent that 
  "owns" the endpoint can use the re-associate package to temporarily 
  remove itself from the notified entity list. In doing so, the Call 
  Agent may suggest specific changes to the list (preferred 
  alternatives). The result is that the endpoint begins to send RSIP's 
  with RestartMethod "reassociate" based on the temporary list. Once it 
  gets a positive response from a new owner, it takes that Call Agent 
  as its present owner and will reject any requests from other Call 
  Agents. 
   
  Returning a Call Agent to service involves requesting the Call Agents 
  that have taken temporary ownership of endpoints to renounce 
  themselves. One simple way to do that is for the Call Agents to send 
  a re-associate request with the "RA/PR" parameter set to "NL". This 
  results in all endpoints reverting back to the Call Agents specified 
  by their provisioned order (notified entity list). 
 
B.  Foster                   Informational                     [Page 9] 

                        MGCP Ownership Packages            January 2005 

   
  A further situation can occur, where on an incoming call, the Call 
  Agent that is the present owner of the endpoint cannot be contacted. 
  Under this situation, some other Call Agent that can be contacted may 
  try to take over ownership. In order to do that, it has to be able to 
  over-ride the ownership policy based on some condition (for example, 
  only of the endpoint is idle). This mechanism is provided by the 
  "OP/C" parameter in the ownership policy package. If the condition is 
  met, the endpoint accepts the request and the Call Agent making the 
  request becomes the new owner of the endpoint. If the condition is 
  not met, the endpoint will reject the request and the call will fail. 
   
  The approach described above is just one of many possible ways of 
  using the ownership packages described in this document. Other 
  approaches are also possible. 
 
6.0.  IANA Considerations 
 
  The MGCP packages included in this document should be registered with 
  IANA as indicated in Appendix C.1 in [2] using the following 
  information: 
  Package Name     Title                  Version Number 
   
      RA           Reassociate                 0 
      OP           Ownership Policy            0 
      NL           Notified Entity List        0 
 
7.0.  Security Considerations 
 
  Section 5 of the base MGCP specification [2] discusses security 
  requirements for the base protocol, which apply equally to the 
  package defined in this document. Use of a security Protocol such as 
  IPsec (RFC 2401, RFC 2406) that provides per message authentication 
  and integrity services is required in order to ensure that requests 
  and responses are obtained from authenticated sources and that 
  messages have not been modified.  Without such services, gateways and 
  Call Agents are open to attacks. 
   
  For example, without such security services an attacker could 
  masquerade as a Call Agent and initiate a denial of service attack by 
  resetting endpoints that were involved in valid calls. Another attack 
  using the package described in this document could involve re-
  directing endpoints to itself so that it now acts as the Call Agent 
  for those endpoints. 
 









 
B.  Foster                   Informational                    [Page 10] 

                        MGCP Ownership Packages            January 2005 

8.0.  Normative References 
 
  [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement  
      Levels", BCP 14, RFC 2119, March 1997. 
   
  [2] F.  Andreasen, B.  Foster "Media Gateway Control Protocol (MGCP)  
      Version 1.0", RFC 3435, January 2003 
   
  [3] PacketCableTM Network-Based Call Signaling Specification 
   
   
Author's Address 
 
  Bill Foster 
  Cisco Systems 
  EMail: bfoster@cisco.com 
   
Intellectual Property Statement 
   
  The IETF takes no position regarding the validity or scope of any 
  intellectual property or other rights that might be claimed to  
  pertain to the implementation or use of the technology described in 
  this document or the extent to which any license under such rights 
  might or might not be available; neither does it represent that it 
  has made any effort to identify any such rights.  Information on the 
  IETF's procedures with respect to rights in standards-track and 
  standards-related documentation can be found in BCP-11.  Copies of 
  claims of rights made available for publication and any assurances of 
  licenses to be made available, or the result of an attempt made to 
  obtain a general license or permission for the use of such 
  proprietary rights by implementors or users of this specification can 
  be obtained from the IETF Secretariat. 
   
  The IETF invites any interested party to bring to its attention any 
  copyrights, patents or patent applications, or other proprietary 
  rights which may cover technology that may be required to practice 
  this standard.  Please address the information to the IETF Executive 
  Director. 
   
Full Copyright Statement 
 
  Copyright (C) The Internet Society (year). This document is subject 
  to the rights, licenses and restrictions contained in BCP 78, and 
  except as set forth therein, the authors retain all their rights. 
   
  This document and the information contained herein are provided on an 
  "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 
  OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 
  ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 
  INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 
  INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 
  WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
   

 
B.  Foster                   Informational                    [Page 11] 

                        MGCP Ownership Packages            January 2005 

Acknowledgement 
   
  Funding for the RFC Editor function is currently provided by the 
  Internet Society. 
 
 
















































 
B.  Foster                   Informational                    [Page 12]