Individual Submission C. Williams, Ed. Internet-Draft Consultant Intended status: Informational March 7, 2011 Expires: September 8, 2011 Light Weight API Implementation Guidance draft-williams-lwig-api-considerations-00.txt Abstract These are a few notes on high-lighting the importance of looking at Considerations of the Application Programming Interface for Light Weight IP implementation of the TCP/IP protocol suite. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on September 8, 2011. Copyright Notice Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Williams Expires September 8, 2011 [Page 1] Internet-Draft LWIG API Considerations March 2011 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Light Weight Application Model . . . . . . . . . . . . . . . . 3 4. A summary of programming interface issues for light-weight TCP/IP stacks . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.1. Quick look at uIP API model . . . . . . . . . . . . . . . . 5 4.2. Quick look at TinyOS API model . . . . . . . . . . . . . . 5 5. Potential future work . . . . . . . . . . . . . . . . . . . . . 5 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 7. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 8. Summary and Conclusion . . . . . . . . . . . . . . . . . . . . 5 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9.1. Normative References . . . . . . . . . . . . . . . . . . . 6 9.2. Informative References . . . . . . . . . . . . . . . . . . 6 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 6 Williams Expires September 8, 2011 [Page 2] Internet-Draft LWIG API Considerations March 2011 1. Introduction Any Light Weight IP implementation guidance of the TCP/IP protocol suite must also take into Considerations the Application Programming Interface. The applications paradigm model on the type of devices that will run Light Weight TCP/IP stacks is not only different but the requirements of the interface must also take into account similar design chooses regarding the available RAM usage. In addition, it is also the hoped that this discount will focus attention on the need to incorporate Light-weight IP guidance on the Application Programming Interface into the TCP/IP stacks. 2. Terminology Light Weight IP Light Weight IP is a term that has become a way in which to describe the light-weight implementation of the TCP/IP protocol suite. There have been implementations written by international developers [uIP]. The goal of the such implementations is having a TCP/IP stack to reduce RAM usage while still having a full scale TCP. This makes such an implementation useful in small embedded systems with tens of kikobytes of free RAM. 3. Light Weight Application Model The IETF has published a 6LOWPAN design and applications document that has insights that of the expected application scenario space for 6LOWPAN work. The Light Weight Guidance working group is expected to provide guidance and Considerations in terms of implementation of the required Light Weight TCP/IP stacks [I-D.ietf-6lowpan-usecases]. To this end there is a convergence that the types of targeted devices with light-weight TCP/IP stacks are those systems that are designed to do some specific task, rather than be a general-purpose computer for multiple tasks. Requirements of such embedded applications running on light-weight TCP/IP stacks may be both real-time and others may have low or no performance requirements. From the already provided usage scenarios [I-D.ietf-6lowpan-usecases] the primary focus of work regarding light-weight TCP/IP stacks in terms of their work in IETF protocol design up to this point is the ability to communicate is more important than throughput. They will be low- powered small systems that don't have much data. The low RAM usage means that there will be low throughput. Not only will the TCP/IP stack take into consideration these design Williams Expires September 8, 2011 [Page 3] Internet-Draft LWIG API Considerations March 2011 objectives but the application programming interface into these light-weight implementations must also inter-work with the TCP/IP stack with these contraints in mind. In addition, such applications require new programming abstractions to support them with these contraint requirements. The IP/IPv6 Socket API may not be a basis for the proper programming abstraction whereby an application programming interface is implemented. For example, a typical implementation of the IP Socket API will have some variation of a worker thread that is listening to a TCP socket for incoming traffic, and buffering the received data for the main thread to access However, the worker thread also has to do some regular operations (say, once per second), even if there is no data coming in. In a very limited memory and low-power device such a programming model would not work. In addition, this programming model is a general all purpose model. While there may be a wide and vary range of applications that run on light-weight TCP/IP stacks, we can reduce the programming abstraction whereby any one device will not be a general purpose machine but will be very narrow in the application running on it. With this in mind the IP/IPv6 socket API would be overkill in terms of what would be required by such light-weight TCP/IP stacks. The range of libraries and other tools would not be loaded on to these devices as in a general purpose TCP/IP implementation. Instead, applications running on light-weight TCP/IP stacks would need a way to simply know that a incoming packet is destined for it and that it would be able to enough time to process the packet. Such processing must be done within the contraints of what the underlying light- weight IP stack provides in terms of packet processing. This means that all of the kinds of added IP socket options and functionality may also not be required as part of the programming model. All of this scaled down application interface doesn't mean that application inter-workings with general purpose TCP/IP stacks stops working. The following section discusses some issues and provides a summary examples. 4. A summary of programming interface issues for light-weight TCP/IP stacks As described in the previous section it is clear that Considerations for a new guidance document on light-weight stack guidance must take into account the application programming interface. And that the currently standard defined interfaces such as the IP socket API will not meet those constrained requirements. Below is a quick survey look at some of these APIs. It is documented to provide some insights as to guidance must be part of the light-weight Williams Expires September 8, 2011 [Page 4] Internet-Draft LWIG API Considerations March 2011 implementation guidance documentation suite. 4.1. Quick look at uIP API model The uIP application interface [uIP] uses a model based on an event driven API. In such a model execution is always initiated by the light-weight IP stack. In such an event driven model applications are called by the light-weight IP stack and must always return. The proposal put forth with uIP is that the multi-threaded nature of the IP socket API would be overly consuming in terms of RAM [uIP]. In addition, the processing required would not meet the low-powered requirements of such devices defined in the 6LOWPAN work. 4.2. Quick look at TinyOS API model TinyOS is an open-source operating system designed for wireless embedded sensor networks [TinyOS]. The TinyOS application interface [TinyOS] uses a model based on an split-phase or non-blockin API. In such a model execution when the application interface sends a message the routine would return nearly immediately - even before the actual message is sent by the TinyOS. TinyOS uses a call-back facility to notify the application that it was done with sending. With this programming model it is expected that no code runs for long periods of time; otherwise, packets may be dropped [TinyOS]. 5. Potential future work What could be done in the IETF 6. IANA Considerations This document has no requests to IANA. 7. Security Considerations Add the security aspects here. 8. Summary and Conclusion It is not just the TCP and IP layers that change with the Light Weight Implementation of TCP/IP stacks. The application programming interfaces must change as well. How applications receive, process and send packets is critical to the Light Weight stacks as well. This may require the adaption of new programming model taking into Williams Expires September 8, 2011 [Page 5] Internet-Draft LWIG API Considerations March 2011 account the application requirements and scenarios that have been put forth in the IETF already. This document will continue to be updated and evolve as more input and survey implementation come forth. 9. References 9.1. Normative References [I-D.ietf-6lowpan-usecases] Kim, E., Kaspar, D., Chevrollier, N., and J. Vasseur, "Design and Application Spaces for 6LoWPANs", draft-ietf-6lowpan-usecases-09 (work in progress), January 2011. 9.2. Informative References [TinyOS] University of California Berkeley, "TinyOS", . [uIP] Adam Dukel, Swedish Institute of Computer Science, "Adam Dunkel's uIP", . Author's Address Carl Williams (editor) Consultant Palo Alto, CA 94306 USA Email: carlw@mcsr-labs.org Williams Expires September 8, 2011 [Page 6]