VTC, an ABNF Codec Code Generator for C
Many Internet applications, ranging from Voice Over IP, instant messaging clients and multimedia players to HTTP servers and proxies, involve processing network protocol messages. A key part of this processing is to decode(parse) messages as they are received from the network, and to encode attributes into messages. As message decoding/encoding represent the front line of interaction between the application and the outside world, the correctness of decoding/encoding is crucial; any bugs in decoding/encoding can prevent the application from doing its tasks. Poor performance in decoding message can be a bottleneck of the application. In the context of in-network application such as proxies, where achieving high throughput is essential, decoding must also be efficient.
Why do we need an ABNF code generator?
Hand-written(fully or partially) network message processing code has still been dominant but has become increasingly error-prone. Especially, implementing a correct and efficient network protocol message decoder is a difficult task. Hand-written code is typically error-prone and difficult to maintain. Another issue is that some kinds of message processing may only use part of the message. For example, a router normally only uses the header fields that describe the message destination, and ignores the header fields that describe properties of the message body . It is thus desirable, for efficiency, to defer the parsing of certain message fragments to when their values are actually used. In this case, complex parsing code may end up as an unmanageable monster, scattered throughout the application.
What do we present?
We present a complete ABNF code generator, VTC. VTC uses ABNF with some extensions, and thus the programmer can simply copy a network protocol message grammar from an RFC to begin developing a decoder/encoder.
VTC is fed with ABNF with extensions indicating which message fields should be stored in data structures, and other semantic information. A modified ABNF specification is processed by VTC that generates stubs to be used by an application to decode incoming network messages and to encode out-going messages. The generated code is complete; the user need not(and should not) modify the generated code, which relieves the user from error-prone manual migrations along with application software evolution. VTC gives options to choose, i.e. time optimization and memory optimization.
Why VTC?
VTC is a powerful development tool that can build fast by making up for the weak points in Hand Coding of network protocol's text-basis. Also it is Text Compiler that can develop flexibly for various applied service's Application-aware Networking which is spreading nowadays.
Feature
- Performance Oriented Compiler
- Code Generation : Compiler basis function
- ANSI C, Multi-threading support
- ABNF(RFC2234) observance
- Multiplicity: 3type Generation Mode support
1. Embedded-Optimized : For embedded system without diagnostic
2. Space-Optimized : Minimizing use of memory
3. Time-Optimized : Fast speed Optimized
- ABNF Grammar in various case documents creation is provided
- ABNF Grammar Verification operating
- For a high-performance, character256Array is used, instead of C string function
- At runtime, predefined memory structures are used, instead of malloc and free
- Optional support List-form's type to pointer and array form
- Both of pointer type support pointing Read buffer form and copying form
- Predictive parsing tables: organization Control table by input ABNF
- Prioritized-Choice Disambiguation: making parsing order of input ABNF Parsing
- Syntactic and Semantic Predicates : Verification
[Patent-pending] 10-2007-0060822 Text compiler added rule and memory structure
About VineGen
Vinegen is developing VOIP technologies and we have skills of Text compiler, SIP Toolkit and Multimedia Platform for VOIP.