@node OSPFv2, OSPFv3, RIPng, Top
@comment  node-name,  next,  previous,  up
@chapter OSPFv2

  OSPF version 2 is a routing protocol which described in
@asis{RFC2328} - @cite{OSPF Version 2}.  OSPF is IGP (Interior Gateway
Protocols).  Compared with RIP, OSPF can provide scalable network
support and faster convergence time.  OSPF is widely used in large
networks such as ISP backbone and enterprise networks.

@menu
* Configuring ospfd::           
* OSPF router::                 
* OSPF area::                   
* OSPF interface::              
* Redistribute routes to OSPF::  
* Showing OSPF information::    
* Debugging OSPF::              
@end menu

@node Configuring ospfd, OSPF router, OSPFv2, OSPFv2
@comment  node-name,  next,  previous,  up
@section Configuring ospfd

There is no @command{ospfd} specific options.  Common options can be
specified (@pxref{Common Invocation Options}) to @command{ospfd}.
@command{ospfd} needs interface information from @command{zebra}.  So
please make it sure @command{zebra} is running before invoking
@command{ospfd}.

Like other daemons, @command{ospfd} configuration is done in OSPF
specific configuration file @file{ospfd.conf}.

@node OSPF router, OSPF area, Configuring ospfd, OSPFv2
@comment  node-name,  next,  previous,  up
@section OSPF router

To start OSPF process you have to specify the OSPF router.  As of this
writing, @command{ospfd} does not support multiple OSPF processes.

@deffn Command {router ospf} {}
@deffnx Command {no router ospf} {}
Enable or disable the OSPF process.  @command{ospfd} does not yet
support multiple OSPF processes.  So you can not specify an OSPF process
number.
@end deffn

@deffn {OSPF Command} {ospf router-id @var{a.b.c.d}} {}
@deffnx {OSPF Command} {no ospf router-id} {}
@end deffn

@deffn {OSPF Command} {ospf abr-type @var{type}} {}
@deffnx {OSPF Command} {no ospf abr-type @var{type}} {}
@var{type} can be cisco|ibm|shortcut|standard
More information regarding the behaviour controlled by this command can
be found in draft-ietf-ospf-abr-alt-05.txt and 
draft-ietf-ospf-shortcut-abr-02.txt
Quote: "Though the definition of the Area Border Router (ABR)
in the OSPF specification does not require a router with multiple
attached areas to have a backbone connection, it is actually
necessary to provide successful routing to the inter-area and
external destinations. If this requirement is not met, all traffic
destined for the areas not connected to such an ABR or out of the
OSPF domain, is dropped.  This document describes alternative ABR
behaviors implemented in Cisco and IBM routers."
@end deffn

@deffn {OSPF Command} {ospf rfc1583compatibility} {}
@deffnx {OSPF Command} {no ospf rfc1583compatibility} {}
This rfc2328, the sucessor to rfc1583, suggests according to section 
G.2 (changes) in section 16.4 a change to the path preference
algorithm that prevents possible routing loops that were possible in
the old version of OSPFv2. More specifically it demands that inter-area
paths and intra-area path are now of equal preference but still both
preferred to external paths.
@end deffn

@deffn {OSPF Command} {passive interface @var{interface}} {}
@deffnx {OSPF Command} {no passive interface @var{interface}} {}
@end deffn

@deffn {OSPF Command} {timers spf <0-4294967295> <0-4294967295>} {}
@deffnx {OSPF Command} {no timers spf} {}
@end deffn

@deffn {OSPF Command} {refresh group-limit <0-10000>} {}
@deffnx {OSPF Command} {refresh per-slice <0-10000>} {}
@deffnx {OSPF Command} {refresh age-diff <0-10000>} {}
@end deffn

@deffn {OSPF Command} {auto-cost refrence-bandwidth <1-4294967>} {}
@deffnx {OSPF Command} {no auto-cost refrence-bandwidth} {}
@end deffn

@deffn {OSPF Command} {network @var{a.b.c.d/m} area @var{a.b.c.d}} {}
@deffnx {OSPF Command} {network @var{a.b.c.d/m} area @var{<0-4294967295>}} {}
@deffnx {OSPF Command} {no network @var{a.b.c.d/m} area @var{a.b.c.d}} {}
@deffnx {OSPF Command} {no network @var{a.b.c.d/m} area @var{<0-4294967295>}} {}
This command specifies the OSPF enabled interface.  If the interface has
an address of 10.0.0.1/8 then the command below provides network
information to the ospf routers
@example
@group
router ospf
 network 10.0.0.0/8 area 0
@end group
@end example
the network command's mask length should be the same as the interface
address's mask.
@end deffn

@node OSPF area, OSPF interface, OSPF router, OSPFv2
@comment  node-name,  next,  previous,  up
@section OSPF area

@deffn {OSPF Command} {area @var{a.b.c.d} range @var{a.b.c.d/m}} {}
@deffnx {OSPF Command} {area <0-4294967295> range @var{a.b.c.d/m}} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} range @var{a.b.c.d/m}} {}
@deffnx {OSPF Command} {no area <0-4294967295> range @var{a.b.c.d/m}} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} range IPV4_PREFIX suppress} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} range IPV4_PREFIX suppress} {}
@deffnx {OSPF Command} {area @var{a.b.c.d} range IPV4_PREFIX substitute IPV4_PREFIX} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} range IPV4_PREFIX substitute IPV4_PREFIX} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} virtual-link @var{a.b.c.d}} {}
@deffnx {OSPF Command} {area <0-4294967295> virtual-link @var{a.b.c.d}} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} virtual-link @var{a.b.c.d}} {}
@deffnx {OSPF Command} {no area <0-4294967295> virtual-link @var{a.b.c.d}} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} shortcut} {}
@deffnx {OSPF Command} {area <0-4294967295> shortcut} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} shortcut} {}
@deffnx {OSPF Command} {no area <0-4294967295> shortcut} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} stub} {}
@deffnx {OSPF Command} {area <0-4294967295> stub} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} stub} {}
@deffnx {OSPF Command} {no area <0-4294967295> stub} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} stub no-summary} {}
@deffnx {OSPF Command} {area <0-4294967295> stub no-summary} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} stub no-summary} {}
@deffnx {OSPF Command} {no area <0-4294967295> stub no-summary} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} default-cost <0-16777215>} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} default-cost <0-16777215>} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} export-list NAME} {}
@deffnx {OSPF Command} {area <0-4294967295> export-list NAME} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} export-list NAME} {}
@deffnx {OSPF Command} {no area <0-4294967295> export-list NAME} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} import-list NAME} {}
@deffnx {OSPF Command} {area <0-4294967295> import-list NAME} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} import-list NAME} {}
@deffnx {OSPF Command} {no area <0-4294967295> import-list NAME} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} authentication} {}
@deffnx {OSPF Command} {area <0-4294967295> authentication} {}
@deffnx {OSPF Command} {no area @var{a.b.c.d} authentication} {}
@deffnx {OSPF Command} {no area <0-4294967295> authentication} {}
@end deffn

@deffn {OSPF Command} {area @var{a.b.c.d} authentication message-digest} {}
@deffnx {OSPF Command} {area <0-4294967295> authentication message-digest} {}
@end deffn

@node OSPF interface, Redistribute routes to OSPF, OSPF area, OSPFv2
@comment  node-name,  next,  previous,  up
@section OSPF interface

@deffn {Interface Command} {ip ospf authentication-key AUTH_KEY} {}
@deffnx {Interface Command} {no ip ospf authentication-key} {}
Set OSPF authentication key to a simple password.  After setting @var{AUTH_KEY},
all OSPF packets are authenticated. @var{AUTH_KEY} has length up to 8 chars.
@end deffn

@deffn {Interface Command} {ip ospf message-digest-key KEYID md5 KEY} {}
@deffnx {Interface Command} {no ip ospf message-digest-key} {}
Set OSPF authentication key to a cryptographic password.  The cryptographic
algorithm is MD5.  KEYID identifies secret key used to create the message
digest.  KEY is the actual message digest key up to 16 chars.
@end deffn

@deffn {Interface Command} {ip ospf cost <1-65535>} {}
@deffnx {Interface Command} {no ip ospf cost} {}
Set link cost for the specified interface.  The cost value is set to router-LSA's
metric field and used for SPF calculation.
@end deffn

@deffn {Interface Command} {ip ospf dead-interval <1-65535>} {}
@deffnx {Interface Command} {no ip ospf dead-interval} {}
Set number of seconds for RouterDeadInterval timer value used for Wait Timer
and Inactivity Timer.  This value must be the same for all routers attached
to a common network.  The default value is 40 seconds.
@end deffn

@deffn {Interface Command} {ip ospf hello-interval <1-65535>} {}
@deffnx {Interface Command} {no ip ospf hello-interval} {}
Set number of seconds for HelloInterval timer value.  Setting this value,
Hello packet will be sent every timer value seconds on the specified interface.
This value must be the same for all routers attached to a common network.
The default value is 10 seconds.
@end deffn

@deffn {Interface Command} {ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)} {}
@deffnx {Interface Command} {no ip ospf network} {}
Set explicitly network type for specifed interface.
@end deffn

@deffn {Interface Command} {ip ospf priority <0-255>} {}
@deffnx {Interface Command} {no ip ospf priority} {}
Set RouterPriority integer value.  Setting higher value, router will be more
eligible to become Designated Router.  Setting the value to 0, router is no
longer eligible to Designated Router.
The default value is 1.
@end deffn

@deffn {Interface Command} {ip ospf retransmit-interval <1-65535>} {}
@deffnx {Interface Command} {no ip ospf retransmit interval} {}
Set number of seconds for RxmtInterval timer value.  This value is used
when retransmitting Database Description and Link State Request packets.
The default value is 5 seconds.
@end deffn

@deffn {Interface Command} {ip ospf transmit-delay} {}
@deffnx {Interface Command} {no ip ospf transmit-delay} {}
Set number of seconds for InfTransDelay value.  LSAs' age should be 
incremented by this value when transmitting.
The default value is 1 seconds.
@end deffn

@node Redistribute routes to OSPF, Showing OSPF information, OSPF interface, OSPFv2
@comment  node-name,  next,  previous,  up
@section Redistribute routes to OSPF

@deffn {OSPF Command} {redistribute (kernel|connected|static|rip|bgp)} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) @var{route-map}} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric-type (1|2)} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) route-map @var{word}} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric <0-16777214>} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> route-map @var{word}} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214>} {}
@deffnx {OSPF Command} {redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> route-map @var{word}} {}
@deffnx {OSPF Command} {no redistribute (kernel|connected|static|rip|bgp)} {}
@end deffn

@deffn {OSPF Command} {default-information originate} {}
@deffnx {OSPF Command} {default-information originate metric <0-16777214>} {}
@deffnx {OSPF Command} {default-information originate metric <0-16777214> metric-type (1|2)} {}
@deffnx {OSPF Command} {default-information originate metric <0-16777214> metric-type (1|2) route-map @var{word}} {}
@deffnx {OSPF Command} {default-information originate always} {}
@deffnx {OSPF Command} {default-information originate always metric <0-16777214>} {}
@deffnx {OSPF Command} {default-information originate always metric <0-16777214> metric-type (1|2)} {}
@deffnx {OSPF Command} {default-information originate always metric <0-16777214> metric-type (1|2) route-map @var{word}} {}
@deffnx {OSPF Command} {no default-information originate} {}
@end deffn

@deffn {OSPF Command} {distribute-list NAME out (kernel|connected|static|rip|ospf} {}
@deffnx {OSPF Command} {no distribute-list NAME out (kernel|connected|static|rip|ospf} {}
@end deffn

@deffn {OSPF Command} {default-metric <0-16777214>} {}
@deffnx {OSPF Command} {no default-metric} {}
@end deffn

@deffn {OSPF Command} {distance <1-255>} {}
@deffnx {OSPF Command} {no distance <1-255>} {}
@end deffn

@deffn {OSPF Command} {distance ospf (intra-area|inter-area|external) <1-255>} {}
@deffnx {OSPF Command} {no distance ospf} {}
@end deffn

@deffn {Command} {router zebra} {}
@deffnx {Command} {no router zebra} {}
@end deffn

@node Showing OSPF information, Debugging OSPF, Redistribute routes to OSPF, OSPFv2
@comment  node-name,  next,  previous,  up
@section Showing OSPF information

@deffn {Command} {show ip ospf} {}
@end deffn

@deffn {Command} {show ip ospf interface [INTERFACE]} {}
@end deffn

@deffn {Command} {show ip ospf neighbor} {}
@deffnx {Command} {show ip ospf neighbor INTERFACE} {}
@deffnx {Command} {show ip ospf neighbor detail} {}
@deffnx {Command} {show ip ospf neighbor INTERFACE detail} {}
@end deffn

@deffn {Command} {show ip ospf database} {}
@end deffn

@deffn {Command} {show ip ospf database (asbr-summary|external|network|router|summary)} {}
@deffnx {Command} {show ip ospf database (asbr-summary|external|network|router|summary) @var{link-state-id}} {}
@deffnx {Command} {show ip ospf database (asbr-summary|external|network|router|summary) @var{link-state-id} adv-router @var{adv-router}} {}
@deffnx {Command} {show ip ospf database (asbr-summary|external|network|router|summary) adv-router @var{adv-router}} {}
@deffnx {Command} {show ip ospf database (asbr-summary|external|network|router|summary) @var{link-state-id} self-originate} {}
@deffnx {Command} {show ip ospf database (asbr-summary|external|network|router|summary) self-originate} {}
@end deffn

@deffn {Command} {show ip ospf database max-age} {}
@end deffn

@deffn {Command} {show ip ospf database self-originate} {}
@end deffn

@deffn {Command} {show ip ospf refresher} {}
@end deffn

@deffn {Command} {show ip ospf route} {}
@end deffn

@node Debugging OSPF,  , Showing OSPF information, OSPFv2
@comment  node-name,  next,  previous,  up
@section Debugging OSPF

@deffn {Command} {debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]} {}
@deffnx {Command} {no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]} {}
@end deffn

@deffn {Command} {debug ospf ism} {}
@deffnx {Command} {debug ospf ism (status|events|timers)} {}
@deffnx {Command} {no debug ospf ism} {}
@deffnx {Command} {no debug ospf ism (status|events|timers)} {}
@end deffn

@deffn {Command} {debug ospf nsm} {}
@deffnx {Command} {debug ospf nsm (status|events|timers)} {}
@deffnx {Command} {no debug ospf nsm} {}
@deffnx {Command} {no debug ospf nsm (status|events|timers)} {}
@end deffn

@deffn {Command} {debug ospf lsa} {}
@deffnx {Command} {debug ospf lsa (generate|flooding|refresh)} {}
@deffnx {Command} {no debug ospf lsa} {}
@deffnx {Command} {no debug ospf lsa (generate|flooding|refresh)} {}
@end deffn

@deffn {Command} {debug ospf zebra} {}
@deffnx {Command} {debug ospf zebra (interface|redistribute)} {}
@deffnx {Command} {no debug ospf zebra} {}
@deffnx {Command} {no debug ospf zebra (interface|redistribute)} {}
@end deffn

@deffn {Command} {show debugging ospf} {}
@end deffn

