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. |
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.
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.
For more detailed information, see the arts++ Class Library Reference.