aboutsummaryrefslogtreecommitdiffstats
path: root/docs/testing/user/userguide/mpls.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/testing/user/userguide/mpls.rst')
-rw-r--r--docs/testing/user/userguide/mpls.rst93
1 files changed, 93 insertions, 0 deletions
diff --git a/docs/testing/user/userguide/mpls.rst b/docs/testing/user/userguide/mpls.rst
new file mode 100644
index 0000000..eaa9541
--- /dev/null
+++ b/docs/testing/user/userguide/mpls.rst
@@ -0,0 +1,93 @@
+==========================
+MPLS encapsulation feature
+==========================
+
+This feature allows to generate packets with standard MPLS L2VPN double stack MPLS labels, where the outer label is transport and the inner label is VPN.
+The top layer of a packets encapsulated inside MPLS L2VPN seems to be an Ethernet layer with the rest of the IP stack inside.
+Please refer to RFC-3031 for more details.
+The whole MPLS packet structure looks like the following:
+
+###[ Ethernet ]###
+ dst = ['00:8a:96:bb:14:28']
+ src = 3c:fd:fe:a3:48:7c
+ type = 0x8847
+###[ MPLS ]### <-------------- Outer Label
+ label = 16303
+ cos = 1
+ s = 0
+ ttl = 255
+###[ MPLS ]### <-------------- Inner Label
+ label = 5010
+ cos = 1
+ s = 1
+ ttl = 255
+###[ Ethernet ]###
+ dst = fa:16:3e:bd:02:b5
+ src = 3c:fd:fe:a3:48:7c
+ type = 0x800
+###[ IP ]###
+ version = 4
+ ihl = None
+ tos = 0x0
+ len = None
+ id = 1
+ flags =
+ frag = 0
+ ttl = 64
+ proto = udp
+ chksum = None
+ src = 16.0.0.1
+ dst = 48.0.0.1
+ \options \
+###[ UDP ]###
+ sport = 53
+ dport = 53
+ len = None
+ chksum = None
+
+Example: nfvbench generates mpls traffic port A ----> port B. This example assumes openstack is at the other end of the mpls tunnels.
+Packets generated and sent to port B are delivered to the MPLS domain infrastructure which will transport that packet to the other end
+of the MPLS transport tunnel using the outer label. At that point, the outer label is decapsulated and the inner label is used to
+select the destination openstack network. After decapsulation of the inner label, the resulting L2 frame is then forwarded to the
+destination VM corresponding to the destination MAC. When the VM receives the packet, it is sent back to far end port of the traffic
+generator (port B) using either L2 forwarding or L3 routing though the peer virtual interface. The return packet is then encapsulated
+with the inner label first then outer label to reach nfvbench on port B.
+
+Only 2 MPLS labels stack is supported. If more than two labels stack is required then these operations should be handled by MPLS transport
+domain where nfvbench is attached next-hop mpls router and rest of the mpls domain should be configured accordingly to be able
+pop/swap/push labels and deliver packet to the proper destination based on an initial transport label injected by nfvbench, VPN label
+should stay unchanged until its delivered to PE (compute node).
+Set nfvbench 'mpls' parameter to 'true' to enable MPLS encapsulation.
+When this option is enabled internal networks 'network type' parameter value should be 'mpls'
+MPLS and VxLAN encapsulations are mutual exclusive features if 'mpls' is 'true' then 'vxlan' should be set to 'false' and vise versa.
+no_flow_stats, no_latency_stats, no_latency_streams parameters should be set to 'true' because these features are not supported at the moment.
+In future when these features will be supported they will require special NIC hardware.
+
+Example of 1-chain MPLS configuration:
+ internal_networks:
+ left:
+ network_type: mpls
+ segmentation_id: 5010
+ mpls_transport_labels: 16303
+ physical_network: phys_sriov0
+ right:
+ network_type: mpls
+ segmentation_id: 5011
+ mpls_transport_labels: 16303
+ physical_network: phys_sriov1
+
+Example of 2-chain MPLS configuration:
+ internal_networks:
+ left:
+ network_type: mpls
+ segmentation_id: [5010, 5020]
+ mpls_transport_labels: [16303, 16304]
+ physical_network: phys_sriov0
+ right:
+ network_type: mpls
+ segmentation_id: [5011, 5021]
+ mpls_transport_labels: [16303, 16304]
+ physical_network: phys_sriov1
+
+Example of how to run:
+nfvbench --rate 50000pps --duration 30 --mpls