Update doc
[nfvbench.git] / docs / development / design / traffic_desc.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International
2 .. License.
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) Cisco Systems, Inc
5
6 Traffic Description
7 ===================
8
9 The general packet path model followed by NFVbench requires injecting traffic into an arbitrary
10 number of service chains, where each service chain is identified by 2 edge networks (left and right).
11 In the current multi-chaining model:
12
13 - all service chains share the same left and right edge networks
14 - each port associated to the traffic generator is dedicated to send traffic to one edge network
15
16 In an OpenStack deployment, this corresponds to all chains sharing the same 2 neutron networks.
17 If VLAN encapsulation is used, all traffic sent to a port will have the same VLAN id.
18
19 Basic Packet Description
20 ------------------------
21
22 The code to create the UDP packet is located in TRex.create_pkt() (nfvbench/traffic_gen/trex.py).
23
24 NFVbench always generates UDP packets (even when doing L2 forwarding).
25 The final size of the frame containing each UDP packet will be based on the requested L2 frame size.
26 When taking into account the minimum payload size requirements from the traffic generator for
27 the latency streams, the minimum L2 frame size is 64 byte (no vlan tagging) or
28 68 bytes (with vlan tagging).
29
30 Flows Specification
31 -------------------
32
33 Mac Addresses
34 .............
35 The source MAC address is always the local port MAC address (for each port).
36 The destination MAC address is based on the configuration and can be:
37
38 - the traffic generator peer port MAC address in the case of L2 loopback at the switch level
39   or when using a loopback cable
40 - the dest MAC as specified by the configuration file (EXT chain no ARP)
41 - the dest MAC as discovered by ARP (EXT chain)
42 - the VM MAC as dicovered from Neutron API (PVP, PVVP chains)
43
44 NFVbench does not currently range on the MAC addresses.
45
46 IP addresses
47 ............
48 The source IP address is fixed per chain.
49 The destination IP address is variable within a distinct range per chain.
50
51 UDP ports
52 .........
53 The source and destination ports are fixed for all packets and can be set in the configuratoon
54 file (default is 53).
55
56 Payload User Data
57 .................
58 The length of the user data is based on the requested L2 frame size and takes into account the
59 size of the L2 header - including the VLAN tag if applicable.
60
61
62 IMIX Support
63 ------------
64 In the case of IMIX, each direction is made of 4 streams:
65 - 1 latency stream
66 - 1 stream for each IMIX frame size
67
68 The IMIX ratio is encoded into the number of consecutive packets sent by each stream in turn.
69
70 Service Chains and Streams
71 --------------------------
72 A stream identifies one "stream" of packets with same characteristics such as rate and destination address.
73 NFVbench will create 2 streams per service chain per direction:
74
75 - 1 latency stream set to 1000pps
76 - 1 main traffic stream set to the requested Tx rate less the latency stream rate (1000pps)
77
78 For example, a benchmark with 1 chain (fixed rate) will result in a total of 4 streams.
79 A benchmark with 20 chains will results in a total of 80 streams (fixed rate, it is more with IMIX).
80
81 The overall flows are split equally between the number of chains by using the appropriate destination
82 MAC address.
83
84 For example, in the case of 10 chains, 1M flows and fixed rate, there will be a total of 40 streams.
85 Each of the 20 non-latency stream will generate packets corresponding to 50,000 flows (unique src/dest address tuples).