Published on iptel.org (http://www.iptel.org)

FCP Protocol Specification 16

By janakj
Created 2006-08-30 14:37
FCP rough specs + description - v.016 - 2001-01-15 - Nils Ohlmeier [1], Ulrich Abend [2]

updated by Jiri Kuthan [3]

feedback provided by Jan Janak [4]

priority 2 features are blue colored; they will be implemented in the second stage;

examples [5] are attached

The protocol specification follows the SMTPi [6]/HTTP/SIP request-response, textual, AVP protocol family. Letter capitalization does not matter. Unknown AVPs may be ignored by receivers. Multiple transactionsi [7] may utilize a single transport channel (TCP connection).^MAll FCP-maintained rules are uniquely identified by packet-matching expressions (regardless if their elements are specified explicitly or by a default value).


<FCP>::= {<Request>|<Response> } <EOL>

< EOL>::=[<CR>]<LF>

<Request>::=

        SET <RequestHeader> <PacketMatching Expression> [<SetOptions>] |
        RELEASE <RequestHeader> <PacketMatching Expression> |
        QUERY <RequestHeader> [<PacketMatching Expression>] |
        QUERYNAT <RequestHeader>
IP=<value> PORT=<value>
                   [UPPERPORT=<value>] PROTO=<value> |
        RELEASENAT <RequestHeader> IP=<value> PORT=<value> PROTO=<value>
<RequestHeader>::= <Protocol_Name_And_Version> <EOF> <Transaction Number>

<Protocol_Name_And_Version>::= FCP=1.0

<Transaction Number>::= SEQ=<value> <EOF>

<PacketMatchingExpression>::= "" |  <PacketMatchingExpression> <PMEMember> //  "" indiciates empty PME that matches every packet */

<PMEMember>::=
      { PROTO=<value>                       |  //
 Protokoll
        SRCIP=<ip-address>[/<netmask>]      |  // source ip address(es)
        DSTIP=<ip-address>[/<netmask>]      |  // destination ip address(es)
        SRCPORT={<port> | <port-range>}     |  // port number of source
        DSTPORT={<port> | <port-range>}     |  // port number of destination
        TOSFLD=<value>                   
nbsp;  |  // IPv4 TOS field
        TCPSYNALLOWED={yes|no}              |  // tcp SYN packets allowed
        ICMPTYPE=<value>                    |  // icmp type e.g. p
ing, pong
        ININTERFACE={in|out|dmz|loopback}   |  // the input interface
        OUTINTERFACE={in|out|dmz|loopback}  |  // the input interface
      } <EOF>

<netmask>::=<octet>.<octet>.<octet>.<octet>
<SetOptions>::=<Option> | <SetOption> <Option>
<Option>::=
      { ACTION={pass [<PacketModifier>] | drop | reject  [<ICMPi [8] message>]&nbs
p; }]
        TIMER=<value>                       
  // auch keep-alive
        REFLEXIVE={yes|no}
        PRIORITYCLASS=<value>
        LOG=<value>
      }  <EOF>
<PacketModifier> ::= ;<Modifier> | <PacketModifier> <Modifier>

<Modifier>::=

   {    [PROTO=<value>]              |         
;  // Protokoll
        [SRCIP=<ip-address>]         |           // source ip address
        [DSTIP=<ip-address>]         |           // destination ip address
        [SRCPORT=<port>]             |           // port number
 of source
        [DSTPORT=<port>]             |           // port number
 of destination
        [TOSFLD=<value>]                        // IPv4 TO
S field
   }
<ICMP message>::= ICMPMESSAGE=<value>

<Response>::=

        <Protocol_Name_And_Version> <StatusCode> <EOF>

<Transaction Number>
         [<QueryResponse> | <NatQueryResponse>]
<QueryResponse>::=<PacketMatchingExpression> <SetOptions> [; <EOF> <PacketMatchingExpression> <SetOptions> ]*

<NatQueryResponse>::=IP=<value> PORT=<value> [UPPERPORT=<value>]

<StatusCode>::=

      { 200 OK |
        201 Keeping Alive |
        202 Rule Changed  |
        400 Bad Request |
        401 Unauthorized |
        402 Invalid Control State Field Value |
        403 Forbidden |
        480 Priority Class Conflict |
        500 Server Internal Error |
        501 Not Implemented |
        502 Service Unavaiable |
        503 Version Not Supported
       }

Description:

SET:

RELEASE: QUERY: QUERYNAT: RELEASENAT: Transaction Number (SEQ): PROTO: UPPERPORT: SRCIP: DSTIP: SRCPORT: DSTPORT: TOSFLD: (see RFC1349 [13] and RFC2474 [14]) TCPSYNALLOWED: ICMPTYPE: ININTERFACE: OUTINTERFACE: ACTION: TIMER: REFLEXIVE: PRIORITYCLASS: LOG: ICMPMESSAGE:
To be clarified: usage of <CR><LF>, blank spaces, parameter separators.
Last modification: 

Source URL:
http://www.iptel.org/fcp/fcp-spec-16
Home |  Recent changes |  Search |  Glossary |  Sitemap |  Login