Wednesday, July 8, 2009

Gonna Need a Bigger Boat: The Fish MPLS-TE Learning Example


Basics
The FISH topology is a widely used tool for understanding the power of MPLS Traffic-Engineering. The principal is that traffic originating in A or B will normally take the shortest path via the route through C-D-G, assuming all circuits have the same BW/Cost. The exercise is to utilize the available, and typically idle, BW capabilities of the C-E-F-G path.

Specifics
The process to activate MPLS-TE is seemingly long, but not overly complex.

Prep the environment:
The first step is to make sure that MPLS is running on your network with full reachability provided by either OSPF or IS-IS. Most basic config to accomplish this is config on each router:


Router(config)#router ospf 100
Router(config-router)#router-id w.x.y.z
Router(config-router)#network 0.0.0.0 255.255.255.255 area 0
Router(config-router)#exit
Router(config)#mpls ip
Router(config)#mpls ldp router-id Loopback0
Router(config)#mpls label protocol ldp
Router(config)#inteface serial 1/0
Router(config-if)#mpls ip


Next, the routers along the path require that MPLS Traffic-Engineering be enabled globally and then on the interfaces. Each interface that has the potential for have a TE Tunnel traverse it will need to have the option activated.

Router(config)#mpls traffic-eng tunnels
Router(config)#interface serial 1/0
Router(config-if)#mpls traffic-eng tunnels


Prep the IGP:
Traffic Engineering information is carried by the IGP routing protocol, in this case OSPF. In this simple example the entire network is in area 0 within the ospf process.

Router(config)#router ospf 100
Router(config-router)#mpls traffic-eng router-id loopback 0
Router(config-router)#mpls traffic-eng area 0

OSPF uses the Opaque LSA's to carry TE information. The IS-IS protocol requires the additional step of using WIDE METRICS in order to carry that information.

Define the tunnel's path:
There are multiple ways in which you can The tunnel starts off similar to a GRE tunnel in terms of configuration, but the similarities beyond the name are few.

RouterC(config)#ip explicit-path name CEFG enable
RouterC(cfg-ip-expl-path)#next-address 12.12.23.3
RouterC(cfg-ip-expl-path)#next-address 12.12.34.4
RouterC(cfg-ip-expl-path)#next-address 12.12.46.6

Build the tunnel:
The tunnel starts off similar to a GRE tunnel in terms of configuration, but the similarities beyond the name are few.

Router(config)#interface Tunnel1
Router(config-if)#bandwidth 100000
Router(config-if)#ip unnumbered Loopback0
Router(config-if)#mpls ip
Router(config-if)#tunnel destination 12.12.6.6
Router(config-if)#tunnel mode mpls traffic-eng
Router(config-if)#tunnel mpls traffic-eng path-option 10 explicit name CEFG


Get traffic into the tunnel:
There are three ways of getting traffic into the tunnel:
  • Policy Based Routing
  • Autoroute Announce
  • Static Routes

For simplicity we will allow traffic from A to route normally and use policy-based routing to forward traffic from B to follow the Traffic-Engineered path over the long path CEFG. Here we will match traffic coming from the loopback of B (12.12.7.7) headed to the loopback of G (12.12.6.6).

RouterC(config)#ip access-list extended TRAFFIC-MATCH
RouterC(config-ext-nacl)# permit ip host 12.12.7.7 host 12.12.6.6
!
RouterC(config)#route-map TE-BCEFG permit 10
RouterC(config-route-map)#match ip address TRAFFIC-MATCH
RouterC(config-route-map)#set interface Tunnel1
!
RouterC(config)#interface Serial1/3
RouterC(config-if)#description RouterC link to RouterB
RouterC(config-if)#ip policy route-map TE-BCEFG

Verification:
To verify the tunnel is operational simple show commands provide all the information you need.

Originating router:
RouterC#sho mpls traffic-eng tunnels

Name: RouterC_t1 (Tunnel1) Destination: 12.12.6.6
Status:
Admin: up Oper: up Path: valid Signalling: connected

path option 10, type explicit CEFG (Basis for Setup, path weight 192)

Config Parameters:
Bandwidth: 0 kbps (Global) Priority: 7 7 Affinity: 0x0/0xFFFF
Metric Type: TE (default)
AutoRoute: disabled LockDown: disabled Loadshare: 0 bw-based
auto-bw: disabled

InLabel : -
OutLabel : Serial1/1, 16
RSVP Signalling Info:
Src 12.12.2.2, Dst 12.12.6.6, Tun_Id 1, Tun_Instance 10
RSVP Path Info:
My Address: 12.12.23.2
Explicit Route: 12.12.23.3 12.12.34.4 12.12.46.6 12.12.6.6
Record Route: NONE
Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
History:
Tunnel:
Time since created: 3 hours, 5 minutes
Time since path change: 3 hours, 5 minutes
Current LSP:
Uptime: 3 hours, 5 minutes
RouterC#


Intermediate router:
RouterC#show mpls traffic-eng tunnel

LSP Tunnel RouterC_t1 is signalled, connection is up
InLabel : Serial1/0, 16
OutLabel : Serial1/1, 16
RSVP Signalling Info:
Src 12.12.2.2, Dst 12.12.6.6, Tun_Id 1, Tun_Instance 10
RSVP Path Info:
My Address: 12.12.34.3
Explicit Route: 12.12.34.4 12.12.46.6 12.12.6.6
Record Route: NONE
Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
RSVP Resv Info:
Record Route: NONE
Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits


Traceroute from Router A:

RouterA#R1#traceroute ip

Target IP address: 12.12.6.6
Source address: 12.12.1.1
- Truncated -
Type escape sequence to abort.
Tracing the route to 12.12.6.6

1 12.12.12.2 [MPLS: Label 20 Exp 0] 80 msec 20 msec 32 msec
2 12.12.25.5 [MPLS: Label 19 Exp 0] 328 msec 8 msec 16 msec
3 12.12.56.6 28 msec * 60 msec
RouterA#

The path Router A's loopback traffic takes to Router G is via the shortest path. We have not placed the traffic into the TE tunnel thus standard best path routing applies

Traceroute from Router B:
RouterB#traceroute ip

Target IP address: 12.12.6.6
Source address: 12.12.7.7
- Truncated -
Type escape sequence to abort.
Tracing the route to 12.12.6.6

1 12.12.27.2 28 msec 16 msec 8 msec
2 12.12.23.3 [MPLS: Label 16 Exp 0] 176 msec 136 msec 56 msec
3 12.12.34.4 [MPLS: Label 16 Exp 0] 168 msec 28 msec 52 msec
4 12.12.46.6 60 msec * 32 msec
RouterB#

The path that Router B's loopback takes is via the TE tunnel. The traceroute shows the additional hop through the network.

Advanced Topics
I am going to save the more advanced topics for a later post. The more advanced topics I would like to cover include:
  • Priorities - Setup and Hold
  • Dynamic Tunnel Pathing
  • Affinity bits
  • Autoroute Announce
  • Taking suggestions - What would you like to know about

Friday, April 24, 2009

All quiet on the western front

So I have been away for a while. Been on twitter some. Work projects have zapped 110% of my time for the last couple of months combined with a big after work project that should be wrapping up in the next two weeks. Until then I thank you for your patience and I am looking forward to getting back to everyone with some study material for the Service Provider IE.

In the mean time find me on Twitter(@routetarget) and say hi. Also feel free to @routetarget with any technologies for the SP lab that you would like for me to take a stab at for a blog post.