Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OSPFv2 Point-to-Multipoint

p2mp — point-to-multipoint

  • Usually Hub-and-Spoke topologies
  • No DR election for this network type
  • Install a /32

What is Hub and Spoke

This network type assumes that spoke sites cannot reach each other directly, but are in the same L3 subnet.

This network type also assumes hair-pins are OK (traffic must go in and out of the same interface on one node)

Since each router is in the same L3 subnet, but not directly L2 reachable, each router will advertise it’s own, in subnet, IP as a /32.

The use-case for this network type is frame-relay, older network types where traveling through the hub is required.

Multicast

If multicast works (even carried by mGRE) usepoint-to-multipoint.

If multicast does not work, use point-to-point non-broadcast and manually define the neighbors under OSPF.

An Example Problem

A network is set up on Ethernet.

… Maybe it looks like this.

       10.12.34.0/24      
                          
┌──────┐          ┌──────┐
│  R1  ├─┐      ┌─┤  R2  │
└──────┘ │      │ └──────┘
        ┌┴──────┴┐        
        │ Switch │        
        └┬──────┬┘        
┌──────┐ │      │ ┌──────┐
│  R3  ├─┘      └─┤  R4  │
└──────┘          └──────┘

This will not work.

IPs are

  • 10.12.34.1
  • 10.12.34.2
  • 10.12.34.3
  • 10.12.34.4

RIDs are

  • 1.1.1.1
  • 2.2.2.2
  • 3.3.3.3
  • 4.4.4.4

OSPF Network Types, attempted.

  • point-to-multipoint
  • point-to-multipoint non-broadcast

R1 - Doesn’t Form a Full Mesh

4.4.4.4 is broken.

Technically it flaps, going up and down.

R1# show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
4.4.4.4           0   EXSTART/  -     00:01:59    10.12.34.4      Ethernet0/0
2.2.2.2           0   FULL/  -        00:01:59    10.12.34.2      Ethernet0/0
3.3.3.3           0   FULL/  -        00:01:45    10.12.34.3      Ethernet0/0

R1 OSPF Debugs Show Adjacency Problems

  • R1-R4 Hello messages seem to work fine
  • DBD messages from R1 never get to R4.
debug ip ospf adjacency
debug ip ospf hello
R1# show debug
Packet Infra debugs:

Ip Address                                               Port
------------------------------------------------------|----------

OSPF:
  OSPF hello debugging is on
  OSPF adjacency debugging is on

R1#
*Jun  2 23:40:18.278: OSPF-1 HELLO Et0/0: Rcv hello from 4.4.4.4 area 0 10.12.34.4
*Jun  2 23:40:18.278: OSPF-1 ADJ   Et0/0: 2 Way Communication to 4.4.4.4, state 2WAY
*Jun  2 23:40:18.278: OSPF-1 ADJ   Et0/0: Nbr 4.4.4.4: Prepare dbase exchange
*Jun  2 23:40:18.278: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:18.397: OSPF-1 HELLO Et0/0: Rcv hello from 3.3.3.3 area 0 10.12.34.3
*Jun  2 23:40:22.784: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:22.784: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [1]
*Jun  2 23:40:25.728: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.4 area 0 from 10.12.34.1
*Jun  2 23:40:25.728: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.2 area 0 from 10.12.34.1
*Jun  2 23:40:25.728: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.3 area 0 from 10.12.34.1
*Jun  2 23:40:27.481: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:27.481: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [2]
*Jun  2 23:40:28.018: OSPF-1 HELLO Et0/0: Rcv hello from 2.2.2.2 area 0 10.12.34.2
*Jun  2 23:40:32.481: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:32.481: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [3]
*Jun  2 23:40:37.083: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:37.083: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [4]
*Jun  2 23:40:41.603: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:41.603: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [5]
*Jun  2 23:40:45.534: OSPF-1 HELLO Et0/0: Rcv hello from 3.3.3.3 area 0 10.12.34.3
*Jun  2 23:40:46.486: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:46.486: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [6]
*Jun  2 23:40:47.070: OSPF-1 HELLO Et0/0: Rcv hello from 4.4.4.4 area 0 10.12.34.4
*Jun  2 23:40:51.106: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:51.106: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [7]
*Jun  2 23:40:53.805: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.4 area 0 from 10.12.34.1
*Jun  2 23:40:53.805: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.2 area 0 from 10.12.34.1
*Jun  2 23:40:53.805: OSPF-1 HELLO Et0/0: Send hello to 10.12.34.3 area 0 from 10.12.34.1
*Jun  2 23:40:55.769: OSPF-1 ADJ   Et0/0: Send DBD to 4.4.4.4 seq 0xB07 opt 0x52 flag 0x7 len 32
*Jun  2 23:40:55.769: OSPF-1 ADJ   Et0/0: Retransmitting DBD to 4.4.4.4 [8]
*Jun  2 23:40:55.909: OSPF-1 HELLO Et0/0: Rcv hello from 2.2.2.2 area 0 10.12.34.2

R1 - Routing Table is Weird

R1 thinks the way to get to R4 is via R2.

Notice the other OSPF routers are fine.

R1# show ip route

[output omitted]

      10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
C        10.12.34.0/24 is directly connected, Ethernet0/0
L        10.12.34.1/32 is directly connected, Ethernet0/0
O        10.12.34.2/32 [110/10] via 10.12.34.2, 00:35:13, Ethernet0/0
O        10.12.34.3/32 [110/10] via 10.12.34.3, 00:35:12, Ethernet0/0
O        10.12.34.4/32 [110/20] via 10.12.34.2, 00:34:19, Ethernet0/0

R1 ARP is Correct.

L2 programming for a spoke site doesn’t matter for Hub-and-Spoke designs.

R1# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.12.34.1              -   aabb.cc00.3d00  ARPA   Ethernet0/0
Internet  10.12.34.2            128   aabb.cc00.4d00  ARPA   Ethernet0/0
Internet  10.12.34.3            128   aabb.cc00.4e00  ARPA   Ethernet0/0
Internet  10.12.34.4            128   aabb.cc00.3e00  ARPA   Ethernet0/0

R1 - CEF Is Wrong

This is how we know something is very wrong, a paradigm has been broken.

CEF is using the next-hop of R2.

R1# show ip cef 10.12.34.4 detail 
10.12.34.4/32, epoch 0
  Adj source: IP adj out of Ethernet0/0, addr 10.12.34.4 7162A5807E90
    Dependent covered prefix type adjfib, cover 10.12.34.0/24
  nexthop 10.12.34.2 Ethernet0/0

Checking Router LSAs

Self-Originated Router-LSA on R4

Point-to-Multipoint describes the network as a series of /32 links. What does that mean?

It means when a router goes FULL the first thing it does is advertise its own connected IP directly into OSPF as a stub Network.

R4# show ip ospf database router self-originate 

            OSPF Router with ID (4.4.4.4) (Process ID 1)

                Router Link States (Area 0)

  LS age: 792
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 4.4.4.4
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000016
  Checksum: 0x9FC5
  Length: 48
  Number of Links: 2

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.12.34.4
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.12.34.4
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 0

R4 only has adjacency with R2.

R4# show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
N/A               0   DOWN/  -           -        10.12.34.3      Ethernet0/0
1.1.1.1           0   INIT/  -        00:01:59    10.12.34.1      Ethernet0/0
2.2.2.2           0   FULL/  -        00:01:53    10.12.34.2      Ethernet0/0

R2 has an adjacency with R1

R2# show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           0   FULL/  -        00:01:38    10.12.34.1      Ethernet0/0
3.3.3.3           0   EXSTART/  -     00:01:51    10.12.34.3      Ethernet0/0
4.4.4.4           0   FULL/  -        00:01:49    10.12.34.4      Ethernet0/0

Checking LSAs for the area.

Notes are embedded in the output.

R1# show ip ospf database router 

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

  LS age: 1159
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000010
  Checksum: 0xCB60
  Length: 60
  Number of Links: 3
!
! R1 is adjacent to R2
!
    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.12.34.1
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

[output omitted]

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.12.34.1
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 0


  LS age: 1155
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 8000001A
  Checksum: 0xE531
  Length: 60
  Number of Links: 3

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 1.1.1.1
     (Link Data) Router Interface address: 10.12.34.2
      Number of MTID metrics: 0
       TOS 0 Metrics: 10
!
! R2 is adjacency to R4
!
    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 4.4.4.4
     (Link Data) Router Interface address: 10.12.34.2
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.12.34.2
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 0

[output omitted]
!
! R4 advertises it's IP as a /32, via p2mp
!
  LS age: 1141
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 4.4.4.4
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000016
  Checksum: 0x9FC5
  Length: 48
  Number of Links: 2

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.12.34.4
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.12.34.4 
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 0

The Capture

OSPFv2-p2mp-failing

R1 sends a unicast DBD packet to R4, but uses the wrong mac address.

          10.12.34.0/24         
                                
    .3d00             .4d00     
   ┌──────┐          ┌──────┐   
.1 │  R1  ├─┐      ┌─┤  R2  │ .2
   └──────┘ │      │ └──────┘   
           ┌┴──────┴┐           
           │ Switch │           
           └┬──────┬┘           
   ┌──────┐ │      │ ┌──────┐   
.3 │  R3  ├─┘      └─┤  R4  │ .4
   └──────┘          └──────┘   
    .4e00             .3e00     

The Packets in Text

!
! Send a DBD Packet
!
Frame 1: Packet, 78 bytes on wire (624 bits), 78 bytes captured (624 bits)
Ethernet II, Src: aa:bb:cc:00:3d:00 (aa:bb:cc:00:3d:00), Dst: aa:bb:cc:00:4d:00 (aa:bb:cc:00:4d:00)
Internet Protocol Version 4, Src: 10.12.34.1, Dst: 10.12.34.4
Open Shortest Path First
    OSPF Header
    OSPF DB Description
    OSPF LLS Data Block
!
! Get an ICMP TTL exceeded
!
Frame 2: Packet, 70 bytes on wire (560 bits), 70 bytes captured (560 bits)
Ethernet II, Src: aa:bb:cc:00:4d:00 (aa:bb:cc:00:4d:00), Dst: aa:bb:cc:00:3d:00 (aa:bb:cc:00:3d:00)
Internet Protocol Version 4, Src: 10.12.34.2, Dst: 10.12.34.1
Internet Control Message Protocol
    Type: Time-to-live exceeded (11)
    Code: 0 (Time to live exceeded in transit)
    Checksum: 0xf0db [correct]
    [Checksum Status: Good]
    Unused: 00000000
    Internet Protocol Version 4, Src: 10.12.34.1, Dst: 10.12.34.4
    Open Shortest Path First
        OSPF Header
            Version: 2
            Message Type: DB Description (2)
            Packet Length: 32
            Source OSPF Router: 1.1.1.1

The OSPFv2 Shortest Path Topology.

OSPF using point-to-multipoint assumes the topology looks like this.

         ┌──────┐              
         │  R2  │              
         └──┬───┘              
            │                  
            │                  
          .-~~~-.              
  .- ~ ~-(       )_ _          
 /                    ~ -.     
|                          ',  
 \                         .'  
   ~- ._ ,. ,.,.,., ,.. -~     
     │     '       '    │      
     │                  │      
     │                  │      
┌────┴─┐              ┌─┴────┐ 
│  R1  │              │  R4  │ 
└──────┘              └──────┘ 

Workarounds

You can just make the routers not advertise their /32 networks using prefix suppression. This may not work in all IOS, IOS-XE versions.

interface Ethernet0/0
 ip address 10.12.34.1 255.255.255.0
 ip ospf network point-to-multipoint non-broadcast
 ip ospf prefix-suppression
 ip ospf 1 area 0
end

References

Point-to-multipoint communication - Wikipedia

Solved: OSPF Point-to-multipoint network type - Cisco Community

RFC 2328: OSPF Version 2 | RFC Editor

Cisco - IP Routing: OSPF Configuration Guide - OSPF Mechanism to Exclude Connected IP Prefixes from LSA Advertisements Cisco - IOS 15.2E

Last Modified • Sunday, June 14, 2026. 5:02 pm UTC+00:00 • Commit: 3aedc3f