OSPF--Down Bit
Let’s focus on the following scenario:
The following sequence takes place, which can lead to a potential routing loop:
- R2 sends an LSA1 or LSA2 to PE1
- PE1 receives the intra-area OSPF route from R2 and redistributes it into MP-BGP.
- The receiving PE router, let’s say PE2, redistributes the MP-BGP route into OSPF as an LSA3 (remember that MPLS backbone acts as an OSPF superbackbone)
- LSA3 is propagated across the OSPF area and received by the other PE router, PE3 in our diagram, which is attached to the same OSPF area 1.
- Because PE3 has the same route learned by two protocols (OSPF and MP-BGP), it has to make a decision based on the administrative distance. Because the administrative distance of OSPF is better than the administrative distance of MP-iBGP, it selects the OSPF route. Therefore, PE3 redistributes the route OSPF back into the MP-BGP process, potentially resulting in a routing loop.
The down bit is a bit located in the LSA Header, and its function is to avoid loops in MPLS-VPN environments when using OSPF as PE-CE protocol.
When PE2 redistributes the MP-BGP route into OSPF, it sets up the down bit, or downward, on the LSA3. So when PE3 receives that LSA3, it doesn’t take it into account.
R1#sh ip ospf datab OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 690 0x8000000D 0x007847 5 103.103.103.3 103.103.103.3 879 0x80000009 0x006DEE 2 200.200.200.2 200.200.200.2 1040 0x8000000A 0x00789F 2 Summary Net Link States (Area 1) Link ID ADV Router Age Seq# Checksum 2.2.2.2 103.103.103.3 108 0x80000001 0x00F583 2.2.2.2 200.200.200.2 108 0x80000001 0x00DA7B 10.10.22.0 103.103.103.3 98 0x80000001 0x005AFD 10.10.22.0 200.200.200.2 98 0x80000001 0x003FF5 R1# R1#sh ip ospf databa summ 2.2.2.2 OSPF Router with ID (1.1.1.1) (Process ID 100) Summary Net Link States (Area 1) Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 133 Options: (No TOS-capability, DC, Downward) LS Type: Summary Links(Network) Link State ID: 2.2.2.2 (summary Network Number) Advertising Router: 103.103.103.3 ... Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 133 Options: (No TOS-capability, DC, Downward) LS Type: Summary Links(Network) Link State ID: 2.2.2.2 (summary Network Number) Advertising Router: 200.200.200.2
R1#
PE3#sh ip ospf 100 databa OSPF Router with ID (103.103.103.3) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 649 0x8000000D 0x007847 5 103.103.103.3 103.103.103.3 836 0x80000009 0x006DEE 2 200.200.200.2 200.200.200.2 1000 0x8000000A 0x00789F 2 Summary Net Link States (Area 1) Link ID ADV Router Age Seq# Checksum 2.2.2.2 103.103.103.3 65 0x80000001 0x00F583 2.2.2.2 200.200.200.2 67 0x80000001 0x00DA7B 10.10.22.0 103.103.103.3 55 0x80000001 0x005AFD 10.10.22.0 200.200.200.2 57 0x80000001 0x003FF5 PE3# PE3#sh ip ospf databa summ 2.2.2.2 OSPF Router with ID (103.103.103.3) (Process ID 100) Summary Net Link States (Area 1) LS age: 146 Options: (No TOS-capability, DC, Downward) LS Type: Summary Links(Network) Link State ID: 2.2.2.2 (summary Network Number) Advertising Router: 103.103.103.3 ... LS age: 148 Options: (No TOS-capability, DC, Downward) LS Type: Summary Links(Network) Link State ID: 2.2.2.2 (summary Network Number) Advertising Router: 200.200.200.2 ...
PE3#
Let’s check this statement making PE2 and PE3 redistribute the route as LSA5. In order to do that, I will change the ospf-domain in PE1:
PE1#conf term PE1(config)#router ospf 100 PE1(config-router)#domain-id 1.1.1.1 PE1(config-router)#end PE1#
R1#sh ip ospf data OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 898 0x8000000D 0x007847 5 103.103.103.3 103.103.103.3 1087 0x80000009 0x006DEE 2 200.200.200.2 200.200.200.2 1249 0x8000000A 0x00789F 2 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 2.2.2.2 103.103.103.3 56 0x80000001 0x009F19 3489725929 2.2.2.2 200.200.200.2 56 0x80000001 0x008411 3489725929 10.10.22.0 103.103.103.3 66 0x80000001 0x000493 3489725929 10.10.22.0 200.200.200.2 66 0x80000001 0x00E88B 3489725929 R1# R1#sh ip ospf databa extern 2.2.2.2 OSPF Router with ID (1.1.1.1) (Process ID 100) Type-5 AS External Link States Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 64 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 103.103.103.3 ... Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 64 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 200.200.200.2 ...
R1#
PE3#sh ip ospf 100 datab OSPF Router with ID (103.103.103.3) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 851 0x8000000D 0x007847 5 103.103.103.3 103.103.103.3 1038 0x80000009 0x006DEE 2 200.200.200.2 200.200.200.2 1202 0x8000000A 0x00789F 2 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 2.2.2.2 103.103.103.3 7 0x80000001 0x009F19 3489725929 2.2.2.2 200.200.200.2 9 0x80000001 0x008411 3489725929 10.10.22.0 103.103.103.3 17 0x80000001 0x000493 3489725929 10.10.22.0 200.200.200.2 19 0x80000001 0x00E88B 3489725929 PE3# PE3#sh ip ospf 100 databa extern 2.2.2.2 OSPF Router with ID (103.103.103.3) (Process ID 100) Type-5 AS External Link States LS age: 30 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 103.103.103.3 ... LS age: 32 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 200.200.200.2 ...
PE3#
PE2(config)#router ospf 100 PE2(config-router)#redis bgp 65001 sub nssa-only PE2(config-router)#area 1 nssa PE2(config-router)#end PE2#
PE3(config)#router ospf 100 PE3(config-router)#redis bgp 65001 sub nssa-only PE3(config-router)#area 1 nssa PE3(config-router)#end PE3#
R1#sh ip ospf databa OSPF Router with ID (1.1.1.1) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 75 0x80000010 0x00189E 5 103.103.103.3 103.103.103.3 80 0x8000000B 0x000F45 2 200.200.200.2 200.200.200.2 80 0x8000000C 0x001AF5 2 Type-7 AS External Link States (Area 1) Link ID ADV Router Age Seq# Checksum Tag 2.2.2.2 103.103.103.3 10 0x80000001 0x003E54 3489725929 2.2.2.2 200.200.200.2 10 0x80000001 0x000869 3489725929 10.10.22.0 103.103.103.3 223 0x80000002 0x00A0CF 3489725929 10.10.22.0 200.200.200.2 190 0x80000001 0x006CE3 3489725929 R1# R1#sh ip ospf datab nssa-external 2.2.2.2 OSPF Router with ID (1.1.1.1) (Process ID 100) Type-7 AS External Link States (Area 1) Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 28 Options: (No TOS-capability, No Type 7/5 translation, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 103.103.103.3 ... Routing Bit Set on this LSA in topology Base with MTID 0 LS age: 28 Options: (No TOS-capability, No Type 7/5 translation, DC) LS Type: AS External Link Link State ID: 2.2.2.2 (External Network Number ) Advertising Router: 200.200.200.2 ...
R1#
So then, how are routing loops avoided when external routes are present? Well, with LSA5 and LSA7 there is a new field checked to avoid loops. This is called the tag field:
PE3#sh ip ospf 100 datab OSPF Router with ID (103.103.103.3) (Process ID 100) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 834 0x80000010 0x00189E 5 103.103.103.3 103.103.103.3 837 0x8000000B 0x000F45 2 200.200.200.2 200.200.200.2 839 0x8000000C 0x001AF5 2 Type-7 AS External Link States (Area 1) Link ID ADV Router Age Seq# Checksum Tag 2.2.2.2 103.103.103.3 19 0x80000001 0x003E54 3489725929 2.2.2.2 200.200.200.2 11 0x80000004 0x00026C 3489725929 10.10.22.0 103.103.103.3 19 0x80000001 0x00A2CE 3489725929 10.10.22.0 200.200.200.2 11 0x80000004 0x0066E6 3489725929
PE2#conf term PE2(config)#router ospf 100 PE2(config-router)# redistribute bgp 65001 subnets tag 100 PE2(config-router)#end PE2#