Electrical computers and digital processing systems: multicomput – Computer-to-computer data routing – Least weight routing
Reexamination Certificate
1997-05-08
2001-05-15
Dinh, Dung C. (Department: 2153)
Electrical computers and digital processing systems: multicomput
Computer-to-computer data routing
Least weight routing
Reexamination Certificate
active
06233624
ABSTRACT:
BACKGROUND OF THE INVENTION
1. The Field of the Invention
The present invention relates to systems and methods for layering or accommodating link layer intermediate drivers in a computer network system. More specifically, the present invention relates to systems and methods for providing a common interface through which commands and messages may be passed between layers in a network stack.
2. The Relevant Technology
Historically, computer systems have presented and processed data resident within a local system. Modern computer systems are interconnected using network technologies that enable one computer to transfer or exchange substantial amounts of data with other computers. Originally, computers were directly connected one with another and exchanged information directly across a dedicated serial or parallel channel. Modern computer systems are coupled one to another through shared network techniques. Networking techniques such as Ethernet provide addressable messaging for data exchange across a shared network. As computer systems became more sophisticated and the need to exchange larger amounts of data increased, networking techniques were established wherein substantial amounts of data were broken into smaller segments or packets for efficient transfer across a computer network. Such packetizing of data required a computer-resident software application to partition bulk data into smaller enumerated packets. Furthermore, packets were dispatched across network interconnections by employing software drivers that controlled hardware modules. Because of the increased complexity in preparing and dispatching data onto the network, networking standards were established wherein defined functions were partitioned into separate distinct layers into what has become known as the OSI network model. Although some networking applications have implemented each of the seven established layers, the majority of applications implement only selective layers when preparing bulk data for transmission across a network. Two such layers incorporated by most networking stacks include a transport layer and a link layer. A driver or software module performs the assigned functionality for a specific layer, hence, a transport layer driver carries out the functionality of the transport layer while a link layer device driver performs the assigned functionality of the link layer.
FIG. 1
represents a prior art configuration of a network protocol stack
100
having a transport layer driver
102
. Transport layer driver
102
traditionally performs partitioning or packetization of bulk data into manageable sized packets required by the network. Transport layer driver
102
prepares data into properly sized data packets and dispatches such data packets to link layer device drivers
108
and
118
for presentation to hardware or physical devices
110
and
120
, respectively. Link layer device drivers
108
and
118
must each be written or designed to a specified interface
104
to permit compatible transfer of data therebetween.
Link layer device drivers may perform a specific function or process or a series of functions or processes on received data prior to dispatching such data to network hardware such as physical devices
110
and
120
. For example, link layer device driver
108
is comprised of a function
112
followed by a function
114
. Data passing from transport layer driver
102
to the network must traverse through these functions undergoing the respective processing. Link layer device driver
118
comprises function
114
and function
122
and subject data packets traversing from transport layer driver
102
to hardware
120
are subject to the processing contained within functions
114
and
122
.
Although
FIG. 1
illustrates an interface
104
, each device driver only interfaces with this standardized interface at an entry point while all other internal functions are encapsulated within device driver
108
and
118
. That is to say, any deletion, addition or modifications of functions within a device driver requires that the link layer device driver be re-written to provided compatible entry and exit points. Furthermore, when a plurality of link layer device drivers are present within a computer system, functions within various device drivers may be redundant, as depicted by function
114
, yet required by each link layer device driver for properly processing the packetized data.
An example of how difficult modification of a link layer device driver may be is evidenced by what would be required to incorporate additional functionality into link layer device driver
108
. If a user desired to incorporate function
122
into link layer device driver
108
, they would be required to determine the proper format leaving function
114
through which function
122
must interface. Furthermore, function
122
would need to be physically replicated within link layer device driver
108
to perform the added new functionality. Rewriting of device drivers to incorporate additional functionality becomes extremely costly and difficult and frequently obsoletes existing hardware and device drivers or causes the user to forego incorporation of the additional functionality.
Thus, what is needed is a system and method for interfacing multiple device drivers enabling a first device driver to be called to perform its corresponding functions on packet data followed by the invocation of a second driver for performing a second set of processing functions on the processed data packet.
Also, what is needed is a system and method for incorporating additional functionality into a network protocol stack without having to totally rewrite a driver within the stack, thus preserving investments in existing or legacy drivers.
SUMMARY AND OBJECTS OF THE INVENTION
The foregoing problems in the prior state of the art have been successfully overcome by the present invention, which is directed to a system and method for layering drivers within an operating system of a computer system. The current system and method can be used in virtually any computer system having external or physical devices that employ software drivers for interfacing to such external devices. The present invention comprises both methods and systems for layering link layer intermediate drivers creating a data flow from an abstract interface, providing functional support for driver operations, to a link layer device driver interfacing with a physical device.
In the present invention, a method and system for incorporating a link layer intermediate driver into a data flow path in a computer operating system is presented. A data flow path is a path of execution that is traversed through a network protocol stack. A network protocol stack defines a data flow path through which data is passed between a transport layer and a physical device interconnected to a network. A network protocol stack is comprised of a transport layer driver, one or more link layer intermediate drivers and a link layer device driver interfacing with the physical hardware or device. The link layer intermediate driver receives data and returns processed data through the abstract interface while a link layer device driver is comprised of an interface with the abstract interface and a separate interface with the physical device.
The abstract interface, in one embodiment, is comprised of a function library sometimes referred to as a wrapper which handles many of the details involved in managing synchronous and asynchronous communications across a network. The abstract interface also provides a library of functions for interfacing to the kernel mode of an operating system. Device drivers, therefore, need only perform hardware specific operations needed to manage a particular hardware or physical device. Functions within the abstract interface library implement functionality common to most device drivers such as synchronization, notification of packet arrival, and queuing of outgoing packets. In contrast, traditional drivers incorporate most of the above functionality inherently which makes such de
Brandon Kyle
Hyder Jameel
Dinh Dung C.
Microsoft Corporation
Workman & Nydegger & Seeley
LandOfFree
System and method for layering drivers does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System and method for layering drivers, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System and method for layering drivers will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2550524