******************************************************************************* README - P2P Simulator - A. West - C Edition ******************************************************************************* INTRODUCTION: This P2P simulator is used in the evaluation of trust management algorithms. It consists of two major elements: (1) A 'trace generator' that outputs trace files describing a network initialization and transactions, and (2) A 'simulator' that takes a trace and trust algorithm as input, simulates the network run, and outputs statistics about how the trust manager performed. COMPILATION: Running 'make all' in the source directory should be sufficient to create the two executables 'gen_trace' and 'sim_run' TRACE GENERATION: Traces are generated by running 'gen_trace'. Customization of traces is achieved at the command line. All arguments are optional, as the program uses defaults for those not provided. The output should have a *.trace extension. Otherwise, the below listing should be self-explanatory: > -users: (int) # of users/nodes/peers in network > -files: (int) # of distinct files in network > -trans: (int) # of transactions to simulate > -zipf: (float) Zipf constant controlling file popularity > -output: (string) Filename for trace output (*.trace) > > -usr:pre_trusted: (int) # of 'pre-trusted' users, a subset of 'good' > -usr:purely: (int) # of 'purely malicious' users > -usr:feedback: (int) # of 'feedback skewing' users > -usr:provider: (int) # of 'malicious provider' users > -usr:disguise: (int) # of 'disguised malicious' users > -usr:sybil: (int) # of 'Sybil attack' users > > -band:max_conn: (int) # of max upload/download connections per user > -band:period: (int) # of time units each upload/download requires > > -mode:smartgen: (bool) Use intelligent transaction generation? > -mode:warmup: (int) # of warm-up transactions before statistic tabulation Note that only malicious user counts are specified at the command line. The remainder of users will be initialized as type 'good.' TRUST SIMULATION: Simulations are performed by running 'sim_run'. The program takes just three arguments; the input trace file, the trust management algorithm to use, and a malicious strategy. All arguments are required: > -input: (string) Input trace file per 'gen_trace' creation (*.trace) > -tm: (string) Descriptor of trust management algorithm to simulate > -strategy: (string) Descriptor of malicious strategy to simulate The argument provided to '-tm' must be an algorithm already implemented within the system. Currently, the following algorithms are implemented: > 'eigen': The EigenTrust algorithm of Hector Garcia-Molina, et al. > 'etinc': Similar to EigenTrust, but experimenting with speedup strategies. > 'tnasl": System using Subjective Logic operators, inspired by Josang et al. > 'none': Absence of trust management. Essentially random source selection. Similarly, the possible arguments to '-strategy' are pre-programmed: > 'naive': Global interaction data is used exclusively > 'isolated': Local honest interaction history overwrites global one > 'collective: All malicious peers share honest information with each other Running the simulator will create an output file. The file will contain statistics about the simulation. The extension of the output file will equal that of the trust-management-algorithm employed. For example, if 'trace_0.trace' is simulated using 'eigen', the output file will be 'trace_0.eigen'. *******************************************************************************