trex-sl-2n-ethip4udp-1u1p.py revision f7519a18
1# Copyright (c) 2020 Cisco and/or its affiliates.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at:
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14"""Stream profile for T-rex traffic generator.
15
16Stream profile:
17 - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
18 - Packet: ETH / IP / UDP
19 - Direction 0 --> 1:
20   - Source IP address range:      20.0.0.0
21   - Destination IP address range: 12.0.0.2
22   - Source UDP port range:        1024
23   - Destination UDP port range:   1024
24 - Direction 1 --> 0:
25   - Source IP address range:      12.0.0.2
26   - Destination IP address range: 200.0.0.0
27   - Source UDP port range:        1024
28   - Destination UDP port range:   1028
29"""
30
31from trex.stl.api import *
32from profile_trex_stateless_base_class import TrafficStreamsBaseClass
33
34
35class TrafficStreams(TrafficStreamsBaseClass):
36    """Stream profile."""
37
38    def __init__(self):
39        """Initialization and setting of streams' parameters."""
40
41        super(TrafficStreamsBaseClass, self).__init__()
42
43        # IPs used in packet headers.
44        self.p1_src_ip = u"20.0.0.0"
45        self.p1_dst_ip = u"12.0.0.2"
46
47        self.p2_src_ip = u"12.0.0.2"
48        self.p2_dst_ip = u"200.0.0.0"
49
50        # UDP ports used in packet headers.
51        self.p1_src_udp_port = 1024
52        self.p1_dst_udp_port = 1024
53
54        self.p2_src_udp_port = 1024
55        self.p2_dst_udp_port = 1028
56
57    def define_packets(self):
58        """Defines the packets to be sent from the traffic generator.
59
60        Packet definition: | ETH | IP | UDP |
61
62        :returns: Packets to be sent from the traffic generator.
63        :rtype: tuple
64        """
65
66        # Direction 0 --> 1
67        base_pkt_a = (
68            Ether() /
69            IP(
70                src=self.p1_src_ip,
71                dst=self.p1_dst_ip,
72                proto=17
73            ) /
74            UDP(
75                sport=self.p1_src_udp_port,
76                dport=self.p1_dst_udp_port
77            )
78        )
79        # Direction 1 --> 0
80        base_pkt_b = (
81            Ether() /
82            IP(
83                src=self.p2_src_ip,
84                dst=self.p2_dst_ip,
85                proto=17
86            ) /
87            UDP(
88                sport=self.p2_src_udp_port,
89                dport=self.p2_dst_udp_port
90            )
91        )
92
93        return base_pkt_a, base_pkt_b, None, None
94
95
96def register():
97    """Register this traffic profile to T-rex.
98
99    Do not change this function.
100
101    :return: Traffic streams.
102    :rtype: Object
103    """
104    return TrafficStreams()
105