examples/ipsec-secgw: add multi-segment test cases
[dpdk.git] / examples / ipsec-secgw / test / linux_test6.sh
1 #! /bin/bash
2
3 # usage:  /bin/bash linux_test6.sh <ipsec_mode>
4 # for list of available modes please refer to run_test.sh.
5 # ipsec-secgw (IPv6 mode) functional test script.
6 #
7 # Note that for most of them you required appropriate crypto PMD/device
8 # to be avaialble.
9 # Also user has to setup properly the following environment variables:
10 #  SGW_PATH - path to the ipsec-secgw binary to test
11 #  REMOTE_HOST - ip/hostname of the DUT
12 #  REMOTE_IFACE - iface name for the test-port on DUT
13 #  ETH_DEV - ethernet device to be used on SUT by DPDK ('-w <pci-id>')
14 # Also user can optonally setup:
15 #  SGW_LCORE - lcore to run ipsec-secgw on (default value is 0)
16 #  CRYPTO_DEV - crypto device to be used ('-w <pci-id>')
17 #  if none specified appropriate vdevs will be created by the scrit
18 #  MULTI_SEG_TEST - ipsec-secgw option to enable reassembly support and
19 #  specify size of reassembly table (i.e. MULTI_SEG_TEST="--reassemble 128")
20 #
21 # The purpose of the script is to automate ipsec-secgw testing
22 # using another system running linux as a DUT.
23 # It expects that SUT and DUT are connected through at least 2 NICs.
24 # One NIC is expected to be managed by linux both machines,
25 # and will be used as a control path.
26 # Make sure user from SUT can ssh to DUT without entering password,
27 # also make sure that sshd over ipv6 is enabled.
28 # Second NIC (test-port) should be reserved for DPDK on SUT,
29 # and should be managed by linux on DUT.
30 # The script starts ipsec-secgw with 2 NIC devices: test-port and tap vdev.
31 # Then configures local tap iface and remote iface and ipsec policies
32 # in the following way:
33 # traffic going over test-port in both directions has to be
34 # protected by ipsec.
35 # raffic going over TAP in both directions doesn't have to be protected.
36 # I.E:
37 # DUT OS(NIC1)--(ipsec)-->(NIC1)ipsec-secgw(TAP)--(plain)-->(TAP)SUT OS
38 # SUT OS(TAP)--(plain)-->(TAP)psec-secgw(NIC1)--(ipsec)-->(NIC1)DUT OS
39 # Then tries to perorm some data transfer using the scheme decribed above.
40 #
41
42 DIR=`dirname $0`
43 MODE=$1
44
45  . ${DIR}/common_defs.sh
46  . ${DIR}/${MODE}_defs.sh
47
48 #make linux to generate fragmented packets
49 if [[ -n "${MULTI_SEG_TEST}" && -n "${SGW_CMD_XPRM}" ]]; then
50         echo "multi-segment test is enabled"
51         SGW_CMD_XPRM="${SGW_CMD_XPRM} ${MULTI_SEG_TEST}"
52         PING_LEN=5000
53         MTU_LEN=1500
54 else
55         PING_LEN=${DEF_PING_LEN}
56         MTU_LEN=${DEF_MTU_LEN}
57 fi
58
59 config_secgw
60
61 secgw_start
62
63 config6_iface
64
65 config6_remote_xfrm
66
67  . ${DIR}/data_rxtx.sh
68
69 set_local_mtu ${MTU_LEN}
70 ping6_test1 ${REMOTE_IPV6} 0 ${PING_LEN}
71 st=$?
72 if [[ $st -eq 0 ]]; then
73         set_local_mtu ${DEF_MTU_LEN}
74         scp_test1 ${REMOTE_IPV6}
75         st=$?
76 fi
77
78 secgw_stop
79 exit $st