Skip to content
/ sage Public

SAGE disambiguates protocol description in an IETF RFC document, then converts the disambiguated protocol description into executable protocol implementation.

License

Notifications You must be signed in to change notification settings

USC-NSL/sage

Repository files navigation

SAGE

Overview | Installation | Usage | Caveats and Limitations | License

Overview

This tool is used to disambiguate protocol descriptions in IETF RFC documents, then to convert disambiguated protocol descriptions into executable protocol implementation.

SAGE introduces semi-automated protocol processing across multiple protocol specifications. SAGE includes domain-specific extensions to semantic parsing and automated discovery of ambiguities and enables disambiguation; SAGE can convert these specs to code.

For more information, please refer to the ACM SIGCOMM21 paper.

Installation

There are 2 ways to use SAGE.

Usage

Run SAGE

To start SAGE, execute the following command:

./sage -i <rfc.txt> -p <PROTOCOL>
  • rfc.txt: This is the specification text file you would like SAGE to parse
  • PROTOCOL: This is the protocol name you would like to name for the generated header and code files

An example of the command is:

./sage -i igmp.txt -p igmp

This command will parse the input igmp.txt text file, and the protocol specified inside the text file is IGMP protocol. The output header and code file will have IGMP as the prefix of file names.

During execution SAGE provides detailed logs about the process: currently processed sentence, number of logical forms, ..., and lastly, the generated code.

Run our experiments and tests

To easily recreate some of our results, we packed our SIGCOMM experiments with ready-to-run shell scripts. For details, see scripts/sigcomm21.

Additional ready-to-run test scripts are available in scripts/tests.

Add support for additional protocols

SAGE is able to parse a number of protocols, and adding support for additional protocols is still in progress. For more details, we provide another README for introuductions of configurations and an illustration example.

Caveats and Limitations

SAGE is an experimental software under heavy development with limitations:

  • Small number of protocols/RFCs are supported
  • No single config file
  • Slow execution due to limited scalability (mostly single-core execution)

Developers

License

SAGE is a free software and licensed under the 3-Clause BSD license.

About

SAGE disambiguates protocol description in an IETF RFC document, then converts the disambiguated protocol description into executable protocol implementation.

Topics

Resources

License

Stars

Watchers

Forks