UBC Theses and Dissertations
How fast can ASN.1 encoding rules go? Sample, Michael
The tasks of encoding and decoding complex data structures for network transmission are more expensive in terms of processor time and memory usage than any other components of the protocol stack. This problem can be partially addressed by simplifying the network data encoding rules and streamlining their implementation. We examined the performance of four network data representation standards: ASN.1Basic Encoding Rules (BER) and Packed Encoding Rules (PER), Sun Microsystem's External Data Representation (XDR) and HP/Apollo's Network Data Representation (NDR). The sizes of the encoded values produced by each set of encoding rules are compared and several implementations are measured for code size and throughput. To help examine implementation issues, we designed the snacc ASN.1 compiler that produces compile-based (C and C++) and table-based encoders and decoders as well as type tables. The performance of the snacc, UBC CASN1(BER), NIDL(NDR), rpc-gen(XDR) and ISODE(BER) tools was examined as well as a hand-coded PER implementation. The implementation issues investigated include compiled versus table-based encoding and decoding, implementation language (C/C++), buffering techniques and memory management. We found that the areas crucial to efficient encoder and decoder implementations are memory management, buffer management and the overall simplicity of the encoding rules. Table-based encoders and decoders typically have considerably smaller code size but perform less efficiently than their compiled counterparts. In contrast to popular belief, it is possible to implement ASN.1 BER and PER encoders and decoders that perform as well as their NDR and XDR counterparts.
Item Citations and Data