aboutsummaryrefslogtreecommitdiffstats
path: root/conf/04_vnf.conf
blob: 05893fb8c72d98a864457ae10700e1b2eff0e31a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# Copyright 2015 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# ############################
# VNF configuration
# ############################
VNF_DIR = 'vnfs/'
VNF = 'QemuDpdkVhostUser'

# ############################
# Guest configuration
# ############################

# directory which is shared to QEMU guests. Useful for exchanging files
# between host and guest, VNF specific share will be created
# For 2 VNFs you may use ['/tmp/qemu0_share', '/tmp/qemu1_share']
GUEST_SHARE_DIR = ['/tmp/qemu0_share', '/tmp/qemu1_share', \
                   '/tmp/qemu2_share', '/tmp/qemu3_share', \
                   '/tmp/qemu4_share', '/tmp/qemu5_share']

# location of guest disk image
# For 2 VNFs you may use ['guest1.img', 'guest2.img']
GUEST_IMAGE = ['', '', '', '', '', '']

# guarding timer for VM start up
# For 2 VNFs you may use [180, 180]
GUEST_TIMEOUT = [180, 180, 180, 180, 180, 180]

# Guest images may require different drive types such as ide to mount shared
# locations and/or boot correctly. You can modify the types here.
GUEST_BOOT_DRIVE_TYPE = 'scsi'
GUEST_SHARED_DRIVE_TYPE = 'scsi'

# packet forwarding mode supported by testpmd; Please see DPDK documentation
# for comprehensive list of modes supported by your version.
# e.g. io|mac|mac_retry|macswap|flowgen|rxonly|txonly|csum|icmpecho|...
# Note: Option "mac_retry" has been changed to "mac retry" since DPDK v16.07
GUEST_TESTPMD_FWD_MODE = 'csum'

# guest loopback application method; supported options are:
#       'testpmd'       - testpmd from dpdk will be built and used
#       'l2fwd'         - l2fwd module provided by Huawei will be built and used
#       'linux_bridge'  - linux bridge will be configured
#       'buildin'       - nothing will be configured by vsperf; VM image must
#                         ensure traffic forwarding between its interfaces
# This configuration option can be overridden by CLI SCALAR option
# guest_loopback, e.g. --test-params "guest_loopback=l2fwd"
# For 2 VNFs you may use ['testpmd', 'l2fwd']
GUEST_LOOPBACK = ['testpmd', 'testpmd', \
                  'testpmd', 'testpmd', \
                  'testpmd', 'testpmd']

# username for guest image
GUEST_USERNAME = 'root'

# password for guest image
GUEST_PASSWORD = 'root'

# login username prompt for guest image
GUEST_PROMPT_LOGIN = '.* login:'

# login password prompt for guest image
GUEST_PROMPT_PASSWORD = 'Password: '

# standard prompt for guest image
GUEST_PROMPT = 'root.*#'

# log file for qemu
LOG_FILE_QEMU = 'qemu.log'

# log file for all commands executed on guest(s)
# multiple guests will result in log files with the guest number appended
LOG_FILE_GUEST_CMDS = 'guest-cmds.log'

# ############################
# Executables
# ############################

QEMU_BIN = os.path.join(QEMU_DIR, 'x86_64-softmmu/qemu-system-x86_64')

# For 2 VNFs you may use ['eth0', 'eth2']
GUEST_NIC1_NAME = ['eth0', 'eth0', 'eth0', 'eth0', 'eth0', 'eth0']
GUEST_NIC2_NAME = ['eth1', 'eth1', 'eth1', 'eth1', 'eth1', 'eth1']

# For 2 VNFs you may use ['00:00:00:00:00:01', '00:00:00:00:00:03']
GUEST_NET1_MAC = ['00:00:00:00:00:01', '00:00:00:00:00:03', \
                  '00:00:00:00:00:05', '00:00:00:00:00:07', \
                  '00:00:00:00:00:09', '00:00:00:00:00:0b']
GUEST_NET2_MAC = ['00:00:00:00:00:02', '00:00:00:00:00:04', \
                  '00:00:00:00:00:06', '00:00:00:00:00:08', \
                  '00:00:00:00:00:0a', '00:00:00:00:00:0c']

# For 2 VNFs you may use ['00:04.0', '00:04.0']
GUEST_NET1_PCI_ADDRESS = ['00:04.0', '00:04.0', \
                          '00:04.0', '00:04.0', \
                          '00:04.0', '00:04.0']
GUEST_NET2_PCI_ADDRESS = ['00:05.0', '00:05.0', \
                          '00:05.0', '00:05.0', \
                          '00:05.0', '00:05.0']

GUEST_MEMORY = ['4096', '4096', '2048', '2048', '2048', '2048']

# test-pmd requires 2 VM cores
GUEST_SMP = ['2', '2', '2', '2', '2', '2']

# Host cores to use to affinitize the SMP cores of a QEMU instance
# For 2 VNFs you may use [(4,5), (6, 7)]
GUEST_CORE_BINDING = [(6, 7), (9, 10), (11, 12), (13, 14), (15, 16), (17, 18)]

# Queues per NIC inside guest for multi-queue configuration, requires switch
# multi-queue to be enabled for dpdk. Set to 0 for disabled. Can be enabled if
# using Vanilla OVS without enabling switch multi-queue.
GUEST_NIC_QUEUES = 0

# Virtio-Net vhost thread CPU mapping. If using  vanilla OVS with virtio-net,
# you can affinitize the vhost-net threads by enabling the below setting. There
# is one vhost-net thread per port per queue so one guest with 2 queues will
# have 4 vhost-net threads. If more threads are present than CPUs given, the
# affinitize will overlap CPUs.
VSWITCH_VHOST_NET_AFFINITIZATION = False
VSWITCH_VHOST_CPU_MAP = [4,5,8,11]

GUEST_START_TIMEOUT = 120
GUEST_OVS_DPDK_DIR = '/root/ovs_dpdk'
OVS_DPDK_SHARE = '/mnt/ovs_dpdk_share'

# Set the CPU mask for testpmd loopback. To bind to specific guest CPUs use -l
# GUEST_TESTPMD_CPU_MASK = '-l 0,1'
GUEST_TESTPMD_CPU_MASK = '-c 0x3'

# Testpmd multi-core config. Leave at 0's for disabled. Will not enable unless
# GUEST_NIC_QUEUES are > 0. For bi directional traffic NB_CORES must be equal
# to (RXQ + TXQ).
GUEST_TESTPMD_NB_CORES = 0
GUEST_TESTPMD_TXQ = 0
GUEST_TESTPMD_RXQ = 0

# IP addresses to use for Vanilla OVS PVP testing
# Consider using RFC 2544/3330 recommended IP addresses for benchmark testing.
# Network: 198.18.0.0/15
# Netmask: 255.254.0.0
# Broadcast: 198.19.255.255
# First IP: 198.18.0.1
# Last IP: 198.19.255.254
# Hosts: 131070
#

# ARP entries for the IXIA ports and the bridge you are using:
VANILLA_TGEN_PORT1_IP = '1.1.1.10'
VANILLA_TGEN_PORT1_MAC = 'AA:BB:CC:DD:EE:FF'

VANILLA_TGEN_PORT2_IP = '1.1.2.10'
VANILLA_TGEN_PORT2_MAC = 'AA:BB:CC:DD:EE:F0'

VANILLA_BRIDGE_IP = ['1.1.1.5/16', '1.1.1.6/16', \
                     '1.1.1.7/16', '1.1.1.8/16', \
                     '1.1.1.9/16', '1.1.1.10/16']

VANILLA_NIC1_IP_CIDR = ['192.168.1.2/24', '192.168.1.4/24', \
                        '192.168.1.6/24', '192.168.1.8/24', \
                        '192.168.1.10/24', '192.168.1.12/24']
VANILLA_NIC2_IP_CIDR = ['192.168.1.3/24', '192.168.1.5/24', \
                        '192.168.1.7/24', '192.168.1.9/24', \
                        '192.168.1.11/24', '192.168.1.13/24']

VNF_AFFINITIZATION_ON = True