Multiplex communications – Communication techniques for information carried in plural... – Adaptive
Reexamination Certificate
1998-11-19
2002-11-12
Kizou, Hassan (Department: 2662)
Multiplex communications
Communication techniques for information carried in plural...
Adaptive
C370S395700, C709S230000
Reexamination Certificate
active
06480507
ABSTRACT:
FIELD OF THE INVENTION
The present invention relates to a communication protocol stack apparatus and to a method of implementing such an apparatus. More specifically, the present invention relates to a communication protocol stack apparatus and method of implementing such an apparatus in systems with limited memory allocation, access and arrangement operations available.
BACKGROUND OF THE INVENTION
In data communication networks, it is common to employ several protocols, which are often arranged in layers. For example, it is common for many networks to employ at least some in portion of the ISO Open Systems Interconnection (OSI) Reference Model to deal with communication protocols and network architectures. As is well known, the ISO reference model has seven layers, defined as: the Application layer; the Presentation layer; the Session Layer; the Transport layer; the Network layer; the Data-link layer; and the Physical layer. Generally, it is common that only a subset of the seven layers are employed within a network or that one or more layers are merged.
Each layer of the reference model employs the services of the layer below it and provides services to the layers above it. Thus, for example, the Network layer which is responsible for establishing and maintaining the flow of messages between connected points in the network is dependent upon the Data-link layer to provide character and message synchronization and error correction. The Data-link layer is, in turn, dependent upon the Physical layer to actually transmit and receive information as electrical signals on the network.
An apparatus implementing a collection of protocol layers, such as the seven layers of the OSI Reference Model or a subset or variant thereof, is commonly referred to as a protocol stack. For example, the commonly used TCP/IP protocol is generally implemented as a five layer tack, including: the Application layer; the Transport layer (TCP); the Network layer (IP); the Data-link layer (PPP); and the Physical layer (Ethernet, etc.).
Due to the time critical nature of the services provided by a protocol stack, the performance of the layers is an important factor. Further, the amount of memory resources required by a protocol stack are of concern in many systems. Accordingly, protocol stacks were commonly implemented in early communication systems in machine language. While this provided efficient use of system resources and met real time response standards, protocol stacks can be complex systems to implement and modify, especially for the more advanced protocols now commonly in use, and machine language is not generally preferred for the construction and maintenance of such complex systems.
More recently, protocol stacks have been implemented in the C or C++ programming languages, and similar high level languages. Such high level languages are preferred as they provide a better environment for the development and maintenance of complex systems. Another reason for selecting these languages is that they still provide for processor efficient operations, such as pointer arithmetic, and fine grained memory allocation and management operations, via the malloc family of system calls for example, which allow for efficient memory usage. Further, data structures such as C unions and structs are available which allow the implementer of the protocol stack to explicitly control the representation of data structures in memory.
More recently, much interest and development has occurred with the Java programming language. Java is an interpreted language which comprises a series of byte codes that are compiled from Java source code. These byte codes are usually interpreted (or in some cases compiled by a Just in Time compiler) and executed by a Java Virtual Machine (VM) which is a program executing on the target platform. A Java program can thus be executed on any computer system for which a Java VM exists.
However, Java offers some challenges to those wishing to implement many types of systems. For example, unlike machine language, C, C++ and many other programming languages, for simplicity of coding and other reasons, such as security and automatic garbage collections, Java does not provide any mechanism for explicitly defining the representation of objects in memory, nor does Java guarantee a specific representation for defined data types in memory, i.e.—while a short integer data type is defined in the Java specification as sixteen bits for calculation purposes, it is legal that it can be represented in memory as thirty-two bits. Java also does not support the explicit allocation or deallocation of blocks of memory or the traversing of memory structures using pointer arithmetic. In fact, one of Java's features is its automatic “garbage collection” wherein implicitly deallocated memory is reclaimed and free memory is consolidated. During a garbage collection cycle the memory representation of an object can change from what it was prior to the cycle.
Java's lack of explicit memory allocation, deallocation and traversing features and its lack of a mechanism to explicitly define the representation of an object in memory has made it difficult to implement a protocol stack which provides acceptable performance with acceptable memory requirements.
Generally, the passing of information between layers in a protocol stack implemented in Java can quickly result in the fragmentation of memory in the Java VM and the consumption of that memory by unreferenced objects. Such fragmentation and consumption can adversely affect the performance of the stack due to the relatively excessive memory allocations and data copy operations performed at each layer. In particular, implementations employing the passing of message objects between layers have been found to be inefficient, and often unacceptable, due to the high overheads involved in allocating new memory, garbage collecting unreferenced objects and streaming objects to physical devices.
It is therefore desired to have a protocol stack apparatus and method of implementing such a stack apparatus which can be relatively efficiently implemented in systems, such as those employing the Java language, which have limited memory allocation, access and arrangement operations available.
SUMMARY OF THE INVENTION
It is an object of the present invention to provide a novel protocol stack apparatus and method of implementing such a protocol stack apparatus which obviates or mitigates at least one disadvantage of the prior art.
According to a first aspect of the present invention, there is provided a communication protocol stack apparatus, comprising: a first protocol layer; at least one protocol layer below said first protocol layer in said stack; a binding mechanism to bind said first and each said at least one protocol layers together into a protocol stack, said binding mechanism determining for each layer of said protocol stack in turn, from a lowest layer to said first layer, an aggregate maximum header length and aggregate trailer length for said layer and each layer below said layer; a buffer allocation mechanism to allocate at least one memory buffer for each layer of said protocol stack, said at least one buffer of each layer having a length at least equal to the sum of said aggregated maximum header and trailer lengths determined for said layer and a selected maximum data payload size; a buffer passing mechanism to pass an allocated buffer from a higher layer to a lower layer in said protocol stack, said buffer passing mechanism: for a protocol layer, copying data to be transmitted from said higher layer into said buffer starting at a position offset from the first position of said buffer by a number of positions equal to said aggregated maximum header length determined for said higher layer, copying an encapsulated header for said higher layer into said buffer at the positions immediately preceding said data copied to said buffer and copying an encapsulating trailer for said higher layer into said buffer at the positions immediately following said data and se
Craddock A. Julian
Major Brian S.
Mercer David E.
Kizou Hassan
Nortel Networks Limited
Odland David
LandOfFree
Communication protocol stack apparatus and method of... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Communication protocol stack apparatus and method of..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Communication protocol stack apparatus and method of... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2982587