RouteFlow defines a simple wire protocol for the the
communication between the RF-Server and the RFController and the
RF-Server and RF-Slave components. The RouteFlow protocol is based on a set of IPC
messages, as defined on the directory "include".
There is a base RouteFlow Message, defining the header of every other type of messages.
- The header contains the IP destination, IP source, ID of the Virtual Machine (VM), the message's type and the total message's length.
There is a base message, with a set of header fields and a generic payload. The header fields are group, type and pay_size (total size of the payload). The group may be command or event, and for each there is a set of possible types.
- Command messages may be send_packet, usually in response to packet_in_events from NOX to forward packets to the correct datapath, or flow, for flow modification messages;
- Event Messages may be of every relevant event types generated on RFController, such as packet_in, datapath_join, datapath_leave, link_event (generated by discovery) or map_event (mapping VMs to ports on the OVS).
For the communications between the RF-Server and the RF-Slaves, one message class is defined that extends the Base Message: The VM Message. Its puspose is mainly for configuration actions such as:
- Accept / Reject connection between RF-Server and the RF-Slave;
- Configure a RF-Slaves to represent a specific Switch;
- Send route updates to be translated into OpenFlow install / remove messages.