source: netcheck/README.txt @ 3

Last change on this file since 3 was 3, checked in by egessiou, 5 years ago

moved everything to netcheck/

File size: 3.6 KB
Line 
1This is a brief overview of what all the different modules do and how
2they work together. In order to run NetCheck, you need to write a
3configuration file in order to tell NetCheck where to find the trace
4files and how the network is configured. Consult example_config.txt for
5information on how to write configuration files. Traces can then be
6verified by running: python trace_ordering.py CONFIGURATION_FILE
7
8
9
10lind_fs_constants / lind_net_constants
11------------------------------------------------------------------------
12Defines a lot of constants used by posix_test_harness_functions.
13
14
15posix_test_harness_functions
16------------------------------------------------------------------------
17Reads in strace output file and returns tuples for system calls that can
18affect the network or open file descriptors. Responsible for converting
19strace output into easily usable data structures. Can be used either to
20read the next system call from a file or to read in the entire trace.
21
22
23trace_preprocessor
24------------------------------------------------------------------------
25Uses generators to wrap the output of posix_test_harness_functions. This
26means that the returned "traces" are actually reading and parsing lines
27as they are needed instead of trying to read the entire trace into
28memory. The module also has a preprocessor that tracks which file
29descriptors are duplicates of each other and outputs a "trace" (again,
30actually a generator) with the property that each socket is uniquely
31indentified by a single file descriptor. Calls like clone and dup are
32stripped from the trace since they are already handled by the
33preprocessor, and close calls are removed if they close a duplicate
34file descriptor and not the actually socket.
35
36
37ipaddr
38------------------------------------------------------------------------
39A library we are using for processing IPv4 and IPv6 addresses. Taken
40from http://code.google.com/p/ipaddr-py/.
41
42
43ip_matching
44------------------------------------------------------------------------
45Handles loading traces from configuration files and comparing addresses
46based on the network configuration defined by the configuration file.
47As part of this matching, it also identifies properties of possible
48connections that the user should be aware of, like traversing a NAT,
49connecting to 0.0.0.0, or connecting to an IPv6 address from an IPv4
50address. Uses ipaddr extensively for indentifying properties of IP
51addresses and uses trace_preprocessor to load preprocessed trace files.
52
53
54trace_output
55------------------------------------------------------------------------
56This is where I've been moving all the logging functionality from
57trace_ordering. It also now handles generating some statistic and
58warnings based on the exceptions raised by the model over the course of
59its execution and the final state of the model.
60
61
62model_network_syscalls
63------------------------------------------------------------------------
64This is where most of the actually processing occurs. Contains funtions
65for all the network related systems calls that we care about and
66simulates the results of invoking the system calls based on the current
67model state. Uses ip_matching to determine which socket pairs
68correspond to network connections.
69
70
71trace_ordering
72------------------------------------------------------------------------
73Used to run configuration files. Takes the name of a configuration file
74as its only argument and feeds this name into ip_matching to initialize
75the network configuration and get back a list of traces to verify. Then
76the module starts feeding system calls from the traces into
77model_network_syscalls to try and produce an ordering of the calls.
78Uses trace_output for logging results.
79
Note: See TracBrowser for help on using the repository browser.