MPLS Tutorial header image

MPLS Tutorial

≡ Menu

How to Set DiffServ over MPLS Test-Bed on Linux Routers?

8.1 Network Topology

The topology of the test-network is as follows:

Fig. 8.1 Network Topology

This topology is primarily chosen since it is the simplest topology possible with which MPLS local path protection mechanism can be demonstrated and its efficiency compared. All the machines used are Intel machines with RedHat-9 as the Operating System. All the links are 100Mbps links, but the bandwidth has been throttled to 60Mbps between B-C and E-F, 20Mbps between C-D and 40Mbps between C-E and E-D. The throttling of bandwidth is used to give the network a more realistic look, and hence make the DiffServ provisioning more realistic.

8.2 Configuring the Network

All the five machines within the DiffServ over MPLS domain were configured as follows:

  • IPtables utility was installed.
  • Linux kernel-2.4.18 was patched with MPLS and DiffServ patch and compiled from scratch. Also, the kernel was patched with Hierarchical Token Bucket (HTB) queuing discipline (Qdisc) since it is only supported on kernel versions greater than equal to 2.4.20.
  • Then the IProute2 package was installed.
  • Following this, RSVP-TE daemon [19] was compiled and configured on all the machines.

(NOTE: Although the compilation and configuration procedure has been specified at http://dsmpls.atlantis.ugent.be/files/installation_rsvpd-0.70-rc2.txt, it is recommended that the procedure specified in Appendix A be followed, since quite a few changes had to be made to make the things work, especially if HTB support is to be compiled in.)

  • The SNMP software [20] was installed on each machine.

The configuration file snmpd.conf was edited in each case and proper IP addresses with community names were added.

(NOTE: It is important to include perl module support while configuring the net-SNMP software. These perl modules are essential for the mib2c tool which is of significant importance while trying to extend the net-SNMP agents support for MIBs (which can either be standard MIBs, not supported by the software or non-standard MIBs which have been written for experimental purpose.)

In addition to all this, GateDs OSPF [21,22] routing daemon was installed on all 7 machines. The configuration files for the OSPF can be found in Appendix B. For the sake of simplicity, all the machines have been configured to be on the backbone area.

For the purpose of synchronizing the clocks of the sender and the receiver for enabling accurate delay and jitter measurements, Network Time Protocol (NTP) has been used. The configuration files for NTP [23] can be found in Appendix C.

For the purpose of network management, ingress B is also configured as the network operation centre using a small C program. It is to be noted that the scope of the custom MPLS-MIB is very limited in nature since it has only been written for the retrieval of the following scalar objects: mplsInBytes, mplsOutBytes, mplsInPackets, mplsOutPackets. The details of the MIB will be discussed in the next few sections.

8.3 DiffServ Over MPLS: The Internals

The following implementation specific information has either been directly gleaned from the source code or taken from the DS-MPLS mailing archives [19].

1)  For E-LSp operation, static EXP-to-PHB(DSCP) mapping is used and is as follows:

Table 81 EXP-to-PHB Map

EXP

PHB/DSCP

0

BE/0

1

EF/0x2E

2

AF11/0xA

3

AF12/0xC

4

AF21/0x12

5

AF22/0x14

6

AF31/0x1A

7

AF32/0x1C

2)  EXP-to-TC map is used for providing the PHB within the network core nodes where only EXP bits will be read. The importance of this mapping will be clear when the linux filters and Qdiscs are discussed. In short, in the ingress the DSCP is mapped to the EXP and the EXP is mapped to the DSCP at the egress, while at every intermediate node the EXP is used to determine the TC index which determines the scheduling discipline to be applied to the packet (this will again be discussed in the section on Linux filters and Qdiscs).

Table 82 EXP-to-tc_index Map

EXP

TC Index

0

0

1

0xB8

2

0x28

3

0x30

4

0x48

5

0x50

6

0x68

7

0x70

It can be observed that the TC index has been set equal to the ToS value for the respective BAs.

3)  For L-LSP operation, the following PHB-IDs [RFC3140] for PSCs has been defined:

Table 8;3 PSC-to-PHBID Map

PSC

PHB-ID

BE

0

AF1x

0x2802

AF2x

0x4802

AF3x

0x6802

EF

0xB800

The RSVP-TE DiffServ object for L-LSP carries PSC field which carries the PHB-ID, which is a 16 bit number. For standard PHBs, the first six bits is filled in by DSCP and the rest is filled in by zeros.

css.php