7.3. UserDBConfig Text (Legacy) Config Format

This is a tool to generate the configurations for all the users across both ConsoleUser and MPTGS so that they will preserve desired statistical properties across the different application/traffic types.

7.3.1. Installation

UserDBConfig is a collection of Perl scripts and modules. To use it some additional modules are required (that are part of a defualt setup). The tar that includes UserDBConfig includes the extra modules it needs so they can be installed without an Internet connection; however, to build those modules requires a general development environment. The module build/install process requires gcc and the ability to process Perl Makefiles (e.g., perl-ExtUtils-MakeMaker).

Once those system requirements are set change into the libs directory. From there run ./install_libs.sh which will process the modules there in the order givein in install_order. Once all the libraries are installed, UserDBConfig is ready to run to generate its files.

The tools to fetch ConsoleUser information requires ConsoleUser to be installed. There are a couple of tools it provides that are used, and they will also look for a file /usr/local/tg/db.info file which can store DB connection information instead of needing to repeat it on the command line for each fetch.

Completeing the process requires a MySQL/MariaDB server to be available for ConsoleUser configs. If the tool is generating MPTGS as well a PostgreSQL database server is also required. The instructions below assume the MariaDB server is installed locally and that the user running the commands does not require a password. If either of those assumptions are not true for your environment please modify the commands accordingly.

Fetching ConsoleUser configs expects that ConsoleUser has been installed in /usr/local/tg/cu.

7.3.2. Process

To generate the final configurations one must first setup the tool’s configuration files. After that, GenerateTables.pl will produce intermediate files that can be used to populate a MySQL/MariaDB database. This database can be populated by using the output file populate_db.sql with a command like

Those intermediate files can also populate a separate PostgreSQL database. This database is used directly by the MPTGS during its operation. In contrast, the mysql database is used to coordinate distribution of ConsoleUser configurations to appropriate controllers and directories.

The 2 steps, then, to generate config files and populate the database for ConsoleUsers is

$ ./GenerateTables.pl main.config
$ mysql < populate_db.sql

There are additional steps to populate the database that MPTGS will use. That process has been put into the script doAllMPTGS.sh which will prepare a PostgreSQL database, run GenerateTables.pl massage the data for MPTGS needs, then populate the DB. After this process that database is ready to be used by an instance of MPTGS.

doAllMPTGS.sh will populate the database named in the environment variable PGDATABASE if it exists, otherwise the name is hardcoded.

To populate both the databases the following process is recommend:

$ ./doAllMPTGS.sh
$ mysql < populate_db.sql

7.3.3. Main Config

This is the file that is passed to GenerateTables.pl and controls all of the parameters and relationships GenerateTables.pl is to produce.

Main Config Options

Key

Description

MAGIC

Must be the first line of the file

NMODULES

The number of modules defined in this file.

REQUIRED_MODULES

An int, the first this many modules are ones that each user is required to have in their list.

MODULE*N*

N starts with 1 and increases from there. Each MODULE is one traffic type or activity module to be configured.

NDOMAINS

This is the number of logical groups the users are divided into. They need not have any grouping based on any IP or name domain. This is just so that users can be grouped and relationships between the groups specified.

UDOMAIN*N*

N starts with 1 and increases from there. Each of these points to a CSV of users who comprise this group

SDOMAIN

For some ConsoleUser apps this is where files will be saved.

MDIST

An Distribution Matrices representing email and other communication method relationships between user domains

NODE_PARAM

A parameter that shapes the distributions used in many random selections.

NWDOMAINS

The number of “web” domains, which provide services such as websites or ftp sites or similar.

WDOMAIN*N*

N starts with 1 and increases from there. Each of these points to a file (or really files) that list the values a user could choose to interact with the web (or other service) when trying to generate this type of traffic to this logical grouping of servers.

WEB_PARAM

A parameter that shapes the distributions used in many random selections.

ZIPF

A parameter that affects the popularity distribution sites within a domain.

WDIST

An Distribution Matrices representing relationships between users and the services available in a “web” domain

BLOG_DIST

An Distribution Matrices representing relationships between users and the blog sites available in a “web” domain

FORUM_DIST

An Distribution Matrices representing relationships between users and the forum sites available in a “web” domain

NFileSharingDIST

The number of “file sharing” domains, that is groups file sharing sites in some logical grouping

FileSharingDIST

An Distribution Matrices representing relationships between users and the file sharing sites available in a file sharing domain

BABBLE

The default Babble File for ConsoleUsers

TORRENT_PARAM

Paramater that shapes the distribution of remote files a user can choose to download.

TO_TORRENT_PARAM

Paramater that shapes the distribution of local files a user can choose to share.

TORRENT_ZIPF

A parameter that affects the popularity distribution files one may download.

TO_TORRENT_ZIPF

A parameter that affects the popularity distribution files one may share.

TRACKER_PARAM

Paramater that shapes the distribution of trackers a user can use while sharing.

TRACKER_ZIPF

A parameter that affects the popularity distribution trackers users will chose from.

TORRENT_LIST

A file listing remote files that users can attempt to download.

TO_TORRENT_LIST

A file listing local files that users can attempt to share.

TRACKER_LIST

A file listing trackers that users can attempt to use.

TRANSMISSION_MIN_SEED

The minimum number of transmission users who will seed each file from the TORRENT_LIST

TRANSMISSION_MAX_SEED

The maximum number of transmission users who will seed each file from the TORRENT_LIST

7.3.3.1. General Configuration

Lines in this file are of the format key value with whitespace seperating the key and the value. The interpretation of the value is dependent on the key. Sometimes it is a numeric value, sometimes it is the name of a file, sometimes it is a matrix of relationships. The only key that does not follow this is MAGIC which must be alone on the first line to indicate to the tool that this is a suitable configuration file.

Lines that begin with # are comments, and are not consumed by the tool.