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