IntroductionWelcome to ULLA project at SourceForge. Take a 10 minutes coffee-break and learn how ULLA is designed to help application programmers with writing network aware applications. Also advanced users can benefit from the tools available. The current status of this project is a work under progress. We have reached beta status for this implementation! The projects needs more researchers and programmers to be involved now. Most interessting is to port the ULLA support to more device drivers. Also, the development of applications using ULLA via the C or the C++ API is a very interessting perspective of the project.[August 2006] However, its meant to be played with!! Have fun using ULLA and we are happy to hear about your experience. Problem statementNetwork aware applications, such as Video Streaming Applications for example, use information about the network to adapt their behaviour affecting their bandwidth requirement or error rate. In many cases it is necessary to use life information of the current conditions. However, device drivers implement their own technology- and product specific-API and it is not possible to know what the API would look like in advance. Also, these APIs differ between operating systems making the development of portable network-aware applications a hard piece of work. ReviewOn Linux the Wireless Extensions provide an API for 802.11 WLAN cards. This API is used by the Wireless Tools and other WLAN configuration software. It remains unused by applications because the wireless technology in use is not known in advance. Because the Wireless Extensions are tailored towards the 802.11 specifics it is not possible to expand its capabilities as intended. Hence, ULLA presents a full new design. SolutionThe Unified Link Layer API (ULLA) allows developers to write network aware applications that use ULLA to retrieve information from LLAs, or device drivers suporting ULLA. In the following these applications are referred to as Link Users (LU) because they retrieve information about the current link conditions, such as rxQuality, rxBandwidth, txFER, etc. These ULLA queries are specied by the means of the UQL, which is a subset of the well-known SQL syntax: ullaRequestInfo("SELECT txFER, rxBandwidthFROM ullaLink WHERE rxQuality > 4") The result of the query can be accessed by SQL-like accessor functions. Also, ULLA allows issueing commands on the LLA, such as enableFirmware, updateAvailableLinks, connectLink, etc. ullaCommand("SELECT connectFROM ullaLink WHERE linkId = 2") Additionally, another API method allows to specify a condition for a notification of a particular link event, such as the Link is experiencing a high error rate. ullaRequestNotification("SELECT linkIdFROM ullaLink WHERE txFER > 4") DesignThe current implementation of ULLA has three components. Legacy device driver have to map their proprietary interface to the new in-kernel wireless API provided by the ULLA kernel module. This piece of software within the device driver code is called Link Layer Adapter (LLA). The ULLA kernel module (60kB) can be loaded with the device driver module or at system boot time. Many LLAs may share the same ULLA kernel module as an OS resource. A shared ULLA library (90kB) is build on top of this kernel module. It can exchange data via the user to kernel space boundary by the means of a new ullaNetlink socket and a character driver (device file system interface). The library also hosts the API calls described above and parses the UQL syntax into a tree by the means of a parser. This parser is generated by the means of lex and yacc. ConclusionULLA is an enabling technology for programming with link layer information. The project has come to a point where its further growth requires the feedback and support of the Linux Community. Application developers can use the first beta version to experiment with a new and simple style of network programming. It is intended to incorporate their feedback into the design to make a better ULLA design. An important aspect of the ULLA deployment is the support by various device drivers. Here, SourceForge can open the project towards the audience of device driver programmers. Additionally, the project needs more developers and testers to maintain and expand ULLA itself. SourceForge can serve as an excellent platform for technical discussions and future collaborations in this context. Finally, advanced users can experiment with the command line tools similar to the Wireless Tools in order to setup their wireless cards. They can give valueable input for the final desired feature set of ULLA. Work under progressThe GOLLUM project is still active and by the time this implementation is published the final API definition is still ongoing. The current status of the project work indicates, that the final API and this ULLA implementation are not 100% compliant. AcknowledgementsThis ULLA implementation was partially funded by the EU commision as part of the GOLLUM project IST-511567 (www.ist-gollum.org). The work was created and published by RWTH Aachen University. Permission of formerly confidential documentation material was granted by the project consortium in 2006. Abbreviations:© RWTH Aachen University. All rights reserved. 2006
Created February 2006 by Marten Bandholz. |