Network monitoring using bounded memory data structures
First Claim
1. A network monitoring method, including steps ofreceiving, at a flow processing engine, flow monitoring information, said flow monitoring information including information describing source addresses and destination addresses for each identified flow, said flow monitoring information indicating an actual behavior for each identified flow, including a start time and an end time for said flow;
- generating a set of virtual packets for each flow in response to said flow monitoring information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow and representing at least some of said flow monitoring information;
maintaining a data structure including flow monitoring information for each source address and destination address pair, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including flow monitoring information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow;
said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data;
processing that flow monitoring information using a set of reentrant concurrent threads; and
pruning that data structure from time to time, with the effect of that data structure being limited in size;
said steps of pruning including steps ofdetermining an amount of pruning that can be accomplished in a 1st specific limited time;
when said amount accomplished is sufficient, stopping pruning until a later time; and
when said amount accomplished is not sufficient, continuing pruning for a 2nd specific limited time.
11 Assignments
0 Petitions
Accused Products
Abstract
A network monitoring device includes a data structure for maintaining information about endpoints involved in network flows. Each endpoint, either a source or a destination for a network flow, has information maintained in a modified binary trie, having a branch for each bit of the source or destination address, but with interior nodes having only a single child node elided. A pruning thread is given a limited amount of time for operation, with the effect that the data structure is maintained available for use except for only that limited amount of time. In the event that the pruning thread is unable to prune the entire data structure, it maintains a marker indicating where last it left off, and returns to that location in the data structure at a later pruning operation.
-
Citations
33 Claims
-
1. A network monitoring method, including steps of
receiving, at a flow processing engine, flow monitoring information, said flow monitoring information including information describing source addresses and destination addresses for each identified flow, said flow monitoring information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; -
generating a set of virtual packets for each flow in response to said flow monitoring information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow and representing at least some of said flow monitoring information; maintaining a data structure including flow monitoring information for each source address and destination address pair, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including flow monitoring information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; processing that flow monitoring information using a set of reentrant concurrent threads; and pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of determining an amount of pruning that can be accomplished in a 1st specific limited time; when said amount accomplished is sufficient, stopping pruning until a later time; and when said amount accomplished is not sufficient, continuing pruning for a 2nd specific limited time. - View Dependent Claims (2, 3, 4, 6, 7, 8)
-
-
5. One or more processor readable storage devices having processor readable code embodied on the processor readable storage devices, said processor readable code for programming one or more processors to perform a method including steps of:
-
receiving flow information including information describing source addresses and destination addresses for each identified flow, said flow information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; generating a set of virtual packets for each flow in response to said flow information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow; maintaining a data structure including flow information for each source address and destination address pair, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; and processing that flow information using a set of reentrant concurrent threads; and pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of determining an amount of pruning that can be accomplished in a 1st specific limited time; when said amount accomplished is sufficient, stopping pruning until a later time; and when said amount accomplished is not sufficient, continuing pruning for a 2nd specific limited time. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
-
9. A network monitoring method, including steps of
receiving, at a flow processing engine, flow monitoring information, said flow monitoring information including information describing source addresses and destination addresses for each identified flow, said flow monitoring information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; -
generating a set of virtual packets for each flow in response to said flow monitoring information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow and representing at least some of said flow monitoring information; maintaining a data structure including flow monitoring information for each source address and destination address pair, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including flow monitoring information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; processing that flow monitoring information using a set of reentrant concurrent threads; and pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of limiting a time duration for those steps of pruning to a specified limited time; setting a marker to indicate where those steps of pruning were only partially completed at an end of that time duration; and resuming those steps of pruning at a later time beginning at that marker. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A system comprising:
-
a flow processor disposed to receive flow monitoring information, said flow monitoring information including source addresses and destination addresses for each identified flow, said flow monitoring information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; a virtual packet generator, said virtual packet generator disposed to generate a set of virtual packets for each flow in response to said flow monitoring information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow and representing at least some of said flow monitoring information; a memory coupled to the flow processor, the memory including a data structure, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including flow monitoring information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; wherein said memory includes instructions interpretable by a computing device to perform a method of; pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of determining an amount of pruning that can be accomplished in a 1st specific limited time; when said amount accomplished is sufficient, stopping pruning until a later time; and when said amount accomplished is not sufficient, continuing pruning for a 2nd specific limited time. - View Dependent Claims (17, 18, 19)
-
-
26. One or more processor readable storage devices having processor readable code embodied on the processor readable storage devices, said processor readable code for programming one or more processors to perform a method including steps of:
-
receiving flow information including information describing source addresses and destination addresses for each identified flow, said flow information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; generating a set of virtual packets for each flow in response to said flow information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow; maintaining a data structure including flow information for each source address and destination address pair, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; and processing that flow information using a set of reentrant concurrent threads; pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of limiting a time duration for those steps of pruning to a specified limited time; setting a marker to indicate where those steps of pruning were only partially completed at an end of that time duration; and resuming those steps of pruning at a later time beginning at that marker. - View Dependent Claims (27, 28, 29, 30, 31)
-
-
32. A system comprising:
-
a flow processor disposed to receive flow monitoring information, said flow monitoring information including source addresses and destination addresses for each identified flow, said flow monitoring information indicating an actual behavior for each identified flow, including a start time and an end time for said flow; a virtual packet generator, said virtual packet generator disposed to generate a set of virtual packets for each flow in response to said flow monitoring information, said virtual packets being equally distributed over a nonzero duration including said start time and said end time for said flow and representing at least some of said flow monitoring information; a memory coupled to the flow processor, the memory including a data structure, that data structure including a root and a set of child nodes, each child node indicating its logical distance from that root, each child node being either a leaf or an intermediate node having at least two child nodes itself, each leaf including flow monitoring information relating to an address describing its position in that data structure, that address being either a source address for a flow or a destination address for a flow; said data structure defining one or more omitted nodes between said root and said child nodes, omitted nodes including those intermediate leaf nodes that have only one child node with data; wherein said memory includes instructions interpretable by a computing device to perform a method of; pruning that data structure from time to time, with the effect of that data structure being limited in size; said steps of pruning including steps of limiting a time duration for those steps of pruning to a specified limited time; setting a marker to indicate where those steps of pruning were only partially completed at an end of that time duration; and resuming those steps of pruning at a later time beginning at that marker. - View Dependent Claims (33)
-
Specification