bbd31a6e6592593b12918a42b9eafe319695ec55
[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 can either share the same left and right edge networks or can have their own edge networks
14 - each port associated to the traffic generator is dedicated to send traffic to one side of the edge networks
15
16 If VLAN encapsulation is used, all traffic sent to a port will either have the same VLAN id (shared networks) or distinct VLAN ids (dedicated egde networks)
17
18 Basic Packet Description
19 ------------------------
20
21 The code to create the UDP packet is located in TRex.create_pkt() (nfvbench/traffic_gen/trex.py).
22
23 NFVbench always generates UDP packets (even when doing L2 forwarding).
24 The final size of the frame containing each UDP packet will be based on the requested L2 frame size.
25 When taking into account the minimum payload size requirements from the traffic generator for
26 the latency streams, the minimum L2 frame size is 64 byte.
27
28 Flows Specification
29 -------------------
30
31 Mac Addresses
32 .............
33 The source MAC address is always the local port MAC address (for each port).
34 The destination MAC address is based on the configuration and can be:
35
36 - the traffic generator peer port MAC address in the case of L2 loopback at the switch level
37   or when using a loopback cable
38 - the dest MAC as specified by the configuration file (EXT chain no ARP)
39 - the dest MAC as discovered by ARP (EXT chain)
40 - the router MAC as discovered from Neutron API (PVPL3 chain)
41 - the VM MAC as dicovered from Neutron API (PVP, PVVP chains)
42
43 NFVbench does not currently range on the MAC addresses.
44
45 IP addresses
46 ............
47 The source IP address is fixed per chain.
48 The destination IP address is variable within a distinct range per chain.
49
50 UDP ports
51 .........
52 The source and destination ports are fixed for all packets and can be set in the configuratoon
53 file (default is 53).
54
55 Payload User Data
56 .................
57 The length of the user data is based on the requested L2 frame size and takes into account the
58 size of the L2 header - including the VLAN tag if applicable.
59
60
61 IMIX Support
62 ------------
63 In the case of IMIX, each direction is made of 4 streams:
64 - 1 latency stream
65 - 1 stream for each IMIX frame size
66
67 The IMIX ratio is encoded into the number of consecutive packets sent by each stream in turn.
68
69 Service Chains and Streams
70 --------------------------
71 A stream identifies one "stream" of packets with same characteristics such as rate and destination address.
72 NFVbench will create 2 streams per service chain per direction:
73
74 - 1 latency stream set to 1000pps
75 - 1 main traffic stream set to the requested Tx rate less the latency stream rate (1000pps)
76
77 For example, a benchmark with 1 chain (fixed rate) will result in a total of 4 streams.
78 A benchmark with 20 chains will results in a total of 80 streams (fixed rate, it is more with IMIX).
79
80 The overall flows are split equally between the number of chains by using the appropriate destination
81 MAC address.
82
83 For example, in the case of 10 chains, 1M flows and fixed rate, there will be a total of 40 streams.
84 Each of the 20 non-latency stream will generate packets corresponding to 50,000 flows (unique src/dest address tuples).