Professional Documents
Culture Documents
Xavier Os Alicart
Lund University Department of Communications Systems Lund Institute of Technology
ABSTRACT
Traffic engineering research is a branch of Internet research that often needs network simulators in order to facilitate development and analysis of new traffic management and control schemes. One of these simulators is the OPNET Modeler, which is a commercial and powerful simulation software that allows us to study and design communication networks and protocols under realistic assumptions. The aim of this thesis is to design and implement a traffic engineering platform based on the OPNET Modeler that allows us work efficiently with the traffic engineering and simulation software. More specifically, the platform should offer seamless integration with other software modules, including a traffic engineering and optimization engine and a network topology generator (for generating large and realistic Internet topologies). It also has to permit the definition of MPLS networks and the ability to define them automatically, based on external input. This thesis report gives an introduction to OPNET and MPLS technology, and it describes the simulation platform and the way to use it.
TABLE OF CONTENTS
1. INTRODUCTION ........................................................................................................ 4 1.1. SCOPE OF THIS THESIS ............................................................................ 4 1.2. OBJECTIVES................................................................................................ 5 1.3. OUTLINE OF THESIS ................................................................................. 5 2. INTRODUCTION TO OPNET MODELER ............................................................... 6 2.1. INSTALLING OPNET MODELER ............................................................. 6 2.2 OPNET MODELER TOOLS ......................................................................... 8 2.3. THE MODELER WORKFLOW................................................................. 10 3. MPLS.......................................................................................................................... 13 3.1. FORWARDING PACKETS IN AN MPLS NETWORK ........................... 13 3.2. MPLS LABEL DISTRIBUTION AND SIGNALING................................ 15 3.3. MPLS APPLICATIONS ............................................................................. 16 3.4. MPLS IN OPNET MODELER ................................................................... 18 4. GENERATION OF NETWORK TOPOLOGIES...................................................... 21 4.1. PLACING INDIVIDUAL NODES ............................................................. 21 4.2. RAPID CONFIGURATION TOOL............................................................ 21 4.3. IMPORTING A NETWORK MODEL ....................................................... 22 4.3.1. Different Options to Import .......................................................... 22 4.3.2. Importing from an XML file......................................................... 23 4.4 THE BRITE NETWORK GENERATOR.................................................... 24 4.4.1. Running BRITE ............................................................................ 25 4.4.2. The BRITE Output Format ........................................................... 27 4.4.3. Adapting the BRITE output format to OPNET XML format....... 29 4.4.4. Generating a backbone of the network ......................................... 31 5. ADDING TRAFFIC TO THE NETWORK............................................................... 33 5.1. TYPES OF TRAFFIC.................................................................................. 33 5.2. DETAILED TRAFFIC CONFIGURATION OPTIONS ............................ 34 5.3. TRAFFIC GENERATOR............................................................................ 36 6. CONFIGURING THE MPLS PATHS....................................................................... 38 7. SYNTHESIZING THE WORKFLOW OF THE PLATFORM................................. 41 7.1. WORKFLOW.............................................................................................. 41 7.2. RUN A SIMULATION WITHOUT THE GUI........................................... 46 8. CONCLUSIONS ........................................................................................................ 48 APPENDIX A: GLOSSARY ......................................................................................... 49 APPENDIX B: LIST OF CLASSES DEVELOPED ..................................................... 50 REFERENCES ............................................................................................................... 52
1. INTRODUCTION
This thesis concerns the design and implementation of a network simulation platform for traffic engineering research. Internet Traffic Engineering is defined as that aspect of Internet network engineering which is concerned with the performance optimization of operational networks [11]. It encompasses the application of technology and scientific principles to the measurement, modeling, characterization, and control of Internet traffic, and the application of such knowledge and techniques to achieve specific performance objectives, including the efficient utilization of network resources, and the planning of network capacity. Traffic engineering research often needs network simulators in order to facilitate development and analysis of new traffic management and control schemes. Network simulators can be either open source or commercial. The open source simulators are free and usually developed and maintained by academic institutions, and they are easy to modify and add new features to. However, as they have been developed by different people and there is not one company behind the software, no one will guarantee the rightness and the quality of the results. The most well-know simulator in the research field is NS-2 [14]. On the other hand, the commercial simulators are supposed to deliver valid network models. One of the most popular software is the OPNET Modeler developed by OPNET, which is the simulator used in this thesis.
OPNET
interface
PARSER TOOLS
interface
The work focuses on understanding OPNET and to develop the parsing software. The Routing engineering software is out of the scope of this work.
1.2. OBJECTIVES
The main goal of this thesis is to design a traffic research platform based on OPNET Modeler. The platform should make it possible to simulate large scale networks. In order to reach this goal, we followed the steps below: First, get the simulator working and discover how to use it. Analyze the different options to generate networks automatically and the way to import them into the Modeler. Develop a parser to adapt the network configuration files. Find out and study the different ways to introduce traffic into the network in OPNET Modeler. Study the characteristics of a MPLS network, how to configure it in Modeler and the attributes to set. Develop a software to set all the attributes and nodes automatically, based on external input. Analyze the way to run simulations without the Graphical User Interface in a remote machine, in order to generate batches of simulations of the same or different network configurations. Finally, outline a workflow on how to use the research platform.
Value
C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib C:\Program Files\Microsoft Visual Studio\Common\MSDev98 C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;
3) Install the Modeler 4) Install the model library 5) Install the documentation 6) Run the License Manager and add the license information.
After all these operations, Opnet Modeler should be running successfully. The main window of the Opnet Modeler is shown in the next figure:
Node Editor - Develop node models. Node models are objects in a network model. They are made up of modules with process models. The Node Editor lets you define the behavior of each network object. Behavior is defined using
different modules, each of which models some internal aspect of node behavior such as data creation, data storage, etc. A network object is typically made up of multiple modules that define its behavior. In the next figure, there are some parts of a routers internal structure, such as a TCP module, an UDP module and an IP module.
Process Editor - Develop process models. Process models control module behavior and may reference parameter models. This editor lets you create process models, which control the underlying functionality of the node models created in the Node Editor. Process models are represented by finite state machines (FSMs), and are created with icons that represent states and lines that represent transitions between states. Operations performed in each state or for a transition are described in embedded C or C++ code blocks.
External System Editor - Develop external system definitions. External system definitions are necessary for cosimulation. Link Model Editor - Lets you create new types of link objects. Each new type of link can have different attribute interfaces and representation. It is also possible to edit and view link models already created. Packet Format Editor - Develop packet formats models. This editor lets you define the internal structure of a packet as a set of fields. A packet format contains one or more fields, represented in the editor as colored rectangular boxes. The size of the box is proportional to the number of bits specified as the fields size. ICI Editor - Create, edit, and view interface control information (ICI) formats. ICIs are used to communicate control information between processes. PDF Editor - The PDF (Probability Density Function) Editor lets describe the spread of probability over a range of possible outcomes. A PDF can model the likelihoods associated with packet interarrival times, or it can model the probability of transmission errors. This editor allows you to create, edit, and view probability density functions (PDFs). Once all the different interfaces are shown, it is necessary to describe the different steps to build a network model and to simulate it. For the purposes of this thesis work, its only necessary to work with the project.
3. RUN SIMULATIONS
2 .Choose Statistics
1) The first step is to create the networks models. Its necessary to generate the network to simulate in any of the following 3 ways (will be detailed in chapter 4): 10
Placing individual nodes from the object palette into the workspace Using the rapid configuration tool And/or importing the network from an external data.
Furthermore, you have to introduce the traffic you want to run through the network. There is two main ways of putting traffic in the model: a) Importing b) Manually specifying 2) Afterwards and before running a simulation, it is necessary to choose the statistics we want to collect. OPNET does not automatically collect all statistics in the system because there are so many available that you may not have enough disk space to store them. Specifying statistics is a straightforward task which is performed through the GUI. This is described in detail later. 3) The third thing to set is configuring the parameters of the simulation and running them. Running simulations is typically thought of as the next-to-last step in the simulation and modeling process, the last step being results analysis. However, simulation is typically done many times in the modeling process to check the rightness of the generated network. There are different kinds of analysis that can be done in OPNET Modeler. 1. 2. 3. 4. Discrete Event Simulation Flow Analysis Failure Impact Analysis NetDoctor Validation
Discrete event simulation provides the most detailed results but has the longest running times [2]. This is because it does a more thorough analysis than the others, handling explicit traffic, conversation pair traffic, and link loads. The other types answer specific types of questions and generate results much faster than a discrete event simulation. A flow analysis, for example, handles only conversation pair traffic (flows) and a NetDoctor validation does not consider traffic at all. Our licenses only allow generating Discrete Event Simulations (DES), so we have focused in this type of analysis. 4) View and analyze the results of the simulation is the last step. The results can be watch from the Project Editor or from the Analysis Tool. The Analysis Tool provides the capability to extract data from simulation output files, and to manipulate and display it according to various plotting methods. Data can be manipulated through built-in operations in a different ways to get wanted information. Hence, the final workflow of a project could be as follows: Create project Create baseline scenario - Import or create topology - Import or create traffic - Choose results and reports to be collected 11
- Run simulation - View results and analyze them Iterate by duplicating the scenario and changing parameters Opnet uses a project and scenario approach to model networks. Project is a collection of related network scenarios in which each explores a different aspect of network design. A project contains at least one scenario and a scenario is a single instance of a network containing all the information. It is possible to run all the scenarios of the network at the same time and compare the results of each one. This approach for modeling networks allows you to try what-if scenarios to check if a server will support and increment of the traffic, the effect of the increment of the traffic in a link in the response of a service, etc.
12
3. MPLS
The Multi-Protocol Label Switching is a standard of the IETF [3]. Multiprotocol because it might be applied with any Layer 3 network protocol, although almost all of the interest is in using MPLS with IP traffic. MPLS allows for the marriage of IP to layer 2 technologies by overlaying a protocol on top of IP networks. This new protocol lets you combine the intelligence of the routing with the efficiency of the switching. MPLS is based in the following ideas: The separation between the routing and the packet forwarding functions. The exchange of the labels for sending the data packets.
13
The last node, called the MPLS egress node, removes the MPLS labels and delivers IP packets to the next hop outside the MPLS network.
The more detailed operation can be described as follows. On the ingress side, the LER examines the incoming packet to determine whether the packet should be labelled. A special database in the LER matches the destination address to the label. An MPLS shim header, which is shown in the next figure, is attached and the packet is sent. The egress LER has to remove the MPLS header and decide the next hop in conventional way.
The Shim Header consists of 32 bits in four parts twenty bits are used for the label, three bits for writing the different Type of Services (ToS), one bit for stack function, and eight bits for time to live (TTL) which has the same function as in IP. When the MPLS packets leave the LER, they are destined for LSR where they are examined for the presence of labels. The LSR looks to its forwarding table (called a
14
Label Information Base, LIB, or a connectivity table) for instructions. The LSR will swap labels according to the LIB instructions. This process happens in every LSR as it is shown in the figure 3.3. The following table shows an example of a LIB.
Label/In 80 17 Port In B Label/Out 40 Port/Out B FEC B Instruction Next Hop Swap Swap
LDP protocol have also been defined to support explicit routing based on QoS and CoS requirements.
In MPLS, traffic engineering is inherently provided using explicitly routed paths. The LSPs are created independently, specifying different paths that are based on userdefined policies. However, this may require extensive operator intervention. RSVP and CRLDP are two possible approaches to supply dynamic traffic engineering and QoS in MPLS. MPLS is also designed to attend differentiated services for QoS assurance, typically according to the DiffServ Model of the IETF. Differentiated Services is an architecture defined by IETF based on classify the traffic entering to a network into different classes 16
and give a different level of resources to each class [7]. This model defines a variety of mechanisms to classify the traffic in a reduced number of classes with different priorities. According to the requirements of the users, DiffServ allows to differentiate traditional services such as the WWW, the electronic mail or the transference of files, of other applications more affected by the delay and its variation (streaming multimedia and voice over IP). For this purpose, it is used the field called ToS (Type of Service) in the IP packet. Class of Service (CoS) classifies packets by examining packet parameters and places packets in queues of different priorities based on predefined criteria. Diffserv provides new uses for the ToS octet field of the IP header. The protocol field structure is presented in the next figure. The DSCP (Differential Services Code Point) has six bits. All the traffic with the same DSCP receives the same deal in the network. The DS implementation in a network defines the Per-Hop Behaviors (PHB). The PHB is the externally observable forwarding behavior applied at a DS-compliant node to a DS behavior aggregate.
0 1 2 3 4 5 6 7
DSCP
Not used
Not used
The standardized PHBs are [8][9]: EF: Expedited Forwarding. The EF gives the highest level of QoS. It guarantees the bandwidth (BW) as a virtual dedicated circuit. Any traffic that exceeds the traffic profile is discard [8]. AF: Assured Forwarding. It offers different levels of forwarding assurances for IP packets. Four AF classes has been defined, where each class is in each DS node allocated a certain amount of buffer space and bandwidth [9]. Within each AF class, there are 3 different drop precedence values. The drop precedence determines the importance of the packet and, in case of congestion, the DS node tries to protect the packets with a lower drop precedence discarding packets with a higher drop level. Packets in one class must be forwarded independently from packets of another AF class. MPLS adapts perfectly to the Diffserv model because in its header has the field called EXP to propagate the CoS in the corresponding LSP. This way, a network MPLS can transport different classes from traffic, since: The traffic that flows through a certain LSP can be assigned to different queues in the LSRs, in agreement with the information contained in the bits of field EXP. Between each pair LERs it is possible to set multiple LSPs, each one of them with different characteristics and different bandwidth guarantee. For example, a LSP can be for traffic of maximum priority, another one for an average priority and third for traffic best-effort.
17
b) Static Mappings With the static mappings we are creating forwarding equivalence classes (FECs) and traffic trunks, which are used to define the different types of traffic. So, it is necessary to set in the workspace a node called MPLS Configuration and define a FEC and a traffic trunk. A traffic trunk is an abstract representation of traffic to which specific characteristics can be associated [6]. Another definition is: A traffic trunk is a set of flows aggregated by their service class and then placed on a LSP or set of LSPs called a traffic engineering tunnel [2]. It is characterized by the ingress and egress LSR, the forwarding equivalence class (FEC) and a set of attributes which determine its behavioral characteristics.
In order to define a FEC, the only needed fields we have to fill are: Give a name to differentiate one FEC of the others. Assign the destination address of the FEC: give the address of the host or network destination. The attributes that must be set to define a traffic trunk are: The name to identify the traffic trunk The characteristics of the traffic profile: maximum bit rate, average bit rate and the maximum burst size The traffic class must be configured to EF, AF11, AF12, , AF42, AF43. This is useful to define differentiated services for different traffic flows going through the same LSP. In OPNET Modeler, the priorities between the different classes are defined in the attribute called EXP <-> PHB. This attribute is a table where each value of one of these classes is mapped to a different value of PHB. The default values, called Standard Mappings give the next priorities:
EF > AF41 > AF32 > AF31 > AF22 > AF21 > AF11
19
The other classes are not defined but it is possible to define them in the MPLS Configuration node. The expedited forwarding (EF) PHB is proposed in RFC2598, whereas the assured forwarding (AF) PHB group is presented in RFC2597. After all the LSPs, FECs ans traffic trunks are created, we have to define the static mappings or the traffic engineering bindings that govern which packets are sent to one LSP or another. To set these parameters, there are two ways: 1) Manually, do it in the LERs MPLS > MPLS Parameters > Traffic Mapping Configuration attribute and specify the interface where the traffic in getting inside the LER, the FEC, the traffic trunk and the primary and backup LSPs used. 2) Set it automatically using a software developed in order to configure them. This software is called the mpls configurator and also set all the information about the FECs and the traffic trunks. The format of the files that this software uses and the way to run it will be described later in the chapter Workflow in the platform.
20
21
Once it has been specified the type of network, it is possible to set the other parameters in a window:
This tool appears to be suitable for generating large networks without a fix topology (bus, star, ring, etc). For example, in the Randomized Mesh option, you can specify: the number of devices the type of device and link the number minimum and maximum of links per device At first sight, this tool seems to be what we needed. But a further analysis revealed that the network created can be not connected. This means that the network can be split in 2 parts and there is no link to reach the other. In graph theory terms, it may generate an unconnected graph. A graph is considered to be connected if a path exists between all pairs of vertices thus making each of the vertices in a pair reachable from the other. As there is no way in Opnet to find out if the generated graph is connected, we choose to discard this tool.
22
a) b) c) d) e) f)
ATM text files VNE Server HP Network Node Manager XML file Device Configuration Data ACE
The option a) is useful for importing ATM networks, but since this project is focused in analyzing MPLS networks, this is not useful. The VNE Server (option b)) is software developed by Opnet that provides an integrated view of your network where you are working. As we want to simulate networks that do not physical exist, this option is not useful for our objectives. The HP Network Node Manager is also used to get a model of your own network. When you get, it is possible to import to Opnet Modeler and then simulate what-if scenarios to get some information about your company network with more load in some servers, links or more users. However, this is not one of the goals of the project, so we must discard this option also. The option d), importing from an XML file, is a general way to import network models. The options e) and f) require others software licenses that are not available for the development of this project. Hence, we must reject them as valid options to import a network topology. 4.3.2. Importing from an XML file The minimum information we need to give to Opnet Modeler in order to import a device (ie, a router) is: The position of the device: < x , y > Give an unique name The device model (e.g. CS_4000_3s_e6_fr2_s12_tr2, ethernet2_slip8_ler, etc) The identifier of the AS (Autonomous System) Another information about the icon shown in the network to represent the device, etc.
23
To introduce a link it is necessary to state the following data: A unique name The model name of the link The source and destination node name The position of the beginning and the end of the line between the nodes. That is, it is necessary to provide the position of the source and destination node The rest of the information is about the color of the line and their format and it is not so useful. Any color given is valid if it is done in the right format The minimum information necessary to generate is the next XML text:
<link name="edge_0" model="1000BaseX" class="duplex" srcNode="node_3" destNode="node_4" ignore_questions="true" min_match_score="strict matching"> <attr name="doc file" value="nt_link"/> <attr name="tooltip" value="Ethernet 10Gbps Link"/> <attr name="creation source" value="Object Palette"/> <attr name="creation data" value=""/> <attr name="arrowheads" value="head and tail"/> <attr name="color" value="#850000"/> <attr name="line style" value="solid"/> <attr name="symbol" value="none"/> <attr name="thickness" value="1"/> <attr name="polyline.count" value="2"/> <attr name="polyline [0].x" value="623"/> <attr name="polyline [0].y" value="111"/> <attr name="polyline [1].x" value="842"/> <attr name="polyline [1].y" value="86"/> </link>
General information needed to import a network in the Opnet Modeler is the view properties of the network and its sub networks: The minimum and maximum x,y parameters of the view Grid style and division x, y span Other attributes of the network: name, position, etc.
24
1) It is flexible, since it is possible to generate flat as well as multiple levels of networks (AS and nodes), 2) It is commonly accepted in the research community as a valid topology generator 3) It is implemented in Java (it runs in Windows and Linux OS). Other network generators are Inet [12] and Tiers [13]. 4.4.1. Running BRITE: After installing BRITE, it is necessary to decide what kind of network we want to generate. In our study we want to simulate large networks containing a large number of AS in it. BRITE offers 4 different models as it shows the next figure:
1. Flat Router-level: It generates a flat network of routers, without considering the existence of different Autonomous Systems (AS). There are two different algorithms to use it: Waxmans algorithm and Barabasis algorithm. As we are interested in generating a network of more than one AS, we have to discard this option. 2. Flat AS-level: This approach appears very similar to the previous one. The main difference between the two is that AS models place AS nodes in the plane and these have the capability of containing associated topologies. The main problem with this approach is that it only generates a flat topology of ASs and doesnt show how connect them to build a final topology. 3. Top-Down Hierarchical: Top-down means that BRITE generates first an AS-level topology according to one of the available flat AS-level models (e.g. Waxman, etc.). Next, for each node in the AS-level topology, BRITE will generate a router-level topology using a different generation model from the available flat models that can be used at the router-level. BRITE uses an edge connection mechanism to interconnect router-level topologies as dictated by the connectivity of the AS-level topology. BRITE provides four different edge connection mechanisms. If (i; j) is a link in the AS-level topology, then pick a node u from the router-
25
level topology associated with AS node i, RT(i), and a node v from the router-level topology associated with the AS node j, RT(j), such that: 1) Random: u is picked randomly from RT(i) and v randomly from RT(j) 2) Smallest degree: u and v are nodes with the smallest degrees in RT(i) and RT(j), respectively. 3) Smallest degree non-leaf: u and v are nodes of smallest degree in RT(i) and RT(j) respectively but are not leaves. 4) Smallest k-degree: u and v are nodes of degree greater that or equal to k in RT(i) and RT(j) respectively. The final topology is obtained by flattening the hierarchical topology out into a router-level topology composed of the individual topologies associated with each node at the AS-level. 4. Bottom-Up Hierarchical: In this model, BRITE first generates a router-level topology using any of the available models (router Waxman, imported file, etc.). Once this topology has been constructed, BRITE assigns to each AS node (level-2 node) a number of routers according to an assignment type specified by the user. With this number of assigned routers to an AS node, BRITE groups that many nodes from the router topology following a grouping method specified also by the user as a parameter to BRITE. Unfortunately, the BRITE users guide explains that the accuracy of this approach in order to generate representative Internet topologies still has to be validated. After analyzing the 4 different options provided by this topology generator, the TopDown Hierarchical appears to be the best one to generate large networks with multiple ASs.
26
Figure 4.4 View of BRITEs GUI 4.4.2. The BRITE Output Format A BRITE-formatted output file contains three sections: 1) Model information: information about the topology contained in the file. Includes number of nodes and edges, and information specific to the model used to generate the topology. 2) Nodes: for each node in the graph, a line is written into the output file with the following format: NodeId xpos ypos indegree outgdegree ASid type The meaning of each field is described in the next table:
Field NodeId Xpos Ypos indegree Meaning Unique id for each node x-axis coordinate in the plane y-axis coordinate in the plane Indegree of the node
27
3) Edges: for each edge in the graph, a line with the following format is written in the output file: EdgeId from to length delay bandwidth ASfrom ASto type The meaning of each field is described in the following table:
Field EdgeId From To length delay bandwidth ASfrom ASto Type Meaning Unique id for each edge node id of source node id of destination Euclidean length propagation delay bandwidth (assigned by AssignBW method) if hierarchical topology, AS id of source node if hierarchical topology, AS id of destination node Type assigned to the edge by classification routine
As an example, the output file listed at the end of this paragraph. It corresponds a network topology of 4 Autonomous Systems (AS) and 5 nodes in each AS. Therefore, it is a model of 20 nodes and 34 edges with the description of each element of the network. We choose not to plot this network here. This output file will now have to be adapted to the OPNET Modeler input format, done next.
Topology: ( 20 Nodes, 34 Edges ) Model (5 - TopDown) Model (3 - ASWaxman): 4 1000 100 1 0.20000000298023224 1 1 10.0 1024.0 Model (1 - RTWaxman): 5 1000 100 1 0.20000000298023224 1 1 10.0 1024.0 Nodes: ( 20 4 400 5 456 6 448 7 31 8 264
2 2
0.15000000596046448 0.15000000596046448
3 4 4 4 3
3 4 4 4 3
1 1 1 1 1
Edges: ( 34 ) 4 7 8 5 7 4 6 5 8 7 5 4 8 6 7 9 6 5 10 4 6
1 1 1 1 1 1 1
1 1 1 1 1 1 1
U U U U U U U
28
4.4.3. Adapting the BRITE output format to OPNET XML format In the previous chapters we describe the BRITE output format and the OPNET XML format. In order to adapt the two, a parser was developed. This parser is implemented in Java. The main parts of the parser include: A user interface where the user can set the names of the input file in BRITE format and the name of the output file in OPNET Modeler XML format. The reader of the input file that fills in the data structures to keep the information of the nodes, the edges, number of AS, number of nodes and number of edges. The writer of the output file that creates the output file in XML format. In the way it has been implemented, any of these parts can be implemented in another way or to another kind of input or output file with no modifications in the other two parts. In order to implement the parser, 3 Java classes have been designed. The node.java class and edge.java class are created to keep the information from the input file. The class pars.java is the main class which reads the input file and writes the output. In order to improve the visualization of the network it is necessary to rearrange the nodes giving them a new position in the plane. The problem is shown in the figure 4.5. This task can be split into two subtasks: 1. Split the plane in a sufficient number of parts to assign each AS to a part. For doing this, first is necessary to decide how many vertical and horizontal divisions are needed. Then, calculate the position of each division in order to place the nodes there. 2. Once every AS is assigned to a region of the plane, it is necessary to place the nodes of this AS in the determined region. The final result of the parser is shown in the figure 4.6 , apparently resulting in a more understandable network topology view.
29
Figure 4.5 - Output of the parser without rearranging of nodes, OPNET view
30
4.4.4. Generating a backbone of the network Since we are interested in studying the effects of really large networks which also reproduces the behaviour of the real networks, we need to generate networks which are divided into subnets, with one or several core networks interconnecting them. Our approach in this thesis was to take the BRITE network output file and to place the different AS as it is shown in the next diagram: X axis divisions
AS1 AS2 AS3 AS4 AS5 AS6 AS7 AS8 AS9
Yaxis divisions
In each position of the matrix, there is one AS. It is reasonable to think that the core areas have to be in the centre (the cells marked in grey in the figure above this text). In the following, we outline the algorithm that selects automatically the areas which are going to be a part of the core network. The input parameters of this algorithm are: The number of areas along the X-axis The number of areas along the Y-axis The output information is a boolean matrix that shows in every position whether it is part of the core or not. The resulting network for different inputs is shown in the following figures (the core ASs are marked in grey):
AS_x = 3 AS_y = 2
AS_x = 3 AS_y = 3
AS_x = 6 AS_y = 5
31
AS_x = 8 AS_y = 7
AS_x = 13 AS_y = 12
The algorithm takes as a parameter the relative size of the core (in number of ASs) in the examples shown above. In conclusion, after analyzing the behaviour of this algorithm, it is possible to affirm that it works in the correct way and it is useful to solve the problem whether or not an AS must be configured as an MPLS network. An example network with a core consisting of 6 ASs, is shown in the figure 4.8.
32
33
manually or import them from external files. You can set this traffic also as an explicit traffic modifying the value of the attribute called Traffic Mix, where is it possible to set the percentage of explicit traffic. Device/Link Loads: This type of traffic represents traffic as a background load on a link or node object. Unlike a traffic flow, which can span multiple links and nodes, a traffic load only affects to one object. It is also able convert existing link loads to traffic flows, which allows flow analyses to account for these loads. It is also possible to import device/link loads from external ASCII files. Application demands: Represent background traffic flowing between two nodes. As it has been explain before, this kind of traffic can be purely explicit, background or any combination of both types.
of requests and responses between the application layers of the end nodes. The source node of the application demand sends requests to the destination node, which returns responses to the source. Traffic flows: Another type of background traffic is called a traffic flow, or background routed traffic. Unlike a device/link load, which models traffic on one link or node, a traffic flow traverses the network from one source to one or more destinations. You create traffic flows in your network using traffic flow objects. A traffic flow is a network object that connects two nodes (like a link object) and specifies: A traffic source and a traffic destination A period of simulation time, which may be divided into time slots The rate of traffic (in bits-per-second, packets-per-second, or some other measure) from source to destination during each time slot.
Figure 5.1 Traffic attribute profile for a flow object After the description of each kind of traffic and describing of setting it, the most straightforward traffic to generate and the most suitable available traffic is the application demands. An application demand has to be defined between 2 workstations and it is not possible to define it between two routers. Thus, it is necessary to introduce a workstation linked to a router to generated traffic between two nodes of the network (one workstation for the source and another for the destination of the application demand). Hence, it is necessary to modify the parser again to introduce the auxiliary workstations next to the routers chosen to have traffic between them. In the next figure, such an example is shown:
35
The separations between the source node and the destinations can also be a space instead of the TAB. This is an example of a file generated by the traffic generator:
big.brite 108 0 54 1024 15000 4096 3600 3600 94 1024 15000 4096 3600 1 48 1024 15000 4096 3600 3600 93 1024 15000 4096 3600 2 27 1024 15000 4096 3600
86 1024 15000 4096 3600 105 1024 15000 4096 3600 66 1024 15000 4096 3600
The traffic generated is Poisson traffic with an exponential time between request packets. The size of the request and response packets also follows the exponential distribution. The result network generated is shown in the following figure where it is possible to observe the workstations needed to set traffic between two nodes. 36
37
Figure 6.1 Place to introduce the paths definitions and the first lines of a path definition
The program paths.java generates the XML lines to define the paths in the correct place. To give the information to the program in order to generate the LSPs, it is necessary to define a file with the extension .pth with the following format: Define a row for each LSP, no additional lines are needed in the beginning of the file. A node is described by its number. The path identifier is a number to difference two paths between the same nodes. The only condition is that it has to be different for each path with the same souce and destination. It can be different for all the paths Each row has to have the next format: SourceNode <SEP> 2nd Node <SEP> Last Node <SEP> Path_ID <SEP> = TAB or SPACE The following example shows the definition of two LSP in a path definition file:
0 12 3 14 2 13 1 10 0 9
The first path is defined between the nodes 0 and 1, and uses the nodes {0,3,2,1} and its identifier is the number 0. The second starts at node 12 and then continues to 14, 13, 10, 9 and 7. The identifier of the second path is the 1. The design of the algorithm that calculates the LSPs is out of the scope of this project and it has not been implemented. This is a part of the routing engineering software.
38
The routing engineering software also has to create a second file where we will keep the information about which LSPs are used by a traffic flow. For each traffic between two workstations that use one or more LSPs, it has to be kept the information about its traffic trunk (AF11, AF12 EF) and the paths it takes as primary paths and the backup paths for the primary ones. The primary paths are the paths used to send traffic of a FEC between two nodes of the MPLS network. When these paths fall down, the traffic is sent through the backup paths. It is possible to select the percentage of the total traffic that is splitted to each primary path specifying values to the field weight. This file has defined with the extension .te (traffic engineering) and has the following format: For each traffic that uses it is necessary to define row, no additional lines in the beginning of the file. The traffic is identified by the source node and the destination node number A node is described by its number The traffic trunk is described by the Assured Forwarding (AF) or Expedited Forwarding (EF) class The primary paths have to have defined a weight. The backup paths must not have defined a weight. The letter P indicates the beginning of the definition of a set of primary paths The letter B indicates the beginning of the definition of a set of backup paths Each row of the file has this format:
Traffic_Source <SEP> Traf_Destination <SEP> Trunk <SEP> P <SEP> LSP_start <SEP> LSP_end <SEP> LSP_id <SEP> LSP_Weight <SEP>LSP_start <SEP> B <SEP> LSP_start <SEP> LSP_end <SEP> LSP_id <SEP> P <SEP>
39
Design and Implementation of a Traffic Engineering Research Platform based on OPNET <SEP> = TAB or SPACE
The next examples clarifies the file format: 1) 0 8 AF11 P 40 37 0 10 B 40 37 1 P 17 13 0 10 The traffic from the node 0 to the node 8 has the traffic trunk AF11 and takes 2 LSPs to reach the destination. It takes the LSP from the node 40 to the node 37 with the identifier 0 and the LSP from the node 17 to the node 13 with the identifier 0. They have defined a weight but as they are the only primary paths between the nodes the value is not important. The first path has a backup LSP from the node 40 to the 37 with the identifier 1.The order to specify the LSPs is not important. 2) 11 52 AF21 P 23 21 0 10 23 21 3 20 B 23 21 1 The traffic from the node 11 to the node 52 has the traffic trunk class AF21. Between the nodes 23 and 21, the traffic takes two different LSPs. The first path (source: 23, destination: 21, id: 0, weight: 10) absorbs the 1/3 (10/30 = path_weight/ total_amount_of weight )of the total amount of traffic and the second (source: 23, destination: 21, id: 3, weight: 20) deals with the 2/3 (20/30).
40
7.1. WORKFLOW
In the next figure, there is a scheme describing all the steps needed to generate, import and run a simulation of an MPLS network. The numbers in the picture (shown within brackets) corresponds to the order of the tasks to perform.
MPLS Configurator
OPNET (6)
(8)
(4)
Routing engineering
brite file
brite file
Figure 7.1 Workflow scheme for the platform
41
The first step is the generation of the network topology. BRITE, which is the topology generator chosen, generates an output file with the extension .brite. In the following steps, in order to clarify the examples we have assumed that the name of the file generated is NET.brite. 2) Traffic Generator The traffic generator developed is the program called trf_gen.java. It takes two parameters: the name of the brite file, which describes the network topology, and the name of the output file where the information of the traffic will be saved. There is a third optional parameter to set the duration of the traffic generation. The duration is specified in seconds. The call to run the program assuming the output file is called traffic.trf is: java trf_gen NET.brite traffic.trf or java trf_gen NET.brite traffic.trf duration 3) Parser The parser is the software which has to translate the information generated by the BRITE and the traffic generator to the XML importing format of the OPNET Modeler. It is called pars.java. This program can be run with 3 or 4 parameters. In case of 3 parameters, it is necessary to specify the topology (BRITE) file, the name of the output XML file and if we want to set the whole network as a MPLS or only a core MPLS network. In case of 4 parameters, the third file contains the traffic information that will be also translated to the XML format to import the topology and the traffic information at the same time. If the traffic it is not introduce here, the only option to introduce it is do it in the step 6) manually. The call with 3 parameters is: java pars NET.brite netXML.xml all all = true or false The call with 4 parameters is: java pars NET.brite netXML.xml all traffic.trf all = true or false 4) Routing engineering The routing engineering program is the software in charge of calculating the optimal traffic distribution and routing scheme that gives the best performance of the whole network. We defined the output format file to import these paths to the network but the development of this program is out of the goals of this project. The format of this file is described before in this thesis and with the extension .pth. This software has to generate a second file that indicates which LSPs are used by each traffic. 5) Import of the LSP The program, that has to generate the XML code in order to import the LSP, also has to add this code to the file generated from the parser. This program
42
needs 3 parameters: the name of the file generated by the parser (.xml), the file generated by the routing engineering (.pth) and the name of the new output file (.xml). The call to run this program is: java paths netXML.xml opnet.xml paths.pth 6) OPNET In the OPNET Modeler it is necessary to do more than one step. 6.1. Run the OPNET modeler 6.2. Generate a new file File New Project Introduce the name of the project and scenario 6.3. Import the XML file Topology Import Topology From XML File select the XML file to import 6.4. Check the links and repair some of them if it is necessary 1. Double click on the subnet icon to get into the subnet
2. If the number of traffic demands is so high that it is difficult to visualize the network, it is possible to hide them: View Demands Hide All or Ctrl+Shift+M 3. Verify links in order to detect if there is a problem with the import file Topology Verify Links or Ctlr+L or click on the icon
4. After that, a new window appears and you have to select the option: Verify Links 5. The failed links has been selected and shown in the screen with a red cross on them. 6. If there is a one or more failed links, repeat the step 3 and then select the option: Choose transceivers for selected links
7. At the end of the process, it must be useful to repeat the step 3 in order to check there is no other problem with any link 6.5 Set OSPF
43
If we want to simulate an MPLS network or we want to run the simulation with this protocol, we have to do the next command to set it. Otherwise, the simulation will be done with RIP. Protocol IP Routing Configure Routing Protocols and set the window as it is shown in the next figure:
6.6 Auto assign IP In order to set the MPLS network, it is necessary to define the different FECs in it. In order to define a FEC, we have to know the IP address of the destination of the traffic. There is the option to set all the IP address automatically with the next call: Protocols IP Addressing Auto-assign IP Addresses NB: If the network you want to simulate is not an MPLS network, go to the step 8 to set the simulation parameters 6.7 Update LSP details Select Procols MPLS Update LSP Details
6.8 NB: If the network you want to simulate is not an MPLS network, go to the step 8 to set the simulation parameters Export the net to a new or the same XML file in order to get the file to generate the info for the MPLS configurator. Topology Export Topology To XML Entire Network And choose the file to keep the information. 7) MPLS Configurator This program has to set all the parameters in the LERs and the MPLS Configuration. This software generates a new XML file with all the parameters configured in order to import it again to OPNET. To import the file, follow the instructions described before in this chapter. This software takes 3 parameters: the name of the file exported by OPNET Modeler (.xml), the name of the traffic engineering file (.te) and the name of the output file where to save the information generated (.xml). The call to run this program is:
44
java mpls_conf opnet.xml trf_eng.te mpls.xml 8) OPNET This is the last step of the workflow where it is necessary to do the following steps: 8.1 Run the OPNET Modeler (if it is not running) 8.2 Choose the name of the file where we want to save the network. There are two different options: use the same file we have worked with before or create another file. In order to create another file, select: File New Project Introduce the name of the project and scenario In order to use the same file, open the file you have been working with before. 8.3 Import the new file generated by the mpls configuration software. Topology Import Topology From XML File select the XML file to import (in the example called mpls.xml) 8.4 Specify the statistics we want to collect. There are two different ways to do it: o Using the project editor by a right-click on the mouse and choosing the option: Choose DES Statistics o Using the probe editor to specify the statistics you want to collect. If we used this option, later we have to set in the network model the file where we have saved the information about the data collection. In order to do this last step, we have to expand the output tree element in the Run Simulation menu and set the probe file to the one we have just created. 8.5 Set the parameters to run the simulator. Select: DES Configure/Run Discrete Event Simulation In the new window it is possible to set the duration of the simulation, the seed of the random-generator and other parameters as the one described in the last step. None of them are needed. Once every parameter is set, we can save the parameters clicking on the button Apply and run later the simulation, or click the button Run to start the simulation (the parameters will be also saved). In the following picture, there is an screenshot of the Configure/Run DES window:
45
8.6 After the simulator is done, open the DES Log and check there were no errors during the simulation. Afterwards, check the results in the project editor or the analysis tool.
46
There are two kinds of preference assignments: static and dynamic. Static preferences are fixed options supported by all simulations (duration, seed, etc) and the dynamic ones are values that are not assigned during the generation of the network and the value is asked before the simulation. These values can be set to the default value and when you run a simulation with the GUI, these attributes are set to the default value. In order to set them in the default value, it is necessary to set the argument noprompt to TRUE. The table 7.1 shows the most common arguments:
-probe -ov_file -os_file -duration -seed -noprompt Specifies the probe list file that the simulation references for statistics gathering. Specifies the name of the output vector file that will capture all vector statistics selected by probes; if this preference is not specified, but vector statistics are probed, then the output vector file will have the same name as the simulation Specifies the name of the output scalar file that will capture all scalar statistics selected by probes or written by KPs; if this preference is not specified, no scalar values will be saved in a scalar output file by the simulation Specifies the length of the simulation (in seconds). Specifies the random number generator seed value. Causes the OPNET program to suppress prompts for the values of any unassigned dynamic preferences.
As any other executable file, simulation sequences can be defined via shell scripts (UNIX) or batch files (Windows). They are also possible to execute via the opnet Simulation Tool. These programs allow us to run different simulations with different input parameters. The main advantages of scripts over the Simulation Tool are: They are little programs, so they need less memory resources than OPNET Modeler Scripts can execute simulations on remote hosts and can do it concurrently(more simulations executing at the same time) Configure a remote simulation environment In order to run a simulation in a remote machine it is necessary to install and configure OPNET Modeler correctly in the remote machine (most of the steps are described in the first chapter in this report but it is possible to find more information in the installation information). You also have to transfer any non-standard models needed for the simulator and all the files created when you are designing the network. Finally, run the simulation either from the simulation tool in OPNET or from the command line.
47
8. CONCLUSIONS
In this thesis we have designed and implemented a traffic engineering research platform based on OPNET. The design of the platform is such that it should give the most general software possible, still it should allow us to work efficiently with the traffic engineering software and the OPNET simulator simultaneously. The OPNET Modeler is a powerful software network simulator often used in traffic engineering research. One problem we have experienced with this simulation software is that it is necessary to specify a large set of parameters in order to run a simulation. Probably, this is due to the fact that this software was developed to be mainly used as a simulator of real networks and to implement realistic what-if scenarios to find out what happens to network performance in case of an increased number of users, changed network design and/or changing traffic patterns. The resulting workflow becomes quite complex and it is not totally automatic, mainly restricted by operational limitations in OPNET itself. On the other hand, OPNET seems to be a complete set of software that ensures us the results we get are valid for a large set of problems.
48
APPENDIX A: GLOSSARY
AF: Assured Forwarding AS: Autonomous System BGP: Border Gateway Protocol BRITE: Boston university Representative Internet Topology gEnerator CoS: Class of Service CR-LDP: Constraint Routed Label Distribution Protocol DES: Discrete Event Simulation DiffServ: Differentiated Services DS: Differentiated Services DSCP: Differentiated Services Code Point EF: Expedited Forwarding FEC: Forwarding Equivalence Class FSM: Finite State Machine FTP: File Transfer Protocol GUI: Graphical User Interface HTTP: HyperText Transfer Protocol IETF: Internet Engineering Task Force IP: Internet Protocol ISIS: Intermediate System to Intermediate System LAN: Local Area Network LDP: Label Distribution Protocol LER: Label Edge Router LIB: Label Information Base LSP: Label-Switched Path LSR: Label Switching Router MPLS: Multi-Protocol Label Switching OS: Operating System OSPF: Open Shortest Path First PDF: Probability Density Function PHB: Per-Hob Behaviour QoS: Quality of Service RFC: Request For Comment RSVP: Resource reSerVation Protocol RT: Router-level Topology TE: Traffic Engineering ToS: Type of Service TTL: Time To Live WWW: World Wide Web
49
Pars.java
This class generates (translates) an XML code from the files generated by the BRITE and the traffic generator. The output file always consider the first node as node_0, it doesnt matter the identifier of the first node in the input BRITE file. This class uses core.java to calculate whether a node is in the core MPLS network or not. The classes node.java and edge.java are used to keep the information of the nodes (routers) and edges (links) read from the BRITE file.
Core.java
The core class generates a matrix of number divisions in x-axis per the number of divisions in the y-axis. In every position of the matrix, a boolean value indicates if the position is a member or not of the mpls core.
Node.java
It is used to keep the information about one node in the BRITE file. There is a get and a set method for each attribute of the class. The method print could be used as a debugger method.
Edge.java
It is used to keep the information about one edge in the BRITE file. There is a get and a set method for each attribute of the class. The method print could be used as a debugger method.
Traffic_gen.java
It generates the file that has the information about the traffic. It uses also the classes core, edge and node. The first identifier it considers in the number 0 as the parser does.
Paths.java
This software merges the file generate from the parser and the file generated by the traffic engineering software that describes the paths. The file generated by this class is imported by the Opnet.
Mpls_conf.java
This program takes the file exported by the Opnet and the file generated by the traffic engineering software and generates the xml file with all the devices configured. This program uses the classes: trunk_list.java, back_list.java, path_list.java and traffic_list.java. The traffic_list keeps the information of the source and destination of all the traffic flows that use any LSP. The path_list class has for each LER of the network the information about the traffics getting into the MPLS network (source,
50
destination and identifier). The trunk_list has the information of the name of all the traffic trunks in the network. The back_list has for each traffic flow and LER the information of the primary LSPs and the backup LSPs. First this program gets the IP address information from the XML file and then loads the information of the input files to the data structures. At the end, makes a copy of the input XML file to the output XML file adding the information in the right places.
Trunk_list.java
It keeps a list of all the different traffic trunks defined in the traffic engineering file (.te). It has the methods to add an element to the list, get the component in a specific position of the list and get the length of the list.
Traffic_list.java
It is a class to keep the information about the source and the destination of several traffics. It is used in the mpls_conf class to keep the information about the traffic flows that are using at least one path. It has the methods to add one traffic into the list, get the number of elements of the list and get the source and the destination of a position of the list.
Path_list.java
It is a list of paths_te objects (from paths_te.java). It has the typical methods of a list, such as add an element, get the object in a specific position and get the number of elements of the list. It is used in the mpls_conf to keep for each path the information about the sources and destinations of the traffic flows that use it.
Paths_te.java
This class keeps the information of the traffic flows that uses a LSP.
Back_list.java
It is a list of back objects (from back.java). It has the typical methods of a list, such as add an element, get the object in an specific position and get the number of elements of the list. It is used in the mpls_conf to keep the information about the primary paths and the backup paths for a given traffic and a given LER.
Back.java
This class keeps the information of the primary paths and the backup paths for every path and source.
51
REFERENCES
[1] Modeler Installation Instructions for Windows NT/2000/XP, https://secure.opnet.com/Lic_Priv/support/install_instructions/110/mdlr_11_inst all.pdf (password required) OPNET Modeler 11.0 Documentation E. Rosen, A. Viswanathan, R. Callon, Multiprotocol Label Switching Architecture, RFC 3031, January 2001 R. Gallaher, An Introduction to MPLS, http://www.convergedigest.com/Bandwidth/archive/010910TUTORIALrgallaher1.htm Trillium, Multiprotocol Label lights.org/networking/mpls.pdf Switching (MPLS), http://blinky-
D. Awduche, J. Malcolm, J. Agogbua, M. O'Dell, J. McManus, Requirements for Traffic Engineering Over MPLS, RFC 2702, September 1999 S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss, An Architecture for Differentiated Services, RFC 2475, December 1998 V. Jacobson, K. Nichols, K. Poduri, An Expedited Forwarding PHB, RFC 2598, June 1999 J. Heinanen, F. Baker, W. Weiss, J. Wroclawski, Assured Forwarding PHB Group, RFC 2597, June 1999 Alberto Medina, Anukool Lakhina, Ibrahim Matta, John Byers, BRITE: Universal Topology Generation from a Users Perspective, April 2001, http://www.cs.bu.edu/brite/ 47th IETF Meetind in Adelaide, http://www.ietf.org/proceedings/00mar/47thietf-00mar-74.html University of Michigan, Inet Topology Generator, http://topology.eecs.umich.edu/inet/ J. M. S. Doar, http://www.isi.edu/nsnam/ns/ns-topogen.html#tiers The Network Simulator- NS-2, http://www.isi.edu/nsnam/ns/
52