System for user-space network packet modification

Electrical computers and digital processing systems: multicomput – Computer-to-computer protocol implementing

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C370S229000, C370S230000, C370S230100, C370S231000, C370S232000, C370S233000, C370S234000, C370S235000

Reexamination Certificate

active

06675218

ABSTRACT:

MICROFICHE APPENDIX
This document contains a microfiche appendix consisting of 2 sheets of microfiche and a total of 161 frames.
COPYRIGHT
A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates in general to packet switched telecommunications networks and more particularly to a system for allowing user-space modification of packets transmitted through a network.
2. Description of the Related Art
In a packet switched network, a message to be sent is divided into blocks, or data packets, of fixed or variable length. The packets are then sent individually over the network through multiple switches or nodes and then reassembled at a final destination before being delivered to a target device or end user. To ensure proper transmission and re-assembly of the blocks of data at the receiving end, various control data, such as sequence and verification information, is typically appended to each packet in the form of a packet header. At the receiving end, the packets are then reassembled and the message is transmitted to the end user in a format compatible with the user's equipment.
As is well known in the art, most packet switched networks operate according to a set of established protocol layers, collectively defining a protocol stack. Each layer of the protocol stack exists to perform a specific function, such as addressing, routing, framing and physical transmission of packets. When a data packet is to be transmitted over a network from a source machine to a destination machine, the packet will pass in a downward direction through layers of the protocol stack on the source machine, and in an upward direction through corresponding layers of the protocol stack on the destination machine.
Each layer of the protocol stack in the transmitting process may add a respective header to the packet, which provides information to the corresponding layer in a receiving process. Thus, as a packet passes down through the protocol stack on a transmitting machine, the packet may gain an additional header at each layer. At the bottom of the stack, the transmitting process may then frame the data and physically transmit it over the network toward its destination. When the packet reaches its destination, the packet will then pass up through the protocol stack. Each layer of the stack in the receiving process may obtain useful information from its associated header and will strip its header from the packet before passing the packet up to the next layer for processing. At the top of the stack, the packet may then be processed by an application or user program.
The layers at the top of a protocol stack are typically designed to provide end-to-end communication between source and destination machines on the network. For instance, the top layers may provide packet sequence information and encryption. Lower layers of the stack, on the other hand, often provide information to facilitate communication between immediately adjacent machines in the network. For instance, the lower layers in the stack may provide network address information, for use in routing packets through the network.
A variety of packet switching protocols are known. These protocols include, for instance, TCP/IP, Novell's SPX/IPX, Apple Computer's Appletalk, and Microsoft's NetBEUI. Of these protocols, the best known is the TCP/IP suite, which is used to manage transmission of packets throughout the Internet and other IP networks. For purposes of illustration, but without limitation, the present invention will be described with reference to the TCP/IP suite.
The TCP/IP protocol stack includes, from lowest to highest, a link layer, a network or “IP” layer, a transport layer and an application layer. The link layer includes network interface card drivers to connect the machine to the physical network, such as an Ethernet network. The IP layer provides addressing information to facilitate independent routing of packets within or between networks and also includes other control layers, such as an “ICMP” (Internet Control Message Protocol) layer and an “ARP” (Address Resolution Protocol) layer. The transport layer allows source and destination machines to carry on a conversation with each other and includes a connection-oriented “TCP” (Transmission Control Protocol) layer and a connectionless “UDP” (User Datagram Protocol) layer. Finally, the application layer includes application programs that carry out the functionality of a network device and interface with a user.
In general, the machines that implement the protocol stack in a packet switched network (including, without limitation, source machines, destination machines, packet switches and routers) are computers. Each of these computers includes a processor, a memory, and an input/output port, and is managed by an operating system.
As is known in the art, the operating system of a computer typically distinguishes between two types of code: kernel code, and application code. Kernel code is the core of the operating system, handling matters such as process scheduling, memory management, hardware communication and network traffic processing. Application code, on the other hand, is the code used by applications, such as word processors, spreadsheets, games and compilers. In operation, kernel code and application code are stored in separate portions of memory and are each executed by the computer processor (or multiple processors). Thus, kernel code is said to be running in “kernel space,” and application code is said to be running in “user space.” Applications may, however, use the kernel to access system resources and hardware through system calls, and are therefore thought of as running above, or on top of, the kernel.
In a typical network-capable computer, part of the protocol stack is implemented in kernel space and part is implemented in user space. For reference, the part that is implemented in kernel space may be referred to as the “kernel stack” (carried out by “kernel stack code”), and the part that is implemented in user space may be referred to as the “application stack” (carried out by “application stack code”). Considering the TCP/IP protocol suite, for instance, the link, network and transport layers are each implemented by kernel stack code running in kernel space, and the application layer is implemented by application stack code running in user space.
FIG. 1
illustrates this arrangement by way of example.
When a packet passes between the application and transport layers of the TCP/IP protocol stack, the packet moves between user space and kernel space. Since user space and kernel space are separate areas of memory, however, the process of moving a packet typically includes copying the packet to the destination area and then deleting the original. Thus, in practice, once an incoming packet reaches the top of the kernel protocol stack, it is copied to user space to be processed by the application layer of the stack, and it is then deleted from kernel space. Similarly, once an outgoing packet has been processed by the application layer in user space, it is copied to kernel space to be processed by the remainder of the protocol stack, and it is then deleted from user space.
In general, when an incoming packet enters a computer or other hardware device running a protocol stack, the destination of the packet may be some specific code within the kernel, or it may be an application running in the application layer. In any event, the packet will typically be processed by multiple layers of the protocol stack finally arriving at its destination. Similarly, an outgoing packet will typically be processed by multiple layers of the protocol stack before being transmitted onto the network.
Referring to
FIG.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

System for user-space network packet modification 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 for user-space network packet modification, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System for user-space network packet modification will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3240338

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.