]> git.sommitrealweird.co.uk Git - quagga-debian.git/blob - doc/ospf_fundamentals.texi
New upstream version 1.2.4
[quagga-debian.git] / doc / ospf_fundamentals.texi
1 @c Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
2 @cindex OSPF Fundamentals
3 @node OSPF Fundamentals
4 @section OSPF Fundamentals
5
6 @cindex Link-state routing protocol
7 @cindex Distance-vector routing protocol
8 @acronym{OSPF} is, mostly, a link-state routing protocol. In contrast
9 to @dfn{distance-vector} protocols, such as @acronym{RIP} or
10 @acronym{BGP}, where routers describe available @dfn{paths} (i.e@. routes) 
11 to each other, in @dfn{link-state} protocols routers instead
12 describe the state of their links to their immediate neighbouring
13 routers.
14
15 @cindex Link State Announcement
16 @cindex Link State Advertisement
17 @cindex LSA flooding
18 @cindex Link State DataBase
19 Each router describes their link-state information in a message known
20 as an @acronym{LSA,Link State Advertisement}, which is then propogated
21 through to all other routers in a link-state routing domain, by a
22 process called @dfn{flooding}. Each router thus builds up an
23 @acronym{LSDB,Link State Database} of all the link-state messages. From
24 this collection of LSAs in the LSDB, each router can then calculate the
25 shortest path to any other router, based on some common metric, by
26 using an algorithm such as @url{http://www.cs.utexas.edu/users/EWD/,
27 Edgser Dijkstra}'s @acronym{SPF,Shortest Path First}.
28
29 @cindex Link-state routing protocol advantages
30 By describing connectivity of a network in this way, in terms of
31 routers and links rather than in terms of the paths through a network,
32 a link-state protocol can use less bandwidth and converge more quickly
33 than other protocols. A link-state protocol need distribute only one
34 link-state message throughout the link-state domain when a link on any
35 single given router changes state, in order for all routers to
36 reconverge on the best paths through the network. In contrast, distance
37 vector protocols can require a progression of different path update
38 messages from a series of different routers in order to converge.
39
40 @cindex Link-state routing protocol disadvantages
41 The disadvantage to a link-state protocol is that the process of
42 computing the best paths can be relatively intensive when compared to
43 distance-vector protocols, in which near to no computation need be done
44 other than (potentially) select between multiple routes. This overhead
45 is mostly negligible for modern embedded CPUs, even for networks with
46 thousands of nodes. The primary scaling overhead lies more in coping
47 with the ever greater frequency of LSA updates as the size of a
48 link-state area increases, in managing the @acronym{LSDB} and required
49 flooding.
50
51 This section aims to give a distilled, but accurate, description of the
52 more important workings of @acronym{OSPF}@ which an administrator may need
53 to know to be able best configure and trouble-shoot @acronym{OSPF}@.
54
55 @subsection OSPF Mechanisms
56
57 @acronym{OSPF} defines a range of mechanisms, concerned with detecting,
58 describing and propogating state through a network. These mechanisms
59 will nearly all be covered in greater detail further on. They may be
60 broadly classed as:
61
62 @table @dfn
63 @cindex OSPF Hello Protocol overview
64 @item The Hello Protocol
65
66 @cindex OSPF Hello Protocol
67 The OSPF Hello protocol allows OSPF to quickly detect changes in
68 two-way reachability between routers on a link. OSPF can additionally
69 avail of other sources of reachability information, such as link-state
70 information provided by hardware, or through dedicated reachability
71 protocols such as @acronym{BFD,Bi-directional Forwarding Detection}.
72
73 OSPF also uses the Hello protocol to propagate certain state between
74 routers sharing a link, for example:
75
76 @itemize @bullet
77 @item Hello protocol configured state, such as the dead-interval.
78 @item Router priority, for DR/BDR election.
79 @item DR/BDR election results.
80 @item Any optional capabilities supported by each router.
81 @end itemize
82
83 The Hello protocol is comparatively trivial and will not be explored in
84 greater detail than here.
85
86 @cindex OSPF LSA overview 
87 @item LSAs
88
89 At the heart of @acronym{OSPF} are @acronym{LSA,Link State
90 Advertisement} messages. Despite the name, some @acronym{LSA}s do not,
91 strictly speaking, describe link-state information. Common
92 @acronym{LSA}s describe information such as:
93
94 @itemize @bullet
95 @item
96 Routers, in terms of their links.
97 @item
98 Networks, in terms of attached routers.
99 @item
100 Routes, external to a link-state domain:
101
102 @itemize @bullet
103 @item External Routes
104
105 Routes entirely external to @acronym{OSPF}@. Routers originating such
106 routes are known as @acronym{ASBR,Autonomous-System Border Router}
107 routers.
108
109 @item Summary Routes
110
111 Routes which summarise routing information relating to OSPF areas
112 external to the OSPF link-state area at hand, originated by
113 @acronym{ABR,Area Boundary Router} routers.
114 @end itemize
115 @end itemize
116
117 @item LSA Flooding
118 OSPF defines several related mechanisms, used to manage synchronisation of
119 @acronym{LSDB}s between neighbours as neighbours form adjacencies and
120 the propogation, or @dfn{flooding} of new or updated @acronym{LSA}s.
121
122 @xref{OSPF Flooding}.
123
124 @cindex OSPF Areas overview
125 @item Areas
126 OSPF provides for the protocol to be broken up into multiple smaller
127 and independent link-state areas. Each area must be connected to a
128 common backbone area by an @acronym{ABR,Area Boundary Router}. These
129 @acronym{ABR} routers are responsible for summarising the link-state
130 routing information of an area into @dfn{Summary LSAs}, possibly in a
131 condensed (i.e. aggregated) form, and then originating these summaries
132 into all other areas the @acronym{ABR} is connected to.
133
134 Note that only summaries and external routes are passed between areas.
135 As these describe @emph{paths}, rather than any router link-states,
136 routing between areas hence is by @dfn{distance-vector}, @strong{not}
137 link-state.
138
139 @xref{OSPF Areas}.
140 @end table
141
142 @subsection OSPF LSAs
143
144 @acronym{LSA}s are the core object in OSPF@. Everything else in OSPF
145 revolves around detecting what to describe in LSAs, when to update
146 them, how to flood them throughout a network and how to calculate
147 routes from them. 
148
149 There are a variety of different @acronym{LSA}s, for purposes such
150 as describing actual link-state information, describing paths (i.e.
151 routes), describing bandwidth usage of links for 
152 @acronym{TE,Traffic Engineering} purposes, and even arbitrary data
153 by way of @emph{Opaque} @acronym{LSA}s.
154
155 @subsubsection LSA Header
156 All LSAs share a common header with the following information:
157
158 @itemize @bullet
159 @item Type
160
161 Different types of @acronym{LSA}s describe different things in
162 @acronym{OSPF}@. Types include:
163
164 @itemize @bullet
165 @item Router LSA
166 @item Network LSA
167 @item Network Summary LSA
168 @item Router Summary LSA
169 @item AS-External LSA
170 @end itemize
171
172 The specifics of the different types of LSA are examined below.
173
174 @item Advertising Router
175
176 The Router ID of the router originating the LSA, see @ref{ospf router-id}.
177
178 @item LSA ID
179
180 The ID of the LSA, which is typically derived in some way from the
181 information the LSA describes, e.g. a Router LSA uses the Router ID as
182 the LSA ID, a Network LSA will have the IP address of the @acronym{DR}
183 as its LSA ID@.
184
185 The combination of the Type, ID and Advertising Router ID must uniquely
186 identify the @acronym{LSA}@. There can however be multiple instances of
187 an LSA with the same Type, LSA ID and Advertising Router ID, see
188 @ref{OSPF LSA sequence number,,LSA Sequence Number}.
189
190 @item Age
191
192 A number to allow stale @acronym{LSA}s to, eventually, be purged by routers
193 from their @acronym{LSDB}s.
194
195 The value nominally is one of seconds. An age of 3600, i.e. 1 hour, is
196 called the @dfn{MaxAge}. MaxAge LSAs are ignored in routing
197 calculations. LSAs must be periodically refreshed by their Advertising
198 Router before reaching MaxAge if they are to remain valid.
199
200 Routers may deliberately flood LSAs with the age artificially set to
201 3600 to indicate an LSA is no longer valid. This is called
202 @dfn{flushing} of an LSA@.
203
204 It is not abnormal to see stale LSAs in the LSDB, this can occur where
205 a router has shutdown without flushing its LSA(s), e.g. where it has
206 become disconnected from the network. Such LSAs do little harm.
207
208 @anchor{OSPF LSA sequence number}
209 @item Sequence Number
210
211 A number used to distinguish newer instances of an LSA from older instances.
212 @end itemize
213
214 @subsubsection Link-State LSAs
215 Of all the various kinds of @acronym{LSA}s, just two types comprise the
216 actual link-state part of @acronym{OSPF}, Router @acronym{LSA}s and
217 Network @acronym{LSA}s. These LSA types are absolutely core to the
218 protocol. 
219
220 Instances of these LSAs are specific to the link-state area in which
221 they are originated. Routes calculated from these two LSA types are
222 called @dfn{intra-area routes}.
223
224 @itemize @bullet
225 @item Router LSA
226
227 Each OSPF Router must originate a router @acronym{LSA} to describe
228 itself. In it, the router lists each of its @acronym{OSPF} enabled
229 interfaces, for the given link-state area, in terms of:
230
231 @itemize @bullet
232 @item Cost
233
234 The output cost of that interface, scaled inversely to some commonly known
235 reference value, @xref{OSPF auto-cost reference-bandwidth,,auto-cost
236 reference-bandwidth}.
237
238 @item Link Type
239 @itemize @bullet
240 @item Transit Network
241
242 A link to a multi-access network, on which the router has at least one
243 Full adjacency with another router.
244
245 @item @acronym{PtP,Point-to-Point}
246
247 A link to a single remote router, with a Full adjacency. No
248 @acronym{DR, Designated Router} is elected on such links; no network
249 LSA is originated for such a link.
250
251 @item Stub
252
253 A link with no adjacent neighbours, or a host route.
254 @end itemize
255
256 @item Link ID and Data
257
258 These values depend on the Link Type:
259
260 @multitable @columnfractions .18 .32 .32
261 @headitem Link Type @tab Link ID @tab Link Data
262
263 @item Transit
264 @tab Link IP address of the @acronym{DR}
265 @tab Interface IP address
266
267 @item Point-to-Point
268 @tab Router ID of the remote router
269 @tab Local interface IP address,
270 or the @acronym{ifindex,MIB-II interface index} 
271 for unnumbered links
272
273 @item Stub
274 @tab IP address
275 @tab Subnet Mask
276
277 @end multitable
278 @end itemize
279
280 Links on a router may be listed multiple times in the Router LSA, e.g.
281 a @acronym{PtP} interface on which OSPF is enabled must @emph{always}
282 be described by a Stub link in the Router @acronym{LSA}, in addition to
283 being listed as PtP link in the Router @acronym{LSA} if the adjacency
284 with the remote router is Full.
285
286 Stub links may also be used as a way to describe links on which OSPF is
287 @emph{not} spoken, known as @dfn{passive interfaces}, see @ref{OSPF
288 passive-interface,,passive-interface}.
289
290 @item Network LSA
291
292 On multi-access links (e.g. ethernets, certain kinds of ATM and X@.25
293 configurations), routers elect a @acronym{DR}@. The @acronym{DR} is
294 responsible for originating a Network @acronym{LSA}, which helps reduce
295 the information needed to describe multi-access networks with multiple
296 routers attached. The @acronym{DR} also acts as a hub for the flooding of
297 @acronym{LSA}s on that link, thus reducing flooding overheads.
298
299 The contents of the Network LSA describes the:
300
301 @itemize @bullet
302 @item Subnet Mask
303
304 As the @acronym{LSA} ID of a Network LSA must be the IP address of the
305 @acronym{DR}, the Subnet Mask together with the @acronym{LSA} ID gives
306 you the network address.
307
308 @item Attached Routers
309
310 Each router fully-adjacent with the @acronym{DR} is listed in the LSA,
311 by their Router-ID. This allows the corresponding Router @acronym{LSA}s to be
312 easily retrieved from the @acronym{LSDB}@.
313 @end itemize
314 @end itemize
315
316 Summary of Link State LSAs:
317
318 @multitable @columnfractions .18 .32 .40
319 @headitem LSA Type @tab LSA ID Describes @tab LSA Data Describes
320
321 @item Router LSA 
322 @tab The Router ID 
323 @tab The @acronym{OSPF} enabled links of the router, within
324      a specific link-state area.
325
326 @item Network LSA
327 @tab The IP address of the @acronym{DR} for the network
328 @tab The Subnet Mask of the network, and the Router IDs of all routers
329      on the network.
330 @end multitable
331
332 With an LSDB composed of just these two types of @acronym{LSA}, it is
333 possible to construct a directed graph of the connectivity between all
334 routers and networks in a given OSPF link-state area. So, not
335 surprisingly, when OSPF routers build updated routing tables, the first
336 stage of @acronym{SPF} calculation concerns itself only with these two
337 LSA types. 
338
339 @subsubsection Link-State LSA Examples
340
341 The example below (@pxref{OSPF Link-State LSA Example}) shows two
342 @acronym{LSA}s, both originated by the same router (Router ID
343 192.168.0.49) and with the same @acronym{LSA} ID (192.168.0.49), but of
344 different LSA types.
345
346 The first LSA being the router LSA describing 192.168.0.49's links: 2 links
347 to multi-access networks with fully-adjacent neighbours (i.e. Transit
348 links) and 1 being a Stub link (no adjacent neighbours).
349
350 The second LSA being a Network LSA, for which 192.168.0.49 is the
351 @acronym{DR}, listing the Router IDs of 4 routers on that network which
352 are fully adjacent with 192.168.0.49.
353
354 @anchor{OSPF Link-State LSA Example}
355 @example
356 # show ip ospf database router 192.168.0.49
357
358        OSPF Router with ID (192.168.0.53)
359
360
361                 Router Link States (Area 0.0.0.0)
362
363   LS age: 38
364   Options: 0x2  : *|-|-|-|-|-|E|*
365   LS Flags: 0x6  
366   Flags: 0x2 : ASBR
367   LS Type: router-LSA
368   Link State ID: 192.168.0.49 
369   Advertising Router: 192.168.0.49
370   LS Seq Number: 80000f90
371   Checksum: 0x518b
372   Length: 60
373    Number of Links: 3
374
375     Link connected to: a Transit Network
376      (Link ID) Designated Router address: 192.168.1.3
377      (Link Data) Router Interface address: 192.168.1.3
378       Number of TOS metrics: 0
379        TOS 0 Metric: 10
380
381     Link connected to: a Transit Network
382      (Link ID) Designated Router address: 192.168.0.49
383      (Link Data) Router Interface address: 192.168.0.49
384       Number of TOS metrics: 0
385        TOS 0 Metric: 10
386
387     Link connected to: Stub Network
388      (Link ID) Net: 192.168.3.190
389      (Link Data) Network Mask: 255.255.255.255
390       Number of TOS metrics: 0
391        TOS 0 Metric: 39063
392 # show ip ospf database network 192.168.0.49
393
394        OSPF Router with ID (192.168.0.53)
395
396
397                 Net Link States (Area 0.0.0.0)
398
399   LS age: 285
400   Options: 0x2  : *|-|-|-|-|-|E|*
401   LS Flags: 0x6  
402   LS Type: network-LSA
403   Link State ID: 192.168.0.49 (address of Designated Router)
404   Advertising Router: 192.168.0.49
405   LS Seq Number: 80000074
406   Checksum: 0x0103
407   Length: 40
408   Network Mask: /29
409         Attached Router: 192.168.0.49
410         Attached Router: 192.168.0.52
411         Attached Router: 192.168.0.53
412         Attached Router: 192.168.0.54
413 @end example
414
415 Note that from one LSA, you can find the other. E.g. Given the
416 Network-LSA you have a list of Router IDs on that network, from which
417 you can then look up, in the local @acronym{LSDB}, the matching Router
418 LSA@. From that Router-LSA you may (potentially) find links to other
419 Transit networks and Routers IDs which can be used to lookup the
420 corresponding Router or Network LSA@. And in that fashion, one can find
421 all the Routers and Networks reachable from that starting @acronym{LSA}@.
422
423 Given the Router LSA instead, you have the IP address of the
424 @acronym{DR} of any attached transit links. Network LSAs will have that IP
425 as their LSA ID, so you can then look up that Network LSA and from that
426 find all the attached routers on that link, leading potentially to more
427 links and Network and Router LSAs, etc. etc.
428
429 From just the above two @acronym{LSA}s, one can already see the
430 following partial topology:
431 @example
432 @group
433
434       
435    --------------------- Network: ......
436             |            Designated Router IP: 192.168.1.3
437             |
438       IP: 192.168.1.3
439        (transit link)
440         (cost: 10)
441    Router ID: 192.168.0.49(stub)---------- IP: 192.168.3.190/32
442         (cost: 10)        (cost: 39063)
443        (transit link)
444       IP: 192.168.0.49
445             |
446             |
447 ------------------------------ Network: 192.168.0.48/29
448   |        |           |       Designated Router IP: 192.168.0.49
449   |        |           |
450   |        |     Router ID: 192.168.0.54
451   |        |
452   |   Router ID: 192.168.0.53
453   |
454 Router ID: 192.168.0.52
455 @end group
456 @end example
457
458 Note the Router IDs, though they look like IP addresses and often are
459 IP addresses, are not strictly speaking IP addresses, nor need they be
460 reachable addresses (though, OSPF will calculate routes to Router IDs).
461
462 @subsubsection External LSAs
463
464 External, or "Type 5", @acronym{LSA}s describe routing information which is
465 entirely external to @acronym{OSPF}, and is "injected" into
466 @acronym{OSPF}@. Such routing information may have come from another
467 routing protocol, such as RIP or BGP, they may represent static routes
468 or they may represent a default route.
469
470 An @acronym{OSPF} router which originates External @acronym{LSA}s is known as an
471 @acronym{ASBR,AS Boundary Router}. Unlike the link-state @acronym{LSA}s, and
472 most other @acronym{LSA}s, which are flooded only within the area in
473 which they originate, External @acronym{LSA}s are flooded through-out
474 the @acronym{OSPF} network to all areas capable of carrying External
475 @acronym{LSA}s (@pxref{OSPF Areas}).
476
477 Routes internal to OSPF (intra-area or inter-area) are always preferred
478 over external routes.
479
480 The External @acronym{LSA} describes the following:
481
482 @itemize @bullet
483 @item IP Network number
484
485 The IP Network number of the route is described by the @acronym{LSA} ID
486 field.
487
488 @item IP Network Mask
489
490 The body of the External LSA describes the IP Network Mask of the
491 route. This, together with the @acronym{LSA} ID, describes the prefix
492 of the IP route concerned.
493
494 @item Metric
495
496 The cost of the External Route. This cost may be an OSPF cost (also
497 known as a "Type 1" metric), i.e. equivalent to the normal OSPF costs,
498 or an externally derived cost ("Type 2" metric) which is not comparable
499 to OSPF costs and always considered larger than any OSPF cost. Where
500 there are both Type 1 and 2 External routes for a route, the Type 1 is
501 always preferred.
502
503 @item Forwarding Address
504
505 The address of the router to forward packets to for the route. This may
506 be, and usually is, left as 0 to specify that the ASBR originating the
507 External @acronym{LSA} should be used. There must be an internal OSPF
508 route to the forwarding address, for the forwarding address to be
509 useable.
510
511 @item Tag
512
513 An arbitrary 4-bytes of data, not interpreted by OSPF, which may
514 carry whatever information about the route which OSPF speakers desire.
515 @end itemize
516
517 @subsubsection AS External LSA Example
518
519 To illustrate, below is an example of an External @acronym{LSA} in the
520 @acronym{LSDB} of an OSPF router. It describes a route to the IP prefix
521 of 192.168.165.0/24, originated by the ASBR with Router-ID
522 192.168.0.49. The metric of 20 is external to OSPF. The forwarding
523 address is 0, so the route should forward to the originating ASBR if
524 selected.
525
526 @example
527 @group
528 # show ip ospf database external 192.168.165.0
529   LS age: 995
530   Options: 0x2  : *|-|-|-|-|-|E|*
531   LS Flags: 0x9
532   LS Type: AS-external-LSA
533   Link State ID: 192.168.165.0 (External Network Number)
534   Advertising Router: 192.168.0.49
535   LS Seq Number: 800001d8
536   Checksum: 0xea27
537   Length: 36
538   Network Mask: /24
539         Metric Type: 2 (Larger than any link state path)
540         TOS: 0
541         Metric: 20
542         Forward Address: 0.0.0.0
543         External Route Tag: 0
544 @end group
545 @end example
546
547 We can add this to our partial topology from above, which now looks
548 like:
549 @example
550 @group
551    --------------------- Network: ......
552             |            Designated Router IP: 192.168.1.3
553             |
554       IP: 192.168.1.3      /---- External route: 192.168.165.0/24
555        (transit link)     /                Cost: 20 (External metric)
556         (cost: 10)       /
557    Router ID: 192.168.0.49(stub)---------- IP: 192.168.3.190/32
558         (cost: 10)        (cost: 39063)
559        (transit link)
560       IP: 192.168.0.49
561             |
562             |
563 ------------------------------ Network: 192.168.0.48/29
564   |        |           |       Designated Router IP: 192.168.0.49
565   |        |           |
566   |        |     Router ID: 192.168.0.54
567   |        |
568   |   Router ID: 192.168.0.53
569   |
570 Router ID: 192.168.0.52
571 @end group
572 @end example
573
574 @subsubsection Summary LSAs
575
576 Summary LSAs are created by @acronym{ABR}s to summarise the destinations available within one area to other areas. These LSAs may describe IP networks, potentially in aggregated form, or @acronym{ASBR} routers. 
577
578 @anchor{OSPF Flooding}
579 @subsection OSPF Flooding
580
581 @anchor{OSPF Areas}
582 @subsection OSPF Areas