GateScript: A Scripting Language for Generic Active Gateways

In this paper, we present GateScript, a scripting language for
active applications to be executed on generic active gateways. Unlike
other active networking platforms, it offers a simple scripting
language for expressing custom processing of packets at different
protocol layers without the need for interpretation of complex
protocol data structures. In this way, the user writes statements in
a script-like language while using protocol-specific variables and
predefined function calls acting on the packet’s content. From a
textual description, we automatically create a packet parser and
reassembler for a given protocol. The parser decomposes PDUs arriving
in an active application into protocol variables that can be used in
the script language. After processing, outcoming packets are
reconstructed from the protocol variables. GateScript also
enables active applications to react to the state of the environment:
they can receive events from monitors and test variables reflecting
the state of the environment.

We have designed an architecture for a generic active gateway (GAG) that
supports GateScript. An active application can dynamically install/remove a
packet filter that intercepts relevant packets and passes them to the
application. We have implemented GAG on Linux: its packet
forwarding part is implemented in the kernel and all other components
as user space processes.