WO2019107608A1 - Method and system for counting data set - Google Patents

Method and system for counting data set Download PDF

Info

Publication number
WO2019107608A1
WO2019107608A1 PCT/KR2017/013903 KR2017013903W WO2019107608A1 WO 2019107608 A1 WO2019107608 A1 WO 2019107608A1 KR 2017013903 W KR2017013903 W KR 2017013903W WO 2019107608 A1 WO2019107608 A1 WO 2019107608A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory block
packets
data flow
memory
accumulating
Prior art date
Application number
PCT/KR2017/013903
Other languages
French (fr)
Korean (ko)
Inventor
장룡호
신동오
양대헌
Original Assignee
주식회사 더볼터
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 더볼터 filed Critical 주식회사 더볼터
Publication of WO2019107608A1 publication Critical patent/WO2019107608A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device

Definitions

  • Embodiments of the present invention are directed to techniques for counting the number of packets received by a large data flow in the form of a stream.
  • An approximate counting technique is used to determine how many packets are sent from a source IP address in the network.
  • a table is used to approximate a stream-like data set (i.e., a group of objects) by different flows. For example, whenever a packet is received in an electronic device such as a router, it is stored in a table together with a counter. If a new packet is received, a new entry is added to the table and the counter is set to one. If the packet is already received, the corresponding counter is incremented by one, and the table is searched to count how many packets have been received.
  • Korean Patent Laid-Open No. 10-2007-0121219 relates to a packet accounting verification system and its verification method in an IP network, which extracts packets having a comparison object IP address from packets collected by a packet collection unit, And reconfiguring them as a flow, and comparing the amount of data of the flows to verify accuracy of the accuracies.
  • Non-Patent Document 1 A Linear-Time Probabilistic Counting Algorithm for Database Applications, KYU-YOUNG WHANG, ACM Transactions on Database Systems, Vol. 15, No. 2, June 1990.
  • the present invention relates to a technology for measuring network traffic by data flow in an electronic device having a limited memory space such as a high-speed router. That is, the present invention relates to a technique for counting the number of packets per data flow and the size (capacity, bytes) of a packet.
  • CLAIMS 1.
  • a computer implemented counting method for counting network traffic by data flow comprising: allocating a predetermined size of memory space for each different data flow; Accumulating the number of packets belonging to the data flow using a memory block corresponding to a certain space shared with the memory block and accumulating the number of accumulated packets in the accumulation table when the memory block is in a saturation state, And the memory block may be confined within a word indicating a memory space corresponding to a word among the allocated memory space that the CPU can read at one time.
  • the allocated memory space may have a multi-layer structure.
  • accumulating the number of packets belonging to the data flow using the memory block may include accumulating a number of bits belonging to the memory block each time at least one packet belonging to the data flow arrives, And checking whether the memory block is saturated based on the number of bits belonging to the memory block and the number of bits changed to the specific value.
  • the step of accumulating the number of packets in the accumulation table includes counting the number of packets accumulated in the memory block when the memory block is determined to be saturated, Accumulating the number of packets in the accumulation table, and initializing and reusing the memory block.
  • the step of counting the number of packets accumulated in the memory block includes counting the number of bits that have not been changed to the specific value for a plurality of bits belonging to the memory block, And counting how many packets have been transmitted from the source IP address based on the number of bits that have been transmitted.
  • the step of accumulating the number of packets in the accumulation table comprises: if the memory block is in a saturation state, accumulating the remaining bits excluding bits corresponding to noise among bits belonging to the memory block, Accumulates the number of packets accumulated in the accumulation table, and the noise may indicate that the corresponding bit has been changed to a predetermined specific value as it is shared with a packet belonging to another data flow.
  • accumulating the number of packets in the accumulation table may include accumulating the remaining space excluding the memory block in the allocated memory space to which the memory block belongs, Calculating a ratio of bits changed to a predetermined specific value to an average noise ratio of the memory block, counting the number of noise included in the memory block based on the calculated average noise ratio, Calculating a number of actually accumulated packets in the memory block by excluding the number of the accumulated number of packets in the memory block by comparing the number of actually accumulated packets with the ID of the corresponding data flow, Accumulating in the accumulation table.
  • accumulating the number of packets in the accumulation table may include accumulating the number of packets in the accumulation table until the ratio of the bits changed to the predetermined specific value among the bits belonging to the memory block becomes the average noise ratio, And initializing a selected bit among the bits belonging to the changed memory block.
  • the step of accumulating the number of packets in the accumulation table may include: determining, when the memory block is in a saturation state, a size of a packet generating the saturation and a number of packets accumulated in the memory block And associating the calculated size with the ID of the data flow and the number of accumulated packets with respect to the data flow and accumulating the accumulated size in the accumulation table have.
  • a counting system for counting network traffic by data flow comprising: at least one storage unit; at least one processor, the at least one processor having a predetermined size Accumulating a number of packets belonging to a data flow using a memory block corresponding to a certain space shared with another data flow among the allocated memory spaces; And accumulating the accumulated number of packets in the accumulation table when the status of the memory is full, wherein the memory block includes a memory space corresponding to a word that the CPU can read at one time in the allocated memory space (Confinement) within a word that represents a word.
  • a memory space allocated for each data flow is limited in order to measure network traffic, and packet counting is performed through update such as reset in a confined memory space instead of the entire memory space
  • packet counting is performed through update such as reset in a confined memory space instead of the entire memory space
  • FIG. 1 is a block diagram for explaining an internal configuration of a counting system in an embodiment of the present invention.
  • FIG. 2 is a flow chart illustrating a counting method in an embodiment of the present invention.
  • FIG. 3 is a diagram illustrating a data structure of a single layer used for packet counting according to an exemplary embodiment of the present invention.
  • FIG. 4 is a diagram showing a memory space of a single layer structure in a case where there is no noise in an embodiment of the present invention.
  • FIG. 5 is a flowchart showing a counting method in the case where there is no noise in an embodiment of the present invention.
  • FIG. 6 is a diagram for explaining a counting method in the case where noise exists in an embodiment of the present invention.
  • FIG. 7 is a diagram illustrating a memory space of a multi-layer structure according to an embodiment of the present invention.
  • FIG. 8 is a diagram showing the structure of the accumulation table in the embodiment of the present invention.
  • the present embodiments relate to a technology for counting a large-scale data set in the form of a stream. More particularly, the present invention relates to a technique of counting multi-layer data in an electronic device (i.e., a device having a small memory space) The present invention relates to an approximate counting technique for counting network traffic by a predefined data flow based on a structure.
  • the 'data flow' may be predefined as the source IP, and the source IP and the destination IP may be predefined as a pair.
  • the source IP is defined as the data flow
  • how many packets are transmitted from the source corresponding to the source IP address can be counted
  • the source IP and the destination IP are defined as a pair of data flows, It can be counted how many data are transmitted from the source corresponding to the source IP address to the destination corresponding to the destination IP address.
  • a certain size of memory space may be allocated for different data flows (i.e., each object) in order to approximate the data set of the stream type by data flow
  • Allocated memory space 'can be represented by a matrix or a vector.
  • each of the data flows (i. E., Objects) share at least some of the memory space allocated to them with another data flow
  • a memory block that randomly shares a memory space may be represented by a virtual matrix or a virtual vector.
  • the memory space used for approximate counting is confined within a word, and a word is a word that the CPU can read at one time ) Of the memory space.
  • a memory block i.e., a virtual vector
  • the accumulated number in the virtual vector may be counted and accumulated in the hash table together with the ID of the corresponding data flow. That is, the update can be performed on a word-by-word basis.
  • the approximate counting can be expressed as 'RCC (Recyclable Counter with Confinement)' or 'RCC + (Recyclable Counter with Confinement plus)', and can have the following two typical characteristics.
  • the first feature is confinement of a virtual vector (ie, a memory block) within a word.
  • the second feature is that if the virtual vector saturates, the number of packets accumulated in the saturated virtual vector Accumulates them in a cumulative table (i.e., a hash table), and recycles the virtual vector.
  • a cumulative table i.e., a hash table
  • 'noise' may indicate that at least one bit of bits corresponding to a memory block (i.e., a virtual vector) is shared with another data flow.
  • a memory block i.e., a virtual vector
  • the presence of noise indicates that a shared bit is present, and the absence of noise may indicate that bits belonging to a virtual vector are not shared with other data flows.
  • an 'object' may represent each data flow (ie, packet) belonging to a large scale data set transmitted at the source
  • FIG. 1 is a block diagram for explaining an internal configuration of a counting system in an embodiment of the present invention
  • FIG. 2 is a flowchart illustrating a counting method in an embodiment of the present invention.
  • the counting system 100 may include a processor 110, a bus 120, a network interface 130 and a memory 140.
  • Memory 140 may include an operating system 141 and a counting routine 142.
  • the processor 110 may include an allocation unit 111, a memory accumulation control unit 112, a table accumulation control unit 113, and an initialization unit 114.
  • the counting system 100 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components.
  • the counting system 100 may include other components such as a display or a transceiver.
  • the memory 140 may be a computer-readable recording medium and may include a permanent mass storage device such as a random access memory (RAM), a read only memory (ROM), and a disk drive. In addition, the memory 140 may store program codes for the operating system 141 and the counting routine 142. [ These software components may be loaded from a computer readable recording medium separate from the memory 140 using a drive mechanism (not shown). Such a computer-readable recording medium may include a computer-readable recording medium (not shown) such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, or a memory card. In other embodiments, the software components may be loaded into the memory 140 via the network interface 130 rather than from a computer readable recording medium.
  • the bus 120 may enable communication and data transfer between the components of the counting system 100.
  • the bus 120 may be configured using a high-speed serial bus, a parallel bus, a Storage Area Network (SAN), and / or other suitable communication technology.
  • SAN Storage Area Network
  • the network interface 130 may be a computer hardware component for connecting the counting system 100 to a computer network.
  • the network interface 130 may connect the counting system 100 to a computer network via a wireless or wired connection.
  • the processor 110 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations of the counting system 100.
  • the instructions may be provided by the memory 140 or the network interface 130 and to the processor 110 via the bus 120.
  • the processor 110 may be configured to execute the program code for the assigning unit 111, the memory cumulative control unit 112, the table cumulative control unit 113, and the initialization unit 114.
  • Such program codes may be stored in a recording device such as the memory 140.
  • the allocation unit 111, the memory accumulation control unit 112, the table accumulation control unit 113, and the initialization unit 114 may be configured to perform the respective steps of FIG.
  • the allocating unit 111 may allocate a memory space of a predetermined size for each different data flow. At this time, at least a part of the allocated memory space may be shared with other data flows.
  • the allocating unit 111 allocates a word (word) indicating a word that the CPU can read at once to the shared memory block ). ≪ / RTI >
  • the memory accumulation control unit 112 may accumulate the number of packets belonging to the data flow using a memory block corresponding to some space shared with other data flows among the allocated memory spaces.
  • the memory blocks for each data flow (that is, the virtual vector) is assigned when the non-patent document of the above [1] A Linear-Time Algorithm for Probabilistic Counting Database Applications, KYU -YOUNG WHANG, ACM Transactions on Database Systems, Vol. 15, No. Approximate counting can be performed using Linear Counting as presented in 2, June 1990 .
  • each memory block i.e., a virtual vector
  • a process of counting packets by data flow and a process of measuring a result are performed in one memory read and write .
  • step 230 when the memory block (i.e., the virtual vector) is in a saturation state, the table accumulation controller 113 may count the accumulated number of packets and accumulate them in the accumulation table.
  • step 240 the initialization unit 114 selects one of the bits belonging to the memory block changed to the specific value until the ratio of the bits changed to the predetermined specific value among the bits belonging to the memory block becomes the average noise ratio By initializing the bit, at least some space of the memory block (i.e., the virtual vector) can be initialized.
  • the table accumulation control unit 113 counts the number of packets accumulated in the virtual vector, For example, a hash table). As such, as the accumulated packets in the memory block accumulate in the accumulation table, the memory block (i.e., the virtual vector) becomes empty, and the saturated memory block (i.e., the virtual vector) can be recycled.
  • the memory block may operate normally when only a portion (e.g., 70%) of the memory block (i.e., the virtual vector) is used.
  • the memory accumulation control unit 112 checks whether the size of the used space of the memory block (i.e., the virtual vector) is less than or equal to a predetermined use reference size, so that the memory block (i.e., the virtual vector) ) State. At this time, if the size of the space used in the memory block becomes the use-based size (that is, the usage amount of the virtual vector reaches a predefined use reference size, for example, 70%), . Then, the table accumulation control section 113 can initialize at least some space of the memory block (i.e., the virtual vector) in order to recycle the saturated memory block (i.e., the virtual vector).
  • the utilization rate of the virtual vector can be calculated as the ratio of the average noise caused by the memory sharing of the virtual vector, rather than the utilization rate of the entire memory space, or the usage rate of the entire memory space It can also be calculated as the ratio of the average noise caused by the memory sharing of the vector.
  • a portion of the vector space can be randomly initialized until the utilization rate of the calculated virtual vector becomes equal to the utilization rate of the entire memory space.
  • the number of data packets accumulated in the virtual vector is calculated, and the number of actual accumulated data packets excluding the number of accumulated noises in the number of calculated packets can be calculated.
  • the number of computed actual packets may be accumulated in a hash table (e.g., a quadratic probing hash table) with the ID of the data flow (i.e., the ID of the object).
  • FIG. 3 is a diagram illustrating a data structure of a single layer used for packet counting according to an exemplary embodiment of the present invention.
  • FIG. 3 illustrates a data structure in a case where a memory space has a one-layer structure.
  • a single layer data structure may include a 32-bit or 64-bit CPU word array.
  • a virtual vector of a predetermined size i.e., a memory block
  • the allocated virtual vector may be confined within one word.
  • a word can be selected using a hash value (hash) of information of the packet (for example, source IP, destination IP, packet ID, etc.). Then, the positions of the bits of the virtual vector (hatched blocks in FIG. 3, 301 to 308) in the selected word can be designated by the hash value.
  • virtual vector f 1 allocated in relation to data flow 1 is limited to within word w 0 310
  • virtual vector f 2 allocated in relation to data flow 2 is limited to word w m-1 320
  • the virtual vector f 3 allocated in association with the data flow 3 can be limited to within w 6 (330).
  • w 6 330 in FIG. 3 when data flow 3 arrives, the bit positions (301 to 308) of the virtual vector in the selected word (w 6 , 330) based on the hash value among the m words ) May be designated by the hash value. That is, eight bits (301 to 308) of the bits belonging to the virtual vector may be designated to accumulate data packets belonging to the data flow 3.
  • the positions 301 to 308 of bits belonging to the allocated virtual vector can be the same. Since the virtual vector is limited to one word, the size of the virtual vector can not be larger than the size of the word.
  • FIG. 4 is a diagram illustrating a memory space of a single layer structure in a case where there is no noise in an embodiment of the present invention.
  • FIG. 5 is a diagram illustrating a memory space in which noise is absent Fig.
  • the memory space has a single layer structure.
  • a multi-layer structure may be used in addition to a single layer.
  • FIG. 4 illustrates a case where an 8-bit virtual vector is used in a 32-bit word array. 5 may be performed by the allocation unit 111, the memory accumulation control unit 112, the table accumulation control unit 113, and the initialization unit 114, which are components of FIG. have.
  • step 510 all bits belonging to the memory space allocated to the data flow may be initialized to zero. 4, a memory block (i.e., a virtual vector, 401 to 408) corresponding to a part of the memory space may also be initialized to zero.
  • step 520 counting is started, and each time at least one packet belonging to a data flow arrives, the memory accumulation control unit 112 sets any bit belonging to the memory blocks 401 to 408 to a predetermined specific value (e.g., 1).
  • bit 401, bit 402, bit 405, bit 406, bit 408 may be changed from 0 to 1.
  • bit which is already 1 may not be changed. That is, the bits whose bit value is not 1 can be changed from 0 to 1 every time a packet arrives.
  • the memory accumulation control unit 112 can check whether the memory block is saturated based on the number of bits belonging to the memory block and the number of bits changed to the specific value. At this time, the memory accumulation controller 112 may check whether the memory block is in a saturation state whenever a packet arrives. For example, it can be determined whether 70% or more of the space of a memory block (i.e., a virtual vector) is filled with 1s. If 70% or more is filled with 1, it is judged to be saturated, and if 70% or more is not filled with 1, it can be judged not to be saturated.
  • the table accumulation control unit 113 can count the number of accumulated packets by using linear counting.
  • the table accumulation control unit 113 may accumulate the number of packets accumulated in the memory block in a cumulative table (e.g., a hash table). After accumulating in the accumulation table, the table accumulation control unit 113 can initialize all the values of the memory block (i.e., the virtual vector) to 0 and allow the accumulation to be recycled.
  • the usage amount of the 8-bit virtual vector may correspond to 62.6% (5/8).
  • the usage amount of the virtual vector may be 75% (6/8).
  • the table accumulation control unit 113 may store the accumulated number of packets (est) in the accumulation table and generate an event for initializing the virtual vector. Since the event is generated by one packet that over 70% of the virtual vector usage from 62.6% to 75%, the cumulative number of packets (est) is 1 Can be calculated on the basis of the number (i.e., 5/8).
  • a packet in which a virtual vector (that is, a memory block) is saturated can be regarded as one, and 1 can be added to est.
  • Est accumulated in the virtual vector may be stored as a cumulative number of packets generating saturation, and the number of accumulated packets together with the packet information may be accumulated in a cumulative table (e.g., a hash table).
  • the table accumulation control section 113 sets the number of bits that have not been changed to a specific value (for example, 1) for a plurality of bits belonging to a memory block You can count. That is, the number of bits having a value of 0 belonging to a virtual block can be counted.
  • the table accumulation control unit 113 may count how many packets are transmitted from the source IP address based on the counted number of bits.
  • the packet information for example, packet ID, etc.
  • FIG. 6 is a diagram for explaining a counting method in the case where noise exists in an embodiment of the present invention.
  • FIG. 6 shows the structure of the memory space in the presence of noise.
  • Noise may exist as the virtual vectors share memory space with each other. That is, the number of bits whose value is changed to 1 among the bits belonging to the allocated memory block (virtual vector) may not be all changed with respect to the corresponding data flow. In other words, it may correspond to a value changed to 1 by another flow sharing a bit, which may correspond to noise. Accordingly, when the memory block (i.e., the virtual vector) is confirmed to be in a saturated state, the table accumulation control section 113 can accumulate the remaining portion excluding the noise at the time of counting, and the initialization section 114 excludes noise The initialization of the memory block (i.e., the virtual vector) can proceed.
  • the table accumulation control unit 113 accumulates the number of packets accumulated in the remaining bits except the bit corresponding to noise among the bits belonging to the memory block (i.e., the virtual vector) As shown in FIG. At this time, the table accumulation control unit 113 stores the ratio of bits changed to a predetermined specific value (for example, 1) in the memory space (i.e., the virtual vector) A virtual vector). The table accumulation control unit 113 may count the number of noise included in the memory block based on the calculated average noise ratio. Then, the table accumulation control unit 113 can calculate the number of actually accumulated packets in the memory block by excluding the counted number of the noise among the accumulated number of packets in the memory block.
  • a predetermined specific value for example, 1
  • the table accumulation control unit 113 may count the number of noise included in the memory block based on the calculated average noise ratio. Then, the table accumulation control unit 113 can calculate the number of actually accumulated packets in the memory block by excluding the counted number of the noise among the accumulated number of
  • the table accumulation control unit 113 may accumulate the accumulated number of actually accumulated packets and the ID of the corresponding data flow in a cumulative table (i.e., a hash table).
  • the virtual vector may be randomly selected by one bit and initialized to 0 until a ratio of 1 becomes equal to the average noise ratio. That is, one bit of random bits among the bits 610 to 605 having a value of 1 among the 8-bit virtual vectors can be selected and initialized to zero.
  • the ratio of 1 of the virtual vector may correspond to 5/8.
  • the initialization unit 114 may randomly select any one of the bits 601 to 605 and initialize it to 0 until the ratio 1/5 of 1 becomes equal to the average noise ratio 3/8.
  • FIG. 6 may show the structure of the memory space in a state before a specific virtual vector becomes saturated (for example, use of 70% or more, that is, 6 bits are changed to 1).
  • the virtual vector shares bits with other data flows, so that the bits of the virtual vector can be changed to 1 in association with other data flows. That is, six or more bits may have a value of one.
  • the ratio of the average noise is equal to or greater than the ratio of 1 of the virtual vector, it can be determined that there is no noise associated with the virtual vector. That is, if the average noise ratio in the limited word is equal to or greater than the ratio of 1 of the virtual vector calculated by counting, it can be determined that the other data flow is not the noise itself. In other words, it can be determined that the bit value changed to 1 is changed to 1 by the data sent by the bit value, and it can be determined that there is no noise. In this way, in the absence of noise, the table accumulation control section 113 does not separately calculate noise even in the saturation state, and as a result, noise may not be excluded when calculating the number of finally accumulated packets.
  • FIG. 7 is a diagram illustrating a memory space of a multi-layer structure according to an embodiment of the present invention.
  • a layer 1 710 uses a CPU word array
  • a layer 2 720 can represent a set of data structures used in a layer 1.
  • the layer 1 710 and the layer 2 720 use the same hash and may have the same size. Accordingly, if the hash calculation is performed only once, both the layer 1 710 and the layer 2 720 can be updated.
  • the number of arrays in layer 2 720 may be equal to the number of 1's just before the virtual vector (i.e., memory block) is saturated. Then, the number of 1's immediately before the virtual vector is saturated may correspond to the number of cases that can be initialized according to the ratio of the noise. For example, when 5 bits out of 8 bits have a value of 1, 5 bits that can be initialized from 1 bit to 5 bits to 1 according to noise (i.e., ratio of 1 in remaining space excluding a virtual vector in one word) There may be cases. That is, there may be five cases immediately before saturation. That is, the number of mean noises (est noise ) may have five values.
  • est-est noise since the number of accumulated packets (est) is constant according to the size of the virtual vector, there are 5 results (i.e., cumulative number excluding the noise) including est-est noise .
  • 5 results i.e., cumulative number excluding the noise
  • est-est noise For example, when an 8-bit virtual vector is used, five arrays exist in the layer 2 720, and five results may be units of each array. That is, when a packet arrives, it branches to five branches in the layer 1, and if the layer 1 is full, packets accumulated in the layer 2 can be sent up and accumulated.
  • the signal is saturated in the layer 1 710 according to the noise of the word to which the virtual vector belongs
  • the number est est noise can be calculated.
  • the specific virtual vector can be initialized.
  • the saturated number est est noise i. E., The number of accumulated packets when the layer 1 virtual vector is saturated
  • the word array of layer 2 720 is selected Can be used. If an array with a unit est est noise at layer 2 720 is selected, then a saturated est est noise at layer 1 710 will result in one data flow (i. E.
  • the layer 2 can be performed on the layer 2 in the same manner as the layer 1.
  • the number of accumulated packets, the packet ID, and the like can be cumulatively stored in the accumulation table.
  • the number of accumulated packets est L2 calculated at the layer 2 720 may be stored in the accumulation table together with information (e.g., packet ID) of the packet that caused the saturation by multiplying by a unit have.
  • the size of the packet, as well as the number and ID of the accumulated packets, can be stored together in the accumulation table.
  • the number of bytes (bytes) transmitted from the source i.e., byte counting
  • the size of the packet (i.e., the size of the packet in which the virtual vector of the layer 1 or the layer 2 is saturated) of the packet to be pushed from the layer 2 / cumulative table or the layer 2 to the cumulative table due to saturation and the packet belonging to the data flow
  • Byte counting may be performed by multiplying the number of accumulated packets (e.g., the number of accumulated packets, e.g., 34).
  • the number of accumulated packets and the ID (or ID of the data flow) of the packet that caused the saturation are calculated by multiplying the size of the packet generating the saturation by the number of accumulated packets, And stored in the accumulation table.
  • the cumulative size as well as the number of accumulated packets can be approximated (i.e., byte counted).
  • the same data packet can have different sizes.
  • not only the packet ID but also the size of the information included in the payload of the packet may not be constant.
  • the size of the information contained in each of the payload fields of the two packets may be different. Accordingly, although two packets can be regarded as the same object, the sizes of the packets may be different from each other.
  • FIG. 8 is a diagram showing the structure of the accumulation table in the embodiment of the present invention.
  • the number of accumulated packets est and the cumulative size calculated through byte counting are Accumulated in the accumulation table 820.
  • a cumulative size can be calculated using a sampling technique. For example, when the virtual vector assigned to the packet x is saturated, that is, when the packet x corresponds to the packet that caused the saturation, the number est accumulated in the virtual vector of the layer 2 810 can be calculated. An event to be stored in the accumulation table 820 may be generated.
  • the table accumulation control unit 113 refers to the size of the packet x causing the saturation of the virtual vector to be the size of est, and the table accumulation control unit 113 accumulates the product of the size (size) of the packet x and the number of accumulated packets (est) Size (est * size).
  • the table accumulation control unit 113 associates the accumulated size (est * size), the accumulated number of packets (est), and the packet ID (obj 1 , that is, the ID of the data flow) with each other and stores them in the accumulation table 820 .
  • a cumulative table (e.g., a hash table) may be needed to count the stream-like data set by data flow.
  • the accumulation table 820 can be represented as a hash table by locating or inserting the packet in a linear probing or quadratic probing manner using the hash value of the packet ID. Since the efficiency of insertion or update of a packet (i.e., object) decreases with a higher usage of a hash table, it is difficult to accumulate a large-scale data set in real-time by data flow in a limited memory space.
  • the allocated virtual vector can not be saturated, and thus may not be stored in the accumulation table 820.
  • a single-layer structure can guarantee high accuracy by using a small-sized virtual vector.
  • the allocation unit 111 can increase the size of the virtual vector relatively more than before, and the cumulative capacity of the virtual vector is improved due to the increase of the size of the virtual vector, so that the number of times the packets are accumulated in the hash table 820 Can be reduced.
  • a memory space of a multi-layer structure can be used.
  • the rate of increase of the cumulative capacity with the increase of the virtual vector size can be amplified as compared with that of a single layer.
  • the cumulative capability of 8-bit virtual vectors (16 bits in total) in two layers can be better than the cumulative capability of 16-bit virtual vectors. That is, when a memory block of the same size (i.e., a virtual vector) is allocated to a packet belonging to one data flow, more packets can be accumulated than when a single layer is used by using a multilayer structure, Can be relatively reduced.
  • the frequency i.e., the size of the accumulated packet
  • the cumulative size are simultaneously measured and stored together in the hash table, the number and size of the packets transmitted from the source IP can be provided together. That is, network traffic can be measured more accurately.
  • the methods according to embodiments of the present invention may be implemented in the form of a program instruction that can be executed through various computer systems and recorded in a computer-readable medium.
  • the apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components.
  • the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions.
  • the processing device may execute an operating system (OS) and one or more software applications running on the operating system.
  • the processing device may also access, store, manipulate, process, and generate data in response to execution of the software.
  • OS operating system
  • the processing device may also access, store, manipulate, process, and generate data in response to execution of the software.
  • the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG.
  • the processing unit may comprise a plurality of processors or one processor and one controller.
  • Other processing configurations are also possible, such as a parallel processor.
  • the software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded.
  • the software may be distributed over a networked computer system and stored or executed in a distributed manner.
  • the software and data may be stored on one or more computer readable recording media.
  • the method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium.
  • the computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination.
  • the program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software.
  • Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like.
  • Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.

Abstract

A method and system for counting a data set is disclosed. A counting method implemented using a computer in order to count network traffic for each data flow may comprise the steps of: allocating a memory space having a predesignated particular size to each different data flow; accumulating the number of packets belonging to a data flow by using a memory block corresponding to a partial space of an allocated memory space, which is shared with another data flow; and accumulating the accumulated number of packets in an accumulation table when the memory block is in a saturation state, wherein the memory block is confined within one word indicating a memory space in the allocated memory space, which corresponds to a word that a CPU can read at one time.

Description

데이터 집합을 카운팅하는 방법 및 시스템Method and system for counting datasets
본 발명의 실시예들은 스트림(stream) 형태의 대규모 데이터 플로우(data flow) 별로, 수신되는 패킷의 개수를 카운팅하는 기술에 관한 것이다.Embodiments of the present invention are directed to techniques for counting the number of packets received by a large data flow in the form of a stream.
네트워크에서 하나의 출발지 IP 주소에서 몇 개의 패킷을 보냈는지를 확인하기 위해 근사 카운팅(approximate counting) 기술이 이용된다.An approximate counting technique is used to determine how many packets are sent from a source IP address in the network.
일반적으로, 스트림 형태의 데이터 집합(즉, 객체 집단)을 서로 다른 플로우 별로 근사 카운팅(approximate counting)하기 위해서는 테이블(table)이 이용된다. 예를 들어, 라우터(router) 등의 전자 장치에 패킷이 수신될 때마다 카운터와 함께 테이블에 저장해 놓는 것이다. 새로운 패킷이 수신된 것이면, 테이블에 새로운 엔트리(entry)를 추가하고 카운터는 1로 설정한다. 만약, 이미 수신된 패킷이면 해당 카운터를 하나 증가시키면 되고, 테이블을 검색하여 패킷이 몇 개 수신되었는지를 카운팅한다.In general, a table is used to approximate a stream-like data set (i.e., a group of objects) by different flows. For example, whenever a packet is received in an electronic device such as a router, it is stored in a table together with a counter. If a new packet is received, a new entry is added to the table and the counter is set to one. If the packet is already received, the corresponding counter is incremented by one, and the table is searched to count how many packets have been received.
*그러나, 최근에는 LIVE 방송 등 인터넷을 통해 송수신되는 데이터의 양이 너무 많아졌으며(big data 처리), 라우터의 SRAM은 메모리 공간이 작아 LIVE 방송 등과 같이 스트림 형태로 연속하여 수신되는 데이터들을 어디로 보내야할지(즉, 다음 라우터로 라우팅해야 할지)를 신속하게 처리하는데 어려움이 존재한다.However, in recent years, the amount of data transmitted and received via the Internet such as live broadcasting has become too large (big data processing), and the SRAM of the router has a small memory space so that it is difficult to know where to send data continuously received in stream form, (I.e., whether to route to the next router).
따라서, 스트림 형태의 대규모 데이터가 수신되는 경우에, SRAM 등과 같이 작은 메모리 공간을 이용하는 전자 장치에서 수신되는 데이터를 신속하게 라우팅 가능하도록, 데이터 플로우 별로 패킷의 개수 및 크기를 카운팅(counting)하는 기술이 요구된다.Accordingly, a technique of counting the number and size of packets for each data flow so that data received in an electronic device using a small memory space, such as SRAM, can be quickly routed when large-scale data in stream form is received Is required.
한국공개특허 제10-2007-0121219호는 IP 망에서의 패킷 어카운팅 검증 시스템 및 그 검증 방법에 관한 것으로, 패킷 수집부에서 수집된 패킷들에서 비교대상 IP 어드레스를 갖는 패킷들을 추출하고, 추출된 패킷들을 플로우로 재구성하고, 플로우들의 데이터량을 비교하여 어카운킹 정확성을 검증하는 기술을 개시하고 있다.Korean Patent Laid-Open No. 10-2007-0121219 relates to a packet accounting verification system and its verification method in an IP network, which extracts packets having a comparison object IP address from packets collected by a packet collection unit, And reconfiguring them as a flow, and comparing the amount of data of the flows to verify accuracy of the accuracies.
* 선행기술문헌* Prior art literature
(비특허문헌 1)[1]A Linear-Time Probabilistic Counting Algorithm for Database Applications, KYU-YOUNG WHANG, ACM Transactions on Database Systems, Vol. 15, No. 2, June 1990.(Non-Patent Document 1) [1] A Linear-Time Probabilistic Counting Algorithm for Database Applications, KYU-YOUNG WHANG, ACM Transactions on Database Systems, Vol. 15, No. 2, June 1990.
본 발명은 고속 라우터와 같이 메모리 공간이 제한적인 전자 장치에서, 네트워크 트래픽을 데이터 플로우(data flow) 별로 측정하는 기술에 관한 것이다. 즉, 데이터 플로우 별 패킷의 개수 및 패킷의 크기(용량, bytes)을 카운팅하는 기술에 관한 것이다.TECHNICAL FIELD The present invention relates to a technology for measuring network traffic by data flow in an electronic device having a limited memory space such as a high-speed router. That is, the present invention relates to a technique for counting the number of packets per data flow and the size (capacity, bytes) of a packet.
네트워크 트래픽을 데이터 플로우(data flow) 별로 카운팅(counting)하기 위해 컴퓨터로 구현되는 카운팅 방법에 있어서, 서로 다른 데이터 플로우 별로 미리 지정된 일정한 크기의 메모리 공간을 할당하는 단계, 할당된 메모리 공간 중 다른 데이터 플로우와 공유되는 일부 공간에 해당하는 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 단계, 및 상기 메모리 블록이 포화(saturation) 상태이면 누적된 상기 패킷의 개수를 누적 테이블에 누적시키는 단계를 포함하고, 상기 메모리 블록은, 상기 할당된 메모리 공간 중 CPU가 한 번에 읽을(reading) 수 있는 워드(word)에 해당하는 메모리 공간을 나타내는 한 워드(word) 이내로 제한(confinement)될 수 있다.CLAIMS 1. A computer implemented counting method for counting network traffic by data flow, comprising: allocating a predetermined size of memory space for each different data flow; Accumulating the number of packets belonging to the data flow using a memory block corresponding to a certain space shared with the memory block and accumulating the number of accumulated packets in the accumulation table when the memory block is in a saturation state, And the memory block may be confined within a word indicating a memory space corresponding to a word among the allocated memory space that the CPU can read at one time.
일측면에 따르면, 상기 할당된 메모리 공간은 멀티 레이어(multi-layer) 구조를 가질 수 있다.According to an aspect, the allocated memory space may have a multi-layer structure.
다른 측면에 따르면, 상기 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 단계는, 데이터 플로우에 속하는 적어도 하나의 패킷이 도착할 때마다 상기 메모리 블록에 속하는 어느 하나의 비트를 미리 지정된 특정값으로 변경하는 단계, 및 상기 메모리 블록에 속하는 복수의 비트들의 개수 및 상기 특정값으로 변경된 비트의 개수에 기초하여 상기 메모리 블록이 포화 상태인지 여부를 확인하는 단계를 포함할 수 있다.According to another aspect of the present invention, accumulating the number of packets belonging to the data flow using the memory block may include accumulating a number of bits belonging to the memory block each time at least one packet belonging to the data flow arrives, And checking whether the memory block is saturated based on the number of bits belonging to the memory block and the number of bits changed to the specific value.
또 다른 측면에 따르면, 상기 패킷의 개수를 누적 테이블에 누적시키는 단계는, 상기 메모리 블록이 포화 상태로 확인되면, 상기 메모리 블록에 누적된 패킷의 개수를 카운팅하는 단계, 및 상기 메모리 블록에 누적된 패킷의 개수를 상기 누적 테이블에 누적시키는 단계, 및 상기 메모리 블록을 초기화하여 재사용하는 단계를 포함할 수 있다.According to another aspect of the present invention, the step of accumulating the number of packets in the accumulation table includes counting the number of packets accumulated in the memory block when the memory block is determined to be saturated, Accumulating the number of packets in the accumulation table, and initializing and reusing the memory block.
또 다른 측면에 따르면, 상기 메모리 블록에 누적된 패킷의 개수를 카운팅하는 단계는, 상기 메모리 블록에 속하는 복수의 비트들을 대상으로, 상기 특정값으로 변경되지 않은 비트의 개수를 카운팅하는 단계, 및 카운팅된 상기 비트의 개수를 기반으로 출발지 IP 주소에서 몇 개의 패킷을 전송했는지를 카운팅하는 단계를 포함할 수 있다.According to another aspect of the present invention, the step of counting the number of packets accumulated in the memory block includes counting the number of bits that have not been changed to the specific value for a plurality of bits belonging to the memory block, And counting how many packets have been transmitted from the source IP address based on the number of bits that have been transmitted.
또 다른 측면에 따르면, 상기 패킷의 개수를 누적 테이블에 누적시키는 단계는, 상기 메모리 블록이 포화(saturation) 상태이면, 상기 메모리 블록에 속하는 비트들 중 노이즈(noise)에 해당하는 비트를 제외한 나머지 비트에 누적된 패킷의 개수를 상기 누적 테이블에 누적시키고, 상기 노이즈는, 해당 비트가 다른 데이터 플로우에 속하는 패킷과 공유됨에 따라 미리 지정된 특정값으로 변경된 것을 나타낼 수 있다.According to another aspect of the present invention, the step of accumulating the number of packets in the accumulation table comprises: if the memory block is in a saturation state, accumulating the remaining bits excluding bits corresponding to noise among bits belonging to the memory block, Accumulates the number of packets accumulated in the accumulation table, and the noise may indicate that the corresponding bit has been changed to a predetermined specific value as it is shared with a packet belonging to another data flow.
또 다른 측면에 따르면, 상기 패킷의 개수를 누적 테이블에 누적시키는 단계는, 상기 메모리 블록이 포화(saturation) 상태이면, 상기 메모리 블록이 속하는 상기 할당된 메모리 공간 중 상기 메모리 블록을 제외한 나머지 공간을 대상으로, 미리 지정된 특정값으로 변경된 비트의 비율을 상기 메모리 블록의 평균 노이즈 비율로 계산하는 단계, 계산된 상기 평균 노이즈 비율에 기초하여 상기 메모리 블록에 포함된 노이즈의 개수를 카운팅하는 단계, 상기 메모리 블록에 누적된 패킷의 개수 중 상기 노이즈의 개수를 제외시킴으로써, 상기 메모리 블록에 실제 누적된 패킷의 개수를 계산하는 단계, 및 계산된 상기 실제 누적된 패킷의 개수 및 해당 데이터 플로우의 ID를 연관하여 상기 누적 테이블에 누적시키는 단계를 포함할 수 있다.According to another aspect of the present invention, accumulating the number of packets in the accumulation table may include accumulating the remaining space excluding the memory block in the allocated memory space to which the memory block belongs, Calculating a ratio of bits changed to a predetermined specific value to an average noise ratio of the memory block, counting the number of noise included in the memory block based on the calculated average noise ratio, Calculating a number of actually accumulated packets in the memory block by excluding the number of the accumulated number of packets in the memory block by comparing the number of actually accumulated packets with the ID of the corresponding data flow, Accumulating in the accumulation table.
또 다른 측면에 따르면, 상기 패킷의 개수를 누적 테이블에 누적시키는 단계는, 상기 메모리 블록에 속하는 비트들 중 미리 지정된 특정값으로 변경된 비트의 비율이 상기 평균 노이즈 비율이 될 때까지, 상기 특정값으로 변경된 상기 메모리 블록에 속하는 비트들 중에서 선택된 비트를 초기화하는 단계를 더 포함할 수 있다.According to another aspect of the present invention, accumulating the number of packets in the accumulation table may include accumulating the number of packets in the accumulation table until the ratio of the bits changed to the predetermined specific value among the bits belonging to the memory block becomes the average noise ratio, And initializing a selected bit among the bits belonging to the changed memory block.
또 다른 측면에 따르면, 상기 패킷의 개수를 누적 테이블에 누적시키는 단계는, 상기 메모리 블록이 포화(saturation) 상태이면, 포화를 발생시킨 패킷의 크기(size) 및 상기 메모리 블록에 누적된 패킷의 개수에 기초하여 해당 데이터 플로우의 크기를 계산하는 단계, 및 계산된 상기 크기를 데이터 플로우의 ID 및 해당 데이터 플로우와 관련하여 누적된 패킷의 개수와 함께 연관하여 상기 누적 테이블에 누적시키는 단계를 포함할 수 있다.According to another aspect of the present invention, the step of accumulating the number of packets in the accumulation table may include: determining, when the memory block is in a saturation state, a size of a packet generating the saturation and a number of packets accumulated in the memory block And associating the calculated size with the ID of the data flow and the number of accumulated packets with respect to the data flow and accumulating the accumulated size in the accumulation table have.
네트워크 트래픽을 데이터 플로우(data flow) 별로 카운팅(counting)하는 카운팅 시스템에 있어서, 적어도 하나의 스토리지 유닛, 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 서로 다른 데이터 플로우 별로 미리 지정된 일정한 크기의 메모리 공간을 할당하는 과정, 할당된 메모리 공간 중 다른 데이터 플로우와 공유되는 일부 공간에 해당하는 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 과정, 및 상기 메모리 블록이 포화(saturation) 상태이면 누적된 상기 패킷의 개수를 누적 테이블에 누적시키는 과정을 처리하고, 상기 메모리 블록은, 상기 할당된 메모리 공간 중 CPU가 한 번에 읽을(reading) 수 있는 워드(word)에 해당하는 메모리 공간을 나타내는 한 워드(word) 이내로 제한(confinement)될 수 있다.CLAIMS What is claimed is: 1. A counting system for counting network traffic by data flow, the system comprising: at least one storage unit; at least one processor, the at least one processor having a predetermined size Accumulating a number of packets belonging to a data flow using a memory block corresponding to a certain space shared with another data flow among the allocated memory spaces; And accumulating the accumulated number of packets in the accumulation table when the status of the memory is full, wherein the memory block includes a memory space corresponding to a word that the CPU can read at one time in the allocated memory space (Confinement) within a word that represents a word.
본 발명은, 네트워크 트래픽을 측정하기 위해 데이터 플로우 별로 할당된 메모리 공간을 제한(confinement)하고, 전체 메모리 공간이 아닌 제한(confinement)된 메모리 공간 안에서 리셋(reset) 등의 업데이트를 통해 패킷 카운팅을 수행함으로써, 작은 메모리 공간을 갖는 고속 라우터 등의 전자 장치에서 스트림 형태로 수신되는 패킷의 개수와 크기(bytes)를 보다 정확하게 카운팅할 수 있다. In the present invention, a memory space allocated for each data flow is limited in order to measure network traffic, and packet counting is performed through update such as reset in a confined memory space instead of the entire memory space Thus, the number and size (bytes) of packets received in stream form in an electronic device such as a high-speed router having a small memory space can be more accurately counted.
도 1은 본 발명의 일실시예에 있어서, 카운팅 시스템의 내부 구성을 설명하기 위한 블록도이다.1 is a block diagram for explaining an internal configuration of a counting system in an embodiment of the present invention.
도 2는 본 발명의 일실시예에 있어서, 카운팅 방법을 도시한 흐름도이다.2 is a flow chart illustrating a counting method in an embodiment of the present invention.
도 3은 본 발명의 일실시예에 있어서, 패킷 카운팅에 이용되는 단일 레이어(one layer)의 자료 구조를 도시한 도면이다.3 is a diagram illustrating a data structure of a single layer used for packet counting according to an exemplary embodiment of the present invention.
도 4는 본 발명의 일실시예에 있어서, 노이즈(noise)가 없는 경우에 단일 레이어 구조의 메모리 공간을 도시한 도면이다.FIG. 4 is a diagram showing a memory space of a single layer structure in a case where there is no noise in an embodiment of the present invention. FIG.
도 5는 본 발명의 일실시예에 있어서, 노이즈가 없는 경우의 카운팅 방법을 도시한 흐름도이다.5 is a flowchart showing a counting method in the case where there is no noise in an embodiment of the present invention.
도 6은 본 발명의 일실시예에 있어서, 노이즈가 존재하는 경우의 카운팅 방법을 설명하기 위해 제공되는 도면이다.FIG. 6 is a diagram for explaining a counting method in the case where noise exists in an embodiment of the present invention. FIG.
도 7은 본 발명의 일실시예에 있어서, 멀티 레이어 구조의 메모리 공간을 도시한 도면이다.7 is a diagram illustrating a memory space of a multi-layer structure according to an embodiment of the present invention.
도 8은 본 발명의 일실시예에 있어서, 누적 테이블의 구조를 도시한 도면이다.8 is a diagram showing the structure of the accumulation table in the embodiment of the present invention.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
본 실시예들은 스트림 형태의 대규모 데이터 집합을 카운팅(counting)하는 기술에 관한 것으로서, 특히, 고속 라우터 등과 같이 메모리 공간이 제한적인 전자 장치(즉, 메모리 공간이 작은 장치)에서 멀티 레이어(multi layer) 구조를 기반으로 네트워크 트래픽을 미리 정의된 데이터 플로우(data flow) 별로 카운팅하는 근사 카운팅(approximate counting) 기술에 관한 것이다. The present embodiments relate to a technology for counting a large-scale data set in the form of a stream. More particularly, the present invention relates to a technique of counting multi-layer data in an electronic device (i.e., a device having a small memory space) The present invention relates to an approximate counting technique for counting network traffic by a predefined data flow based on a structure.
본 실시예들에서, '데이터 플로우'는 소스 IP로 미리 정의될 수도 있고, 소스 IP와 목적지 IP가 한 쌍(pair)으로 미리 정의될 수도 있다. 예컨대, 소스 IP가 데이터 플로우로 정의된 경우, 상기 소스 IP 주소에 해당하는 소스에서 몇 개의 패킷이 전송되었는지가 카운팅될 수 있고, 소스 IP와 목적지 IP가 한 쌍으로 데이터 플로우로 정의된 경우, 상기 소스 IP 주소에 해당하는 소스에서 상기 목적지 IP 주소에 해당하는 목적지까지 몇 개의 데이터가 전송되었는지가 카운팅될 수 있다.In the present embodiments, the 'data flow' may be predefined as the source IP, and the source IP and the destination IP may be predefined as a pair. For example, when the source IP is defined as the data flow, how many packets are transmitted from the source corresponding to the source IP address can be counted, and if the source IP and the destination IP are defined as a pair of data flows, It can be counted how many data are transmitted from the source corresponding to the source IP address to the destination corresponding to the destination IP address.
본 실시예들에서, 스트림(stream) 형태의 데이터 집합을 데이터 플로우 별로 근사 카운팅(approximate counting)하기 위해, 서로 다른 데이터 플로우 별로(즉, 객체 마다) 일정한 크기의 메모리 공간이 할당될 수 있으며, '할당된 메모리 공간'은 매트릭스(Matrix) 또는 벡터(vector)로 표현될 수 있다.In the present embodiments, a certain size of memory space may be allocated for different data flows (i.e., each object) in order to approximate the data set of the stream type by data flow, Allocated memory space 'can be represented by a matrix or a vector.
본 실시예들에서, 제한적인(confinement) 메모리 공간 내에서 많은 데이터 패킷을 카운팅 하기 위해서는, 데이터 플로우들(즉, 객체들) 각각은 자신에게 할당된 메모리 공간 중 적어도 일부를 다른 데이터 플로우와 공유할 수 있으며, 메모리 공간을 랜덤하게 공유하는 메모리 블록은 가상 매트릭스(Virtual Matrix) 또는 가상 벡터(Virtual Vector)로 표현될 수 있다.In the present embodiments, in order to count a large number of data packets within a confinement memory space, each of the data flows (i. E., Objects) share at least some of the memory space allocated to them with another data flow And a memory block that randomly shares a memory space may be represented by a virtual matrix or a virtual vector.
본 실시예들에서, 근사 카운팅에 이용되는 메모리 공간은 '한 워드(Word)' 이내로 제한(confinement)되고, '한 워드(Word)'는 CPU가 한 번에 읽을(reading) 수 있는 워드(word)에 해당하는 메모리 공간을 나타낼 수 있다. 예를 들어, 메모리 블록(즉, 가상 벡터)가 포화 상태가 되면, 가상 벡터에 누적된 개수를 카운팅하여 해시 테이블(hash table)에 해당 데이터 플로우의 ID와 함께 누적될 수 있다. 즉, 한 워드 단위로 업데이트가 진행될 수 있다.In the present embodiments, the memory space used for approximate counting is confined within a word, and a word is a word that the CPU can read at one time ) Of the memory space. For example, when a memory block (i.e., a virtual vector) becomes saturated, the accumulated number in the virtual vector may be counted and accumulated in the hash table together with the ID of the corresponding data flow. That is, the update can be performed on a word-by-word basis.
본 실시예들에서, 근사 카운팅은 'RCC(Recyclable Counter with Confinement)' 또는 'RCC+(Recyclable Counter with Confinement plus)'로 표현될 수 있으며, 아래와 같이 대표적인 두 가지 특징을 가질 수 있다. 첫 번째 특징은 가상 벡터(즉, 메모리 블록)를 한 워드(word) 이내로 제한(confinement)하는 것이고, 두 번째 특징은 가상 벡터가 포화(saturation)면, 포화된 가상 벡터에 누적된 패킷의 개수를 카운팅한 후 누적 테이블(즉, 해시 테이블)에 누적시키고 가상 벡터를 재사용(recycle)하는 것이다. 여기서, 가상 벡터를 한 워드 이내로 제한하고, 재사용하는 특징은 아래의 도 2에서 보다 상세히 설명하기로 한다. In the present embodiments, the approximate counting can be expressed as 'RCC (Recyclable Counter with Confinement)' or 'RCC + (Recyclable Counter with Confinement plus)', and can have the following two typical characteristics. The first feature is confinement of a virtual vector (ie, a memory block) within a word. The second feature is that if the virtual vector saturates, the number of packets accumulated in the saturated virtual vector Accumulates them in a cumulative table (i.e., a hash table), and recycles the virtual vector. Here, the feature of restricting the virtual vector to one word and reusing it will be described in more detail in FIG. 2 below.
본 실시예들에서, '노이즈(noise)'는 메모리 블록(즉, 가상 벡터)에 해당하는 비트들 중 적어도 하나의 비트가 다른 데이터 플로우와 공유되는 것을 나타낼 수 있다. 다시 말해, 노이즈가 존재하는 것은 공유되는 비트가 존재함을 나타내고, 노이즈가 없는 것은 가상 벡터에 속하는 비트들이 다른 데이터 플로우와 공유되고 있지 않음을 나타낼 수 있다. In the present embodiments, 'noise' may indicate that at least one bit of bits corresponding to a memory block (i.e., a virtual vector) is shared with another data flow. In other words, the presence of noise indicates that a shared bit is present, and the absence of noise may indicate that bits belonging to a virtual vector are not shared with other data flows.
본 실시예들에서, '객체(object)'는 소스(source)에서 전송된 대규모의 데이터 집합에 속하는 각각의 데이터 플로우(즉, 패킷)를 나타낼 수 있다 In the present embodiments, an 'object' may represent each data flow (ie, packet) belonging to a large scale data set transmitted at the source
도 1은 본 발명의 일실시예에 있어서, 카운팅 시스템의 내부 구성을 설명하기 위한 블록도이고, 도 2는 본 발명의 일실시예에 있어서, 카운팅 방법을 도시한 흐름도이다.FIG. 1 is a block diagram for explaining an internal configuration of a counting system in an embodiment of the present invention, and FIG. 2 is a flowchart illustrating a counting method in an embodiment of the present invention.
본 실시예에 따른 카운팅 시스템(100)은 프로세서(110), 버스(120), 네트워크 인터페이스(130) 및 메모리(140)를 포함할 수 있다. 메모리(140)는 운영체제(141) 및 카운팅 루틴(142)을 포함할 수 있다. 프로세서(110)는 할당부(111), 메모리 누적 제어부(112), 테이블 누적 제어부(113), 및 초기화부(114)를 포함할 수 있다. 다른 실시예들에서 카운팅 시스템(100)은 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 카운팅 시스템(100)은 디스플레이나 트랜시버(transceiver)와 같은 다른 구성요소들을 포함할 수도 있다.The counting system 100 according to the present embodiment may include a processor 110, a bus 120, a network interface 130 and a memory 140. Memory 140 may include an operating system 141 and a counting routine 142. The processor 110 may include an allocation unit 111, a memory accumulation control unit 112, a table accumulation control unit 113, and an initialization unit 114. In other embodiments, the counting system 100 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components. For example, the counting system 100 may include other components such as a display or a transceiver.
메모리(140)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(140)에는 운영체제(141)와 카운팅 루틴(142)을 위한 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism, 미도시)을 이용하여 메모리(140)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체(미도시)를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 네트워크 인터페이스(130)를 통해 메모리(140)에 로딩될 수도 있다.The memory 140 may be a computer-readable recording medium and may include a permanent mass storage device such as a random access memory (RAM), a read only memory (ROM), and a disk drive. In addition, the memory 140 may store program codes for the operating system 141 and the counting routine 142. [ These software components may be loaded from a computer readable recording medium separate from the memory 140 using a drive mechanism (not shown). Such a computer-readable recording medium may include a computer-readable recording medium (not shown) such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, or a memory card. In other embodiments, the software components may be loaded into the memory 140 via the network interface 130 rather than from a computer readable recording medium.
버스(120)는 카운팅 시스템(100)의 구성요소들간의 통신 및 데이터 전송을 가능하게 할 수 있다. 버스(120)는 고속 시리얼 버스(high-speed serial bus), 병렬 버스(parallel bus), SAN(Storage Area Network) 및/또는 다른 적절한 통신 기술을 이용하여 구성될 수 있다.The bus 120 may enable communication and data transfer between the components of the counting system 100. The bus 120 may be configured using a high-speed serial bus, a parallel bus, a Storage Area Network (SAN), and / or other suitable communication technology.
네트워크 인터페이스(130)는 카운팅 시스템(100)를 컴퓨터 네트워크에 연결하기 위한 컴퓨터 하드웨어 구성요소일 수 있다. 네트워크 인터페이스(130)는 카운팅 시스템(100)를 무선 또는 유선 커넥션을 통해 컴퓨터 네트워크에 연결시킬 수 있다.The network interface 130 may be a computer hardware component for connecting the counting system 100 to a computer network. The network interface 130 may connect the counting system 100 to a computer network via a wireless or wired connection.
프로세서(110)는 기본적인 산술, 로직 및 카운팅 시스템(100)의 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(140) 또는 네트워크 인터페이스(130)에 의해, 그리고 버스(120)를 통해 프로세서(110)로 제공될 수 있다. 프로세서(110)는 할당부(111), 메모리 누적 제어부(112), 테이블 누적 제어부(113), 및 초기화부(114)를 위한 프로그램 코드를 실행하도록 구성될 수 있다. 이러한 프로그램 코드는 메모리(140)와 같은 기록 장치에 저장될 수 있다.The processor 110 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations of the counting system 100. The instructions may be provided by the memory 140 or the network interface 130 and to the processor 110 via the bus 120. The processor 110 may be configured to execute the program code for the assigning unit 111, the memory cumulative control unit 112, the table cumulative control unit 113, and the initialization unit 114. [ Such program codes may be stored in a recording device such as the memory 140. [
할당부(111), 메모리 누적 제어부(112), 테이블 누적 제어부(113), 및 초기화부(114)는 도 2의 각 단계들을 수행하기 위해 구성될 수 있다.The allocation unit 111, the memory accumulation control unit 112, the table accumulation control unit 113, and the initialization unit 114 may be configured to perform the respective steps of FIG.
단계 210에서, 할당부(111)는 서로 다른 데이터 플로우 별로 미리 지정된 일정한 크기의 메모리 공간을 할당할 수 있다. 이때, 할당된 메모리 공간 중 적어도 일부 공간은 다른 데이터 플로우와 공유될 수 있으며, 할당부(111)는 공유되는 메모리 블록(즉, 가상 벡터)을 CPU가 한번에 읽을 수 있는 word를 나타내는 한 워드(word) 내로 제한(confinement)할 수 있다. In step 210, the allocating unit 111 may allocate a memory space of a predetermined size for each different data flow. At this time, at least a part of the allocated memory space may be shared with other data flows. The allocating unit 111 allocates a word (word) indicating a word that the CPU can read at once to the shared memory block ). ≪ / RTI >
220 단계에서, 메모리 누적 제어부(112)는 할당된 메모리 공간 중 다른 데이터 플로우와 공유되는 일부 공간에 해당하는 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시킬 수 있다.In operation 220, the memory accumulation control unit 112 may accumulate the number of packets belonging to the data flow using a memory block corresponding to some space shared with other data flows among the allocated memory spaces.
예컨대, 데이터 플로우 별로 메모리 블록(즉, 가상 벡터)이 할당되면, 위의 비특허 문헌 [1] A Linear-Time Probabilistic Counting Algorithm for Database Applications, KYU -YOUNG WHANG , ACM Transactions on Database Systems, Vol. 15, No. 2, June 1990.에 제시된 선형 카운팅(Linear Counting)을 이용하여 근사 카운팅이 수행될 수 있다. 이때, 각 메모리 블록(즉, 가상 벡터)가 한 워드(word) 내에 제한(confinement)되면서 데이터 플로우 별로 패킷을 카운팅하는 과정(encoding)과 결과를 측정하는 과정(decoding)이 한번의 메모리 읽기와 쓰기로 완성될 수 있다.For example, the memory blocks for each data flow (that is, the virtual vector) is assigned when the non-patent document of the above [1] A Linear-Time Algorithm for Probabilistic Counting Database Applications, KYU -YOUNG WHANG, ACM Transactions on Database Systems, Vol. 15, No. Approximate counting can be performed using Linear Counting as presented in 2, June 1990 . In this case, each memory block (i.e., a virtual vector) is confined in a word, and a process of counting packets by data flow and a process of measuring a result are performed in one memory read and write . ≪ / RTI >
230 단계에서, 테이블 누적 제어부(113)는 메모리 블록(즉, 가상 벡터)가 포화(saturation) 상태 이면, 누적된 패킷의 개수를 카운팅하여 누적 테이블에 누적시킬 수 있다. In step 230, when the memory block (i.e., the virtual vector) is in a saturation state, the table accumulation controller 113 may count the accumulated number of packets and accumulate them in the accumulation table.
240 단계에서, 초기화부(114)는 메모리 블록에 속하는 비트들 중 미리 지정된 특정값으로 변경된 비트의 비율이 평균 노이즈(noise) 비율이 될 때까지, 특정값으로 변경된 메모리 블록에 속하는 비트들 중에서 선택된 비트를 초기화함으로써, 메모리 블록(즉, 가상 벡터)의 적어도 일부 공간을 초기화할 수 있다.In step 240, the initialization unit 114 selects one of the bits belonging to the memory block changed to the specific value until the ratio of the bits changed to the predetermined specific value among the bits belonging to the memory block becomes the average noise ratio By initializing the bit, at least some space of the memory block (i.e., the virtual vector) can be initialized.
일례로, 테이블 누적 제어부(113)는 메모리 블록(즉, 가상 벡터)가 포화(saturation) 상태가 되면, 가상 벡터에 누적된 패킷의 개수를 카운팅(counting)하여 해당 플로우의 ID와 함께 누적 테이블(예컨대, 해시 테이블)에 누적할 수 있다. 이처럼, 메모리 블록에 누적된 패킷이 누적 테이블에 누적됨에 따라, 메모리 블록(즉, 가상 벡터)는 비워지게 되어, 포화된 메모리 블록(즉, 가상 벡터)은 재활용(recycle)될 수 있다. 예컨대, 선형 카운팅이 이용되는 경우, 메모리 블록(즉, 가상 벡터)의 일부(예컨대, 70%)까지 만을 사용했을 때 해당 메모리 블록이 정상적으로 동작할 수 있다. 이에 따라, 메모리 누적 제어부(112)는 메모리 블록(즉, 가상 벡터) 중 사용된 공간의 크기가 미리 정의된 사용 기준 크기 이하인지 여부를 체크함으로써, 메모리 블록(즉, 가상 벡터)이 포화(saturation) 상태인지 여부를 확인할 수 있다. 이때, 메모리 블록 중 사용된 공간의 크기가 상기 사용 기준 크기가 되거나(즉, 가상 벡터의 사용량이 미리 정의된 사용 기준 크기, 예컨대, 70%에 도달하거나), 사용 기준 크기보다 커지면 포화 상태로 판단될 수 있다. 그러면, 테이블 누적 제어부(113)는, 포화 상태인 메모리 블록(즉, 가상 벡터)를 재사용(recycle)하기 위해 메모리 블록(즉, 가상 벡터)의 적어도 일부 공간을 초기화할 수 있다. For example, when the memory block (i.e., the virtual vector) is in a saturation state, the table accumulation control unit 113 counts the number of packets accumulated in the virtual vector, For example, a hash table). As such, as the accumulated packets in the memory block accumulate in the accumulation table, the memory block (i.e., the virtual vector) becomes empty, and the saturated memory block (i.e., the virtual vector) can be recycled. For example, when linear counting is used, the memory block may operate normally when only a portion (e.g., 70%) of the memory block (i.e., the virtual vector) is used. Accordingly, the memory accumulation control unit 112 checks whether the size of the used space of the memory block (i.e., the virtual vector) is less than or equal to a predetermined use reference size, so that the memory block (i.e., the virtual vector) ) State. At this time, if the size of the space used in the memory block becomes the use-based size (that is, the usage amount of the virtual vector reaches a predefined use reference size, for example, 70%), . Then, the table accumulation control section 113 can initialize at least some space of the memory block (i.e., the virtual vector) in order to recycle the saturated memory block (i.e., the virtual vector).
이처럼, 전체 메모리 공간의 사용률이 아닌, 가상 벡터의 사용률을 가상 벡터의 메모리 공유로 인해 발생하는 평균 노이즈(noise)의 비율로 계산할 수도 있고, RCC와 같이 가상 벡터가 아닌 전체 메모리 공간의 사용률을 가상 벡터의 메모리 공유로 인해 발생하는 평균 노이즈(noise)의 비율로 계산할 수도 있다. 그리고, 계산된 가상 벡터의 사용률이 전체 메모리 공간의 사용률과 같아질 때까지 벡터 공간의 일부를 랜덤하게 초기화될 수 있다. 그리고, 가상 벡터에 누적된 데이터 패킷의 개수를 계산하고, 계산된 패킷의 개수에서 누적된 노이즈(noise)의 개수를 제외한 실제 누적된 데이터 패킷의 개수를 계산할 수 있다. 계산된 실제 패킷의 개수를 데이터 플로우의 ID(즉, 객체의 ID)와 함께 해시 테이블(예컨대, Quadratic probing hash table)에 누적할 수 있다. In this way, the utilization rate of the virtual vector can be calculated as the ratio of the average noise caused by the memory sharing of the virtual vector, rather than the utilization rate of the entire memory space, or the usage rate of the entire memory space It can also be calculated as the ratio of the average noise caused by the memory sharing of the vector. Then, a portion of the vector space can be randomly initialized until the utilization rate of the calculated virtual vector becomes equal to the utilization rate of the entire memory space. Then, the number of data packets accumulated in the virtual vector is calculated, and the number of actual accumulated data packets excluding the number of accumulated noises in the number of calculated packets can be calculated. The number of computed actual packets may be accumulated in a hash table (e.g., a quadratic probing hash table) with the ID of the data flow (i.e., the ID of the object).
도 3은 본 발명의 일실시예에 있어서, 패킷 카운팅에 이용되는 단일 레이어(one layer)의 자료 구조를 도시한 도면이다.3 is a diagram illustrating a data structure of a single layer used for packet counting according to an exemplary embodiment of the present invention.
도 3에서는 메모리 공간이 단일 레이어(one layer) 구조를 가진 경우의 자료 구조를 도시하고 있다.FIG. 3 illustrates a data structure in a case where a memory space has a one-layer structure.
일례로, 패킷 카운팅을 위해 데이터 플로우 별로 32 비트(bit) 또는 64 비트(bit)의 메모리 공간이 할당될 수 있다. 즉, 도 3에서, 단일 레이어의 자료 구조는 32 비트 또는 64 비트의 CPU 워드 배열을 포함할 수 있다. 서로 다른 데이터 플로우 별로 일정한 크기의 가상 벡터(즉, 메모리 블록)가 할당될 수 있으며, 할당된 가상 벡터는 한 워드(one word) 이내로 제한(confinement)될 수 있다. 예를 들어, 특정 데이터 플로우에 속하는 패킷이 도착했을 때 해당 패킷의 정보(예컨대, 소스 IP, 목적지 IP, 패킷 ID 등)의 해시값(hash)을 이용하여 워드가 선택될 수 있다. 그러면, 선택된 워드 내에서 가상 벡터의 비트의 위치들(도 3의 해칭 블록들, 301 내지 308)이 해시값에 의해 지정될 수 있다.For example, 32 bits (bits) or 64 bits (bits) of memory space may be allocated per data flow for packet counting. That is, in FIG. 3, a single layer data structure may include a 32-bit or 64-bit CPU word array. A virtual vector of a predetermined size (i.e., a memory block) may be allocated to different data flows, and the allocated virtual vector may be confined within one word. For example, when a packet belonging to a specific data flow arrives, a word can be selected using a hash value (hash) of information of the packet (for example, source IP, destination IP, packet ID, etc.). Then, the positions of the bits of the virtual vector (hatched blocks in FIG. 3, 301 to 308) in the selected word can be designated by the hash value.
도 3을 참고하면, 데이터 플로우 1과 관련하여 할당된 가상 벡터 f1는 워드 w0(310) 이내로 제한되고, 데이터 플로우 2와 관련하여 할당된 가상 벡터 f2는 워드 wm-1(320) 이내로 제한되고, 데이터 플로우 3과 관련하여 할당된 가상 벡터 f3은 w6(330) 이내로 제한될 수 있다. 도 3에서 w6(330)을 참고하면, 데이터 플로우 3이 도착하면, m개의 워드들 중 해시값에 기초하여 선택된 워드(w6, 330) 내에서 가상 벡터의 비트의 위치들(301 내지 308)이 상기 해시값에 의해 지정될 수 있다. 즉, 가상 벡터에 속하는 비트들 중 8개의 비트들(301 내지 308)이 데이터 플로우 3에 속하는 데이터 패킷을 누적시키기 위해 지정될 수 있다. 이때, 같은 데이터 플로우(즉, 같은 객체)와 관련하여 항상 같은 해시값을 얻을 수 있으므로, 할당된 가상 벡터(즉, 메모리 블록)에 속하는 비트의 위치들(301 내지 308)은 같을 수 있다. 그리고, 가상 벡터는 한 워드 이내로 제한되므로, 가상 벡터의 크기는 워드의 크기보다 클 수 없다.3, virtual vector f 1 allocated in relation to data flow 1 is limited to within word w 0 310, virtual vector f 2 allocated in relation to data flow 2 is limited to word w m-1 320, , And the virtual vector f 3 allocated in association with the data flow 3 can be limited to within w 6 (330). Referring to w 6 330 in FIG. 3, when data flow 3 arrives, the bit positions (301 to 308) of the virtual vector in the selected word (w 6 , 330) based on the hash value among the m words ) May be designated by the hash value. That is, eight bits (301 to 308) of the bits belonging to the virtual vector may be designated to accumulate data packets belonging to the data flow 3. At this time, since the same hash value can always be obtained with respect to the same data flow (i.e., the same object), the positions 301 to 308 of bits belonging to the allocated virtual vector (i.e., memory block) can be the same. Since the virtual vector is limited to one word, the size of the virtual vector can not be larger than the size of the word.
도 4는 본 발명의 일실시예에 있어서, 노이즈(noise)가 없는 경우에 단일 레이어 구조의 메모리 공간을 도시한 도면이고, 도 5는 본 발명의 일실시예에 있어서, 노이즈가 없는 경우의 카운팅 방법을 도시한 흐름도이다.FIG. 4 is a diagram illustrating a memory space of a single layer structure in a case where there is no noise in an embodiment of the present invention. FIG. 5 is a diagram illustrating a memory space in which noise is absent Fig.
도 4에서 메모리 공간은 단일 레이어 구조를 가지는 경우를 가정하여 설명하기로 한다. 노이즈가 없는 경우에 단일 레이어 이외에 멀티 레이어(multi layer) 구조가 이용될 수도 있다. In FIG. 4, it is assumed that the memory space has a single layer structure. In the case of no noise, a multi-layer structure may be used in addition to a single layer.
도 4에서는, 32 비트 워드 배열에서 8비트 가상 벡터를 사용하는 경우를 나타낼 수 있다. 그리고, 도 5에서 각 단계들(510 내지 530)은 도 1의 구성 요소인 할당부(111), 메모리 누적 제어부(112), 테이블 누적 제어부(113) 및 초기화부(114)에 의해 수행될 수 있다.FIG. 4 illustrates a case where an 8-bit virtual vector is used in a 32-bit word array. 5 may be performed by the allocation unit 111, the memory accumulation control unit 112, the table accumulation control unit 113, and the initialization unit 114, which are components of FIG. have.
단계 510에서, 데이터 플로우에 할당된 메모리 공간에 속하는 모든 비트들이 0으로 초기화될 수 있다. 도 4에서, 상기 메모리 공간 중 일부에 해당하는 메모리 블록(즉, 가상 벡터, 401 내지 408)도 0으로 초기화될 수 있다. In step 510, all bits belonging to the memory space allocated to the data flow may be initialized to zero. 4, a memory block (i.e., a virtual vector, 401 to 408) corresponding to a part of the memory space may also be initialized to zero.
단계 520 에서, 카운팅이 시작되고, 데이터 플로우에 속하는 적어도 하나의 패킷이 도착할 때마다, 메모리 누적 제어부(112)는 메모리 블록(401 내지 408)에 속하는 어느 하나의 비트를 미리 지정된 특정값(예컨대, 1)으로 변경할 수 있다. In step 520, counting is started, and each time at least one packet belonging to a data flow arrives, the memory accumulation control unit 112 sets any bit belonging to the memory blocks 401 to 408 to a predetermined specific value (e.g., 1).
예를 들어, 비트 401, 비트 402, 비트 405, 비트 406, 비트 408의 값이 0에서 1로 변경될 수 있다. 이때, 이미 1인 비트는 변경되지 않을 수 있다. 즉, 비트값이 1이 아닌 비트들을 대상으로, 패킷이 도착할 때마다 비트값이 0에서 1로 변경될 수 있다.For example, the value of bit 401, bit 402, bit 405, bit 406, bit 408 may be changed from 0 to 1. At this time, the bit which is already 1 may not be changed. That is, the bits whose bit value is not 1 can be changed from 0 to 1 every time a packet arrives.
단계 530에서, 메모리 누적 제어부(112)는 메모리 블록에 속하는 복수의 비트들의 개수 및 특정값으로 변경된 비트의 개수에 기초하여 메모리 블록이 포화상태인지 여부를 확인할 수 있다. 이때, 메모리 누적 제어부(112)는 패킷이 도착할 때 마다 메모리 블록이 포화(saturation) 상태인지 여부를 확인할 수 있다. 예를 들어, 메모리 블록(즉, 가상 벡터)의 공간의 70% 이상이 1로 채워졌는지 여부를 확인할 수 있다. 이때, 70% 이상이 1로 채워진 경우 포화상태로 판단하고, 70% 이상이 1로 채워지지 않은 경우 포화상태가 아닌 것으로 판단할 수 있다. In step 530, the memory accumulation control unit 112 can check whether the memory block is saturated based on the number of bits belonging to the memory block and the number of bits changed to the specific value. At this time, the memory accumulation controller 112 may check whether the memory block is in a saturation state whenever a packet arrives. For example, it can be determined whether 70% or more of the space of a memory block (i.e., a virtual vector) is filled with 1s. If 70% or more is filled with 1, it is judged to be saturated, and if 70% or more is not filled with 1, it can be judged not to be saturated.
이처럼, 메모리 블록(즉, 가상 벡터)의 사용량이 70%을 넘어 포화 상태로 확인되면, 테이블 누적 제어부(113)는 선형 카운팅(linear counting)을 이용하여 누적된 패킷의 개수를 카운팅할 수 있다. 그리고, 테이블 누적 제어부(113)는 메모리 블록에 누적된 패킷의 개수를 누적 테이블(예컨대, 해시 테이블)에 누적시킬 수 있다. 이처럼, 누적 테이블에 누적한 이후, 테이블 누적 제어부(113)는 메모리 블록(즉, 가상 벡터)의 값을 모두 0으로 초기화하여 재사용(recycle) 가능하도록 할 수 있다.As described above, when the usage amount of the memory block (i.e., the virtual vector) exceeds 70% and is confirmed to be saturated, the table accumulation control unit 113 can count the number of accumulated packets by using linear counting. The table accumulation control unit 113 may accumulate the number of packets accumulated in the memory block in a cumulative table (e.g., a hash table). After accumulating in the accumulation table, the table accumulation control unit 113 can initialize all the values of the memory block (i.e., the virtual vector) to 0 and allow the accumulation to be recycled.
도 4를 참고하면, 8비트 가상 벡터의 사용량은 62.6%(5/8)에 해당할 수 있다. 이때, 새롭게 도착한 패킷과 관련하여 값이 0인 비트가 선택되면, 가상 벡터의 사용량은 75%(6/8)가 될 수 있다. 그러면, 테이블 누적 제어부(113)는 누적된 패킷의 개수(est)를 누적 테이블에 저장하고, 가상 벡터를 초기화하는 이벤트(event)를 발생시킬 수 있다. 상기 이벤트는 상기 가상 벡터의 사용량이 62.6%에서 75%로 미리 정의된 70%를 오버(over)시키는 한 개의 패킷에 의해 발생하므로, 상기 누적된 패킷의 개수(est)는 포화되기 직전의 1의 개수를 기준으로 계산될 수 있다(즉, 5/8). 그리고, 가상 벡터(즉, 메모리 블록)을 포화시킨 패킷은 한 개로 보고 상기 est에 1이 더해질 수 있다. 가상 벡터에 누적된 est는 포화를 발생시킨 패킷의 누적 개수로 보고, 해당 패킷 정보와 함께 누적된 패킷의 개수가 누적 테이블(예컨대, 해시 테이블)에 누적하는 형태로 저장될 수 있다.Referring to FIG. 4, the usage amount of the 8-bit virtual vector may correspond to 62.6% (5/8). At this time, if a bit with a value of 0 is selected in association with a newly arrived packet, the usage amount of the virtual vector may be 75% (6/8). Then, the table accumulation control unit 113 may store the accumulated number of packets (est) in the accumulation table and generate an event for initializing the virtual vector. Since the event is generated by one packet that over 70% of the virtual vector usage from 62.6% to 75%, the cumulative number of packets (est) is 1 Can be calculated on the basis of the number (i.e., 5/8). Then, a packet in which a virtual vector (that is, a memory block) is saturated can be regarded as one, and 1 can be added to est. Est accumulated in the virtual vector may be stored as a cumulative number of packets generating saturation, and the number of accumulated packets together with the packet information may be accumulated in a cumulative table (e.g., a hash table).
예를 들어, 포화 상태로 확인된 경우, 테이블 누적 제어부(113)는 메모리 블록(즉, 가상 블록)에 속하는 복수의 비트들을 대상으로, 특정값(예컨대, 1)으로 변경되지 않은 비트의 개수를 카운팅할 수 있다. 즉, 가상 블록에 속하는 비트의 값이 0인 비트들의 개수를 카운팅할 수 있다. 그리고, 테이블 누적 제어부(113)는 카운팅된 비트의 개수를 기반으로 출발지 IP 주소에서 몇 개의 패킷을 전송했는지를 카운팅할 수 있다. 이때, 비트 408이 1로 변경되는 경우, 비트 408에 해당하는 패킷이 포화를 발생시킨 패킷에 해당하는 경우, 해당 패킷의 패킷 정보(예컨대, 패킷 ID 등)가 누적된 패킷의 개수와 함께 누적 테이블(즉, 해시 테이블)에 저장될 수 있다.For example, when it is confirmed as being saturated, the table accumulation control section 113 sets the number of bits that have not been changed to a specific value (for example, 1) for a plurality of bits belonging to a memory block You can count. That is, the number of bits having a value of 0 belonging to a virtual block can be counted. The table accumulation control unit 113 may count how many packets are transmitted from the source IP address based on the counted number of bits. At this time, when the bit 408 is changed to 1, when the packet corresponding to the bit 408 corresponds to the packet generating the saturation, the packet information (for example, packet ID, etc.) (I.e., a hash table).
도 6은 본 발명의 일실시예에 있어서, 노이즈가 존재하는 경우의 카운팅 방법을 설명하기 위해 제공되는 도면이다.FIG. 6 is a diagram for explaining a counting method in the case where noise exists in an embodiment of the present invention. FIG.
도 6은 노이즈가 존재하는 경우의 메모리 공간의 구조를 나타낼 수 있다.FIG. 6 shows the structure of the memory space in the presence of noise.
가상 벡터들이 서로 메모리 공간을 공유함에 따라 노이즈(noise)가 존재할 수 있다. 즉, 할당된 메모리 블록(가상 벡터)에 속하는 비트들 중 값이 1로 변경된 비트의 개수가 전부 해당 데이터 플로우와 관련하여 변경된 것이 아닐 수 있다. 다시 말해, 비트를 공유하는 다른 플로우에 의해 1로 변경된 값에 해당할 수 있으며, 이는 노이즈(noise)에 해당할 수 있다. 이에 따라, 메모리 블록(즉, 가상 벡터)가 포화 상태로 확인되면, 테이블 누적 제어부(113)는 카운팅 시 노이즈를 제외한 나머지 부분을 테이블에 누적할 수 있으며, 초기화부(114)는 노이즈를 제외하고 메모리 블록(즉, 가상 벡터)의 초기화를 진행할 수 있다.Noise may exist as the virtual vectors share memory space with each other. That is, the number of bits whose value is changed to 1 among the bits belonging to the allocated memory block (virtual vector) may not be all changed with respect to the corresponding data flow. In other words, it may correspond to a value changed to 1 by another flow sharing a bit, which may correspond to noise. Accordingly, when the memory block (i.e., the virtual vector) is confirmed to be in a saturated state, the table accumulation control section 113 can accumulate the remaining portion excluding the noise at the time of counting, and the initialization section 114 excludes noise The initialization of the memory block (i.e., the virtual vector) can proceed.
예를 들어, 포화상태인 경우, 테이블 누적 제어부(113)는 메모리 블록(즉, 가상 벡터)에 속하는 비트들 중 노이즈(noise)에 해당하는 비트를 제외한 나머지 비트에 누적된 패킷의 개수를 누적 테이블에 누적시킬 수 있다. 이때, 테이블 누적 제어부(113)는 할당된 메모리 공간 중 메모리 블록(즉, 가상 벡터)를 제외한 나머지 공간을 대상으로, 미리 지정된 특정값(예컨대, 1)로 변경된 비트의 비율을 메모리 블록(즉, 가상 벡터)의 평균 노이즈 비율로 계산할 수 있다. 그리고, 테이블 누적 제어부(113)는 계산된 평균 노이즈 비율에 기초하여 메모리 블록에 포함된 노이즈의 개수를 카운팅할 수 있다. 이어, 테이블 누적 제어부(113)는 메모리 블록에 누적된 패킷의 개수 중 상기 카운팅된 노이즈의 개수를 제외시킴으로써, 메모리 블록에 실제 누적된 패킷의 개수를 계산할 수 있다. 테이블 누적 제어부(113)는 계산된 실제 누적된 패킷의 개수와 해당 데이터 플로우의 ID를 연관하여 누적 테이블(즉, 해시 테이블)에 누적시킬 수 있다. 이때, 가상 벡터는 1의 비율이 상기 평균 노이즈 비율과 같아질 때까지 랜덤하게 한 비트씩 선택되어 0으로 초기화될 수 있다. 즉, 8 비트의 가상 벡터 중 값이 1인 비트들(610 내지 605) 중 랜덤하게 한 비트씩 선택되어 0으로 초기화될 수 있다.For example, in a saturation state, the table accumulation control unit 113 accumulates the number of packets accumulated in the remaining bits except the bit corresponding to noise among the bits belonging to the memory block (i.e., the virtual vector) As shown in FIG. At this time, the table accumulation control unit 113 stores the ratio of bits changed to a predetermined specific value (for example, 1) in the memory space (i.e., the virtual vector) A virtual vector). The table accumulation control unit 113 may count the number of noise included in the memory block based on the calculated average noise ratio. Then, the table accumulation control unit 113 can calculate the number of actually accumulated packets in the memory block by excluding the counted number of the noise among the accumulated number of packets in the memory block. The table accumulation control unit 113 may accumulate the accumulated number of actually accumulated packets and the ID of the corresponding data flow in a cumulative table (i.e., a hash table). At this time, the virtual vector may be randomly selected by one bit and initialized to 0 until a ratio of 1 becomes equal to the average noise ratio. That is, one bit of random bits among the bits 610 to 605 having a value of 1 among the 8-bit virtual vectors can be selected and initialized to zero.
예를 들어, 도 6을 참고하면, 가상 벡터의 1의 비율은 5/8에 해당할 수 있다. 그러면, 테이블 누적 제어부(113)는 한 워드(word) 내에서 포화된 가상 벡터를 제외한 나머지 공간의 1의 비율(즉, 9/24=3/8)을 평균 노이즈 비율로 계산할 수 있다. 그리고, 초기화부(114)는 상기 1의 비율 5/8이 상기 평균 노이즈 비율 3/8이 될 때까지 비트 601 내지 605 중 어느 하나를 랜덤하게 선택하여 0으로 초기화할 수 있다.For example, referring to FIG. 6, the ratio of 1 of the virtual vector may correspond to 5/8. Then, the table accumulation control unit 113 may calculate the ratio of 1 (i.e., 9/24 = 3/8) of the remaining space excluding the saturated virtual vector in one word to the average noise ratio. The initialization unit 114 may randomly select any one of the bits 601 to 605 and initialize it to 0 until the ratio 1/5 of 1 becomes equal to the average noise ratio 3/8.
도 6은 특정 가상 벡터가 포화 상태(예컨대, 70% 이상 사용, 즉, 6개의 비트를 1로 변경)가 되기 전의 상태의 메모리 공간의 구조를 나타낼 수 있다. 이 경우, 가상 벡터는 다른 데이터 플로우들과 비트를 공유하므로, 다른 데이터 플로우와 관련하여 가상 벡터의 비트가 1로 변경될 수 있다. 즉, 6개 이상의 비트가 1의 값을 가질 수 있다. FIG. 6 may show the structure of the memory space in a state before a specific virtual vector becomes saturated (for example, use of 70% or more, that is, 6 bits are changed to 1). In this case, the virtual vector shares bits with other data flows, so that the bits of the virtual vector can be changed to 1 in association with other data flows. That is, six or more bits may have a value of one.
이때, 가상 벡터를 사용하는 데이터 플로우가 도찰할 때마다 메모리 공간의 사용률 확인이 진행되므로, 6개 비트 이상이 1의 값을 가질 수 없다. 다만, 확인 당시에는 70% 이하로 포화상태가 아니었으나, 새로운 데이터 플로우가 도착하여 확인이 다시 진행되는 사이에 다른 데이터 플로우에 의해 비트값이 1로 변경되는 경우가 발생할 수 있다. 이에 따라, 새로 도착한 데이터 플로우와 관련하여, 자신의 가상 벡터가 7개의 비트 혹은 8개의 비트가 1로 채워진 경우, 즉, 포화상태인 경우, 자신이 변경할 수 있는 비트 개수의 한계인 6개로 누적된 총 개수(est)가 계산될 수 있으며, 결국 누적된 패킷의 개수(est)는 가상 벡터의 크기에 따라 일정할 수 있다. At this time, since the use of the memory space is checked each time the data flow using the virtual vector is inspected, more than 6 bits can not have a value of 1. At the time of verification, however, it is not saturated to 70% or less. However, there may occur a case where the bit value is changed to 1 by another data flow while the new data flow arrives and the verification is resumed. Accordingly, in the case of the newly arrived data flow, when the virtual vector of its own is filled with 7 bits or 8 bits, that is, in the saturated state, the number of accumulated bits is 6, which is the limit of the number of bits that can be changed by itself The total number est can be calculated and the number of accumulated packets est can be constant depending on the size of the virtual vector.
이외에, 평균 노이즈의 비율이 가상 벡터의 1의 비율과 같거나 큰 경우, 해당 가상 벡터와 관련하여 노이즈가 없는 것으로 결정할 수 있다. 즉, 제한된 워드 내에서의 상기 평균 노이즈 비율이 카운팅하여 계산된 상기 가상 벡터의 1의 비율보다 같거나 큰 경우, 다른 데이터 플로우가 아닌 자신이 노이즈를 만든 것으로 결정할 수 있다. 즉, 비트값이 1로 변경된 것은 모두 자신이 보낸 데이터에 의해 1로 변경된 것으로 결정하고, 노이즈가 없다고 결정할 수 있다. 이처럼, 노이즈가 없는 경우, 테이블 누적 제어부(113)는 포화상태이더라도 노이즈를 별도로 계산하지 않으며, 결국, 최종적으로 누적된 패킷의 개수를 계산 시 노이즈를 제외시키지 않을 수 있다.In addition, if the ratio of the average noise is equal to or greater than the ratio of 1 of the virtual vector, it can be determined that there is no noise associated with the virtual vector. That is, if the average noise ratio in the limited word is equal to or greater than the ratio of 1 of the virtual vector calculated by counting, it can be determined that the other data flow is not the noise itself. In other words, it can be determined that the bit value changed to 1 is changed to 1 by the data sent by the bit value, and it can be determined that there is no noise. In this way, in the absence of noise, the table accumulation control section 113 does not separately calculate noise even in the saturation state, and as a result, noise may not be excluded when calculating the number of finally accumulated packets.
도 7은 본 발명의 일실시예에 있어서, 멀티 레이어 구조의 메모리 공간을 도시한 도면이다.7 is a diagram illustrating a memory space of a multi-layer structure according to an embodiment of the present invention.
도 7에서는 2개의 레이어를 사용하는 경우를 예로 들어 설명하나, 이는 실시예에 해당될 뿐, 3개 이상의 레이어가 사용될 수도 있다.In FIG. 7, the case of using two layers is described as an example, but this corresponds to the embodiment, and three or more layers may be used.
도 7을 참고하면, 레이어 1(710)은 CPU 워드 배열을 사용하고 있고, 레이어 2(720)는 레이어 1에서 사용하고 있는 자료 구조의 집합을 나타낼 수 있다. 이때, 레이어 1(710)과 레이어 2(720)는 동일한 해시를 사용하고, 크기도 동일할 수 있다. 이에 따라, 해시 계산을 한번만 수행하면, 레이어 1(710)과 레이어 2(720)가 모두 업데이트될 수 있다.Referring to FIG. 7, a layer 1 710 uses a CPU word array, and a layer 2 720 can represent a set of data structures used in a layer 1. At this time, the layer 1 710 and the layer 2 720 use the same hash and may have the same size. Accordingly, if the hash calculation is performed only once, both the layer 1 710 and the layer 2 720 can be updated.
예를 들어, 레이어 2(720)에서의 배열의 개수는 가상 벡터(즉, 메모리 블록)이 포화되기 직전의 1의 개수와 동일할 수 있다. 그러면, 가상 벡터가 포화되기 직전의 1의 개수는 노이즈의 비율에 따라 초기화할 수 있는 경우의 수에 해당할 수 있다. 예컨대, 8비트 중 5개의 비트가 1의 값을 갖는 경우, 노이즈(즉, 한 워드 내 가상 벡터를 제외한 나머지 공간의 1의 비율)에 따라 1비트부터 5 비트까지 1로 초기화할 수 있는 5가지 경우가 존재할 수 있다. 즉, 포화 직전 5가지 경우의 수가 존재할 수 있다. 즉, 평균 노이즈의 개수(estnoise)는 5가지 값을 가질 수 있다. 이때, 누적된 패킷의 개수(est)는 가상 벡터의 크기에 따라 값이 일정하기 때문에 est- estnoise도 총 5가지 결과(즉, 노이즈를 제외한 누적 개수)가 존재할 수 있다. 예컨대, 8비트 가상 벡터를 사용하는 경우, 레이어 2(720)에서는 5개의 배열들이 존재하며, 5가지 결과는 각 배열의 단위(unit)가 될 수 있다. 즉, 패킷이 도착하면, 레이어 1에서 5가지로 분기되고, 레이어 1이 다 차면, 레이어 2로 누적된 패킷이 올려 보내져 누적될 수 있다.For example, the number of arrays in layer 2 720 may be equal to the number of 1's just before the virtual vector (i.e., memory block) is saturated. Then, the number of 1's immediately before the virtual vector is saturated may correspond to the number of cases that can be initialized according to the ratio of the noise. For example, when 5 bits out of 8 bits have a value of 1, 5 bits that can be initialized from 1 bit to 5 bits to 1 according to noise (i.e., ratio of 1 in remaining space excluding a virtual vector in one word) There may be cases. That is, there may be five cases immediately before saturation. That is, the number of mean noises (est noise ) may have five values. At this time, since the number of accumulated packets (est) is constant according to the size of the virtual vector, there are 5 results (i.e., cumulative number excluding the noise) including est-est noise . For example, when an 8-bit virtual vector is used, five arrays exist in the layer 2 720, and five results may be units of each array. That is, when a packet arrives, it branches to five branches in the layer 1, and if the layer 1 is full, packets accumulated in the layer 2 can be sent up and accumulated.
정리하면, 멀티 레이어(예컨대 2개의 레이어)를 사용하는 경우, 특정 가상 벡터가 레이어 1(710)에서 포화 상태가 되면, 해당 가상 벡터가 속해 있는 워드의 노이즈에 따라 레이어 1(710)에서 포화된 개수 est- estnoise가 계산될 수 있다. 그리고, 상기 특정 가상 벡터는 초기화될 수 있다. 이때, 포화된 개수 est- estnoise(즉, 레이어 1의 가상 벡터가 포화 상태일 때의 누적된 패킷의 개수)는 바로 누적 테이블에 저장되지 않고, 레이어 2(720)의 워드 배열을 선택하기 위해 이용될 수 있다. 레이어 2(720)에서 단위(unit)가 est- estnoise인 배열이 선택되면, 레이어 1(710)에서 포화된 개수(est- estnoise)가 해당 배열에 들어 갈 수 있는 한 개의 데이터 플로우(즉, 객체)로 보고, 레이어 1과 동일하게 레이어 2를 대상으로 근사 카운팅 및 초기화가 수행될 수 있다. 그리고, 레이어 2가 포화상태가 되면, 누적된 패킷의 개수와 패킷 ID 등이 누적 테이블에 누적 저장될 수 있다. 예를 들어, 레이어 2(720)에서 계산된 누적된 패킷의 개수(estL2)는 단위(unit)와 곱셈하여 포화를 발생시킨 패킷의 정보(예컨대, 패킷 ID)와 함께 누적 테이블에 저장될 수 있다.In summary, when a multi-layer (for example, two layers) is used, when a specific virtual vector is saturated in the layer 1 710, the signal is saturated in the layer 1 710 according to the noise of the word to which the virtual vector belongs The number est est noise can be calculated. Then, the specific virtual vector can be initialized. At this time, the saturated number est est noise (i. E., The number of accumulated packets when the layer 1 virtual vector is saturated) is not immediately stored in the accumulation table, and the word array of layer 2 720 is selected Can be used. If an array with a unit est est noise at layer 2 720 is selected, then a saturated est est noise at layer 1 710 will result in one data flow (i. E. , Object), approximate counting and initialization can be performed on the layer 2 in the same manner as the layer 1. When the layer 2 becomes saturated, the number of accumulated packets, the packet ID, and the like can be cumulatively stored in the accumulation table. For example, the number of accumulated packets est L2 calculated at the layer 2 720 may be stored in the accumulation table together with information (e.g., packet ID) of the packet that caused the saturation by multiplying by a unit have.
다시 말해, 누적된 패킷의 개수와 ID 뿐만 아니라, 패킷의 크기가 누적 테이블에 함께 저장될 수 있다. 이때, 패킷의 크기는 패킷마다 다르므로, 패킷의 개수 카운팅 이외에 몇 바이트(byte)의 패킷이 소스로부터 전송되었는지 여부(즉, 바이트 카운팅)이 수행될 수 있다. 그러면, 포화로 인해 레이어 1에서 레이어 2/누적 테이블 또는 레이어 2에서 누적 테이블로 올리는 패킷의 크기(즉, 레이어 1 또는 레이어 2의 가상 벡터를 포화 상태로 만든 패킷의 크기)와 데이터 플로우에 속하는 패킷의 개수(즉, 누적된 패킷의 개수, 예컨대, 34)를 곱함으로써 바이트 카운팅이 수행될 수 있다. 이처럼, 포화를 발생시킨 패킷의 크기와 누적된 패킷의 개수를 곱함에 따라 카운팅된 바이트(즉, 패킷의 크기)는 누적된 패킷의 개수 및 포화를 발생시킨 패킷의 ID(또는 데이터 플로우의 ID)와 함께 누적 테이블에 저장될 수 있다.In other words, the size of the packet, as well as the number and ID of the accumulated packets, can be stored together in the accumulation table. At this time, since the size of the packet differs from one packet to another, the number of bytes (bytes) transmitted from the source (i.e., byte counting) may be performed in addition to counting the number of packets. Then, the size of the packet (i.e., the size of the packet in which the virtual vector of the layer 1 or the layer 2 is saturated) of the packet to be pushed from the layer 2 / cumulative table or the layer 2 to the cumulative table due to saturation and the packet belonging to the data flow Byte counting may be performed by multiplying the number of accumulated packets (e.g., the number of accumulated packets, e.g., 34). The number of accumulated packets and the ID (or ID of the data flow) of the packet that caused the saturation are calculated by multiplying the size of the packet generating the saturation by the number of accumulated packets, And stored in the accumulation table.
도 7에서 설명한 바와 같이, 누적된 패킷의 개수(즉, 누적된 빈도수)뿐만 아니라, 누적 크기도 근사 카운팅(즉, 바이트 카운팅)될 수 있다. 스트림 형태의 데이터 플로우에서, 동일한 데이터 패킷일지라도 다른 크기를 가질 수 있다. 다시 말해, 패킷 ID 뿐만 아니라, 패킷의 페이로드(payload)에 포함되는 정보의 크기가 일정하지 않을 수 있다. 예를 들어, 동일한 소스 IP와 목적지 IP를 가지고 있는 두 개의 패킷이 존재하는 경우, 두 패킷의 페이로드(payload) 필드 각각에 포함된 정보의 크기가 상이할 수 있다. 이에 따라, 두 패킷이 동일 객체로 볼 수 있는데도 불구하고, 패킷의 크기는 서로 상이할 수 있다.As described in FIG. 7, the cumulative size as well as the number of accumulated packets (i.e., cumulative frequency) can be approximated (i.e., byte counted). In a stream-like data flow, even the same data packet can have different sizes. In other words, not only the packet ID but also the size of the information included in the payload of the packet may not be constant. For example, if there are two packets with the same source IP and destination IP, the size of the information contained in each of the payload fields of the two packets may be different. Accordingly, although two packets can be regarded as the same object, the sizes of the packets may be different from each other.
도 8은 본 발명의 일실시예에 있어서, 누적 테이블의 구조를 도시한 도면이다.8 is a diagram showing the structure of the accumulation table in the embodiment of the present invention.
도 8을 참고하면, 레이어 2(810)의 메모리 블록(즉, 가상 벡터)이 포화(saturation)된 경우, 누적된 패킷의 개수(est)와, 바이트 카운팅을 통해 계산된 누적 크기(size)는 누적 테이블(820)에 누적 저장될 수 있다. 이때, 레이어 2(810)의 가상 벡터가 포화 상태가 됨에 따라, 샘플링(sampling) 기법을 이용하여 누적 크기(size)가 계산될 수 있다. 예컨대, 패킷 x에게 할당된 가상 벡터가 포화된 경우, 즉, 패킷 x가 포화를 발생시킨 패킷에 해당하는 경우, 레이어 2(810)의 가상 벡터에 누적된 개수(est)가 계산될 수 있다. 그리고, 누적 테이블(820)에 저장하기 위한 이벤트가 발생할 수 있다. 그러면, 상기 가상 벡터의 포화를 일으킨 패킷x 의 크기(size)를 est의 크기로 보고, 테이블 누적 제어부(113)는 상기 패킷 x의 크기(size)와 누적된 패킷의 개수(est)의 곱을 누적 크기(est*size)로 계산할 수 있다. 그리고, 테이블 누적 제어부(113)는 누적 크기(est*size), 누적된 패킷의 개수(est) 및 패킷 ID(obj1, 즉, 데이터 플로우의 ID)를 서로 연관시켜 누적 테이블(820)에 저장할 수 있다. 8, when the memory block (i.e., the virtual vector) of the layer 2 810 is saturated, the number of accumulated packets est and the cumulative size calculated through byte counting are Accumulated in the accumulation table 820. At this time, as the virtual vector of the layer 2 810 becomes saturated, a cumulative size can be calculated using a sampling technique. For example, when the virtual vector assigned to the packet x is saturated, that is, when the packet x corresponds to the packet that caused the saturation, the number est accumulated in the virtual vector of the layer 2 810 can be calculated. An event to be stored in the accumulation table 820 may be generated. Then, the table accumulation control unit 113 refers to the size of the packet x causing the saturation of the virtual vector to be the size of est, and the table accumulation control unit 113 accumulates the product of the size (size) of the packet x and the number of accumulated packets (est) Size (est * size). The table accumulation control unit 113 associates the accumulated size (est * size), the accumulated number of packets (est), and the packet ID (obj 1 , that is, the ID of the data flow) with each other and stores them in the accumulation table 820 .
이처럼, 스트림 형태의 데이터 집합을 데이터 플로우 별로 카운팅 하기 위해서는 누적 테이블(예컨대, 해시 테이블)이 필요할 수 있다. 누적 테이블(820)은 패킷 ID의 해시값을 이용하여 선형 프로빙(linear probing) 또는 쿼드라틱 프로빙(quadratic probing) 방식으로 패킷의 위치를 찾아 삽입 또는 갱신하므로, 해시 테이블로 표현될 수 있다. 해시 테이블은 사용량이 높을수록 패킷(즉, 객체)의 삽입 또는 갱신 효율이 저하되므로, 메모리 공간이 제한적인 상황에서 실시간으로 대규모의 데이터 집합을 데이터 플로우 별로 전부 누적하기 어렵다. 이때, 카운팅 시스템(100)에서 모든 데이터 플로우들(즉, 모든 패킷들)을 전부 효율이 낮은 해시 테이블에 누적하지 않고, 레이어 1, 레이어 2에서 데이터 플로우 별로 할당된 메모리 블록(즉, 가상 벡터)에 먼저 누적하고, 가상 벡터가 포화된 경우에만 선택적으로 해시 테이블에 누적함으로써, 해시 테이블(820)의 삽입 및 갱신(update) 횟수를 현저히 감소시킬 수 있다.As such, a cumulative table (e.g., a hash table) may be needed to count the stream-like data set by data flow. The accumulation table 820 can be represented as a hash table by locating or inserting the packet in a linear probing or quadratic probing manner using the hash value of the packet ID. Since the efficiency of insertion or update of a packet (i.e., object) decreases with a higher usage of a hash table, it is difficult to accumulate a large-scale data set in real-time by data flow in a limited memory space. At this time, in the counting system 100, all the data flows (that is, all the packets) are not accumulated in the hash tables having low efficiency, and the memory blocks (i.e., virtual vectors) And the number of insertions and updates of the hash table 820 can be significantly reduced by selectively accumulating in the hash table only when the virtual vector is saturated.
또한, 빈도수가 작은 패킷들의 경우, 할당된 가상 벡터를 포화시키지 못하므로 누적 테이블(820)에 저장되지 않을 수 있다. In addition, in the case of packets having a small frequency, the allocated virtual vector can not be saturated, and thus may not be stored in the accumulation table 820.
또한, 단일 레이어(one-layer) 이외에 멀티 레이어(multi layer) 자료 구조를 지원함에 따라, 단일 레이어 구조에서는 작은 크기의 가상 벡터를 사용하여 높은 정확도를 보장할 수 있다. 이때, 가상 벡터에 누적 가능한 패킷의 개수가 작아 가상 벡터의 포화가 빈번하게 발생할 수 있어, 해시 테이블9820)에 대한 누적 횟수도 많이 발생할 수 있다. 그러면, 할당부(111)는 가상 벡터의 크기를 이전보다 상대적으로 크게 증가시킬 수 있으며, 가상 벡터의 크기 증가로 인해, 가상 벡터의 누적 능력이 향상되어 해시 테이블(820)에 패킷을 누적하는 횟수가 감소할 수 있다.In addition, since a multi-layer data structure is supported in addition to a one-layer structure, a single-layer structure can guarantee high accuracy by using a small-sized virtual vector. At this time, since the number of accumulatable packets in the virtual vector is small, the saturation of the virtual vector may occur frequently, and the cumulative number of times of accumulation in the hash table 9820 may also occur. Then, the allocation unit 111 can increase the size of the virtual vector relatively more than before, and the cumulative capacity of the virtual vector is improved due to the increase of the size of the virtual vector, so that the number of times the packets are accumulated in the hash table 820 Can be reduced.
이외에, 멀티 레이어 구조의 메모리 공간이 이용될 수 있다. 멀티 레이어 구조를 이용하는 경우, 가상 벡터 크기의 증가에 따른 누적 능력 증가율이 단일 레이어일 때보다 증폭될 수 있다. 예를 들어, 16 비트 가상 벡터의 누적 능력보다 2개의 레이어에서 8비트의 가상 벡터(총 16비트)의 누적 능력이 더 좋을 수 있다. 즉, 하나의 데이터 플로우에 속하는 패킷을 대상으로 동일 크기의 메모리 블록(즉, 가상 벡터)이 할당된 경우, 멀티 레이어 구조를 이용할 때에 단일 레이어일 때 보다 더 많은 패킷이 누적될 수 있으며, 해시 테이블에 누적되는 빈도 역시 상대적으로 감소할 수 있다. 그리고, 빈도수(즉, 누적된 패킷의 크기)와 누적 크기가 동시에 측정되어 해시 테이블에 함께 저장됨에 따라, 소스 IP에서 전송한 패킷의 개수와 크기를 같이 제공 가능할 수 있다. 즉, 네트워크 트래픽을 보다 정확하게 측정할 수 있다.In addition, a memory space of a multi-layer structure can be used. In the case of using a multi-layer structure, the rate of increase of the cumulative capacity with the increase of the virtual vector size can be amplified as compared with that of a single layer. For example, the cumulative capability of 8-bit virtual vectors (16 bits in total) in two layers can be better than the cumulative capability of 16-bit virtual vectors. That is, when a memory block of the same size (i.e., a virtual vector) is allocated to a packet belonging to one data flow, more packets can be accumulated than when a single layer is used by using a multilayer structure, Can be relatively reduced. Also, since the frequency (i.e., the size of the accumulated packet) and the cumulative size are simultaneously measured and stored together in the hash table, the number and size of the packets transmitted from the source IP can be provided together. That is, network traffic can be measured more accurately.
본 발명의 실시예에 따른 방법들은 다양한 컴퓨터 시스템을 통하여 수행될 수 있는 프로그램 명령(instruction) 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다.The methods according to embodiments of the present invention may be implemented in the form of a program instruction that can be executed through various computer systems and recorded in a computer-readable medium.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (10)

  1. 네트워크 트래픽을 데이터 플로우(data flow) 별로 카운팅(counting)하기 위해 컴퓨터로 구현되는 카운팅 방법에 있어서,A computer implemented counting method for counting network traffic by data flow, the method comprising:
    서로 다른 데이터 플로우 별로 미리 지정된 일정한 크기의 메모리 공간을 할당하는 단계;Allocating a predetermined size of memory space for each different data flow;
    할당된 메모리 공간 중 다른 데이터 플로우와 공유되는 일부 공간에 해당하는 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 단계; 및Accumulating the number of packets belonging to the data flow using a memory block corresponding to a certain space shared with other data flows among the allocated memory spaces; And
    상기 메모리 블록이 포화(saturation) 상태이면 누적된 상기 패킷의 개수를 누적 테이블에 누적시키는 단계Accumulating the number of accumulated packets in the accumulation table if the memory block is in a saturation state
    를 포함하고,Lt; / RTI >
    상기 메모리 블록은, 상기 할당된 메모리 공간 중 CPU가 한 번에 읽을(reading) 수 있는 워드(word)에 해당하는 메모리 공간을 나타내는 한 워드(word) 이내로 제한(confinement)되는 것The memory block is confined within a word indicating a memory space corresponding to a word which can be read at one time by the CPU among the allocated memory spaces
    을 특징으로 하는 카운팅 방법./ RTI >
  2. 제1항에 있어서,The method according to claim 1,
    상기 할당된 메모리 공간은 멀티 레이어(multi-layer) 구조를 가지는 것The allocated memory space may have a multi-layer structure
    을 특징으로 하는 카운팅 방법./ RTI >
  3. 제1항에 있어서,The method according to claim 1,
    상기 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 단계는,Wherein accumulating the number of packets belonging to a data flow using the memory block comprises:
    데이터 플로우에 속하는 적어도 하나의 패킷이 도착할 때마다 상기 메모리 블록에 속하는 어느 하나의 비트를 미리 지정된 특정값으로 변경하는 단계; 및Changing one bit belonging to the memory block to a predetermined specific value each time at least one packet belonging to the data flow arrives; And
    상기 메모리 블록에 속하는 복수의 비트들의 개수 및 상기 특정값으로 변경된 비트의 개수에 기초하여 상기 메모리 블록이 포화 상태인지 여부를 확인하는 단계Determining whether the memory block is in a saturated state based on the number of bits belonging to the memory block and the number of bits changed to the specific value
    를 포함하는 카운팅 방법.≪ / RTI >
  4. 제3항에 있어서,The method of claim 3,
    상기 패킷의 개수를 누적 테이블에 누적시키는 단계는,The step of accumulating the number of packets in the accumulation table comprises:
    상기 메모리 블록이 포화 상태로 확인되면, 상기 메모리 블록에 누적된 패킷의 개수를 카운팅하는 단계; 및Counting the number of packets accumulated in the memory block when the memory block is confirmed to be in a saturated state; And
    상기 메모리 블록에 누적된 패킷의 개수를 상기 누적 테이블에 누적시키는 단계; 및Accumulating the number of packets accumulated in the memory block in the accumulation table; And
    상기 메모리 블록을 초기화하여 재사용하는 단계Initializing and reusing the memory block
    를 포함하는 카운팅 방법.≪ / RTI >
  5. 제4항에 있어서,5. The method of claim 4,
    상기 메모리 블록에 누적된 패킷의 개수를 카운팅하는 단계는,Wherein counting the number of packets accumulated in the memory block comprises:
    상기 메모리 블록에 속하는 복수의 비트들을 대상으로, 상기 특정값으로 변경되지 않은 비트의 개수를 카운팅하는 단계; 및Counting the number of bits not changed to the specific value for a plurality of bits belonging to the memory block; And
    카운팅된 상기 비트의 개수를 기반으로 출발지 IP 주소에서 몇 개의 패킷을 전송했는지를 카운팅하는 단계Counting how many packets have been transmitted from the source IP address based on the counted number of bits
    를 포함하는 카운팅 방법.≪ / RTI >
  6. 제1항에 있어서,The method according to claim 1,
    상기 패킷의 개수를 누적 테이블에 누적시키는 단계는,The step of accumulating the number of packets in the accumulation table comprises:
    상기 메모리 블록이 포화(saturation) 상태이면, 상기 메모리 블록에 속하는 비트들 중 노이즈(noise)에 해당하는 비트를 제외한 나머지 비트에 누적된 패킷의 개수를 상기 누적 테이블에 누적시키고,Accumulating in the accumulation table the number of packets accumulated in the remaining bits except the bit corresponding to noise among bits belonging to the memory block when the memory block is in a saturation state,
    상기 노이즈는, 해당 비트가 다른 데이터 플로우에 속하는 패킷과 공유됨에 따라 미리 지정된 특정값으로 변경된 것을 나타내는 것The noise indicates that the bit has been changed to a predetermined specific value as it is shared with a packet belonging to another data flow
    을 특징으로 하는 카운팅 방법./ RTI >
  7. 제1항에 있어서,The method according to claim 1,
    상기 패킷의 개수를 누적 테이블에 누적시키는 단계는,The step of accumulating the number of packets in the accumulation table comprises:
    상기 메모리 블록이 포화(saturation) 상태이면, 상기 메모리 블록이 속하는 상기 할당된 메모리 공간 중 상기 메모리 블록을 제외한 나머지 공간을 대상으로, 미리 지정된 특정값으로 변경된 비트의 비율을 상기 메모리 블록의 평균 노이즈 비율로 계산하는 단계; A ratio of a bit changed to a predetermined specific value for a remaining space excluding the memory block among the allocated memory spaces to which the memory block belongs is set to an average noise ratio of the memory block ;
    계산된 상기 평균 노이즈 비율에 기초하여 상기 메모리 블록에 포함된 노이즈의 개수를 카운팅하는 단계;  Counting the number of noise included in the memory block based on the calculated average noise ratio;
    상기 메모리 블록에 누적된 패킷의 개수 중 상기 노이즈의 개수를 제외시킴으로써, 상기 메모리 블록에 실제 누적된 패킷의 개수를 계산하는 단계; 및Calculating the number of packets actually accumulated in the memory block by excluding a number of the noise among the number of packets accumulated in the memory block; And
    계산된 상기 실제 누적된 패킷의 개수 및 해당 데이터 플로우의 ID를 연관하여 상기 누적 테이블에 누적시키는 단계Accumulating the number of the actually accumulated packets calculated and the ID of the corresponding data flow in the accumulation table
    를 포함하는 카운팅 방법.≪ / RTI >
  8. 제7항에 있어서,8. The method of claim 7,
    상기 패킷의 개수를 누적 테이블에 누적시키는 단계는,The step of accumulating the number of packets in the accumulation table comprises:
    상기 메모리 블록에 속하는 비트들 중 미리 지정된 특정값으로 변경된 비트의 비율이 상기 평균 노이즈 비율이 될 때까지, 상기 특정값으로 변경된 상기 메모리 블록에 속하는 비트들 중에서 선택된 비트를 초기화하는 단계Initializing a selected bit among the bits belonging to the memory block changed to the specific value until a ratio of bits changed to a predetermined specific value among the bits belonging to the memory block becomes the average noise ratio
    를 더 포함하는 카운팅 방법.≪ / RTI >
  9. 제1항에 있어서,The method according to claim 1,
    상기 패킷의 개수를 누적 테이블에 누적시키는 단계는,The step of accumulating the number of packets in the accumulation table comprises:
    상기 메모리 블록이 포화(saturation) 상태이면, 포화를 발생시킨 패킷의 크기(size) 및 상기 메모리 블록에 누적된 패킷의 개수에 기초하여 해당 데이터 플로우의 크기를 계산하는 단계; 및Calculating a size of the data flow based on a size of a packet generating the saturation and a number of packets accumulated in the memory block when the memory block is in a saturation state; And
    계산된 상기 크기를 데이터 플로우의 ID 및 해당 데이터 플로우와 관련하여 누적된 패킷의 개수와 함께 연관하여 상기 누적 테이블에 누적시키는 단계Associating the calculated size with the ID of the data flow and the number of packets accumulated with respect to the data flow and accumulating the accumulated size in the accumulation table
    를 포함하는 카운팅 방법.≪ / RTI >
  10. 네트워크 트래픽을 데이터 플로우(data flow) 별로 카운팅(counting)하는 카운팅 시스템에 있어서, 1. A counting system for counting network traffic by data flow,
    적어도 하나의 스토리지 유닛;At least one storage unit;
    적어도 하나의 프로세서At least one processor
    를 포함하고,Lt; / RTI >
    상기 적어도 하나의 프로세서는, Wherein the at least one processor comprises:
    서로 다른 데이터 플로우 별로 미리 지정된 일정한 크기의 메모리 공간을 할당하는 과정;Allocating a predetermined size of memory space for each different data flow;
    할당된 메모리 공간 중 다른 데이터 플로우와 공유되는 일부 공간에 해당하는 메모리 블록을 이용하여 데이터 플로우에 속하는 패킷의 개수를 누적시키는 과정; 및Accumulating the number of packets belonging to the data flow by using a memory block corresponding to some space shared with other data flows among the allocated memory spaces; And
    상기 메모리 블록이 포화(saturation) 상태이면 누적된 상기 패킷의 개수를 누적 테이블에 누적시키는 과정Accumulating the number of accumulated packets in the accumulation table if the memory block is in a saturation state;
    을 처리하고,Lt; / RTI >
    상기 메모리 블록은, 상기 할당된 메모리 공간 중 CPU가 한 번에 읽을(reading) 수 있는 워드(word)에 해당하는 메모리 공간을 나타내는 한 워드(word) 이내로 제한(confinement)되는 것The memory block is confined within a word indicating a memory space corresponding to a word which can be read at one time by the CPU among the allocated memory spaces
    을 특징으로 하는 카운팅 시스템.The counting system comprising:
PCT/KR2017/013903 2017-11-29 2017-11-30 Method and system for counting data set WO2019107608A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0161709 2017-11-29
KR1020170161709A KR102026128B1 (en) 2017-11-29 2017-11-29 Method and system for counting data set

Publications (1)

Publication Number Publication Date
WO2019107608A1 true WO2019107608A1 (en) 2019-06-06

Family

ID=66665066

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2017/013903 WO2019107608A1 (en) 2017-11-29 2017-11-30 Method and system for counting data set

Country Status (2)

Country Link
KR (1) KR102026128B1 (en)
WO (1) WO2019107608A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070121219A (en) * 2006-06-21 2007-12-27 주식회사 케이티 Verification system and method for packet accounting in ip network
US20080123545A1 (en) * 2006-11-29 2008-05-29 Yoshinori Watanabe Traffic analysis apparatus and analysis method
KR20090120205A (en) * 2008-05-19 2009-11-24 삼성전자주식회사 Flash memory device and operating method thereof
KR20150045732A (en) * 2013-10-21 2015-04-29 인하대학교 산학협력단 Method and system for approximate counting for duplication number of element

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070121219A (en) * 2006-06-21 2007-12-27 주식회사 케이티 Verification system and method for packet accounting in ip network
US20080123545A1 (en) * 2006-11-29 2008-05-29 Yoshinori Watanabe Traffic analysis apparatus and analysis method
KR20090120205A (en) * 2008-05-19 2009-11-24 삼성전자주식회사 Flash memory device and operating method thereof
KR20150045732A (en) * 2013-10-21 2015-04-29 인하대학교 산학협력단 Method and system for approximate counting for duplication number of element

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JANG RHONG-HO ET AL.: "Enhancing RCC (Recyclable counter with confinement) with Cuckoo Hashing.", THE KOREAN INSTITUTE OF COMMUNICATIONS AND INFORMATION SCIENCES, vol. 41, no. 06, June 2016 (2016-06-01), pages 663 - 671, XP055615800 *

Also Published As

Publication number Publication date
KR102026128B1 (en) 2019-09-27
KR20190062987A (en) 2019-06-07

Similar Documents

Publication Publication Date Title
US7768907B2 (en) System and method for improved Ethernet load balancing
WO2014104634A1 (en) System and method for dynamically expanding virtual cluster and recording medium on which program for executing the method is recorded
WO2012002635A1 (en) System test apparatus
US8615614B2 (en) Message passing using direct memory access unit in a data processing system
US20100306442A1 (en) Detecting lost and out of order posted write packets in a peripheral component interconnect (pci) express network
WO2015102253A1 (en) Apparatus and method for processing digital value
WO2018062614A1 (en) Metering data management system and computer-readable recording medium
WO2023096118A1 (en) Data input and output method using storage node-based key-value store
CN105630712A (en) Counter and counting method
RU2560812C2 (en) Extended capability monitoring means
WO2019107608A1 (en) Method and system for counting data set
WO2015056818A1 (en) Counting bloom filter
US9563388B2 (en) Sharing a hosted device in a computer network
US10817177B1 (en) Multi-stage counters
WO2016195421A1 (en) Method, system and non-transitory computer-readable recording medium for providing data profiling based on statistical analysis
WO2022124720A1 (en) Method for detecting error of operating system kernel memory in real time
WO2012070721A1 (en) Virtual machine scheduling method and system
WO2016182255A1 (en) Electronic device and page merging method therefor
WO2015046951A1 (en) Network security method and device using ip address
JP7167687B2 (en) Information processing device, information processing method and information processing program
WO2016028033A1 (en) Indoor place determination method and system, and file distribution system
WO2013094914A1 (en) Apparatus and method for indicating flash memory life
WO2015137722A1 (en) Method and device for processing vliw instruction, and method and device for generating instruction for processing vliw instruction
WO2014193057A1 (en) Method for determining problematic equipment using defect map of faulty samples and apparatus for same
US8661162B2 (en) Address handling

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17933383

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17933383

Country of ref document: EP

Kind code of ref document: A1