remains unchanged as long as the packet traverses the network. However, there is no way to
get the whole paths of the attacks.
Dean et al. [29] proposed an Algebraic Packet Marking (APM) scheme that reframes the
traceback problem as a polynomial reconstruction problem and uses techniques from
algebraic coding theory to provide robust methods of transmission and reconstruction. The
advantage of this scheme is that it offers more flexibility in design and more powerful
techniques that can be used to filter out attacker-generated noise and separate multiple paths.
But it shares similarity with PPM in that it requires a sufficiently large number of attack
packets.
Log-Based Traceback
The basic idea of log-based traceback is that each router stores the information (digests,
signature, or even the packet itself) of network traffic through it. Once an attack is
detected, the victim queries the upstream routers by checking whether they have logged
the attack packet in question. If the attack packet’s information is found in a given
router’s memory, that router is deemed to be part of the attack path. Obviously, the
major challenge in log-based traceback schemes is the storage space requirement at the
intermediate routers.
Matsuda et al. [30] proposed a hop-by-hop log-based IP traceback method. Its main features
are a logging packet feature that is composed of a portion of the packet for identification
purposes and an algorithm using a data-link identifier to identify the routing of a packet.
However, for each received packet, about 60 bytes of data should be recorded. The resulting
large memory space requirement prevents this method from being applied to high-speed
networks with heavy traffic.
Although today’s high-speed IP networks suggest that classical log-based traceback schemes
would be too prohibitive because of the huge memory requirement, log-based traceback
became attractive after Bloom filter-based (i.e., hash-based) traceback schemes were
proposed. Bloom filters were presented by Burton H. Bloom [31] in 1970 and have been
widely used in many areas such as database and networking [32]. A Bloom filter is a
space-efficient data structure for representing a set of elements to respond to membership
queries. It is a vector of bits that are all initialized to the value 0. Then each element is
inserted into the Bloom filter by hashing it using several independent uniform hash
functions and setting the corresponding bits in the vector to value 1. Given a query as to
whether an element is present in the Bloom filter, we hash this element using the same
hash functions and check whether all the corresponding bits are set to 1. If any one of
them is 0, then undoubtedly this element is not stored in the filter. Otherwise, we would
say that it is present in the filter, although there is a certain probability that the element
is determined to be in the filter though it is actually not. Such false cases are called false
positives.
www.syngress.com