Beruflich Dokumente
Kultur Dokumente
Yardstick
Ross Brattain
VNF Characterization
Dec 2017 2
NSB Methodology: VNF performance benchmarking
Dec 2017 3
Collecting KPIs during the test
Dec 2017 4
Architecture of
NSB extensions
to Yardstick
https://wiki.opnfv.org/display/yardstick/Yardstick+Framework+Architecture+Evolution#YardstickFrameworkArchitectureEvolution-NetworkServiceTestcase
Dec 2017 5
NFVI KPI collection
Dec 2017 6
KPIs
Using collectd plugins to collect KPIs. Covered by Barometer project
• Plugins
– Libvirt
– DPDK Stats
– DPDK-Events
– OvS Events
– Vswitch-stats
– Huge pages
– RAM Memory
– Intel PMU plugin
Dec 2017 7
PMU stats
"data": { "ipc": "0.104876976287796",
"compute_0": { "percent-nice": "0",
"core": { "counter-branch-load-misses": "2467117",
"cpu": { "counter-task-clock": "4916543925",
"15": { "counter-iTLB-loads": "82729",
"counter-dTLB-store-misses": "58636", "memory_bandwidth-remote": "2179072",
"counter-LLC-stores": "489707", "counter-cache-misses": "199009",
"counter-alignment-faults": "0", "counter-major-faults": "0",
"percent-wait": "0", "counter-branch-misses": "2415651",
"counter-L1-icache-load-misses": "2939731", "counter-L1-dcache-stores": "46462967",
"counter-minor-faults": "866", "counter-branch-loads": "40227471",
"percent-softirq": "0.210084033613445", "percent-system": "0.420168067226891",
"counter-cpu-migrations": "0", "counter-cpu-cycles": "450481129",
"counter-emulation-faults": "0", "counter-page-faults": "866",
"percent-interrupt": "0", "counter-LLC-store-misses": "36495",
"counter-cpu-clock": "4917450931", "percent-idle": "97.6890756302521",
"percent-user": "1.68067226890756", "bytes-llc": "3211264",
"counter-branches": "39651833", "counter-LLC-load-misses": "40730",
"counter-context-switches": "678", "counter-LLC-loads": "1097597",
"counter-dTLB-load-misses": "306755", "counter-L1-dcache-load-misses": "4536261",
"counter-cache-references": "5927861", "counter-dTLB-loads": "45401019",
"memory_bandwidth-local": "11182080", "counter-L1-dcache-loads": "56572765",
"counter-instructions": "203146046", "counter-dTLB-stores": "43919141"
"counter-iTLB-load-misses": "215057", },
"percent-steal": "0",
"counter-bus-cycles": "25634247",
Dec 2017 8
Different contexts for testing VNFs
Int Mgmt
Int Mgmt
Dec 2017 9
Heat context changes required for VNF characterization
Dec 2017 10
3-Node setup - Correlated Traffic
Dec 2017 11
Limiting ports per network (3-node correlated traffic)
servers:
vnf_0: networks:
floating_ip: true
mgmt:
placement: "pgrp1"
network_ports: cidr: '10.0.1.0/24'
mgmt: uplink_0:
- mgmt
uplink_0:
VNF is connected to cidr: '10.0.2.0/24'
Dec 2017 13
Overriding Heat allocated IP address
vnf_0: networks:
In this case we have a Traffic profile
floating_ip: true mgmt:
placement: "pgrp1"
with a fixed src and dest IP so we need cidr: '10.0.1.0/24'
network_ports: to override the IP address provided by uplink_0:
mgmt: Heat. cidr: '10.0.2.0/24'
- mgmt gateway_ip: 'null'
uplink_0: We can’t just adjust the Heat subnet port_security_enabled: False
- xe0: because we need a specific IP address enable_dhcp: 'false'
local_ip: "10.44.0.20" downlink_0:
from the subnet.
netmask: "255.255.255.0" cidr: '10.0.3.0/24'
downlink_0: gateway_ip: 'null'
- xe1:
Ultimately the Heat subnet is not port_security_enabled: False
local_ip: "10.44.0.30"
really necessary if we have raw L2 enable_dhcp: 'false'
netmask: "255.255.255.0" ports and no port security, we can uplink_1:
send spoof any IP address for testing cidr: '10.0.4.0/24'
purposes. gateway_ip: 'null'
port_security_enabled: False
Dec 2017 14
SR-IOV Provider networks
Yardstick should support this
type of network setup, but
we haven’t been able to test
yet due complexity of
deployment
https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/10/html/network_functions_virtualization_planning_guide/ch_sriov-planning
Dec 2017 15
Scale-out
Scale-out with
multiple adapters
and VNFs
Dec 2017 16
NSB CG-NAT Test (SR-IOV) Configuration
Multi-VM - 2x 10GbE per VM, 10 VMs
UDP Replay System (swaps IPv4 and MAC addresses)
DUT
Intel® Ethernet X710-DA4 NIC Intel® Ethernet X710-DA4 NIC Intel® Ethernet X710-
DA4 NIC
SR-IOV
VM1 VM2 VM3 VM4 VM5 VM6 VM7 VM8 VM9 VM10
Qemu* KVM
IXIA*
Traffic with Private IPv4 address Traffic with Public IPv4 address
Note: Each NIC port is configured with 2 Rx Queues and 3 Tx Queues for Load balancing.
17
Standardized framework
• Auto-detection
Dec 2017 18
Traffic generator tests
• RFC2544
– Collecting KPIs during test
• Correlated traffic
– Using UDP_replay
• RFC 3511
– Using Ixload
• Concurrent connections (1B, 4K, 64K, 256K & 1024K transactions)
• Connections per second (1B, 4K, 64K, 256K & 1024K transactions)
• HTTP Throughput (1B, 4K, 64K, 256K & 1024K transactions)
• HTTP Transactions per second (1B, 4K, 64K, 256K & 1024K transactions)
Dec 2017 19
Traffic generator OpenStack Network Topology
OpenStack.
The topology cannot be defined by
Yardstick. Yardstick can only use the
existing topology created by the
installer.
Dec 2017 22
Topology Example vld:id maps to Heat Neutron
network name
vld:
nsd:nsd-catalog:
- id: uplink_0 Port pairs are defined as
name: tg__0 to vnf__0 link 1
nsd: vnfd-connection-point-
type: ELAN
- id: 3tg-topology vnfd-connection-point-ref:
ref
name: 3tg-topology - member-vnf-index-ref: '1'
short-name: 3tg-topology vnfd-connection-point-ref: xe0
description: 3tg-topology vnfd-id-ref: tg__0
constituent-vnfd: - member-vnf-index-ref: '2'
Dec 2017 23
Sample test case context:
servers:
vnf_0:
scenarios: floating_ip: true
placement: "pgrp1"
- type: NSPerf
network_ports:
traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml mgmt:
topology: acl-tg-topology.yaml - mgmt
nodes: uplink_0:
- xe0
tg__0: tg_0.yardstick
downlink_0:
vnf__0: vnf_0.yardstick - xe1
options: tg_0:
framesize: floating_ip: true
uplink: {64B: 100} placement: "pgrp1"
network_ports:
downlink: {64B: 100} mgmt:
flow: - mgmt
src_ip: [{'tg__0': 'xe0'}] uplink_0:
dst_ip: [{'tg__0': 'xe1'}] - xe0
count: 1
uplink_0 network name downlink_0:
- xe1
traffic_type: 4 and xe0 port name networks:
rfc2544: match values in topology mgmt:
allowed_drop_rate: 0.0001 - 0.0001 cidr: '10.0.1.0/24'
uplink_0:
vnf__0:
cidr: '10.1.0.0/24'
rules: acl_1rule.yaml gateway_ip: 'null'
runner: port_security_enabled: False
type: Iteration enable_dhcp: 'false'
iterations: 10 downlink_0:
cidr: '10.1.1.0/24'
interval: 35 gateway_ip: 'null'
port_security_enabled: False
enable_dhcp: 'false'
Dec 2017 24
Accessing the VNF descriptor from a Python class
Dec 2017 25
NetworkServiceTestCase Setup
def setup(self):
# 1a. Load VNF models traffic_runners = [vnf for vnf in self.vnfs if vnf.runs_traffic]
traffic_gen.run_traffic(self.traffic_profile)
Dec 2017 26
SampleVNFs
https://wiki.opnfv.org/display/SAM/Technical+Briefs+of+VNFs
• vACL
• vFW
• CGNAPT
Dec 2017 27
How to characterize a new VNF
• Need an image
• Need a flavor
Dec 2017 28
GenericVNF abstract class
""" Class providing file-like API for generic VNF implementation """
def __init__(self, name, vnfd):
super(GenericVNF, self).__init__(name, vnfd)
self.runs_traffic = False
def wait_for_instantiate(self):
def terminate(self):
def collect_kpi(self):
Dec 2017 29
Controlling the VNF
Dec 2017 30
Matching topology to VNF interfaces
• NSB will provide you with a dict listing all the ports created by Heat
• uplink_0, downlink_0
• So you may have xe0 on vld_id downlink_0, and xe1 on vld_id uplink_0.
• You need to match the MAC address of xe0 to the interface in the system
with that MAC address
Dec 2017 32
NetworkServiceTestCase sequence diagram part 1
Dec 2017
https://wiki.opnfv.org/display/yardstick/NSB+sequence+diagram 33
NetworkServiceTest sequence diagram part 2
Dec 2017
https://wiki.opnfv.org/display/yardstick/NSB+sequence+diagram 34
12.8.1.4. SR-IOV 3-Node setup - Correlated Traffic
+--------------------+
| |
| |
| DUT |
| (VNF) |
| |
+--------------------+
| VF NIC | | VF NIC |
+--------+ +--------+
^ ^
| |
| |
+----------+ +-------------------------+ +--------------+
| | | ^ ^ | | |
| | | | | | | |
| | (0)<----->(0) | ------ | | | TG2 |
| TG1 | | SUT | | | (UDP Replay) |
| | | | | | |
| | (n)<----->(n) | ------ | (n)<-->(n) | |
+----------+ +-------------------------+ +--------------+
trafficgen_1 host trafficgen_2
Dec 2017 35
12.8.1.3. SR-IOV 2-Node setup:
+--------------------+
| |
| |
| DUT |
| (VNF) |
| |
+--------------------+
| VF NIC | | VF NIC |
+--------+ +--------+
^ ^
| |
| |
+----------+ +-------------------------+
| | | ^ ^ |
| | | | | |
| | (0)<----->(0) | ------ | |
| TG1 | | SUT | |
| | | | |
| | (n)<----->(n) |------------------ |
+----------+ +-------------------------+
trafficgen_1 host
Dec 2017 36
1
Dec 2017 37
The target
requirement is to test
Network Services
consisting of multiple
VNFs
Dec 2017 38