The Kernel Space XIAN Interface (KSI) is dedicated to kernel space components (e.g. TCP or UDP implementations) and implemented as a Linux kernel module. It interacts directly with the MadWifi driver to retrieve its internal states or statistics or with the XIAN components involved in the definition of complex metrics (see section 2).
The User Space XIAN Interface (USI) mimics the KSI but at user space level. This API is implemented as an ordinary C library in order to facilitate its integration with user space programs (e.g. routing daemons or applications).
The XIAN Information Transport Module (ITM) allows to pass information and statistics from the kernel space to the user space, by connecting the two previousXIAN APIs. This module is implemented in this version of XIAN as a special character device.
In addition, a complementary component, called the XIAN User Space Extended Interface (or USEI), provides simple means for experimenters to perform additional processing of raw measurements, such as averaging, metric combination or notification of significant changes. Figure 1 illustrates how the components interact and how internal driver/MAC states or metrics are provided to other Linux system components. Figure 1. XIAN Framework software architecture.
From the developers point of view, the two XIAN APIs (i.e. KSI and USI) are identical. The information exchanged through the ITM and accessible via the USI and the KSI are of two kinds: (1) basic metrics extracted from specific structures/states maintained by the MadWifi driver, and (2) new metrics integrated to the framework thanks to the software components described in the following section.
The XIAN Metric Manager (XMM), in charge of the registration and unregistration of the new cross-layer metrics instantiated as XIAN Cross-layer Metric modules (XCMs). An XCM mainly implements the metric calculation formula and configures the protocol exchanges involved in the calculation of the metric in terms of type of information and frequency .
The XIAN Nano-Protocol handler (XNP), which handles the XIAN Nanoprotocol messages containing the values of the metrics exchanged between neighbouring nodes. The XNP is implemented between the MadWifi driver and the Linux kernel implementation of the IP layer. Its role is to extract the XIAN Nanoprotocol messages from in-coming 802.11 frames and to create and send out-going XIAN Nano-protocol messages to the desired neighbours.
The XIAN Metrics Repository (XMR), which is responsible of recording the calculated values of the new cross-layer metrics introduced within the XIAN framework. Once recorded by the XMR, the metric values become accessible (via the KSI or the USI see section 1) to other operating system components, along with all MadWifi driver information reported by default by XIAN.
The XIAN Neighbouring Manager (XNM), which detects neighbour nodes and triggers updates necessary to automate XIAN Nano-protocol message exchanges. To enable the exchanges of metrics between neighbouring nodes, we propose a simple MAC layer-oriented protocol, called the XIAN Nano-protocol. It is described in the following section.
The XIAN Nano-protocol Metrics Report is composed of the following fields:
A XIAN Nano-protocol Metric Object is composed of the following fields: -Type indicates the identifier associated to a metric. -Id identifies a reference to the associated XCM. -Encoding_type indicates how the metric value is encoded (e.g. integer or float). -Mac_addr indicates the MAC address to which the metric value belongs to. -Value contains the effective numerical value of the metric. Moreover, in order to optimize the number of messages sent to a given neighbour node, note that the XIAN Nano-Protocol handler (XNP) is able to aggregate several XIAN Cross-Layer Metrics Object of different types in a single XIAN Metrics Report.