An Investigation of Mpls Traffic Engineering Capabilities Using CR-LDP
An Investigation of Mpls Traffic Engineering Capabilities Using CR-LDP
An Investigation of Mpls Traffic Engineering Capabilities Using CR-LDP
An INVESTIGATION of MPLS
TRAFFIC ENGINEERING CAPABILITIES
using CR-LDP
Spring 2001
David Culley
<[email protected]>
Chris Fuchs
<[email protected]>
Duncan Sharp
<[email protected]>
Page 1
Abstract
Multi Protocol Label Switching (MPLS) was
initially proposed to overcome the bottleneck of
IP routing over ATM while retaining the
efficiency of ATM's label swapping and
forwarding abilities. Now with the advent of
gigabit routers the issue of connection oriented
forwarding and IP routing integration is more
focused on the additional advantages that
MPLS provides: to manage traffic not
necessarily based on shortest path measures,
to provide QoS routing, the ability to set up
Virtual Private Networks (VPN) and to
implement congestion management control
strategies. One control standard that allows
MPLS to provide QoS based routing is the
Constraint based Routing Label Distribution
Protocol (CR-LDP). This paper reports on a
graduate course project that uses simulation to
demonstrate MPLS with CR-LDP to improve
real-time traffic service quality while reducing
congestion and improving network utilization.
1. INTRODUCTION
Internet Protocol (IP) networks have proven to
be highly scalable and efficient platforms for
delivering e-mail, Web and other classic Internet
traffic where the delay of "best-effort" delivery
are tolerable. It is widely believed that in order
for the Internet to evolve into our future
"universal information infrastructure" the
Internet must be able to deliver real-time multimedia traffic such as voice and video.
Unfortunately by its nature, real-time traffic is
sensitive to delay for example; delay over 100
to 200 ms on a telephone connection impedes
normal conversation.
In the current literature, achieving low delay with
some probability of success (e.g., 98% of
packets delivered within 100 ms) is referred to
as "traffic engineering". Essentially this means
availability of network resources to carry the
traffic within the specified constraints. Which
means, in turn, that network resources must be
provisioned ahead of the offered real-time traffic
and/or some connection admission policy must
reject new connections that will, if otherwise
accepted, overload and congest the network.
Page 2
Ingress
Egress
9
0
3
2
5
8
MPLS Domain
6
10
Source
Destination
LEGEND
LSP - Label Switched Path
#
Page 3
Real Time
Traffic
Destination
0
3
2
5
8
MPLS Domain
6
Best Effort
Traffic
Source
10
LEGEND
1.0 Mbps
Best Effort
Traffic
Destination
0.5 Mbps
Page 4
0.35
1.80
2.00
2.80
3.00
3.20
Figure-3
0.05
0
0
0.5
1.5
2.5
3.5
0.54
0.46
0.42
0.38
0.3
0.34
0.26
0.22
0.18
0%
0.1
Action
Start simulation run
Start real-time traffic source
Start best effort traffic source
Send withdraw real-time traffic route
message using CR-LDP
Send explicit route set up for realtime traffic to take LSP thru 3, 4 & 5
Issue LSP install directive at node 2
Send withdraw real-time traffic route
Stop traffic sources
Stop simulation run
0.1
0.14
Time
(sec)
0.00
0.05
0.10
1.60
Transit
0.15
0.06
0.2
0.02
0.25
Percent of Packets
0.3
WITHOUT
WITH
Traffic
Traffic
Engineering Engineering
0.555
0.624
1.0%
0.5%
69.4%
0.0%
0.462
0.622
4. DISCUSSION
The network topology and other simulation
parameters were chosen to demonstrate a
seriously degraded quality of service condition.
The configuration was arrived at after some
calculation and experimentation with network
scale (number of nodes, link capacity and
delay) and traffic arrangements (sources and
packet sizes, and CBR packet arrival rates). In
particular, and as expected, smaller TCP
packets improve the performance of the CBR
traffic (in terms of both delay and loss) but at
the expense of slower TCP start up. Although
the chosen parameters can be argued to be
artificially extreme, the mechanisms affecting
performance, the general delay and loss effects
do illustrate why, for example, voice over IP on
the Internet suffers from unpredictable and often
unusable quality.
The affect of best effort traffic over TCP on realtime traffic is amply demonstrated by our
example network. Figure-4 is particularly
illustrative. The series of delay escalations (and
gaps where packets are dropped) is graphic
evidence of the TCP window opening to sense
the allowable capacity, then closing in response
to congestion.
Using "nam" to observe network behavior
during the non-engineered scenario runs, we
witness (i) the default routing of all traffic on the
shortest path, (ii) the build up of queue depth at
node 6 where the capacity bottleneck starts,
and (iii) the stranding and overflow of CBR
(real-time) traffic in proportion to the number of
Page 6
REFERENCES
[1] "Constraint-Based LSP Setup using LDP",
IETF Internet Draft, July 2000,
[http://search.ietf.org/internet-drafts/draft-ietfmpls-cr-ldp-04.txt]
Appendix-A
Simulation Tcl Script
# ENSC-833 Project by Fuchs, Culley & Sharp
# Spring Semester 2001
# MPLS Simulation Script
# Current File Name: z5.tcl
Page 7
# SIMULATOR PRELIMINARIES
# Create a simulator object
set ns [new Simulator]
# Open a name trace file
set nf [open test-mpls.nam w]
$ns namtrace-all $nf
# Open a parameter trace file
set nfz [open z3.out w]
$ns trace-all $nfz
# Define a 'finish' procedure
proc finish {} {
global ns nf nfz
$ns flush-trace
close $nf
close $nfz
exec nam test-mpls.nam &
exit 0
}
# DEFINE the NETWORK
# as 2 source nodes connecting 2 destination
# nodes thru a network of MPLS LSRs
# Create network nodes
set n0 [$ns node]
set n1 [$ns node]
set LSR2 [$ns MPLSnode]
set LSR3 [$ns MPLSnode]
set LSR4 [$ns MPLSnode]
set LSR5 [$ns MPLSnode]
set LSR6 [$ns MPLSnode]
set LSR7 [$ns MPLSnode]
set LSR8 [$ns MPLSnode]
set n9 [$ns node]
set n10 [$ns node]
# Create network links
$ns duplex-link $n0 $LSR2 1Mb 10ms DropTail
$ns duplex-link $n1 $LSR2 1Mb 10ms DropTail
$ns duplex-link $LSR2 $LSR3 0.5Mb 10ms DropTail
$ns duplex-link $LSR3 $LSR4 0.5Mb 10ms DropTail
$ns duplex-link $LSR4 $LSR5 0.5Mb 10ms DropTail
$ns duplex-link $LSR5 $LSR8 0.5Mb 10ms DropTail
$ns duplex-link $LSR2 $LSR6 1Mb 10ms SFQ
$ns duplex-link $LSR6 $LSR7 0.5Mb 10ms SFQ
$ns duplex-link $LSR7 $LSR8 1Mb 10ms SFQ
$ns duplex-link $LSR8 $n9 1Mb 10ms DropTail
$ns duplex-link $LSR8 $n10 1Mb 10ms DropTail
# Set queue monitors
$ns duplex-link-op $n0 $LSR2 queuePos 0.5
$ns duplex-link-op $n1 $LSR2 queuePos 0.5
$ns duplex-link-op $LSR2 $LSR3 queuePos 0.5
$ns duplex-link-op $LSR3 $LSR4 queuePos 0.5
$ns duplex-link-op $LSR4 $LSR5 queuePos 0.5
Page 8
Appendix-B
Program to Convert Traffic Trace
#include <stdio.h>
typedef struct _trec {
unsigned int trec_time;
unsigned int trec_len;
} trec;
main (int argc, char** argv)
{ trec t;
double last_time;
double this_time;
void exit();
char *pt;
char i;
FILE *infile;
FILE *outfile;
if (argc == 3)
{ infile = fopen (argv[1], "r");
if (infile == NULL)
{ fprintf (stderr, "Unable to open %s for reading\n",
argv[1]);
exit (0);
} else
{ fprintf (stderr, "Opening %s for reading\n", argv[1]);
}
outfile = fopen (argv[2], "w");
if (outfile == NULL)
{ fprintf (stderr, "Unable to open %s for writing\n",
argv[2]);
exit (0);
} else
{ fprintf (stderr, "Opening %s for writing\n", argv[2]);
}
} else
{ fprintf (stderr, "Wrong number of args: %d\n", argc);
fprintf (stderr, " USAGE: %s infile outfile\n", argv[0]);
Appendix-C
Program to Filter Simulator Trace File
#!/usr/local/bin/perl
#
#
@n = split (/\//, $0);
$0 = $n[$#n];
$debugfile = "$0.debug";
die "usage: $0 data-filename \n" unless (-e $ARGV[0]);
$outfil=$ARGV[0];
open(DATA,"$outfil");
open (DEBUG, ">$debugfile") || die "$0: Can't open
$debugfile for writing\n";
while ($line=<DATA>) {
($que,$tim,$src,$dst,$typ,$siz,$flg,$ipflw,$ipsrc,$ipdst,$
seq,$id)=
split(/\s+/,$line);
print DEBUG;
next if ($typ ne 'cbr');
if ($src == 0 && $que eq '+' ) {
$p{$id}{s}=$tim;
print DEBUG "id:$id s:$tim\n";
next
} elsif ($que eq 'r' && $dst == 9 && exists($p{$id}) ) {
$p{$id}{r}=$tim;
Page 9
Page 10