The IOL INTACT software is an automated protocol test tool designed and developed in-house by UNH-IOL. It supports many protocols above the Physical Layer, and is fully extensible, making the addition of new protocols easy. Support for BGP was recently added, and with it comes several architectural considerations allowing for straightforward use in script development.
BGP makes core routing decisions for the Internet. It is unique among routing protocols in that it runs over TCP/IP, which may lead one to believe that developing IOL INTACT test scripts for BGP would require implementation of TCP as well, adding significant complexity. However, thanks to the object-oriented design of IOL INTACT, the implementation is greatly simplified.
There are four key components needed to develop BGP Conformance testing: 1) a TCP session, 2) a processor to parse BGP packets, 3) an interpreter to process BGP test scripts and 4) test scripts for BGP Conformance. Each of these components is applied below to IOL INTACT to outline the developer tests.
- TCP Session: IOL INTACT provides a “TCP endpoint” object to easily create a TCP session. A TCP endpoint essentially acts as traditional BSD Stream Socket. Hence, developers do not need to worry about the complex state transitions of TCP, such as three-way handshaking, sequence number and retransmission.
- BGP Packet Processor: In the architecture of IOL INTACT, there is a design for parsing network packets called “layer”. The “layer” can be thought as a library that can construct and interpret various packets, analogous to the OSI Layer Model. The four types of BGP packets (OPEN, UPDATE, NOTIFICATION and KEEPALIVE) are included in this library. The library for BGP is comprehensive with support for all fields and attributes of BGP. New fields or attributes not included in the library can be easily added.
- BGP Script Interpreter: IOL INTACT aims to make the protocol testing easy, so that tests can be run without extensive programming knowledge. To achieve this, IOL INTACT employs a TCL interpreter to handle test scripts written in TCL.
- BGP Conformance Test Scripts: This is the only task left for the developers.
In the course of running testing, one test should not prejudice the execution of another test. In the case of BGP Conformance test scripts, any TCP session opened for a test should be closed upon the conclusion of the test as part of a cleanup procedure. However, the implementation of TCP in Linux limits how quickly a TCP socket can be reopened. This is done to mitigate loss of packets still in flight from the previous session. This poses as a hurdle when running many BGP tests in succession. The solution to this problem is operating system dependent, and applies specifically to the value of the TCP_FIN_TIMEOUT variable. This value can be set and retrieved by IOL INTACT to ensure testing does not proceed from one script to the next before the server is ready.
The two main differences between BGP Conformance test scripts and other routing test scripts are: 1) the constructor of BGP packets and 2) explicit test results.
- BGP Packet Constructor: Since BGP runs over a TCP session in IOL INTACT, the packet constructor of BGP only needs to build fields and attributes of BGP regardless of the Ethernet and IP layers.
- BGP Test Results: Most BGP tests do not require the tester to verify values on the DUT, and therefore can be completely automated. For these tests either a PASS or a FAIL result can be returned to the tester. These explicit results help to improve the test efficiency significantly.
Ying Li, Senior Research and Development Lead