OAS Casestudy: The IEEE 1394.1 FireWire Net Update Protocol

IEEE 1394 and P1394.1 FireWire standards

In 1995, the IEEE (The Institute for Electrical and Electronics Engineers) has published the IEEE 1394 standard for Serial Buses, nicknamed FireWire and i.LINK. This standard prescribes how to connect devices together into a IEEE 1394 bus, providing high-speed asynchronous and isochronous point-to-point and broadcast communication. The 1394 Trade Association is a marketing organization that promotes IEEE 1394 technology.
Technical bit: Each 1394 device has its own unique 64-bit identity number. Also, the standard describes both cable and backplane implementations. The scope of this page is the cable situation.
An example IEEE 1394 bus topology
From 1996 onwards, the IEEE 1394.1 Working Group has worked on the IEEE P1394.1 draft standard for Serial Bus Bridges. In this document, technology is introduced for connecting 1394 buses into a P1394.1 net. In May 2004, the final ballot was held, and the request for approval of the IEEE 1394.1 standard was made.
An example IEEE P1394.1 net topology
Technical bit: Contrary to what the above picture may suggest, each P1394.1 bridge consists of two separate 1394 devices each connected to its own 1394 bus. The connection between the nodes in the bridge (the bridge fabric), is not part of any bus, and facilitates communication between the two buses without merging them into one bus. Each of the two devices in a bridge is called a portal.

The P1394.1 Net Update Protocol

Both 1394 buses and P1394.1 nets are supposed to work in a plug-and-play fashion, which means that devices may be plugged in and out, or switched on and off while remaining bus/net continues to operate without too much disruption. In order to facilitate this functionality for P1394.1 nets, a protocol called net update maintains several spanning trees in the net. Obviously, if topology changes occur, this protocol must work out the changes in these spanning trees.
Technical bit: All of these trees have buses for nodes and bridges for edges. In the main spanning tree, the root bus has the prime portal, whose unique identity is used as the identity of the net. Also, each bus has either this prime portal, or a portal whose bridge points in the direction of the root bus. In the following picture, this is illustrated for two nets that are joined together by a topology change.
Two IEEE P1394.1 nets are being connected
Here are on-line descriptions of the 1394 and P1394.1 functionality, of the spanning trees, and of the net update protocol.

The Spin Model

For the project Improving the Quality of Protocol Standards (funded by NWO), an abstract model has been made of the net update protocol in the language Promela, which input to the model checking tool Spin. The model may be found here. It contains five bridges, consisting of two portals. For each portal, there are two processes in the Promela: the ordinary behaviour, and special coordinator behaviour. Separately there is an init process that initializes global variables, starts all other processes, and checks safety properties, and a process that introduces random topology changes.

Spin experiences

We have performed many non-interactive random Spin simulations on the Promela model, and found many modelling and protocol mistakes. We have attempted exhaustive verification, but the model is too complex and large for this. We have performed approximate verifications, these terminate without finding errors. The results are described in several papers, that can be found on the project page.

IEEE P1394.1 adjustments

Due to our efforts, many changes have been made to the protocol in the IEEE P1394.1 draft standard. We list some important ones here: These and more changes are described elaborately over here.