]> asedeno.scripts.mit.edu Git - linux.git/commit
tc-testing: introduce scapyPlugin for basic traffic
authorLucas Bates <lucasb@mojatatu.com>
Tue, 9 Jul 2019 01:34:27 +0000 (21:34 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Jul 2019 21:07:20 +0000 (14:07 -0700)
commit14e5175e9e04a982ef044a0dcdf1484643df1d3a
tree6e9297f14adc865b305b1f5a2eac348d7f4c2307
parenta7d50a0dd81b09dc13fa9e4b55765e8684bc8226
tc-testing: introduce scapyPlugin for basic traffic

The scapyPlugin allows for simple traffic generation in tdc to
test various tc features. It was tested with scapy v2.4.2, but
should work with any successive version.

In order to use the plugin's functionality, scapy must be
installed. This can be done with:
   pip3 install scapy

or to install 2.4.2:
   pip3 install scapy==2.4.2

If the plugin is unable to import the scapy module, it will
terminate the tdc run.

The plugin makes use of a new key in the test case data, 'scapy'.
This block contains three other elements: 'iface', 'count', and
'packet':

        "scapy": {
            "iface": "$DEV0",
            "count": 1,
            "packet": "Ether(type=0x800)/IP(src='16.61.16.61')/ICMP()"
        },

* iface is the name of the device on the host machine from which
  the packet(s) will be sent. Values contained within tdc_config.py's
  NAMES dict can be used here - this is useful if paired with
  nsPlugin
* count is the number of copies of this packet to be sent
* packet is a string detailing the different layers of the packet
  to be sent. If a property isn't explicitly set, scapy will set
  default values for you.

Layers in the packet info are separated by slashes. For info about
common TCP and IP properties, see:
https://blogs.sans.org/pen-testing/files/2016/04/ScapyCheatSheet_v0.2.pdf

Caution is advised when running tests using the scapy functionality,
since the plugin blindly sends the packet as defined in the test case
data.

See creating-testcases/scapy-example.json for sample test cases;
the first test is intended to pass while the second is intended to
fail.

Signed-off-by: Lucas Bates <lucasb@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/tc-testing/creating-testcases/scapy-example.json [new file with mode: 0644]
tools/testing/selftests/tc-testing/plugin-lib/scapyPlugin.py [new file with mode: 0644]