Skip to main content
  1. Network Articles/
  2. IS-IS Articles/

The IS-IS ATT Bit and the Level 1 Default Route

Table of Contents

The IS-IS ATT Bit and the Level 1 Default Route

An IS-IS Level 1 area carries only the routes inside itself. So how does a router that knows nothing outside its area send a packet out of it? The answer is a single bit in the LSP header: the ATT bit (Attached).

A router that can serve as the area’s way out announces “I am connected to the outside” with the ATT bit, and Level 1 routers hand outbound packets to the nearest such exit. This article works through where the bit sits in the header, who sets it and under what condition, and what the receiving side does with it, checking each against ISO/IEC 10589:2002 and against IOS XR.

How Level 1 and Level 2 divide the work is covered in IS-IS Level 1 and Level 2 (the hierarchy).

Where the ATT bit sits

The ATT bit shares one octet at the end of the LSP header with P, LSPDBOL and IS Type. Clause 9.8 defines that octet:

BitNameMeaning
8PWhether Partition Repair is supported
7 to 4ATTOne bit per metric type: bit 4 is Default, 5 Delay, 6 Expense, 7 Error
3LSPDBOLLSP database overload
1 to 2IS TypeLevel 1 or Level 2 (1 is Level 1, 3 is Level 2; 0 and 2 are unused)

ATT is four bits wide because the standard defines four metrics. It can express “reachable outside on the Default metric but not on the Delay metric”. In practice only the Default metric is used, and the single digit IOS XR prints in the ATT/P/OL column of show isis database is bit 4, the Default metric.

Who sets the ATT bit

Clause 7.2.9.2 gives the condition. Having run the Level 2 decision process, a Level 2 IS decides whether that metric gets it outside its own area.

The IS considers itself attached if either: a) it can reach at least one other area using the corresponding routeing metric, or b) it has at least one enabled reachable address prefix with the corresponding metric defined. Otherwise the IS considers itself not attached.

What happens on a change is specified too. On ceasing to be attached, the IS clears the flag, regenerates its Level 1 LSP with LSP number zero, and then works out its own “nearest Level 2 IS” by the same procedure a Level 1 router uses (7.2.9.1). On becoming attached, it sets the flag, regenerates that LSP, and sets its own “nearest Level 2 IS” to “Self”.

That is the subtle part: the ATT bit travels in the Level 1 LSP, not the Level 2 one. Level 1 routers hold no Level 2 LSPs, so anything meant for them has to be in the Level 1 database. LSP number zero is specified for the same reason — a Level 1 router has to be able to read this bit before reassembling a fragmented LSP.

The ATT bit is therefore a device for carrying one bit of Level 2 knowledge into the Level 1 world. Note also that the condition is “can reach another area”, not “has a Level 2 adjacency”. A router with Level 2 adjacencies but no other area beyond them does not become attached.

What the receiving Level 1 router does

Clause 7.2.9.1 states the Level 1 IS’s behaviour.

Level 1 Intermediate systems need one additional piece of information per routeing metric: the next hop to the nearest level 2 Intermediate system according to that routeing metric. A level 1 IS shall ascertain the set, R, of “attached” level 2 Intermediate system(s) for metric k such that the total cost to R for metric k is minimal.

If that set is larger than maximumPathSplits, it is pruned by the same rules as equal-cost paths, which are covered in IS-IS SPF Computation and Route Selection.

What is being compared is only the distance from here to that Level 2 IS. Nothing about what lies beyond the exit enters the computation. A Level 1 router holds the intra-area topology and the ATT bits, and nothing else to judge by.

A Level 1 router also never considers a Level 2 IS whose ATT is clear. A router may be running Level 2 and still be useless as an exit if it cannot get outside. The lab below shows the switch to the farther router the moment the nearer one’s ATT drops.

The standard never says “default route”

This deserves care. Neither ISO/IEC 10589 nor RFC 1195 says a Level 1 router creates a 0.0.0.0/0 route. What the standard requires is a forwarding database entry for “the nearest Level 2 IS”, and RFC 1195 puts it this way:

If a specified destination address does not match any

\[IP address, subnet mask, metric\]

combination listed as reachable within the area, the packet is routed towards the nearest level 2 router.

Expressing that as a 0.0.0.0/0 entry in the routing table is an implementation choice. IOS XR makes it, and a Level-1-only router shows a 0.0.0.0/0. The lab below confirms it.

A default route with no metric

The mechanism has a weakness, which RFC 5302 names:

In using the nearest L1L2 router, that L1L2 is effectively injecting a default route without metric information into the L1 area. The route computation that the L1 router performs is similarly suboptimal.

A Level 1 router knows only which exit is closest; it has no idea how far anything is beyond that exit. It cannot tell that the near exit leads the long way round, or that the far exit is next door to the destination. Leaking Level 2 routes down into Level 1 is what addresses this.

Verification on real devices

Test environment

R1, R2 and R3 sit in area 49.0001, with R1 alone as level-1. R2 and R3 are level-1-2 and reach R4, a level-2-only router in area 49.0002. From R1 there are two ways out, so which one gets chosen is observable.

RouterAreaIS typeLo0Links
R149.0001level-11.1.1.1/32Gi0/0/0/0 10.1.2.1 (to R2, metric 10) / Gi0/0/0/1 10.1.3.1 (to R3, metric 20)
R249.0001level-1-22.2.2.2/32Gi0/0/0/0 10.1.2.2 / Gi0/0/0/1 10.2.4.2 (to R4)
R349.0001level-1-23.3.3.3/32Gi0/0/0/0 10.1.3.3 / Gi0/0/0/1 10.3.4.3 (to R4)
R449.0002level-2-only4.4.4.4/32Gi0/0/0/0 10.2.4.4 / Gi0/0/0/1 10.3.4.4

R1 - R2 is metric 10 and R1 - R3 is metric 20, so R2 is the nearer exit by default.

The STEPs

STEPOperationWhat it confirms
0Defaults, stable stateATT=1 in R2’s and R3’s Level 1 LSPs. R1 holds 0.0.0.0/0 through R2 and no routes outside the area
1Set R1 - R2 to metric 30The default route moves to R3, showing what “nearest” means
2Revert, then make R2 is-type level-1R2’s ATT drops to 0 and R3 becomes the only exit
3Make R3 is-type level-1 tooNo attached Level 2 remains in the area and R1’s 0.0.0.0/0 disappears
4Revert everything (final state)Matches STEP 0

STEP 0: the ATT bit and the default route

Start with the defaults. R1 is level-1, so it holds only a Level 1 database.

STEP 0 R1: show isis database
RP/0/RP0/CPU0:R1#show isis database
Fri Sep 11 07:10:17.360 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000006   0x2364        593  /*            0/0/0
R2.00-00              0x00000006   0x9e63        623  /1200         1/0/0
R3.00-00              0x00000005   0x7849        623  /1200         1/0/0

 Total Level-1 LSP count: 3     Local Level-1 LSP count: 1

Only the three routers inside the area are listed; R4, in the other area, is nowhere. That is what it means for a Level 1 router not to know the outside.

Look at the ATT/P/OL column: R2 and R3 show 1/0/0, and R1 itself 0/0/0. The leading digit is the ATT bit, and R2 and R3 are declaring “I reach the outside”. Knowing nothing beyond the area, R1 has only that one bit to go on.

R1’s routing table:

STEP 0 R1: show route isis
RP/0/RP0/CPU0:R1#show route isis
Fri Sep 11 07:10:16.227 UTC

i*L1 0.0.0.0/0 [115/10] via 10.1.2.2, 00:09:35, GigabitEthernet0/0/0/0
i L1 2.2.2.2/32 [115/10] via 10.1.2.2, 00:11:07, GigabitEthernet0/0/0/0
i L1 3.3.3.3/32 [115/20] via 10.1.3.3, 00:10:05, GigabitEthernet0/0/0/1
i L1 10.2.4.0/24 [115/20] via 10.1.2.2, 00:11:07, GigabitEthernet0/0/0/0
i L1 10.3.4.0/24 [115/30] via 10.1.3.3, 00:10:05, GigabitEthernet0/0/0/1

The first line is i*L1 0.0.0.0/0. The * marks a candidate default, so a single default route sits alongside the intra-area routes. In detail:

STEP 0 R1: show route 0.0.0.0/0
RP/0/RP0/CPU0:R1#show route 0.0.0.0/0
Fri Sep 11 07:10:16.521 UTC

Routing entry for 0.0.0.0/0
  Known via "isis 1", distance 115, metric 10, candidate default path, type level-1
  Installed Sep 11 07:00:41.144 for 00:09:35
  Routing Descriptor Blocks
    10.1.2.2, from 2.2.2.2, via GigabitEthernet0/0/0/0
      Route metric is 10
  No advertising protos. 

It is labelled candidate default path, the next hop is 10.1.2.2 (R2) and the metric is 10. Two routers have raised ATT, and the one with the lower metric, R2, is chosen.

STEP 1: “nearest” is decided by the metric

R1’s Gi0/0/0/0, facing R2, was set to metric 30. R2 is now 30 away and R3 is 20.

STEP 1 R1: show route 0.0.0.0/0
RP/0/RP0/CPU0:R1#show route 0.0.0.0/0
Fri Sep 11 07:13:10.825 UTC

Routing entry for 0.0.0.0/0
  Known via "isis 1", distance 115, metric 20, candidate default path, type level-1
  Installed Sep 11 07:11:34.020 for 00:01:36
  Routing Descriptor Blocks
    10.1.3.3, from 3.3.3.3, via GigabitEthernet0/0/0/1
      Route metric is 20
  No advertising protos. 

The next hop becomes 10.1.3.3 (R3) at metric 20. ATT is still 1 on both R2 and R3; only the distance changed. The “set of attached Level 2 ISs whose total cost is minimal” from 7.2.9.1 is precisely what picks the next hop.

STEP 2: losing ATT removes a router from the candidates

The metric went back to 10 and R2 was made is-type level-1. Giving up Level 2 drops R2’s Level 2 adjacency to R4 in the other area.

STEP 2 R1: show isis database
RP/0/RP0/CPU0:R1#show isis database
Fri Sep 11 07:17:14.684 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000008   0x1f66        1031 /*            0/0/0
R2.00-00              0x00000007   0x9278        1043 /1200         0/0/0
R3.00-00              0x00000006   0x764a        890  /1200         1/0/0

 Total Level-1 LSP count: 3     Local Level-1 LSP count: 1

R2’s ATT has fallen from 1/0/0 to 0/0/0. R2 can no longer reach another area, so it no longer meets the condition in 7.2.9.2. R3 stays at 1/0/0.

R1’s default route now points at R3. R2 is still the closer of the two, but a router without ATT set is not a candidate exit at all.

STEP 3: with no exit, the default route disappears

R3 was made is-type level-1 as well, leaving no Level 2 router in the area.

STEP 3 R1: show isis database
RP/0/RP0/CPU0:R1#show isis database
Fri Sep 11 07:20:56.481 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00            * 0x00000008   0x1f66        810  /*            0/0/0
R2.00-00              0x00000007   0x9278        821  /1200         0/0/0
R3.00-00              0x00000007   0x6a5f        1047 /1200         0/0/0

 Total Level-1 LSP count: 3     Local Level-1 LSP count: 1

All three now show ATT 0/0/0. R1’s routing table becomes:

STEP 3 R1: show route isis
RP/0/RP0/CPU0:R1#show route isis
Fri Sep 11 07:20:55.635 UTC

i L1 2.2.2.2/32 [115/10] via 10.1.2.2, 00:06:29, GigabitEthernet0/0/0/0
i L1 3.3.3.3/32 [115/20] via 10.1.3.3, 00:20:45, GigabitEthernet0/0/0/1
i L1 10.2.4.0/24 [115/20] via 10.1.2.2, 00:06:29, GigabitEthernet0/0/0/0
i L1 10.3.4.0/24 [115/30] via 10.1.3.3, 00:20:45, GigabitEthernet0/0/0/1

The 0.0.0.0/0 line is gone. The intra-area routes (2.2.2.2/32, 3.3.3.3/32, 10.2.4.0/24, 10.3.4.0/24) are all still there, so IS-IS has not stopped. There is simply nowhere to point a default, because not one attached Level 2 IS remains.

The area can no longer talk to the outside, and that is the behaviour the standard calls for. A Level 1 router has no way of its own to learn outside routes, so with nobody raising the ATT bit there is no exit.

The ATT bit in a packet

The ATT/P/OL column of show isis database collapses four bits of ATT into one digit. To see the header itself, the whole test was captured on the R1 - R2 link. Here is the same Level 1 LSP from R2, before and after STEP 2.

First, before STEP 2, while R2 was still level-1-2:

The LSP with ATT=1 (No.66), tshark -V
ISO 10589 ISIS Link State Protocol Data Unit
    PDU length: 102
    Remaining lifetime: 1200
    LSP-ID: 0020.0200.2002.00-00
    Sequence number: 0x00000006
    Checksum: 0x9e63 [correct]
    [Checksum Status: Good]
    Type block(0x0b): Partition Repair:0, Attached bits:1, Overload bit:0, IS type:3
        0... .... = Partition Repair: Not supported
        .000 1... = Attachment: 1
            .0.. .... = Error metric: Not set
            ..0. .... = Expense metric: Not set
            ...0 .... = Delay metric: Not set
            0... .... = Default metric: Not set
        .... .0.. = Overload bit: Not set
        .... ..11 = Type of Intermediate System: Level 2 (3)
Download the pcap of the packet in the tshark output above (No.66, ATT=1)

.000 1... = Attachment: 1 is bits 7 to 4 as defined in 9.8, and the four bits are broken out per metric type. Only Default is set; Delay, Expense and Error are clear. That is what the earlier statement “in practice only the Default metric is used” looks like on the wire.

Next, the LSP right after R2 was made is-type level-1:

The LSP with ATT=0 (No.74), tshark -V
ISO 10589 ISIS Link State Protocol Data Unit
    PDU length: 102
    Remaining lifetime: 1200
    LSP-ID: 0020.0200.2002.00-00
    Sequence number: 0x00000007
    Checksum: 0x9278 [correct]
    [Checksum Status: Good]
    Type block(0x01): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:1
        0... .... = Partition Repair: Not supported
        .000 0... = Attachment: 0
            .0.. .... = Error metric: Not set
            ..0. .... = Expense metric: Not set
            ...0 .... = Delay metric: Not set
            0... .... = Default metric: Not set
        .... .0.. = Overload bit: Not set
        .... ..01 = Type of Intermediate System: Level 1 (1)
Download the pcap of the packet in the tshark output above (No.74, ATT=0)

Attachment has gone to 0, and Type of Intermediate System has changed from Level 2 (3) to Level 1 (1) at the same time. ATT and IS Type are rewritten side by side within that one octet. The sequence number has also moved from 0x06 to 0x07, showing that R2 regenerated its Level 1 LSP.

This LSP is travelling on the R1 - R2 link, which is the Level 1 world. Of everything R2 holds at Level 2, this single bit is all that crosses into Level 1.

STEP 4: reverting

R2 and R3 were set back to is-type level-1-2. All four running-config files match STEP 0.

Verification configs and show output

The whole test was captured on the R1 - R2 link. The LSPs quoted above are No.66 and No.74 in that file.

Download the capture of the whole test (R1 - R2, about 16 minutes)

Each STEP was captured from all four routers as three files per router. The verification config is the ..._run.txt (the final state is the one from the last STEP).

FileContents
..._show.txtshow version, show interface description, show route, and the show isis set (interface, neighbors detail, database detail, topology, adjacency-log, spf-log, lsp-log, statistics)
..._log.txtshow logging narrowed to that STEP. A logmsg marker is placed at the start of each STEP and its timestamp passed to show logging start
..._run.txtshow running-config at that STEP (the verification config for that STEP)

STEP 0: Initial state

Routershowsyslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 1: Set R1 - R2 to metric 30

Routershowsyslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 2: Revert the metric, make R2 is-type level-1

Routershowsyslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 3: Make R3 is-type level-1 too

Routershowsyslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

STEP 4: Revert everything (final state)

Routershowsyslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun

References

StandardTitleSummary
ISO/IEC 10589:2002 (second edition)Intermediate System to Intermediate System intra-domain routeing information exchange protocolThe IS-IS specification itself. This article draws on 9.8 for the position of the ATT bit in the Level 1 LSP header, 7.2.9.1 for a Level 1 IS finding the nearest Level 2 IS, 7.2.9.2 for a Level 2 IS deciding it is attached and regenerating its Level 1 LSP, and 7.2.7 for pruning equal-cost paths.
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsThe extension that carries IP routes. States that a destination not matching anything reachable within the area is routed towards the nearest Level 2 router.
RFC 5302Domain-Wide Prefix Distribution with Two-Level IS-ISPoints out that choosing an exit by the ATT bit amounts to injecting a default route with no metric information, leaving the route computation suboptimal.
RFC 7142Reclassification of RFC 1142 to HistoricStates that the document to cite is ISO/IEC 10589:2002, second edition.

Related articles