The arts++ package includes a C++ class library which
provides an API for ARTS data. The class library contains a top-level
Arts class which may contain any type of ARTS data. The
class library also contains derived classes for each of the ARTS data
objects used by CAIDA.
Arts Class and Contained Classes
The Arts class is a top level class in the class heirarchy.
It is used to hold any of the ARTS data types.
All Arts objects contain a header section represented by
a contained ArtsHeader object. Arts objects also
normally contain one or more attributes in a vector of
ArtsAttribute objects (literally a
vector<ArtsAttribute> using STL). Finally, each
Arts object contains a data portion. The data portion
is where the specific type of data (AS matrix, net matrix, etc.)
is stored.
You may obtain a reference to the ArtsHeader in an
Arts object by calling the Header() member from the
Arts class.You may obtain a reference to the vector of
attributes in an Arts object or one of the Arts
descendants by calling the Attributes() member from the
Arts class.
The type of the data in the data portion of an Arts object
can be determined by looking at the Header().Identifier()
in the object. The class library will handle the following values:
| Header().Identifier() | Description |
artsC_OBJECT_AS_MATRIX | An AS matrix object. |
artsC_OBJECT_NET | A net matrix object. |
artsC_OBJECT_PORT | A port table object. |
artsC_OBJECT_PORT_MATRIX | A port matrix object. |
artsC_OBJECT_SELECTED_PORT | A selected port table object. |
artsC_OBJECT_PROTO | A protocol table object. |
artsC_OBJECT_IP_PATH | An IP forward path and RTT object. |
artsC_OBJECT_INTERFACE_MATRIX | An interface matrix object. |
artsC_OBJECT_NEXT_HOP | An IP nexthop table object. |
ArtsHeader Class
The ArtsHeader class is used inside each Arts object
to hold information which is generic to all ARTS data types. For example,
the object identifier, the version of the object, or the number of
attributes in the object.
ArtsAttribute Class
A vector of ArtsAttribute objects is used inside an
Arts object to hold various attributes which may apply to a
variety of ARTS data types. For example, a period attribute is used in
several objects to hold a time interval for which the ARTS data holds
information. A host attribute is frequently used to hold the IP address
of a host or router from which the ARTS data was collected.
ArtsAsMatrixData Class
The ArtsAsMatrixData class is used to hold AS matrix data
within an Arts object. When the Header().Identifier()
of an Arts object is artsC_OBJECT_AS_MATRIX, you may
obtain a pointer to the ArtsAsMatrixData object in the
Arts object by calling the AsMatrixData() member from
the Arts class.
An ArtsAsMatrixData object contains a vector of
ArtsAsMatrixEntry objects.
ArtsAsMatrixEntry Class
The ArtsAsMatrixEntry class contains a source AS number,
a destination AS number, the packets sent from the source AS to the
destination AS, and the bytes sent from the source AS to the destination
AS.
ArtsNetMatrixData Class
The ArtsNetMatrixData class is used to hold net matrix data
within an Arts object. When the Header().Identifier()
of an Arts object is artsC_OBJECT_NET, you may
obtain a pointer to the ArtsNetMatrixData object in the
Arts object by calling the NetMatrixData() member from
the Arts class.
An ArtsNetMatrixData object contains a vector of
ArtsNetMatrixEntry objects.
ArtsNetMatrixEntry Class
The ArtsNetMatrixEntry class contains a source network address
and netmask length, a destination network address and netmask length,
the packets sent from the source network to the destination network, and
the bytes sent from the source network to the destination network.
ArtsPortTableData Class
The ArtsPortTableData class is used to hold port table data
within an Arts object. When the Header().Identifier()
of an Arts object is artsC_OBJECT_PORT, you may
obtain a pointer to the ArtsPortTableData object in the
Arts object by calling the PortTableData() member from
the Arts class.
An ArtsPortTableData object contains a vector of
ArtsPortTableEntry objects.
ArtsPortTableEntry Class
The ArtsPortTableEntry class contains a port number, the packets
sent with a source port equal to the port number, the bytes sent with a
source port equal to the port number, the packets sent with a destination
port equal to the port number and the bytes sent with a destination
port equal to the port number.
ArtsPortMatrixData Class
The ArtsPortMatrixData class is used to hold port matrix data
within an Arts object. When the Header().Identifier()
of an Arts object is artsC_OBJECT_PORT_MATRIX, you may
obtain a pointer to the ArtsPortMAtrixData object in the
Arts object by calling the PortMatrixData() member from
the Arts class.
An ArtsPortMatrixData object contains a vector of
ArtsPortMatrixEntry objects.
ArtsPortMatrixEntry Class
The ArtsPortMatrixEntry class contains a source port number, a
destination port number, the number of packets sent from the source port
number to the destination port number, and the number of bytes sent from
the source port number to the destination port number.
ArtsSelectedPortTableData Clsss
The ArtsSelectedPortTableData class is used to hold selected
port table data within an Arts object. When the
Header().Identifier() of an Arts object is
artsC_OBJECT_SELECTED_PORT, you may obtain a pointer to the
ArtsSelectedPortTableData object in the Arts object by
calling the SelectedPortTableData() member from the Arts
class.
The data portion of this object is stored just like that in the
ArtsPortTableData class: a vector of
ArtsPortTableEntry objects, accessible via the
PortEntries() member function. However, the interpretation of
the data is different than that of the ArtsPortTableData class.
Only selected ports (which are held in an ArtsPortChooser
object in the ArtsSelectedPortTableData class) are allowed to
have inidividual entries, and traffic for ports which aren't in the
selection list is lumped unoder an entry for port 0. Unlike the
ArtsPortTableData class, we only count traffic once, for the
lower of the source or destination port that was in the selection list
(or in the entry for port 0).
ArtsProtocolTableData Class
The ArtsProtocolTableData class is used to hold protocol table
data within an Arts object. When the
Header().Identifier() of an Arts object is
artsC_OBJECT_PROTO, you may obtain a pointer to the
ArtsProtocolTableData object in the Arts object by
calling the ProtocolTableData() member from the Arts
class.
An ArtsProtocolTableData object contains a vector of
ArtsProtocolTableEntry objects.
ArtsProtocolTableEntry Class
The ArtsProtocolTableEntry class contains a protocol number,
the number of packets sent using the protocol and the number of bytes
sent using the protocol.
ArtsInterfaceMatrixData Class
The ArtsInterfaceMatrixData class is used to hold interface
matrix data within an Arts object. When the
Header().Identifier() of an Arts object is
artsC_OBJECT_INTERFACE_MATRIX, you may obtain a pointer to the
ArtsInterfaceMatrixData object in the Arts object by
calling the InterfaceMatrixData() member from the Arts
class. The interface matrix data is held in a vector of
ArtsInterfaceMatrixEntry objects inside the
ArtsInterfaceMatrixData class.
ArtsInterfaceMatrixEntry Class
The ArtsInterfaceMatrixEntry class contains a source (input)
interface index, a destination (output) interface index, the number of
packets sent from the source interface to the destination interface and
the number of bytes sent from the source interface to the destination
interface.
ArtsNextHopTableData Class
The ArtsNextHopTableData class is used to hold nexthop table
data within an Arts object. When the
Header().Identifier() of an Arts object is
artsC_OBJECT_NEXT_HOP, you may obtain a pointer to the
ArtsNextHopTableData object in the Arts object by
calling the NextHopTableData() member from the Arts
class. The nexthop table data is held in a vector of
ArtsNextHopTableEntry objects inside the
ArtsNextHopTableData class.
ArtsNextHopTableEntry Class
The ArtsNextHopTableEntry class contains the IP address of the
nexthop and counters for the packets and bytes of traffic sent via
the nexthop.
ArtsIpPathData Class
Not yet documented, used by the skitter package.
For each of the ARTS data types, there is a class derived from
the Arts class to represent the data. An applicaiotn would
typically use one of the derived classes when it knows what type
of data to be stored in a given object. Typically these classes
are no different than the Arts class other than having
specialized constructors and shortcut calls to members of the
data classes held inside an ARTS object.
This class can be used to hold AS matrix data. An instantiation of
this object is no different than an instantiation of an Arts
object except that the Header().Identifier() should always
be artsC_OBJECT_AS_MATRIX.
This class can be used to hold net matrix data. An instantiation of
this object is no different than an instantiation of an Arts
object except that the Header().Identifier() should always
be artsC_OBJECT_NET.
This class can be used to hold port table data. An instantiation of
this object is no different than an instantiation of an Arts
object except that the Header().Identifier() should always
be artsC_OBJECT_PORT.
This class can be used to hold port matrix data. An instantiation of
this object is no different than an instantiation of an Arts
object except that the Header().Identifier() should always
be artsC_OBJECT_PORT_MATRIX.
This class can be used to hold selected port table data. An
instantiation of this object is no different than an instantiation of an
Arts object except that the Header().Identifier()
should always be artsC_OBJECT_SELECTED_PORT.
This class can be used to hold protocol table data. An instantiation of
this object is no different than an instantiation of an Arts
object except that the Header().Identifier() should always
be artsC_OBJECT_PROTO.
ArtsAsMatrixAggregator Class
The ArtsAsMatrixAggregator class may be used to aggregate
AS matrix data in the time domain.
ArtsNetMatrixAggregator Class
The ArtsNetMatrixAggregator class may be used to aggregate
net matrix data in the time domain.
ArtsPortTableAggregator Class
The ArtsPortTableAggregator class may be used to aggregate
port table data in the time domain.
ArtsPortMatrixAggregator Class
The ArtsPortMatrixAggregator class may be used to aggregate
port matrix data in the time domain, generating ArtsPortMatrix
or ArtsSelectedPortTable objects as aggregate output.
ArtsProtocolTableAggregator Class
The ArtsProtocolTableAggregator class may be used to aggregate
protocol table data in the time domain.
ArtsInterfaceMatrixAggregator Class
The ArtsInterfaceMatrixAggregator class may be used to aggregate
interface matrix data in the time domain.
ArtsNextHopTableAggregator Class
The ArtsNextHopTableAggregator class may be used to aggregate
nexthop table data in the time domain.
For more detailed information, see the arts++ Class Library Reference.