Easy To Use Patents Search & Patent Lawyer Directory

At Patents you can conduct a Patent Search, File a Patent Application, find a Patent Attorney, or search available technology through our Patent Exchange. Patents are available using simple keyword or date criteria. If you are looking to hire a patent attorney, you've come to the right place. Protect your idea and hire a patent lawyer.

One embodiment of the present invention provides a system that facilitates
accessing a network management protocol table. The system operates by
first collecting a network management protocol tuple that includes data
related to a network connection. Next, the system creates a hash index
from the network management protocol tuple. This network management
protocol tuple is inserted into the network management protocol table.
The system then saves a pointer to the row indexed by the hash index in a
hash table. The system also forms a search index using data within the
network management protocol tuple that identifies the data pointed to by
the hash index in the hash table. This search index is inserted into a
search tree, so that the hash index provides fast insertion into the
network management protocol table and the search index in the search
table provides fast ordered retrieval from the network management
protocol table.

1. A method to facilitate accessing a network management protocol table,
comprising: collecting a network management protocol tuple, wherein the
network management protocol tuple includes data related to a network
connection; creating a hash index from the network management protocol
tuple; inserting the network management protocol tuple into the network
management protocol table; saving a pointer to a row indexed by the hash
index in a hash table; forming a search index using a datum within the
network management protocol tuple, wherein the search index identifies
data pointed to by the hash index in the hash table; and inserting the
pointer to the row indexed by the hash index into a search tree using the
search index, whereby the hash index provides fast insertion into the
network management protocol table and the search index provides fast
ordered retrieval from the network management protocol table.

2. The method of claim 1, wherein data related to the network connection
includes a source address, a destination address, a number of packets, a
number of octets, a number of reverse packets, and a number of reverse
octets.

3. The method of claim 2, wherein data related to the network connection
includes a virtual channel identifier.

4. The method of claim 3, further comprising: collecting a second network
management protocol tuple; creating a second hash index from the second
network management protocol tuple; determining if the second hash index
relates to the network connection identified by the hash index; and if
the second hash index relates to the network connection identified by the
hash index, updating the number of packets, the number of octets, the
number of reverse packets, and the number of reverse octets in the
network management protocol tuple in the network management protocol
table, so that the network management protocol tuple includes data from
the second network management protocol tuple, otherwise inserting the
second network management protocol tuple into the network management
protocol table, saving a pointer to the row indexed by the second hash
index in the hash table, forming a second search index using the datum
within the second network management protocol tuple, wherein the second
search index points to the second hash index, and inserting the pointer
to the row indexed by the second hash index into the search tree.

5. The method of claim 4, wherein the search tree is a balanced search
tree, whereby a maximum search depth in a first subtree of a node within
the search tree differs from the maximum search depth in a second subtree
of the node by no more than one.

6. The method of claim 5, further comprising receiving a request to read a
tuple within the network management protocol table; searching the search
tree for the tuple identified in the request; locating the tuple within
the network management protocol table using the search index within the
search tree; reading the tuple; and returning the tuple in response to
the request.

7. The method of claim 6, further comprising a plurality of search trees,
wherein each search tree within the plurality of search trees is sorted
on a different datum within the network management protocol tuple.

8. A computer-readable storage medium storing instructions that when
executed by a computer cause the computer to perform a method to
facilitate accessing a network management protocol table, the method
comprising: collecting a network management protocol tuple, wherein the
network management protocol tuple includes data related to a network
connection; creating a hash index from the network management protocol
tuple; inserting the network management protocol tuple into the network
management protocol table; saving a pointer to a row indexed by the hash
index in a hash table; forming a search index using a datum within the
network management protocol tuple, wherein the search index identifies
data pointed to by the hash index in the hash table; and inserting the
pointer to the row indexed by the hash index into a search tree using the
search index, whereby the hash index provides fast insertion into the
network management protocol table and the search index provides fast
ordered retrieval from the network management protocol table.

9. The computer-readable storage medium of claim 8, wherein data related
to the network connection includes a source address, a destination
address, a number of packets, a number of octets, a number of reverse
packets, and a number of reverse octets.

10. The computer-readable storage medium of claim 9, wherein data related
to the network connection includes a virtual channel identifier.

11. The computer-readable storage medium of claim 1O, the method further
comprising: collecting a second network management protocol tuple;
creating a second hash index from the second network management protocol
tuple; determining if the second hash index relates to the network
connection identified by the hash index; and if the second hash index
relates to the network connection identified by the hash index, updating
the number of packets, the number of octets, the number of reverse
packets, and the number of reverse octets in the network management
protocol tuple in the network management protocol table, so that the
network management protocol tuple includes data from the second network
management protocol tuple, otherwise inserting the second network
management protocol tuple into the network management protocol table,
saving a pointer to the row indexed by the second hash index in the hash
table, forming a second search index using the datum within the second
network management protocol tuple, wherein the second search index points
to the second hash index, and inserting the pointer to the row indexed by
the second hash index into the search tree.

12. The computer-readable storage medium of claim 11, wherein the search
tree is a balanced search tree, whereby a maximum search depth in a first
subtree of a node within the search tree differs from the maximum search
depth in a second subtree of the node by no more than one.

13. The computer-readable storage medium of claim 12, the method further
comprising receiving a request to read a tuple within the network
management protocol table; searching the search tree for the tuple
identified in the request; locating the tuple within the network
management protocol table using the search index within the search tree;
reading the tuple; and returning the tuple in response to the request.

14. The computer-readable storage medium of claim 13, the method further
comprising a plurality of search trees, wherein each search tree within
the plurality of search trees is sorted on a different datum within the
network management protocol tuple.

15. An apparatus that facilitates accessing a network management protocol
table, comprising: a collecting mechanism that is configured to collect a
network management protocol tuple, wherein the network management
protocol tuple includes data related to a network connection; a creating
mechanism that is configured to create a hash index from the network
management protocol tuple; an inserting mechanism that is configured to
insert the network management protocol tuple into the network management
protocol table; a saving mechanism that is configured to save a pointer
to a row indexed by the hash index in a hash table; a forming mechanism
that is configured to form a search index using a datum within the
network management protocol tuple, wherein the search index identifies
data pointed to by the hash index in the hash table; and a search tree
insertion mechanism that is configured to insert the pointer to the row
indexed by the hash index into a search tree using the search index,
whereby the hash index provides fast insertion into the network
management protocol table and the search index provides fast ordered
retrieval from the network management protocol table.

16. The apparatus of claim 15, wherein data related to the network
connection includes a source address, a destination address, a number of
packets, a number of octets, a number of reverse packets, and a number of
reverse octets.

17. The apparatus of claim 16, wherein data related to the network
connection includes a virtual channel identifier.

18. The apparatus of claim 17, further comprising: the collecting
mechanism that is further configured to collect a second network
management protocol tuple; wherein the creating mechanism is further
configured to create a second hash index from the second network
management protocol tuple; a determining mechanism that is configured to
determine if the second hash index relates to the network connection
identified by the hash index; an updating mechanism that is configured to
update the number of packets, the number of octets, the number of reverse
packets, and the number of reverse octets in the network management
protocol tuple in the network management protocol table, so that the
network management protocol tuple includes data from the second network
management protocol tuple; wherein the inserting mechanism is further
configured to insert the second network management protocol tuple into
the network management protocol table; wherein the saving mechanism is
further configured to save a pointer to the row indexed by the second
hash index in the hash table; wherein the forming mechanism is further
configured to form a second search index using the datum within the
second network management protocol tuple, wherein the second search index
points to the second hash index; and wherein the search tree insertion
mechanism is further configured to insert the pointer to the row indexed
by the second hash index into the search tree.

19. The apparatus of claim 18, wherein the search tree is a balanced
search tree, whereby a maximum search depth in a first subtree of a node
within the search tree differs from the maximum search depth in a second
subtree of the node by no more than one.

20. The apparatus of claim 19, further comprising a receiving mechanism
that is configured to receive a request to read a tuple within the
network management protocol table; a searching mechanism that is
configured to search the search tree for the tuple identified in the
request; a locating mechanism that is configured to locate the tuple
within the network management protocol table using the search index
within the search tree; a reading mechanism that is configured to read
the tuple; and a returning mechanism that is configured to return the
tuple in response to the request.

21. The apparatus of claim 20, including a plurality of search trees,
wherein each search tree within the plurality of search trees is sorted
on a different datum within the network management protocol tuple.

Description

BACKGROUND

[0001] 1. Field of the Invention

[0002] The present invention relates to computer network management. More
specifically, the present invention relates to a method and an apparatus
that facilitates accessing network management protocol tables.

[0003] 2. Related Art

[0004] Network management database servers typically maintain tables
related to network traffic. For example, a network management database
server can maintain a table for transactions, which includes columns for
virtual channel number, source Internet protocol (IP) address,
destination IP address, number of packets transmitted, number of
octets--8-bit bytes--transmitted, number of reverse packets transmitted,
and number of reverse octets transmitted. In general, the network
management database server can maintain multiple tables, wherein each
table includes columns for different sets of data.

[0005] Each row within these tables contains the data, or tuple, related
to an individual network connection. A network connection is identified
by source IP address and destination IP address, and for connections
using virtual channels, the channel number.

[0006] During operation, a monitor, for example a remote monitor (RMON),
collects a tuple for each transaction on the monitored network. If the
connection does not have an entry in the table, an entry is added to the
table for the connection, otherwise, the existing entry is updated with
respect to the number of packets and number of octets being transferred
in each direction.

[0007] In order to facilitate rapidly entering data into rows within the
tables, these tables are typically accessed using a hash code. A hash
code is generated using the connection information--source IP address,
destination IP address, and possibly the virtual channel number--and is
used as an index to locate the correct row within the table. Hash code
generators are well known in the art and will not be discussed further
herein. The hash code points to where the tuple resides, or should reside
if it is in the table. However, one consequence of using the hash code is
that the entries in the table are in a random order which can create
problems in performing some tasks.

[0008] Operators access these tuples using a network management protocol
agent to determine the operating condition of the network. Typically, the
operator requests the next row within the table. To determine the next
row in the table, the system first sorts the table, and then accesses the
row following the current row in the table. This procedure works well for
small tables. However, as the table grows large, the time to sort the
table increases. With very large tables, the sort time becomes quite
large and exceeds the time between transactions on the network, thus
interfering with the data collection process.

[0009] What is needed is a method and an apparatus that facilitates
accessing network management protocol tables without the problems listed
above.

SUMMARY

[0010] One embodiment of the present invention provides a system that
facilitates accessing a network management protocol table. The system
operates by first collecting a network management protocol tuple that
includes data related to a network connection. Next, the system creates a
hash index from the network management protocol tuple. This network
management protocol tuple is inserted into the network management
protocol table. The system then saves a pointer to the row indexed by the
hash index in a hash table. The system also forms a search index using
data within the network management protocol tuple that identifies the
data pointed to by the hash index in the hash table. This search index is
inserted into a search tree, so that the hash index provides fast
insertion into the network management protocol table and the search index
in the search table provides fast ordered retrieval from the network
management protocol table.

[0011] In one embodiment of the present invention, the data related to the
network connection includes a source address, a destination address, a
number of packets, a number of octets, a number of reverse packets, and a
number of reverse octets.

[0012] In one embodiment of the present invention, the data related to the
network connection includes a virtual channel identifier.

[0013] In one embodiment of the present invention, the system collects a
second network management protocol tuple from the network. The system
then creates a second hash index from the second network management
protocol tuple. Next, the system determines if the second hash index
relates to the network connection identified by the previous hash index.
If the second hash index relates to the network connection identified by
the previous hash index, the system updates the number of packets, the
number of octets, the number of reverse packets, and the number of
reverse octets in the network management protocol tuple in the network
management protocol table, so that the previous network management
protocol tuple includes data from the second network management protocol
tuple. If the second hash index does not relate to the network connection
identified by the previous hash index, the system inserts the second
network management protocol tuple into the network management protocol
table and saves a pointer to the row indexed by the second hash index in
the hash table. The system also forms a second search index using the
data within the second network management protocol tuple that points to
the second hash index. The system then inserts a pointer to the row
indexed by the second hash index into the search tree.

[0014] In one embodiment of the present invention, the search tree is a
balanced search tree, whereby the maximum search depth in one subtree of
a node within the search tree differs from the maximum search depth in
another subtree of the same node by no more than one.

[0015] In one embodiment of the present invention, the system receives a
request to read a tuple within the network management protocol table. The
system then searches the search tree for the tuple identified in the
request. Next, the system locates the tuple within the network management
protocol table using the search index within the search tree. The system
then reads the tuple and returns the tuple in response to the request.

[0016] In one embodiment of the present invention, the system uses
multiple search trees, wherein each search tree is sorted on different
data within the network management protocol tuple.

BRIEF DESCRIPTION OF THE FIGURES

[0017] FIG. 1 illustrates computing devices coupled together in accordance
with an embodiment of the present invention.

[0018] FIG. 2 illustrates data collector 112 in accordance with an
embodiment of the present invention.

[0020] FIG. 4 illustrates various data structures in accordance with an
embodiment of the present invention.

[0021] FIG. 5 is a flowchart illustrating the process of collecting and
storing tuples in accordance with an embodiment of the present invention.

[0022] FIG. 6 is a flowchart illustrating the process of responding to
requests for tuples in accordance with an embodiment of the present
invention.

DETAILED DESCRIPTION

[0023] The following description is presented to enable any person skilled
in the art to make and use the invention, and is provided in the context
of a particular application and its requirements. Various modifications
to the disclosed embodiments will be readily apparent to those skilled in
the art, and the general principles defined herein may be applied to
other embodiments and applications without departing from the spirit and
scope of the present invention. Thus, the present invention is not
intended to be limited to the embodiments shown, but is to be accorded
the widest scope consistent with the principles and features disclosed
herein.

[0024] The data structures and code described in this detailed description
are typically stored on a computer readable storage medium, which may be
any device or medium that can store code and/or data for use by a
computer system. This includes, but is not limited to, magnetic and
optical storage devices such as disk drives, magnetic tape, CDs (compact
discs) and DVDs (digital versatile discs or digital video discs), and
computer instruction signals embodied in a transmission medium (with or
without a carrier wave upon which the signals are modulated). For
example, the transmission medium may include a communications network,
such as the Internet.

[0025] Computing Devices

[0026] FIG. 1 illustrates computing devices coupled together in accordance
with an embodiment of the present invention. Console 102, computers 104
and 106, and network management database server 110 are coupled together
over network 108. Console 102, computers 104 and 106, and network
management database server 110 can generally include any type of computer
system, including, but not limited to, a computer system based on a
microprocessor, a mainframe computer, a digital signal processor, a
portable computing device, a personal organizer, a device controller, and
a computational engine within an appliance.

[0027] Network 108 can generally include any type of wire or wireless
communication channel capable of coupling together computing nodes. This
includes, but is not limited to, a local area network, a wide area
network, or a combination of networks. In one embodiment of the present
invention, network 108 includes the Internet.

[0028] Network management database server 110 collects and saves data
related to transactions across network 108 between computers such as
computers 104 and 106. A practitioner with ordinary skill in the art will
note that there may be many more computers coupled to network 108 than
shown. In fact, these computers may number in the hundreds or thousands.

[0029] Console 102 is used to access network management database server
110 across network 108 to access the data maintained by network
management database server 110. There may also be more than one console
coupled to network 108.

[0033] Collection mechanism 202 monitors network transactions on network
108 and collects data--or tuples--concerning these transactions. For
example, collection mechanism 202 can collect the source Internet
protocol (IP) address, the destination IP address, the number of packets
sent from source to destination, the number of octets--8 bit bytes--sent
from source to destination, the number of packets sent from destination
to source, and the number of octets sent from destination to source. The
number of packets sent from destination to source can be termed reverse
packets or simply r-packets while the number of octets sent from
destination to source can be termed reverse octets or simply r-octets.
Additionally, if the network is a virtual network, collection mechanism
202 can collect the channel number.

[0034] Hash index creator 204 creates a hash of the identifying parameters
of the tuples collected by collection mechanism 202. Typically, these
identifying parameters include channel, source IP address, and
destination IP address. Hash mechanisms and algorithms are well known in
the art and will not be described further herein. Any suitable hash
mechanism can be used for hash index creator 204.

[0035] Locating mechanism 206 locates the proper row within network
management protocol table 402 (see FIG. 4) for the tuple collected by
collection mechanism 202 using the hash index created by hash index
creator 204. If this row already contains a tuple relating to this
network connection, tuple updating mechanism 210 updates the data in the
saved tuple to include the data in the current tuple.

[0036] If this row is empty, indicating that the tuple relates to a
previously unrecorded network connection, saving mechanism 208 saves the
tuple in the indicated row of network management protocol table 402.
After saving mechanism 208 saves the tuple in network management protocol
table 402, search index creator 212 creates a search index for the tuple
including a pointer to the entry in hash table 404. Next, search tree
insertion mechanism 214 inserts the search index in search tree 406. Note
that search tree insertion mechanism 214 inserts nodes in search tree 406
in a manner such that search tree 406 remains balanced. Mechanisms for
balanced insertion into a search tree are well known and will not be
discussed further herein. Note also that there can be more than one
search tree, each sorted on different criteria. For example, search tree
406 can be sorted on (src IP, dst IP, channel), while search tree 408 can
be sorted on (channel, src IP, dst IP). Other combinations are possible
depending on the desired results.

[0043] Network management protocol table 402 stores data related to
transactions between computers coupled to network 108. The data stored
within network management protocol table 402 is dependent upon the
requirements of the system. In this example, network management protocol
table 402 includes data for a virtual network and includes columns for
channel number, source Internet protocol (IP) address, destination IP
address, number of packets, number of octets, number of reverse packets,
and number of reverse octets.

[0044] Hash table 404 includes pointers to the tuples stored within
network management protocol table 402. The hash index is based upon the
channel number, source IP address, and destination IP address so that the
tuple, or the place within network management protocol table 402 where
the tuple should be stored, can be located efficiently and swiftly.

[0045] Search trees 406 and 408 include pointers to the hash table entries
so that network management protocol agent 114 can locate an arbitrary
tuple swiftly and efficiently. Note that requests from console 102
typically require the tuples to be in sorted order for efficient recovery
of the next tuple in the table. Search trees 406 and 408 provide
different orders for data recovery. For example, search tree 406 may be
sorted on (channel, src IP, dst IP) while search tree 408 may be sorted
on (src IP, dst IP, channel).

[0046] Collecting Data

[0047] FIG. 5 is a flowchart illustrating the process of collecting and
storing tuples in accordance with an embodiment of the present invention.
The system starts when collection mechanism 202 within data collector 112
collects a network management protocol tuple on network 108 (step 502).
Next, hash index creator 204 creates a hash index for the tuple (step
504). Locating mechanism 206 then locates the proper row within network
management protocol table 402 for storing the tuple (step 505).

[0049] If the row contains a tuple at 506, tuple updating mechanism 210
updates the existing tuple within network management protocol table 402
to include the data in the current tuple (step 516).

[0050] Requests for Tuples

[0051] FIG. 6 is a flowchart illustrating the process of responding to
requests for tuples in accordance with an embodiment of the present
invention. The system starts when request receiver 302 in network
management protocol agent 114 receives a request for tuple data from
network management protocol table 402 across network 108 (step 602).
Next, search mechanism 304 searches the search tree, say search tree 406,
for the entry for the tuple (step 604).

[0053] The foregoing descriptions of embodiments of the present invention
have been presented for purposes of illustration and description only.
They are not intended to be exhaustive or to limit the present invention
to the forms disclosed. Accordingly, many modifications and variations
will be apparent to practitioners skilled in the art. Additionally, the
above disclosure is not intended to limit the present invention. The
scope of the present invention is defined by the appended claims.