1. Introduction
The Simple Middlebox Configuration (SIMCO) protocol is used to
control firewalls and Network Address Translators (NATs). As defined
in [RFC3234], firewalls and NATs are classified as middleboxes. A
middlebox is a device on the datagram path between the source and
destination that performs other functions than just IP routing. As
outlined in [RFC3303], firewalls and NATs are potential obstacles to
packet streams, for example, if dynamically negotiated UDP or TCP
port numbers are used, as in many peer-to-peer communication
applications.
SIMCO allows applications to communicate with middleboxes on the
datagram path in order to request a dynamic configuration at the
middlebox that enables datagram streams to pass the middlebox.
Applications can request pinholes at firewalls and address bindings
at NATs.
The semantics for the SIMCO protocol are described in [RFC3989].
1.1. Terminology
The terminology used in this document is fully aligned with the
terminology defined in [RFC3989]. In the remainder of the text, the
term SIMCO refers to SIMCO version 3.0. The term "prefix-length" is
used as described in [RFC4291] and [RFC1519]. With respect to
wildcarding, the prefix length determines the part of an IP address
that will be used in address match operations.
Previous experimental versions of SIMCO used simple ASCII encodings
with augmented BNF for syntax specification. This encoding requires
more resources than binary encodings do for generation and parsing of
messages. This applies to resources for coding agents and
middleboxes as well as to resources for executing a SIMCO stack.
Low resource requirements are important properties for two main
reasons:
- For many applications (for example, IP telephony), session setup
times are critical. Users do accept setup times only up to some
limit, and some signaling protocols start retransmitting
messages if setup is not completed within a certain time.
- Many middleboxes are rather small and relatively low-cost
devices. For these, support of resource-intensive protocols
might be a problem. The acceptance of a protocol on these
devices depends, among other things, on the cost of implementing
the protocol and of its hardware requirements.
Therefore, we decided to use a simple and efficient binary encoding
for SIMCO version 3.0, which is described in this document.