|
Claims  |
|
|
What is claimed is:
1. A method for selectively modifying packets or the transmission of
packets transmitted between a first layer in the ISO/OSI model in a
network system and a second layer in the ISO/OSI model in a network
system, the first layer in the ISO/OSI model being different from and
adjacent to the second layer in the ISO/OSI model, the network system
including a first process for translating packets from said first layer in
the ISO/OSI model to said second layer in the ISO/OSI model, the packet
having a plurality of properties including a packet size, a packet offset
and a plurality of packet traits, the method comprising the steps of:
A) receiving from a user a set of user-specified conditions and a
user-specified operation associated with a set of user-specified
conditions by:
A1) generating a first display of a first plurality of user interface
controls for specifying said set of user-specified conditions;
A2) receiving through user interaction with said first plurality of user
interface controls user input that specifies said set of user-specified
conditions, wherein each of said user-specified conditions designates an
arithmetic relationship between a property of packets and a specified
value;
A3) generating a second display of a second plurality of user interface
controls for specifying said user-specified operation associated with said
set of user-specified conditions;
A4) receiving through user interaction with said second plurality of user
interface controls user input that specifies said user-specified
operation, said user-specified operation being an operation that either
modifies the packet or modifies transmission of the packet;
B) causing a second process to execute when an attempt is made to transmit
a packet from said first layer in the ISO/OSI model to said second layer
in the ISO/OSI model, said second process performing the steps of:
B1) inspecting said packet to determine whether the packet satisfies said
set of user-specified conditions;
B2) if said packet satisfies said set of user-specified conditions, then
performing a user-specified operation on said packet; and
C) invoking said first process after executing said second process.
2. The method of claim 1 wherein said packet initially includes a first set
of data, wherein said step of performing said user-specified operation
includes replacing said first set of data in said packet with a second set
of data.
3. The method of claim 2 wherein said step of performing said
user-specified operation comprises modifying data contained in each of the
defined protocol traits of the OSI/ISO protocol stacks.
4. The method of claim 1 wherein said step of performing said
user-specified operation includes truncating said packet.
5. The method of claim 1 wherein said step of performing said
user-specified operation includes increasing the length of said packet.
6. The method of claim 1 wherein said step of performing said
user-specified operation includes retransmitting said packet N number of
times on said network system.
7. The method of claim 6 wherein said step of retransmitting is timed such
that a time t transpires between each retransmission of said packet.
8. The method of claim 7 wherein said step of retransmitting is timed such
that a time t.sub.i transpires between an initial transmission of said
packet and a first of said N retransmissions of said packet on said
network system.
9. The method of claim 1 wherein said method includes the step of receiving
input from a user, wherein the input selects a plurality of network ports
in said network system, wherein the method is performed only on the
plurality of network ports selected by the user.
10. The method of claim 1 wherein said steps of receiving through user
interaction with said first plurality of user interface controls user
input that specifies said set of user-specified conditions and receiving
through user interaction with said second plurality of user interface
controls user input that specifies said user-specified action include
receiving a user-generated script which specifies said user-specified set
of conditions and said user-specified operation.
11. The method of claim 1 wherein the first layer is higher in the ISO/OSI
model than the second layer.
12. The method of claim 1 wherein the first layer is lower in the ISO/OSI
model than the second layer.
13. The method of claim 1 wherein said set of user-specified conditions
includes at least one condition that is based on an output of a pseudo
random number generator.
14. The method of claim 1 wherein said step of performing said
user-specified operation comprises delaying transmission of said packet
for a user-specified period of time.
15. A method for selectively modifying packets or transmission between a
first layer in the ISO/OSI model and a second layer in the ISO/OSI model
in a network system, the first layer in the ISO/OSI model being different
from and adjacent to the second layer in the ISO/OSI model, the network
system including a first process for translating packets from said first
layer in the ISO/OSI model to said second layer in the ISO/OSI model, the
network system executing code indicated by an address stored at a
predetermined location when an attempt is made to transmit a packet from
said first layer in the ISO/OSI model to said second layer in the ISO/OSI
model, said address initially indicating the location of a first portion
of code corresponding to said first process, the packet having a plurality
of properties including a packet size, a packet offset and a plurality of
packet traits, the method comprising the steps of:
A) revising said address to indicate the location of a second portion of
code corresponding to a second process, wherein revising said address
causes said network system to execute said second process when said
attempt is made to transmit said packet from said first layer in the
ISO/OSI model to said second layer in the ISO/OSI model, said second
process performing the steps of:
A1) inspecting said packet to determine whether the packet satisfies a set
of user-specified conditions, wherein each of said user-specified
conditions designates an arithmetic relationship between a property of
said packet and a specified value;
A2) if said packet satisfies said set of user-specified conditions, then
performing a user-specified operation on said packet, said user-specified
operation being an operation that a user has associated with said set of
user-specified condition that either modifies the packet or affects
transmission of the packet; and
B) invoking said first process after executing said second process.
16. The method of claim 15 wherein said step of invoking said first process
after executing said second process includes creating a reference in said
second portion of code to said first portion of code.
17. A method for selectively modifying packets or transmission of between a
first layer in the ISO/OSI model and a second layer in the ISO/OSI model
in a network system, the first layer in the ISO/OSI model being different
from and adjacent to the second layer in the ISO/OSI model, the network
system including a first process for translating packets from said first
layer in the ISO/OSI model to said second layer in the ISO/OSI model, the
packet having a plurality of properties including a packet size, a packet
offset and a plurality of packet traits, the method comprising the steps
of:
A) causing a second process to execute when an attempt is made to transmit
a packet from said first layer in the ISO/OSI model to said second layer
in the ISO/OSI model, said second process performing the steps of:
A1) inspecting said packet to determine whether the packet satisfies a set
of user-specified conditions, wherein each of said user-specified
conditions designates an arithmetic relationship between a property of
said packet and a specified value;
A2) if said packet satisfies said set of user-specified conditions, then
performing a user-specified operation on said packet, said user-specified
operation being an operation that a user has associated with said set of
user-specified condition that either modifies the packet or affects
transmission of the packet; and
B) invoking said first process after executing said second process;
wherein said set of user-specified conditions further includes a first
condition and a second condition, wherein said first condition is whether
said second condition has been satisfied by a user-specified number of
packets previously transmitted from said first layer in the ISO/OSI model
to said second layer in the ISO/OSI model. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to networking systems. Particularly, the
present invention relates to modification of packets in a networking
system for a variety of applications, including testing.
2. Background Information
Modern computer systems, especially personal computers, have gained
increasing capabilities in recent years for communication. Specifically,
networking technology has allowed the proliferation of such techniques as
file sharing, message passing, and program linking in order to provide
additional capabilities. For example, the proliferation of electronic mail
has been an increased application for modern personal computer systems.
Such electronic mail systems allow large numbers of users of computer
systems to be linked together and communicate via messages sent over the
mail system.
File sharing allows the files on one user's fixed-media device of his
computer to be shared with another user's computer system. Thus, a
computer system upon which files are shared becomes a "server." In this
manner, data and files may be transferred to and from various systems in
the network. Data and files are transmitted between computers using
discrete data known as "packets." These packets follow a very specific
syntax specified by the ISO-OSI reference model (Internal Standards
Organization which developed and published a standard networking framework
known as the Open Systems Interconnection reference model) in some
computer systems.
It has been increasingly a requirement in networking systems to provide
means for testing the reliability of such systems. While a network is
operating, various failures may occur in the network due to various
operating conditions. This causes packets transmitted in the system to
become distorted or changed in some other way. For example, hardware
failures may prevent a packet from traversing from one area of a network
to another. In another situation, such a hardware failure may result in
data loss or packet transmission errors, such as delays in transmission,
multiple transmissions of same packets, packets arriving out of order, or
data errors. Network traffic and/or failures may also affect the network
and cause transmission errors. In fact, depending upon the failures which
occur in a network, any combination of these errors may occur where
packets are distorted in the network. Thus, to ensure the integrity of
such systems and the related control hardware and software used in the
network, testing which operates to simulate all possible error conditions
which may occur is desirable. To date, no tools have existed in the
personal computer industry which allow such errors to be simulated.
SUMMARY AND OBJECTS OF THE INVENTION
One of the objects of the present invention is to provide a means for
testing in a networking computer system.
Another of the objects of the present invention is to provide a means for
modifying data transmitted in a networking system to simulate errors which
may occur in such a networking system.
Another of the objects of the present invention is to provide a means for
altering data contained within packets transmitted in a networking system.
Another of the objects of the present invention is to provide a means for
delaying packets in a networking system.
These and other objects of the present invention are provided for by a
method and apparatus in a computer system coupled to a network for
altering information in said network by the computer system. A process is
inserted between two lower layers of the ISO/OSI model. The process then
receives a packet from a first layer of the ISO/OSI model, and determines
whether a criteria comprising a set of conditions has been determined in
the packet. If any of the set of criteria is present in the packet then
the packet is transformed into a modified packet according to a predefined
action. Then, the modified packet is transmitted to a second layer of the
ISO/OSI model. In different embodiments the layers may be either higher or
lower relative to one another in order that incoming or outgoing packets
be modified. In a preferred embodiment, modification to the packet
includes replacing data in said packet, truncating the packet, increasing
the length or the packet, retransmitting the packet N number of times on
the network, etc. Intervals may also be specified between retransmissions
of the packet in this example, or the number of times the packet is
retransmitted may be specified. The method may also comprise modifying
data contained in each of the defined protocol traits of the ISO/OSI
protocol stacks. The method may be performed on a plurality of network
ports selected by a user. The method may also be performed under control
of a user-generated script, or by remote control from another node. The
method may also employ user-defined processes for condition (criteria)
checking and/or modifications.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation
in the figures of the accompanying in which like references indicate like
elements and in which:
FIG. 1 shows a block diagram of a computer system upon which the methods
and apparatus of the present invention may be implemented.
FIG. 2 shows a block diagram of the multiple layer ISO-OSI reference model
for networking environments.
FIG. 3 shows a table of pointers of the Local Access Protocol (LAP) write
"hook."
FIG. 4 shows a table of pointers for the LAPWrite hook with the packet
modification process inserted.
FIG. 5 is a view of a user's window which displays the conditions and
actions to be performed on packets, the list of ports, and statistics
pertaining to the ports.
FIG. 6 shows an example window displaying a status of the packet
interception/modification.
FIG. 7 shows a distribution window which allows a user to specify an
initial behavior when packets are intercepted and modified.
FIG. 8a shows a criteria window which is used for specifying conditions and
actions to be perforated, and FIG. 8b shows options available under pop-up
menu items for those conditions and actions.
FIGS. 9a and 9b show parameter windows for specifying condition and action
parameters for packet modification.
FIG. 10 shows a window for altering a packer's size.
FIG. 11 shows a window for altering a string in packets.
FIG. 12 shows a window for altering a packet parameter.
FIG. 13 shows a delay window which may allow a user to specify when and how
long packets are delayed in the network.
FIG. 14 shows a window which allows a user to specify delays and multiple
transmissions (reverb) of a packet in the network.
FIG. 15 shows a complete user's window which has some example conditions
and actions.
FIGS. 16a shows a portion of a process flow diagram for a process which may
be used in the preferred embodiment for intercepting and modifying
packets.
FIG. 16b shows a portion of the process flow diagram illustrated in FIG.
16a.
FIG. 16c shows a portion of the process flow diagram illustrated in FIG.
16a.
FIG. 16d shows a portion of a process flow diagram for a process performed
when a user specifies conditions and actions for which packet modification
is required.
FIG. 16e shows a portion of a process flow diagram for a process in which
one computer system causes another computer system to intercept and modify
packets in a particular manner.
FIG. 17 shows an example parameter queue element which is used for defining
a condition in the condition queue.
FIG. 18 shows a condition queue element which always returns true.
FIG. 19 shows examples action queue elements which are used for specifying
actions.
FIG. 20 shows an example of a user-defined condition queue element.
FIG. 21 shows an example user-defined action queue element.
DETAILED DESCRIPTION
A method and apparatus for modifying packets in a computer system network
is described. In the following description, for the purposes of
explanation, specific fields, data, and user interfaces have been set
forth in order to provide a thorough understanding of the :present
invention. However, it will be apparent to one skilled in the art that the
present invention may be practiced without these specific details. In
other instances, well-known circuits and devices are shown in block
diagram form in order to not unnecessarily obscure the present invention.
Referring to FIG. 1, the computer system upon which the preferred
embodiment of the present invention is implemented is shown as 100. 100
comprises a bus or other communication means 101 for communicating
information, and a processing means 102 coupled with bus 101 for
processing information. System 100 further comprises a random access
memory (RAM) or other dynamic storage device 104 (referred to as main
memory), coupled to bus 101 for storing information and instructions to be
executed by processor 102. Main memory 104 also may be used for storing
temporary variables or other intermediate information during execution of
instructions by processor 102. Computer system 100 also comprises a read
only memory (ROM) and/or other static storage device 106 coupled to bus
101 for storing static information and instructions for processor 102, and
a mass storage device 107 such as a magnetic disk or optical disk and its
corresponding disk drive. Mass storage device 107 is coupled to bus 101
for storing information and instructions. Computer system 100 may further
be coupled to a display device 121, such as a cathode ray tube (CRT)
coupled to bus 101 for displaying information to a computer user. An
alphanumeric input device 122, including alphanumeric and other keys, may
also be coupled to bus 101 for communicating information and command
selections to processor 102. An additional user input device is cursor
control 123, such as a mouse, a trackball, stylus, or cursor direction
keys, coupled to bus 101 for communicating direction information and
command selections to processor 102, and for controlling cursor movement
on display 121. Another device which may be coupled to bus 101 is hard
copy device 124 which may be used for printing instructions, data, or
other information on a medium such as paper, film, or similar types of
media. Lastly, computer system 100 may be coupled to a network connection
module 125 for communication with other computers, network routers, or
other peripheral devices such as shared printers, modems, etc.
In the preferred embodiment, computer system 100 is one of the
Macintosh.RTM. family of personal computers, such as the Macintosh.RTM.
Performa.TM. or Macintosh.RTM. Quadra.TM. manufactured by Apple.RTM.
Computer, Inc. of Cupertino, Calif. (Apple, Macintosh, Performa, and
Quadra are trademarks of Apple Computer, Inc.). Processor 102 is one of
the 68000 family of microprocessors manufactured by Motorola, Inc., of
Schaumburg, Ill., such as the 68030 or 68040 microprocessor.
In a preferred embodiment, network connection module 125 is used for
coupling the computer system to other computer systems in a typical
network environment. Network connection module may be any number of
hardware devices commercially available, however, for the purposes of the
remainder of this discussion, network connection module 125 is the
standard built-in AppleTalk-brand connection module available from Apple
Computer, Inc. of Cupertino, Calif. Note that, in other embodiments, the
computer system may contain additional add-in cards or other built-in
networking features which provide more high performance networking
capabilities, such as Ethernet, Token Ring, TCP/IP, or other networking
standards which are commercially available in the industry. For connecting
to a Macintosh.RTM.-brand personal computer, many such networking
peripheral integrated circuit cards are commercially available which may
be inserted into an expansion slot in the computer system and may be used
for communicating over a higher performance networking medium. It can be
appreciated by one skilled in the art that any type of network peripheral
adapter may be used as network connection module 125.
The underlying routines which provide the basis for the functioning of the
preferred embodiment, and additional user expansion of these functions, is
provided by routines written in the "C"-brand programming language and
inline 68000 assembly language. Routines are compiled using the Think C
brand compiler available from Symantec Corporation of Cupertino, Calif.
which generates computer object code for Motorola 68000 family central
processing units operating in the Macintosh.RTM. brand operating system.
Examples of the data structures and messages used in the preferred
embodiment are shown in the figures attached to this patent application.
These will be discussed and explained in more detail below.
Before discussing the preferred embodiment in detail, a brief overview of
the user interface used by the preferred embodiment. The preferred
embodiment uses a "windowing" or graphical user interface (GUI) operating
system wherein selections are performed using a cursor control device such
as 123 shown in FIG. 1. Typically, an item is "selected" on a computer
system display such as 121 using cursor control device 123 by depressing a
selection button which is typically mounted on the cursor control device
such as 123. Therefore, in order to run a given program, the user merely
selects area on a computer display by "double clicking" the area on the
screen. A "double click" is an operation comprising two rapid depressings
of the mouse or other selection device indicating to the operating system
that the program is desired to be run. Further, "pull-down" menus are used
in the preferred embodiment. A pull-down menu is a selection which is
accessible by depressing the selection button when the cursor is pointing
at a menu bar (typically at the top of a computer screen), and "dragging"
(moving cursor control device 123 while the selection button is depressed)
until the selection the user wishes to access is reached on the pull-down
menu. An item is indicated as being selected on a pull-down menu when the
item is displayed in " reverse video" or white text on a black background.
The selection is performed by the user releasing the selection button when
the selection he wishes to make is displayed in this reverse video format.
Other selections and options are available using standard GUI functions.
Note also that GUI's may incorporate other selection devices, such as a
stylus or "pen" which may be interactive with a display. Thus, a user may
"select" regions of the GUI on the display by touching the stylus against
the display. In this instance, such displays may be touch or
light-sensitive to detect where the selection occurs. Such devices may
thus detect selection position and the selection as a single operation
instead of the "point and click," as in a system incorporating a mouse or
trackball. Such a system may also lack a keyboard such as 122 wherein all
interface is provided via the stylus as a writing instrument (like a pen)
and the written text is interpreted using optical character recognition
(OCR) techniques. These types of systems may also benefit from the methods
and apparatus described herein.
FIG. 2 shows a representation of the typical prior art ISO-OSI reference
model (Internal Standards Organization which developed and published a
standard networking framework known as the Open Systems Interconnection
reference model) as applied to the Macintosh.RTM.-brand computer system.
This model defines in explicit terms the concepts of a protocol and
service interface. It defines a protocol architectural framework
consisting of seven layers: Physical 201; Data Link 205; Network 210;
Transport 211; Session 216; Presentation 221; and Application 224. Each
layer may be thought of as a separate process or filter which either
encapsulates protocol information onto existing data packets, strips
information transmitted in the networking system or routes appropriate
data packets through the system depending on the type of packet and the
particular layer in which the packet resides. The various layers allow
packets to be transmitted from one variety of hardware to another in one
process (socket) to another. A detailed discussion of the various features
performed by the layers of protocol stack 200 will not be submitted,
however, a detailed description of the various functions of the protocol
stack may be found in the publication G. Sidhu, R. F. Andrews, and A. B.
Oppenheimer, Inside AppleTalk (Second Edition, 1990) ("Inside
AppleTalk").
Note that the following discussion of the apparatus discussed herein will
refer specifically to a series of routines which are compiled, linked, and
then run in object code representation in computer system 100 of the
preferred embodiment. However, it can be appreciated by one skilled in the
art that the foregoing methods and apparatus may be implemented in a
special purpose hardware device, such as discrete logic devices, large
scale integrated circuits (LSI's), or other specialized hardware. It can
be appreciated by one skilled in the art that the description herein has
equal application to other apparatus having similar functions.
The preferred embodiment implements a process which operates in the
background of a computer system during normal system run time. The
modification process of the preferred embodiment is inserted as a run time
process which operates in conjunction with the Link Access Protocol (LAP)
software used in the Macintosh.RTM. brand computer systems. This process
is known as the "LAP Manager" and is used for translating packets between
Network Layer 210 and Data Link Layer 205, as shown in FIG. 2. Any one of
the currently supported link access protocols, such as TokenTalk.TM. brand
link access protocol (TLAP) 206, EtherTalk.TM. brand link access protocol
(ELAP) 207, or LocalTalk.TM. brand link access protocol (LLAP) 208 may be
utilized in this preferred embodiment (trademarks of Apple Computer). Of
course, it can be appreciated by one skilled in the art that other link
access protocols residing in data link layer 205 may be supported in
future versions of the networking system. Each of the packets translated
from Data Link Layer 205 is handled by the Datagram Delivery Protocol 209,
as shown in FIG. 2. Thus, packets are modified from DDP layer 209 and
transmitted to protocols layers 206, 207, or 208, as is shown in FIG. 2 in
one embodiment. In another embodiment, packets received from the higher
levels 206, 207, and 208 are modified and passed to Data Link layer 205.
Thus, in either case, packets being received and/or those transmitted may
be intercepted and/or modified.
The packet modification method of the preferred embodiment operates in
conjunction with the AppleTalk-brand LAP (link access protocol) manager.
The LAP manager is described in detail in the publication Macintosh.RTM.
AppleTalk.RTM. Connections Programmer's Guide, Part No. M7056/A (1990)
("Connections Guide"), available from the Apple Programmer and Developer's
Association (APDA) of Cupertino, Calif. This allows the network
modification methods of the preferred embodiment to be used with any
application program interfaces supported by the AppleTalk LAP manager. Any
future network links which, then, may be used in conjunction with the
packet modification described herein will be supported as long as they are
complying with the Application Program's Interface (API) of the LAP
Manager.
The packet modification method of the preferred embodiment utilizes the
system calls LWrtGet, LWrtRemove, and LWrtInsert described in Connections
Guide at pp. 29-48 to insert computer code that provides the interception
and modification process of the preferred embodiment into the LAP
manager's internally maintained table of pointers for connections which
communicate with the hardware devices specified for a given port which
resides at physical layer 201, as is shown in FIG. 2. This table of
pointers, in the preferred embodiment, is accessed via the "LAPWrite
hook." Thus, for a given port, LWrtGet is called in order to determine the
location of the original code for controlling the port's hardware link.
That address is then inserted into a routine of executable code of the
preferred embodiment that has been created in memory for controlling that
port by the packet interception and modification process of the preferred
embodiment. LWrtRemove removes the reference to the original code which
was used for controlling the hardware link. To replace that reference, the
preferred embodiment uses LWrtInsert to insert a reference to the process
module of the preferred embodiment into the table accessed by the LAPWrite
hook of the LAP Manager. Then, whenever a packet is received, the packets
are intercepted by the newly inserted packet interception and modification
process, and when the process has completed processing the packet, a call
is made to the original driver for the port residing at data link layer
205, and the packet is then processed in its normal manner.
FIGS. 3 and 4 graphically illustrate the insertion of the packet
interception and modification procedure into the table of processes
accessed via the LAPWrite hook. FIG. 3 shows table 310 which is associated
with each of the processes for the link access protocols. FIG. 3 shows the
table prior to the insertion of the packet interception and modification
process. As is shown, for each of the ports 0-n, table 310 references each
of the port processes 300-303 which handles the data link layer
translation for each of the physical ports 0-n which are connected to the
system. After insertion of the packet interception and modification
process, table 310 references the packet interception/modification
procedure using a different pointer for each of the processes 400-403.
Thus, once a packet is transmitted to data link layer 205, they are passed
to the interception/modification process, as exemplified by graphical
images 400-403 representing processes to the interception/modification
process. Then, the process references each of the original data link
processes 300-303, as is shown in FIG. 4. Thus, in this manner, packets
received are intercepted by the packet interception/modification process,
modified, if necessary, and then passed to the data link layer routines
for further processing and transmission to the hardware devices for the
physical links at physical layer 201.
The preferred embodiment allows a user to view conditions upon which packet
interception and modification will be performed and, further, view actions
which occur upon detection of those conditions. The user enters the
information using a variety of input methods discussed later. Moreover,
feedback is provided which gives a status of the current packet
interception/modification. This is provided in window 500. Window 500 has
three distinct portions. 501 is used by the user for viewing those
conditions to detect and actions which are to occur upon the meeting of
the conditions. This is done in a "scripting" programming language wherein
the user may either specify | | |