Discussion:
Multiple OSPF instances on one interface
Tore Anderson
2014-10-10 06:48:36 UTC
Permalink
Hi,

I'm trying to run two instances of OSPFv3 on a single interface, one in
stub mode, the other in normal broadcast mode. It doesn't seem to work,
in one of the protocols the interface ends up being marked "down". I
don't see why that would be, since one of the instances is in stub mode,
there should be no conflict between the two instances.

bird6.conf on my test node contains the following ospf stanzas:

protocol ospf main_igp_topology {
area 10 {
interface "eth0" {
stub yes;
};
};
}

protocol ospf customer_anycast {
area 20 {
interface "eth0" {
type broadcast;
};
};
}

After starting BIRD6, eth0 in the "customer_anycast" instnace is marked
down, but looks fine in "main_igp_topology":

***@kvmtest:~# birdc6 show ospf interface main_igp_topology
BIRD 1.4.5 ready.
main_igp_topology:
Interface eth0 (IID 0)
Type: broadcast
Area: 0.0.0.10 (10)
State: waiting (stub)
Priority: 1
Cost: 10
Hello timer: 10
Wait timer: 40
Dead timer: 40
Retransmit timer: 5
Designed router (ID): 0.0.0.0
Designed router (IP): ::
Backup designed router (ID): 0.0.0.0
Backup designed router (IP): ::
***@kvmtest:~# birdc6 show ospf interface customer_anycast
BIRD 1.4.5 ready.
customer_anycast:
Interface eth0 (IID 0)
Type: broadcast
Area: 0.0.0.20 (20)
State: down <---- why?
Priority: 1
Cost: 10
Hello timer: 10
Wait timer: 40
Dead timer: 40
Retransmit timer: 5
Designed router (ID): 0.0.0.0
Designed router (IP): ::
Backup designed router (ID): 0.0.0.0
Backup designed router (IP): ::

Disabling "main_igp_topology" immediately brings "customer_anycast" to
life (at this point I can see in tcpdump that OSPFv3 hellos start being
being trasmitted):

***@kvmtest:~# birdc6 disable main_igp_topology
BIRD 1.4.5 ready.
main_igp_topology: disabled
***@kvmtest:~# birdc6 show ospf interface customer_anycast
BIRD 1.4.5 ready.
customer_anycast:
Interface eth0 (IID 0)
Type: broadcast
Area: 0.0.0.20 (20)
State: waiting <---- looking better!
Priority: 1
Cost: 10
Hello timer: 10
Wait timer: 40
Dead timer: 40
Retransmit timer: 5
Designed router (ID): 0.0.0.0
Designed router (IP): ::
Backup designed router (ID): 0.0.0.0
Backup designed router (IP): ::

The use case is that of a server LAN that needs to be allowed to
dynamically advertise certain host routes to service addresses for
anycast / fail-over purposes. I would then proceed to import those host
routes into my IGP, which is the OSPFv3 instance that runs in stub mode
(after ensuring the announced routes fall within a permitted prefix).

I have used RIPng instead of OSFPv3 for the "customer_anycast" role
before, but it is very slow to react to failures and is rather limited
in other ways too. So I was hoping replace it with OSPFv3, hopefully
with BFD for super-fast failure detection.

Tore
Ondrej Zajicek
2014-10-16 14:49:56 UTC
Permalink
Post by Tore Anderson
Hi,
I'm trying to run two instances of OSPFv3 on a single interface, one in
stub mode, the other in normal broadcast mode. It doesn't seem to work,
in one of the protocols the interface ends up being marked "down". I
don't see why that would be, since one of the instances is in stub mode,
there should be no conflict between the two instances.
Generally, the interfaces must use different instance id to be shared
between instances. Although it is true that there is no real conflict if
the interface is in stub mode, it is not taken into account.

Just set the instance id on stub:

interface "eth0" instance 1 {
stub yes;
};


(Or better, you could set common instance id for the whole special-use
ospf instance, but that would have to be used consistently on all routers
in given OSPF domain.)
--
Elen sila lumenn' omentielvo

Ondrej 'Santiago' Zajicek (email: ***@crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."
Loading...