One document matched: draft-taylor-midcom-semantics-00.txt




   Middlebox Communications (midcom)                                    
   Internet Draft                                            Tom Taylor 
   Document: draft-taylor-midcom-semantics-00.txt       Nortel Networks 
   Expires: December 2002                                     June 2002 
    
    
             Semantics Which The MIDCOM Protocol Must Support 
    
    
Status of this Memo 
    
   This document is an Internet-Draft and is in full conformance with 
   all provisions of Section 10 of RFC2026 [1].  
    
   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. 
    
 
Abstract 
    
   This document is written to aid the process of selecting and 
   completing the definition of the MIDCOM protocol, which will operate 
   between MIDCOM Agents and Middleboxes such as firewalls and NATs.  It 
   describes the semantics which the protocol must support.  These 
   semantics are derived from the MIDCOM requirements and the MIDCOM 
   usage scenarios which helped to inspire the requirements.  
    
   This is intended to be a working document of the IETF Middlebox 
   Communications (MIDCOM) Working Group. 
    
    
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 [2]. 
    
   The notation [X:y] (example [3:2.14]) denotes section y of reference 
   X. 
 
Taylor                 Expires - December 2002               [Page 1] 
                           MIDCOM Semantics                  June 2002 
 
 
    
   In message flows, A->M indicates information passed from the MIDCOM 
   Agent to the Middlebox.  M->A indicates information passed from the 
   Middlebox to the MIDCOM Agent. 
    
    
Table of Contents 
    
   1. Introduction...................................................3 
      1.1 Terminology................................................3 
      1.2 Open Issues................................................3 
   2. Semantic Implications Of The MIDCOM Framework..................5 
      2.1 Agent Identity.............................................5 
      2.2 MIDCOM Session.............................................5 
      2.3 Filters, Policy Actions, Policy Rules......................5 
      2.4 MIDCOM Scenarios...........................................6 
      2.5 MIDCOM Timers.............................................10 
   3. Semantic Implications Of The MIDCOM Requirements..............10 
   4. MIDCOM Semantics: Pulling It All Together.....................15 
      4.1 MIDCOM Session Initiation.................................15 
      4.2 Policy Rule Installation..................................16 
      4.3 Rule Delete...............................................17 
      4.4 Rule Reset................................................17 
      4.5 Rule Query................................................18 
      4.6 Policy Rule Bundling......................................19 
      4.7 Bundle Delete.............................................20 
      4.8 Autonomous Rule Deactivation..............................20 
      4.9 Middlebox Status..........................................21 
      4.10 Session Audit............................................21 
      4.11 Session Termination......................................22 
   5. Formal Syntax.................................................23 
   Security Considerations..........................................24 
   References.......................................................24 
   Acknowledgments..................................................24 
   Author's Addresses...............................................24 
    
    












 
 
Taylor                 Expires - December 2002               [Page 2] 
                           MIDCOM Semantics                  June 2002 
 
 
1. Introduction 
    
   This document presents the semantics which must be supported by the 
   MIDCOM protocol.  The purpose and framework within which this 
   protocol will operate are described in [3].  The detailed 
   requirements which the protocol must satisfy are described in [4]. 
    
   This document first reviews the framework and requirements and draws 
   out their implications for the semantics of the protocol.  It then 
   summarizes the results as a series of possible information flows 
   between the MIDCOM Agent and Middlebox and associated behaviour.  
   Finally it specifies the semantics formally using ABNF. 
    
1.1 Terminology 
    
   "MIDCOM Agent" and "Middlebox" have the meanings given in [3].   
    
   Terminology is inconsistent between the framework and the 
   requirements documents.  This document assumes that the term "Policy 
   Rule" defined in [3] is the same concept as "ruleset" in [4]. 
    
1.2 Open Issues 
    
   The ideas in this initial version of this document were originally 
   presented to the MIDCOM E-mail list for discussion.  A number of 
   issues were raised during that discussion, and others have been 
   identified during the writing of this document. 
    
1.2.1 Support for failover between Agents 
    
   The requirements [4:2.2.7] include the ability for more than one 
   Agent to work on the same ruleset.  This requirement was inserted at 
   least in part to support failover between Agents.  The open question 
   is whether failover must be supported on a per-session basis or on a 
   per-ruleset basis.  It is still necessary to share rulesets because 
   of the possibility of load sharing between Agents, as one example. 
    
1.2.2 Meaning Of multiple filter tuples in the same Policy Rule 
    
   [3] allows for multiple filter tuples in the same Policy Rule, but 
   does not say what this means.  It is proposed that the intent be that 
   the tuples are combined by a Boolean AND. 
    
1.2.3 Need To Support Address Ranges Within Filters 
      
   Is there such a need, and how should ranges be expressed if they are 
   required? 


 
 
Taylor                 Expires - December 2002               [Page 3] 
                           MIDCOM Semantics                  June 2002 
 
 
1.2.4 Meaning of "deterministic result" 
    
   List discussion did not conclude on what a deterministic result 
   [4:2.1.12] would mean in the case of conflicting rules.  The basic 
   problem is this: current NAT and firewall behaviour is based on 
   queuing a set of rules and evaluating successive members of the queue 
   for applicability on a per-packet basis.  As a result, the Middlebox 
   is unaware if conflict amongst its rules exists: the first applicable 
   rule prevails. 
    
   From the point of view of the Middlebox, its behaviour is indeed 
   deterministic in the presence of conflict.  However, an individual 
   MIDCOM Agent can never know in advance whether a rule it is adding 
   will have the effect it desires. 
    
   There are three possible resolutions to this dilemma.  The first is 
   to say that it is sufficient for outcomes to be deterministic from 
   the point of view of the Middlebox.  The second is to require the 
   Middlebox to perform an analysis of its installed rules whenever a 
   rule is added, changed, or deleted, and characterize the packets for 
   which each Agent's rules will fail to apply.  The final possibility 
   is for the Agent to be able to learn the complete set of active rules 
   so it can apply its own analysis. 
    
   Requiring additional analytical capability on the Middlebox may not 
   be practical, on grounds of device cost.  Giving each Agent access to 
   the full set of active rules will raise privacy concerns.  Hence the 
   only viable alternative may be to say that requirement [4:2.1.12] is 
   satisfied if a particular sequence of rules always has the same 
   result at the Middlebox, even if that result is not predictable by an 
   Agent.  This conclusion needs to be confirmed by the MIDCOM Working 
   Group. 
    
1.2.5 Support For Symmetric Mapping 
    
   Is there a requirement to force a mapping for bidirectional flows 
   such that the mapped address and port are identical for the outgoimg 
   and the incoming flow? 
    
1.2.6 Meaning Of End Of Session 
    
   Does the ending of a MIDCOM session uninstall all of the Policy Rules 
   installed during that session? 
    
1.2.7 Indefinite Policy Rule Life 
    
   Related to the previous question: should the protocol allow 
   installation of rules which never expire?  This would be especially 
   useful to open a permanent pinhole for incoming calls. 
 
 
Taylor                 Expires - December 2002               [Page 4] 
                           MIDCOM Semantics                  June 2002 
 
 
1.2.8 Scope Of Queries 
    
   As the scenarios illustrate, it is necessary that the Agent be 
   allowed to query installed rules, to determine existing address 
   mappings.  The question is whether the Agent is allowed to learn of 
   rules which were not installed within its MIDCOM session.  The answer 
   is propobably that the scope of a query is determined by local 
   policy. 
    
    
2. Semantic Implications Of The MIDCOM Framework  
    
2.1 Agent Identity 
    
   The framework speaks of the ability for a MIDCOM Policy Decision 
   Point to revoke authorization for a MIDCOM Agent [3:2.9], and of 
   MIDCOM Agent profiles [3:2.11].  For these concepts to be 
   enforceable, the MIDCOM Agent must be associated with an identifier 
   which must be presented at least at the start of a MIDCOM session and 
   which must be associated with its profile. 
    
2.2 MIDCOM Session 
     
   [3:2.12] speaks of the MIDCOM session.  [3:4] provides a requirement 
   for a formal information exchange to start up or to terminate a 
   MIDCOM session.  Start-up is initiated by the MIDCOM Agent, while 
   either the Agent or Middlebox may terminate the session.  This 
   requirement raises the possibility of using a session identifier in 
   subsequent messages to indicate the session to which each is related.  
   This is not a hard requirement: the Agent identifier could be used 
   instead to represent the association between the Agent and the 
   Middlebox.  The advantages of separately identifying the session are 
   that: 
    
     .  more than one session could be supported between the same Agent-
        Middlebox pair; 
         
     .  it may be easier to hand off a session than an Agent identity in 
        the case of failover between Agents. 
    
2.3 Filters, Policy Actions, Policy Rules 
    
   [3:2.15] defines a Policy Rule as a combination of one or more 
   filters and an action.  The basic idea is that packets matching the 
   filter have the action applied to them. 
    
   By redistributing the semantic content of the Policy Rule between the 
   filter and action portions, it is possible to come up with a unified 
   semantic representation which has the same form for all the 
 
 
Taylor                 Expires - December 2002               [Page 5] 
                           MIDCOM Semantics                  June 2002 
 
 
   applications intended for the MIDCOM protocol.  The filter becomes 
   more complex, but the actions reduce to "permit" and "deny" only.  
   (Secondary action qualifiers such as "log", "alarm", and "ignore" may 
   also be needed.) 
    
   The proposed representation of the filter part has the form: 
    
     {source address, mapped address, destination address, protocol} 
    
   Each of the three addresses has the same sub-structure, except that 
   the mapped address has additional components (see section 2.4 second 
   scenario).  The semantic components of an address are: 
    
         .  address type (IPv4, IPv6, tunnel ID, ...) 
             
         .  address space identifier.  The initial address space 
            identifiers "public" and "private" are defined to support 
            the MIDCOM applicability statement [3:9]. 
             
         .  address value.  For IP addresses, this includes a port 
            component.  It is an open issue, whether the MIDCOM 
            protocol should be able to express address ranges. 
    
   The address value in any address may be the wildcard "ANY".  This 
   allows rule setup in circumstances where an endpoint is not yet known 
   or mapping is inapplicable or irrelevant.  In Policy Rules sent from 
   the Agent to the Middlebox, the mapped address value may also be the 
   wildcard "CHOOSE", indicating that a mapping is desired. 
     
   Note that this definition of a filter is unidirectional.  Where the 
   MIDCOM protocol needs to express requests applying to both directions 
   of a bidirectional flow, additional semantic elements will have to be 
   added. 
     
   The possibility of multiple filter tuples in one Policy Rule is 
   problematic: the semantics need definition.  The Boolean OR is not 
   needed, since it can be achieved by having multiple rules, each with 
   one filter tuple and all with the same action.  It is therefore 
   proposed that if multiple filter tuples are present within the same 
   Policy Rule they are to be ANDed.  Where the mapped address value is 
   "CHOOSE", an additional semantic is proposed: that the requested 
   mapping shall be the same in each filter term, so that the overall 
   meaning is that the mapping applies to an ANDed filter condition on 
   the flow endpoints. 
     
2.4 MIDCOM Scenarios 
    
   [3:7] presents three scenarios for the operation of the MIDCOM 
   protocol in mid-session. 
 
 
Taylor                 Expires - December 2002               [Page 6] 
                           MIDCOM Semantics                  June 2002 
 
 
    
Scenario [3:7.1], firewall control 
    
   The messaging sequence includes three MIDCOM operations: 
    
     a) A->M: Open up the firewall to outgoing flows of RTP and RTCP. 
        M->A: OK. 
         
     b) A->M: Open up the firewall to incoming flows of RTP and RTCP. 
        M->A: OK. 
         
     c) A->M: Close firewall to the previously enabled incoming and 
        outgoing flows. 
        M->A: OK. 
    
   Operations a) and b) have the semantics of Policy Rule Activation.  
   One Policy Rule is set for RTP, a second for RTCP, in each case.  
   Operation c) uninstalls the four rules installed by a) and b).  
   Middlebox return codes are discussed in section 3 below. 
    
Scenario [3:7.2], NAPT control 
      
   The messaging sequence includes the following MIDCOM operations: 
    
      a) A->M: Query Port-BIND for mapped address (assumed known), port 
         5060. 
         M->A: returns Port-BIND. 
          
      b) A->M: Query NAT session descriptor for SIP flow from external 
         to private endpoint. 
         M->A: returns session descriptor. 
          
      c) A->M: Create NAT sessions for outgoing flows of RTP and RTCP.  
         Link sessions to SIP control session. 
         M->A: returns session descriptor. 
          
      d) A->M: Create Port-BINDs for incoming RTP, RTCP flows (adjacent 
         ports). 
         M->A: returns Port-BINDs. 
          
      e) A->M: Create NAT session for incoming flows of RTP and RTCP 
         (adjacent ports).  Link session to SIP control session. 
         M->A: returns session descriptor. 
          
      f) A->M: end session bundle. 
         M->A: OK. 
    
   Operations a) and b) allow the Agent to determine the private address 
   of the internal endpoint.  In terms of the filter semantics defined 
 
 
Taylor                 Expires - December 2002               [Page 7] 
                           MIDCOM Semantics                  June 2002 
 
 
   above, these operations are equivalent to a single query requesting 
   the return of any active Policy Rules matching a filter of the form: 
    
     {external address, mapped address + port 5060, ANY, ANY} 
    
   Note the wildcarded protocol in this expression.  Presumably the 
   Middlebox will consult with the MIDCOM PDP to determine the permitted 
   scope of the query.  The returned Policy Rule (probably only one in 
   this example) should be associated with an identifier so that it can 
   be referred to in later operations.  Issue: should queries return 
   rules set by administration?  In general, what is the relationship of 
   query scope to the MIDCOM session within which the query is made?  Is 
   this a local policy issue? 
    
   Operation c) is similar to operation a) in the previous case, except 
   that operation c) requires a further transaction to create a session 
   bundle.  The Agent provides the identifier of the rule returned in 
   the query (operations a) and b)) and the identifiers of the new rules 
   just installed, and asks that they be grouped.  The Middlebox returns 
   a group identifier. 
    
   Operations d) and e) are semantically equivalent to activating a 
   single Policy Rule, provided that additional semantics are present to 
   indicate that adjacent ports are required.  Accordingly, the semantic 
   description of the <mapped address> part of the filter as presented 
   in section 2.3 is augmented as follows.  If the address type is IPv4 
   or IPv6 and the address value is "CHOOSE", then the following 
   additional components may be present: 
    
         .  port count.  Requests mappings for this number of 
            consecutive ports.  If port count is absent, 1 port is 
            requested. 
             
         .  parity.  Requests that the first port of the series has the 
            given parity.  If parity is absent the first port may be of 
            either parity. 
    
   With these additions, operations d) and e) are equivalent to a 
   request to install a rule of the form: 
    
     filter={external endpoint address,  
      {type=IPv4, space="public", value="CHOOSE", count=2, parity=even}, 
      internal endpoint address + port, UDP}, 
     action="permit" 
    
   The port part of the external endpoint address has content 'ANY', 
   since in general the source port for RTP/RTCP transmission will be 
   unknown.  The internal endpoint address contains a port value for the 

 
 
Taylor                 Expires - December 2002               [Page 8] 
                           MIDCOM Semantics                  June 2002 
 
 
   receiving RTP port.  The Middlebox MUST assume that the internal 
   endpoint receives RTCP at the next higher port. 
    
   The Middlebox returns the same rule with the mapped address value 
   assigned.  An additional information exchange groups the with the 
   others in the same session bundle. 
    
   Operation f) requires an information exchange where the Agent 
   supplies the session bundle identifier and requests deactivation of 
   all rules in the session bundle. 
    
Scenario [3:7.3]: Middlebox implementing NAPT and firewall 
       
   The messaging sequence includes the following MIDCOM operations: 
    
     a) A->M: Query Port-BIND for mapped address (assumed known), port 
        5060. 
        M->A: returns Port-BIND. 
         
     b) A->M: Query NAT session descriptor for SIP flow from external to 
        private endpoint. 
        M->A: returns session descriptor. 
         
     c) A->M: Create NAT sessions for outgoing flows of RTP and RTCP.  
        Link sessions to SIP control session. 
        M->A: returns session descriptor. 
         
     d) A->M: Open up the firewall to outgoing flows of RTP and RTCP. 
        M->A: OK. 
         
     e) A->M: Create Port-BINDs for incoming RTP, RTCP flows (adjacent 
        ports). 
        M->A: returns Port-BINDs. 
         
     f) A->M: Create NAT session for incoming flows of RTP and RTCP.  
        Link session to SIP control session. 
        M->A: returns session descriptor. 
         
     g) A->M: Open up the firewall to incoming flows of RTP and RTCP. 
        M->A: OK. 
         
     h) A->M: end NAPT session bundle. 
        M->A: OK. 
         
     i) A->M: Close firewall to the previously enabled incoming and 
        outgoing flows. 
        M->A: OK. 
         
   a) and b) are the same as in the previous case.   
 
 
Taylor                 Expires - December 2002               [Page 9] 
                           MIDCOM Semantics                  June 2002 
 
 
    
   Using the filter semantics described in section 2.3, the NAPT 
   operations in c) and the firewall operations in d) are both implied 
   by the same Policy Rules.  For example, the outgoing RTP flow is 
   enabled by specifying a Policy Rule of the form: 
    
     filter={ internal endpoint address (port = ANY), 
       {type=IPv4, space="public", value="CHOOSE"}, 
       external endpoint address + port, UDP}, 
     action="permit" 
    
   In a similar way, f) and g) are both accomplished by the same 
   information exchange as for operations d) and e) in the previous 
   case. 
    
   Finally, h) and i) are semantically equivalent to deactivation of the 
   bundle of rules created in the previous steps. 
    
Summary Of Observations 
    
   In summary, the three scenarios have demonstrated the need for 
   information exchanges supporting querying of active rules against a 
   pattern, activating Policy Rules (generally with wildcards), creating 
   bundles of Policy rules, deactivating individual policy rules, and 
   deactivating bundles of Policy Rules.  In addition, semantic content 
   had to be added to the mapped address portion of the filter to 
   express requirements for consecutive port numbers and their parity. 
    
2.5 MIDCOM Timers 
    
   [3:8.3] talks about the potential usefulness of timers in the MIDCOM 
   protocol, to facilitate resource cleanup.  This raises the question 
   of whether the timer values should be visible to the Agent.  Given 
   that their intended use is to compensate for Agent outages, an 
   information exchange prior to timer expiry seems indicated. 
    
    
3. Semantic Implications Of The MIDCOM Requirements 
    
   This section reviews the semantic implications of the requirements 
   documented in [4]. 
    
[4:2.1.1]: authorization. 
    
   This requirement implies the need for credentials in any request the 
   Agent sends to the Middlebox, sufficient to allow the latter to 
   determine the Agent's scope of authority. 
    

 
 
Taylor                 Expires - December 2002              [Page 10] 
                           MIDCOM Semantics                  June 2002 
 
 
[4:2.1.2]: one MIDCOM Agent dealing with multiple Middleboxes 
    
   This implies that a parameter must be present in each message coming 
   from a Middlebox, identifying that Middlebox uniquely.  The session 
   identifier discussed in section 2.2 might serve that purpose, beyond 
   the initial setup of the session. 
    
[4:2.1.3]: one Middlebox dealing with multiple MIDCOM Agents 
    
   Similarly, this implies that a parameter must be present in each 
   message coming from a MIDCOM Agent, identifying that MIDCOM Agent 
   instance uniquely.  MIDCOM Agent identifiers were discussed in 
   section 2.1.  Again, the session identifier may serve the purpose 
   after initial session setup. 
    
[4:2.1.4]: deterministic Middlebox behaviour when multiple MIDCOM 
   Agents interact with it. 
    
   This implies several points: 
    
         .  well-defined Middlebox behaviour when it processes 
            requests, particularly when conflicts are encountered; 
             
         .  the behavioural equivalent of mutual exclusion, such that 
            requests affecting the same resources (for example, 
            involving overlapping filter specifications) are required 
            to be processed serially; 
             
         .  requests can be of sufficiently large extent that the Agent 
            can accomplish what it needs in a single request, thus 
            avoiding deadlock. 
    
[4:2.1.5]: known and stable state 
    
   The explanation of this requirement suggests that a request 
   identifier parameter is needed for each request, that each request 
   must have a reply, and that the reply must include the request 
   identifier parameter as well as the result of the request. 
    
   The requirement also appears to imply the need for a MIDCOM Agent to 
   be able to audit the Middlebox state as it relates to requests made 
   in the past by that Agent.  As an optimization, the audit request may 
   include parameters limiting the scope of the audit.  The response 
   includes a state parameter expressed as a sequence of Policy Rules.  
   In view of the potential volume of information, provision should be 
   made for segmentation of the response. 
    
   Auditing can be seen as an additional use of the query exchange 
   documented as part of the scenario analysis in section 2.4. 
 
 
Taylor                 Expires - December 2002              [Page 11] 
                           MIDCOM Semantics                  June 2002 
 
 
    
[4:2.1.6]: Middlebox reporting status 
    
   This implies a a need for a Middlebox to send autonomous 
   notifications to a MIDCOM Agent.  It is assumed that [4:2.1.6] 
   relates to the operational status of the Middlebox as a whole, and 
   possibly also the state it retains on behalf of a given Agent.  
   Accordingly, the status notification should be able to express the 
   following situations: 
         .  Middlebox going out of service 
         .  Middlebox returned to service, having retained all state 
            (i.e. sessions, Policy Rules and associated timers) 
         .  Middlebox returned to service, state information lost or 
            stale 
         .  Middlebox congested. 
    
[4:2.1.7]: autonomous reporting of conditions and autonomous actions 
    
   The main thrust of the explanation of this requirement is that the 
   Middlebox be able to report autonomously actions taken with regard to 
   particular Policy Rules.  The information passed must therefore 
   include the Policy Rule identifier(s), the action taken, and the 
   reason for the action. 
    
[4:2.1.8]: mutual authentication 
    
   This requirement bears upon session startup in the first place, with 
   proper follow-up to maintain the integrity of the session in 
   subsequent messages. 
    
[4:2.1.9]: either entity can terminate a session 
    
   This implies a formal exchange to terminate a session.  Issue: does 
   the end of a session uninstall all Policy Rules installed during that 
   session? 
    
[4:2.1.10]: MIDCOM Agent can determine success or failure of a 
   request 
    
   This implies that every request must have a reply, and the reply must 
   indicate the outcome of the request. 
    
[4:2.1.11]: version interworking 
    
   There seems to be agreement to include protocol version in each 
   message, governing the content of that message.  It is possible the 
   initial message of a session should include an additional parameter 
   listing the versions supported by the originator. 
    
 
 
Taylor                 Expires - December 2002              [Page 12] 
                           MIDCOM Semantics                  June 2002 
 
 
   If the protocol has identifiable options the initial message of the 
   session in each direction should include a parameter indicating what 
   options the message sender supports. 
    
[4:2.1.12]: deterministic behaviour for overlapping rulesets 
    
   There is some dispute over what deterministic means in this case.  
   The issue is described at length in section 1.2.4 above.  In keeping 
   with existing implementation, we postulate an aggregate model of 
   Middlebox operation as follows: 
    
      a) rules are retained in their original form (including mappings) 
         rather than aggregated; 
          
      b) as each packet passes through the Middlebox, it is checked 
         against the filter portion of each active rule in turn; 
          
      c) if a match is found, the action associated with that rule is 
         applied; 
          
      d) if no match is found, the default action set by the Middlebox 
         administrator is applied; 
          
      e) rules are evaluated in the order in which they were installed 
         (first-come, first-served). 
    
   For a given sequence of rules this always gives the same per-packet 
   outcomes.  In that sense it is deterministic, even if the Agent 
   installing a given rule cannot know in advance what the effect of 
   that rule will be unless it knows the complete sequence of rules 
   installed at the Middlebox.  
    
[4:2.2.1]: extensibility 
    
   It would be possible to add content to the semantic description as a 
   placeholder for new material, but there doesn't seem to be much point 
   in doing so. 
    
[4:2.2.2]: control of multiple functions 
    
   The semantic content of firewall and NAT/NAPT control have been 
   captured in the Policy Rule description in section 2.3.  This 
   formulation may also be applicable to other Middlebox types. 
    
[4:2.2.3]: ruleset groups 
    
   The need for information exchanges to create such groups (referred to 
   as session bundles) has been documented above in connection with the 
   scenarios. 
 
 
Taylor                 Expires - December 2002              [Page 13] 
                           MIDCOM Semantics                  June 2002 
 
 
    
[4:2.2.4]: ruleset lifetime extension 
    
   This implies a possible need for several information exchanges: 
    
         .  allowing the Agent to associate a lifetime (and perhaps a 
            grace period) with a Policy rule at the time of 
            installation 
             
         .  allowing the Agent to audit the remaining lifetime for a 
            Policy Rule (most reasonably as a parameter of a general 
            Policy Rule audit capability) 
             
         .  allowing the Middlebox to indicate when a Policy Rule is 
            about to expire 
             
         .  allowing the Agent to reset the remaining lifetime. 
    
[4:2.2.5]: action on unknown attributes 
    
   This requires a sub-field within certain attributes indicating 
   whether the attribute can be ignored if not understood or stops the 
   request from being processed.  It also implies that the 
   responses to individual requests must identify components of the 
   request which have caused failure or which have been ignored. 
    
[4:2.2.6]: failure reasons 
    
   A failure reason element must be a potential part of responses.  
   Possible failure reasons are listed in the next section. 
    
[4:2.2.7]: multiple authorised Agents working on the same ruleset 
    
   This implies a requirement either that Policy Rule identifiers are 
   unique across MIDCOM sessions or else that they are always associated 
   with a specific session and the session identifier has to be provided 
   in all messages dealing with Policy Rules.  The latter is probably 
   the better approach, because it supports the idea that the 
   termination of a MIDCOM session uninstalls all rules associated with 
   that session.  Of course, all of this discussion masks a set of 
   requirements on operations outside of the MIDCOM protocol: sharing of 
   Policy Rule and MIDCOM session identifiers between Agents, and 
   authorization of one Agent to intervene in a session set up by 
   another one. 
    
[4:2.2.8]: transport of filtering rules 
    
   The filters of this semantic analysis are not, of course, the 
   concrete expression of filters in the protocol itself.  This analysis 
 
 
Taylor                 Expires - December 2002              [Page 14] 
                           MIDCOM Semantics                  June 2002 
 
 
   indicates within which information exchanges filters will have to be 
   carried. 
    
[4:2.2.9]: matching parity ("oddity") 
    
   This requirement has already been recognized and incorporated in the 
   semantic representation of a Policy Rule filter in section 2.4.  See 
   the discussion of the [3:7.2] scenario. 
    
[4:2.2.10]: ranges of ports 
    
   Also covered in section 2.4.  The requirement extends beyond RTP/RTCP 
   pairs to sequences of such pairs required for layered encoding. 
    
[4:2.2.11]: contradictory actions for sub-filters 
    
   Assuming that the contradictory actions are represented by separate 
   Policy Rules, and assuming the model of Middlebox operation described 
   in the discussion of requirement [4:2.1.12], this requirement is met 
   provided that the rule with the sub-filter is installed before the 
   main rule.  This is an operational requirement given semantics 
   already defined. 
    
Requirements For Security 
    
   The security-related requirements postulated in [4:2.3] will have 
   semantic consequences, but the details depend on the chosen 
   mechanisms. 
    
    
4. MIDCOM Semantics: Pulling It All Together 
    
   This section describes the required MIDCOM information exchanges in 
   detail.  The exchanges shown here will not necessarily map one-to-one 
   into the messages of the MIDCOM protocol which realize them.  
    
4.1 MIDCOM Session Initiation 
    
   A->M: Session Initiate Request 
   M->A: Session Initiate Answer 
    
   The Session Initiate Request initiates an association between a 
   MIDCOM Agent and a Middlebox.  As required by [3:4], this is always 
   sent by the Agent.  Required parameters include: 
      .  the Agent identifier, 
      .  authenticating information, 
      .  MIDCOM protocol version information, and 
      .  information on MIDCOM extensions supported by the Agent. 
    
 
 
Taylor                 Expires - December 2002              [Page 15] 
                           MIDCOM Semantics                  June 2002 
 
 
   The Session Initiate Answer indicates the Middlebox acceptance or 
   rejection of the proposed session.  It must contain the following 
   information:  
    
      .  the Middlebox identifier, 
      .  authenticating information  
      .  MIDCOM protocol version information, and 
      .  result indicator.  Possible results are "successful", "not 
         authorized", "too busy", "version not supported", and "request 
         error".  The latter result covers syntax errors, protocol 
         errors, and unrecognized elements. 
    
   If the request was successful, the response must also contain: 
    
      .  a MIDCOM session identifier unique at the Middlebox, and  
      .  information on MIDCOM extensions supported by the Middlebox. 
    
4.2 Policy Rule Installation 
    
   A->M: Rule Install Request 
   M->A: Rule Install Answer 
    
   The Rule Install Request is a request to the Middlebox to add the 
   rule presented in the request.  It is assumed that the Middlebox 
   implements the aggregate model of rule application described in the 
   discussion of requirement [4:2.1.12] in section 3. 
    
   The Rule Install Request must contain the following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  MIDCOM session identifier 
     .  a Policy Rule identifier unique to the session 
     .  the Policy Rule itself.  The content of the Policy Rule has been 
        discussed in sections 2.3 and 2.4 above, and is summarized 
        formally in section 5. 
     .  requested rule lifetime.  Issue: should the range of possible 
        values include a value for "forever", which means that the rule 
        could outlast the session? 
    
   Upon receiving a Rule Install Request, the Middlebox must first 
   determine whether the requesting Agent has the authority to make this 
   request, taking into account the filter(s) specified within the rule.  
   If the mapped address component of the filter(s) contains CHOOSE 
   elements, the Middlebox must if possible make concrete address and/or 
   port assignments to these elements.  In any event it must return a 
   Rule Install Answer. 
    
   The Rule Install Answer must contain the following information: 
 
 
Taylor                 Expires - December 2002              [Page 16] 
                           MIDCOM Semantics                  June 2002 
 
 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  the Policy Rule identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", "out of resources", or "request 
        error". 
     .  if successfully installed, the Policy Rule itself, with any 
        CHOOSE components replaced by actual assignments.  If multiple 
        ports were requested, the response provides the first (lowest-
        numbered) port of the assigned sequence and echoes back the 
        number of requested (and assigned) ports. 
     .  if the rule was successfully installed, the granted rule 
        lifetime. 
    
4.3 Rule Delete 
    
   A->M: Rule Delete Request 
   M->A: Rule Delete Answer 
    
   The Rule Delete Request asks the Middlebox to uninstall the indicated 
   Policy Rule.  The requesting Agent may ask for deletion of a rule 
   created in a session different from its own.  It is a matter of local 
   policy, whether such a request will be granted.  It is possible to 
   delete rules individually even when they are contained in a bundle; 
   deletion automatically removes the Policy Rule identifier from the 
   bundle.  The Rule Delete Request must contain the following 
   information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  session identifier of the MIDCOM session in which the Policy 
        Rule was created 
     .  Policy Rule identifier of the rule to be uninstalled. 
    
   The Middlebox responds with a Rule Delete Answer.  This must contain 
   the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  the Policy Rule identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", or "request error". 
    
4.4 Rule Reset 
    
   A->M: Rule Reset Request 
 
 
Taylor                 Expires - December 2002              [Page 17] 
                           MIDCOM Semantics                  June 2002 
 
 
   M->A: Rule Reset Answer 
    
   The Rule Reset Request asks the Middlebox to rest the remaining 
   lifetime of the indicated Policy Rule.  The requesting Agent may ask 
   for reset of a rule created in a session different from its own.  It 
   is a matter of local policy, whether such a request will be granted.  
   The Rule Reset Request must contain the following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  session identifier of the MIDCOM session in which the Policy 
        Rule was created 
     .  Policy Rule identifier of the rule to be reset 
     .  Requested new lifetime 
    
   The Middlebox responds with a Rule Reset Answer.  This must contain 
   the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  the Policy Rule identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", or "request error" 
     .  if the request was successful, the new lifetime granted to the 
        rule. 
    
4.5 Rule Query 
    
   A->M: Rule Query Request 
   M->A: Rule Query Answer 
    
   The Rule Query Request is used to determine installed rules matching 
   a specific pattern.  The permitted scope of the query is assumed to 
   be a matter of local policy, although an issue has been raised about 
   this (issue 1.2.8).  The Rule Query Request must contain the 
   following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  MIDCOM session identifier 
     .  a filter expression of the same form as that permitted in a 
        Policy Rule, except that within the mapped address component 
        CHOOSE wildcards are not permitted. 
    
   The Middlebox must respond with a Rule Query Answer.  The Rule Query 
   Answer must contain the following information: 
    
     .  Middlebox identifier 
 
 
Taylor                 Expires - December 2002              [Page 18] 
                           MIDCOM Semantics                  June 2002 
 
 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", or "request error". 
     .  zero or more Policy Rules.  The reported Policy Rules are 
        restricted to those which local policy permits the Agent to 
        know about.  A Policy Rule is reported if its filter matches or 
        overlaps the given filter.  "Overlap" is defined as a condition 
        where for the filters being compared each of the source 
        endpoint address, mapped address, destination endpoint address, 
        and protocol have a non-empty intersection. 
    
   For each reported Policy Rule, the Middlebox must also report 
    
     .  remaining lifetime 
     .  if allowed by local policy, the Policy Rule identifier and the 
        session identifier for the MIDCOM session in which the Policy 
        Rule was created. 
    
4.6 Policy Rule Bundling 
    
   A->M: Rule Bundle Request 
   M->A: Rule Bundle Answer 
    
   The Rule Bundle Request asks that a set of Policy Rules created 
   within the same session be bundled together to share a common fate.  
   The information required in the request is: 
    
     .  Agent identifier 
     .  authenticating information 
     .  MIDCOM session identifier 
     .  bundle identifier, unique within the MIDCOM session.  If the 
        bundle identifier does not already exist, this request has the 
        semantics of bundle creation; otherwise it implies addition of 
        the listed Policy Rule(s) to the existing bundle. 
     .  one or more Policy Rule identifiers, of Policy Rules which have 
        been installed within this MIDCOM session. 
    
   The Middlebox must respond with the Rule Bundle Answer.  This must 
   contain the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", or "request error". 

   If the request is successful, the following additional information 
   must be provided: 
 
 
Taylor                 Expires - December 2002              [Page 19] 
                           MIDCOM Semantics                  June 2002 
 
 
    
     .  the bundle identifier 
     .  the complete list of all Policy Rule identifiers in the bundle. 
    
4.7 Bundle Delete 
    
   A->M: Bundle Delete Request 
   M->A: Bundle Delete Answer 
    
   The Bundle Delete Request asks the Middlebox to uninstall the 
   indicated bundle.  The requesting Agent may ask for deletion of a 
   bundle created in a session different from its own.  It is a matter 
   of local policy, whether such a request will be granted.  The Bundle 
   Delete Request must contain the following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  session identifier of the MIDCOM session in which the bundle was 
        created 
     .  bundle identifier of the bundle to be uninstalled. 
    
   The Middlebox responds with a Bundle Delete Answer.  This must 
   contain the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier, copied from the request 
     .  the bundle identifier, copied from the request 
     .  a result indicator.  Possible results are "successful", "not 
        authorized", "too busy", or "request error". 
    
4.8 Autonomous Rule Deactivation 
    
   M->A: Rule Removal Notification 
   A->M: Rule Removal Acknowledgement 
    
   The Rule Removal Notification is issued by the Middlebox when a rule 
   is removed for any reason other than a request from the Agent that 
   created it.  The notification must contain the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier of the session in which the rule was 
        created 
     .  Policy Rule identifier of the uninstalled rule 
     .  Reason information.  Possible reasons may include lifetime 
        expiry, removal by other authorized entity, change in local 
        policy, or Middlebox problem. 
    
 
 
Taylor                 Expires - December 2002              [Page 20] 
                           MIDCOM Semantics                  June 2002 
 
 
   The Agent must respond with a Rule Removal Acknowledgement.  This 
   must contain the following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  MIDCOM session identifier copied from the notification 
     .  Policy Rule identifier copied from the notification. 
    
4.9 Middlebox Status 
    
   M->A: Middlebox Status Notification 
   A->M: Middlebox Status Acknowledgement 
    
   The Middlebox Status Notification is sent to advise of a material 
   change in Middlebox status.  The notification must contain the 
   following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier of the MIDCOM session the Middlebox 
        believes is in progress with the target agent 
     .  status change information.  Possible changes include pending 
        shutdown, return to service with no loss of information, return 
        to service with loss of Policy Rule state, congestion onset, 
        end of congested condition. 
     .  for pending shutdown, the time remaining until shutdown. 
    
   A notification of congestion onset indicates that during the 
   congested period the Middlebox may reject requests because it is 
   overloaded. 
    
   The Agent responds with a Middlebox Status Acknowledgement.  This 
   must contain the following information: 
    
     .  Agent identifier 
     .  authenticating information 
     .  MIDCOM session identifier copied from the notification. 
    
4.10 Session Audit 
    
   A->M: Session Audit Request 
   M->A: Session Audit Answer 
    
   The Session Audit Request asks for information on all Policy Rules 
   and bundles installed in the given session.  An Agent other than the 
   Agent which created the session may issue this request (e.g. to take 
   over from a failed Agent).  Local policy at the Middlebox governs the 
   response.  The request must contain: 
    
 
 
Taylor                 Expires - December 2002              [Page 21] 
                           MIDCOM Semantics                  June 2002 
 
 
     .  Agent identifier 
     .  authenticating information 
     .  session identifier of the MIDCOM session being audited. 
    
   The Session Audit Answer contains the following information: 
    
     .  Middlebox identifier 
     .  authenticating information 
     .  MIDCOM session identifier copied from the request 
     .  the Policy Rule identifier, Policy Rule itself, and remaining 
        lifetime of each Policy Rule installed within the session 
     .  the bundle identifier and list of Policy Rule identifiers for 
        each bundle created within the session. 
    
   It is particularly likely that the actual implementation of the 
   Session Audit Answer within the protocol uses multiple messages. 
    
4.11 Session Termination 
    
   A->M or M->A: Session Termination Request 
   M->A or A->M: Session Termination Answer 
    
   The Session Termination Request asks that the peer delete the MIDCOM 
   session and consider all Policy Rules installed in the session to be 
   deleted.  Issue, previously raised: can persistent rules be defined 
   that will outlast a session?  This request can be issued by an Agent 
   other than the Agent which created the session; local policy at the 
   Middlebox determines whether it will be acted on in this case.  The 
   request must contain the following information: 
    
     .  Requestor identifier 
     .  autheticating information 
     .  session identifier of the session to be terminated. 
    
   If a valid request is issued by the Agent which created the session, 
   the Middlebox must honour and acknowledge it.  If the request is 
   issued by the Middlebox, the Agent may either accept or refuse it.   
   (The Middlebox has a definitive means of halting a session by issuing 
   a notification of shutdown if it must do so.)  The  returned Session 
   Termination Answer must contain the following information: 
    
     .  Responder identifier 
     .  authenticating information 
     .  session identifier copied from the request 
     .  result information.  Possible results include success, refused, 
        not authorized (see below), too busy (Middlebox only), or 
        request error. 
    
    
 
 
Taylor                 Expires - December 2002              [Page 22] 
                           MIDCOM Semantics                  June 2002 
 
 
5. Formal Syntax 
    
   The following syntax specification uses the augmented Backus-Naur 
   Form (BNF) as described in RFC-2234 [5].  In keeping with the fact 
   that this is a semantic specification only, the specification 
   contains no literals. 
    
     request = sessionInitiateReq / ruleInstallReq / ruleDeleteReq /  
               ruleResetReq /ruleQueryReq / ruleBundleReq / 
               bundleDeleteReq / ruleRemovalNotif / mbStatusNotif / 
               sessionAuditReq / sessionTerminationReq 
      
     response = sessionInitiateAns / ruleInstallAns / ruleDeleteAns /  
               ruleResetAns /ruleQueryAns / ruleBundleAns / 
               bundleDeleteAns / ruleRemovalAck / mbStatusAck / 
               sessionAuditAns / sessionTerminationAns 
      
     [ ... to be completed after discussion ] 
    
     policyRule = 1*filter action  ; filters are ANDed 
      
     filter = source mapped destination protocol 
      
     source = addressTuple 
      
     mapped = (addressTuple / mapRequest) [portCount] [parity] 
     ; mapRequest may only be present in Rule Install Request  
      
     destination = addressTuple 
      
     addressTuple = addrType addrSpace addrValue [portValue] 
     ; portValue is required when addrType is an IP address type 
      
     mapRequest = addrType addrSpace (addrValue / CHOOSE) CHOOSE 
      
     addrType = IPv4 / IPv6 
      
     addrSpace = PUBLIC / PRIVATE 
      
     addrValue = address / ANY 
      
     portValue = portNumber / ANY 
    
     action = PERMIT / DENY 
    




 
 
Taylor                 Expires - December 2002              [Page 23] 
                           MIDCOM Semantics                  June 2002 
 
 
Security Considerations 
    
   This draft may receive its own discussion of security considerations, 
   but for the moment these are well covered by the discussion in [3] 
   and specific requirements in [4].  
    
    
References 
    
                     
   1  Bradner, S., "The Internet Standards Process -- Revision 3", BCP 
      9, RFC 2026, October 1996. 
    
   2  Bradner, S., "Key words for use in RFCs to Indicate Requirement 
      Levels", BCP 14, RFC 2119, March 1997. 
    
   3  P. Srisuresh, J. Kuthan, J. Rosenberg, A. Molitor, A. Rayhan, 
      "Middlebox communication architecture and framework", draft-ietf-
      midcom-framework-07.txt, February 2002 (approved as RFC). 
       
   4  R. Swale, P. Mart, P. Sijben, S. Brim, M. Shore, "Middlebox 
      Communications (midcom) Protocol Requirements", draft-ietf-midcom-
      requirements-05.txt, November 2001 (approved as RFC). 
       
   5  D. Crocker, Ed., P. Overell, "Augmented BNF for Syntax 
      Specifications: ABNF", RFC 2234, November 1997. 
    
    
    
    
Acknowledgments 
    
   Cedric Aoun contributed to the initial version of this document, 
   begun before list discussion of the topic of MIDCOM semantics.  The 
   list discussion itself benefited from interventions by Ben Campbell, 
   Bob Penfield, Paul Sijben, Martin Stiemerling, Christian Huitema, 
   Scott Brim, Juergen Quittek, Ted Hardie, John LaCour, Andrew Molitor, 
   Reinaldo Penno, Sanjoy Sen, Jiri Kuthan, James Renko, Joel Halprin, 
   Cullen Jennings, and Adina Simu. 
    
    
Author's Addresses 
    
   Tom Taylor 
   Nortel Networks 
   Ottawa, Canada 
   Phone: +1 613 736 0961 
   Email: taylor@nortelnetworks.com 

 
 
Taylor                 Expires - December 2002              [Page 24] 
                           MIDCOM Semantics                  June 2002 
 
 
     
















































 
 
Taylor                 Expires - December 2002              [Page 25] 

PAFTECH AB 2003-20262026-04-24 10:22:37