Description

Why OSPFv3 would not come up between logical systems over a point-to-point links and how do we get over this problem?

Symptoms

OSPFv3 does not form adjacency between logical systems over point-to-point links because the link-local address which is used to establish the adjacency is the same for all the point-to-point links (non-broadcast medium) in the single node. This is a expected behavior as per Section 2.5.1 RFC 3513.

As per RFC 3513 section 2.5.6 link-local address is administered in the following format:

|   10     |
|  bits    |         54 bits         |          64 bits           |
+----------+-------------------------+----------------------------+
|1111111010|           0             |       interface ID         |
+----------+-------------------------+----------------------------+
The interface ID is administered as per EUI-64 Standard. For example above is shown for the link-local address of FE80::2A0:A5FF:FE5C:128B.
|         company_id       |            extension identifier            |  field
| addr+0 | addr+1 | addr+2 | addr+3 | addr+4 | addr+5 | addr+6 | addr+7 |  order 
|                                                                       |
|   02   |   A0   |   A5   |   FF   |   FE   |   5C   |   12   |   8B   |  hex
 00000010 10100000 10100101 11111111 11111110 01011100 00010010 10001011   bits
 ^  ^                                                               ^  ^
 |  |                                                               |  |
 |  most significant byte                      least significant byte  |
 most-significant bit                              least-significant bit
The extension identifier is the same for all the Point-to-point links (non-broadcast links) in a single node which makes the link-local address the same.


Solution

Configure link-local address as inet6 address from the subnet fe80::/64, which will bring up the OSPFv3 adjacency.

For example, the interface could be configured as below:

lab@Indium-m7i# show logical-systems LS1 interfaces so-0/3/2 
unit 0 {
    family inet {
        address 10.0.0.0/31;
    }
    family inet6 {
        address fe80::2a0:a5ff:fe5c:128c/64;
        address 2002:1:2:3:2a0:a5ff:fe5c:128c/64 {
            primary;
        }
    }
}