This documentation is for an older version of the software. If you are using the current version of Cumulus Linux, this content may not be up to date. The current version of the documentation is available here. If you are redirected to the main page of the user guide, then this page may have been renamed; please search for it there.

Open Shortest Path First v3 - OSPFv3 - Protocol

OSPFv3 is a revised version of OSPFv2 to support the IPv6 address family. Refer to Open Shortest Path First (OSPF) Protocol for a discussion on the basic concepts, which remain the same between the two versions.

OSPFv3 has changed the formatting in some of the packets and LSAs either as a necessity to support IPv6 or to improve the protocol behavior based on OSPFv2 experience. Most notably, v3 defines a new LSA, called intra-area prefix LSA to separate out the advertisement of stub networks attached to a router from the router LSA. It is a clear separation of node topology from prefix reachability and lends itself well to an optimized SPF computation.

IETF has defined extensions to OSPFv3 to support multiple address families (that is, both IPv6 and IPv4). Quagga does not support it yet.

Configuring OSPFv3

Configuring OSPFv3 involves the following tasks:

  1. Activating the OSPF6 and Zebra daemons:

    1. Add the following to /etc/quagga/daemons:

    2. Restart the quagga service to start the new daemons:

      cumulus@switch:~$ sudo service quagga restart
  2. Enabling OSPF6 and map interfaces to areas. From Quagga’s vtysh shell:

    cumulus@switch:~$ sudo vtysh
    Hello, this is Quagga (version 0.99.21).
    Copyright 1996-2005 Kunihiro Ishiguro, et al.
    R3# conf t
    R3# configure  terminal
    R3(config)# router ospf6
    R3(config-router)# router-id 0.0.1
    R3(config-router)# log-adjacency-changes detail
    R3(config-router)# interface swp1 area
    R3(config-router)# interface swp2 area

    Or through cl-ospf6, from the Cumulus Linux shell:

    cumulus@switch:~$ sudo cl-ospf6 router set id
    cumulus@switch:~$ sudo cl-ospf6 router set log-adjacency-changes detail
    cumulus@switch:~$ sudo cl-ospf6 interface swp1 set area
    cumulus@switch:~$ sudo cl-ospf6 interface swp2 set area
  3. Defining (custom) OSPF6 parameters on the interfaces:

    1. Network type (such as point-to-point, broadcast)

    2. Timer tuning (for example, hello interval)

    Using Quagga’s vtysh:

    R3(config)# interface swp1
    R3(config-if)# ipv6 ospf6 network point-to-point
    R3(config-if)# ipv6 ospf6 hello-interval 5

    Or through cl-ospf6, from the Cumulus Linux shell:

    cumulus@switch:~$ sudo cl-ospf6 interface swp1 set network point-to-point
    cumulus@switch:~$ sudo cl-ospf6 interface swp1 set hello-interval 5

The OSPFv3 configuration is saved in /etc/quagga/ospf6d.conf.

Unnumbered Interfaces

Unlike OSPFv2, OSPFv3 intrinsically supports unnumbered interfaces. Forwarding to the next hop router is done entirely using IPv6 link local addresses. Therefore, you are not required to configure any global IPv6 address to interfaces between routers.

Debugging OSPF

See Debugging OSPF for OSPFv2 for the troubleshooting discussion. The equivalent commands are:

cumulus@switch:~$ sudo vtysh
R3# show ipv6 ospf6 neighbor
R3# show ipv6 ospf6 database [detail | dump | internal |
                                         as-external | group-membership |
                                         inter-prefix | inter-router |
                                         intra-prefix | link | network |
                                         router | type-7 | * | adv-router |
                                         linkstate-id | self-originated]
R3# show ip ospf route

Another helpful command is show ipv6 ospf6 [area <id>] spf tree. It dumps the node topology as computed by SPF to help visualize the network view.

Configuration Files

  • /etc/quagga/daemons
  • /etc/quagga/ospf6d.conf

Supported RFCs