On Wed, Apr 24, 2019 at 01:10:31PM +0000, Joakim Tjernlund wrote:
On Tue, 2019-04-23 at 21:03 +0000, Joakim Tjernlund wrote:
On Tue, 2019-04-23 at 19:33 +0200, Ondrej Zajicek wrote:
On Tue, Apr 23, 2019 at 12:40:04PM +0000, Joakim Tjernlund wrote:
I think the standard just does not consider the case of 'unnumbered' link with both local and remote address but without subnet and assumes 'real' unnumbered PtP link with no local IP address associated with the iface.
There is always some local address, in linux you have to assign it to the I/F, but in others, like Cisco, you can assign an IP address to a dummy I/F and then tell unnumbered I/Fs to use the dummy I/Fs' IP address. There has to be some SRC IP address on pkgs sent by OSPF
Yes, but the way how the RFC is written it (IMHO) assumes the second case - unnumbered ifaces using SRC IP from some dummy iface. Therefore stub
yes, the second case, agreed.
node is associated with the dummy iface and not with the unnumbered PtP iface.
No, this is a true unnumbered I/F(it has no local IP address) and will not generate any stub route.
Since Linux always has an local IP adress it is not possible to deduce if the user intended the link to be unnumbered or not, unless one wants to add explicit config "unnumbered", it would be best to assume unnumbered I think.
I do not understand what you mean in this article. Linux could have active iface without any IP address and it can be used for PtP link (with SRC IP from some other iface), but it is not implemented in BIRD.
I expressed myself badly, I meant if one want to have control over what SRC ip is used, you need to have it on the local I/F. Maybe there is a way to do that these days differently but I don't think any PtoP impl. on Linux uses that.
It is true that even a link with local /32 IP without specified remote peer could be used for OSPF PtP link. BIRD in this case assumes it is a stub /32 and i am not sure whether it could be configured as regular PtP. I did not realized before that this is a relevant case for PtP link.
This case is as close one gets to a true unnumbered I/F in Linux I think and pppd supports such links. I think should treat /32 links as unnumbered even if there is an remote IP address or make it configurable.
Consider the use case with many /32 ptp links, all with the same local IP, there would be a lot of redundant host routes in the Router LSA. Better to let the user add an explicit stub network for all PtoP's if one needs it.
Well, that is solvable by not putting the same stub multiple times in the Router LSA.
Maybe but since it is the remote ip one puts here you will only save "space" when you have multiple ptop links between the same two routers.
More debatable is a case like this:
eth0 10.0.0.1/24 eth1 10.0.0.1/32 peer 10.0.1.1/32
10.0.0.1 is already reachable by route for eth0 (either stub or network), so it is technically not necessary to have it in the Router LSA as a separate /32 stub. So it makes sense to me to have it configurable with three values: yes, no, if-not-covered.
Yes, this is what I was getting at too. Maybe have a conf option "unnumbered" to treat eth1 as a "true" unnumbred I/F(no stub network). Quietion is, what should be default? What is default in current 2.0 Bird?
Jocke
I have a hard time understanding the code for section 12.4.1.1 Option 1 and Option 2:
/* Now we will originate stub area if there is no primary */ if (net_lsa || (ifa->type == OSPF_IT_VLINK) || ((ifa->addr->flags & IA_PEER) && ! ifa->cf->stub) || configured_stubnet(oa, ifa->addr)) continue; Is the above always true for a ptp I/F? I am not clear over how IA_HOST, IA_PEER and ifa->cf->stub works.
IA_HOST means /32, no peer address IA_PEER means /32, and peer address ifa->cf->stub means explicitly configured stub/pasive mode.
Also, important to agree if a /32 mask constitutes a subnet or not?
/32 does not consistute subnet because it does not cover both local and remote addresses.
That would explain the below, there is no Option 1
Yes, we do not announce neighboring router's IP (Option 1) (unless it is passive interface).
/* Host or network stub entry */ if ((ifa->addr->flags & IA_HOST) || (ifa->state == OSPF_IS_LOOP) || (ifa->type == OSPF_IT_PTMP)) add_rt2_lsa_link(p, LSART_STUB, ipa_to_u32(ifa->addr->ip), 0xffffffff, 0); else add_rt2_lsa_link(p, LSART_STUB, ip4_to_u32(net4_prefix(&ifa->addr->prefix)), u32_mkmask(net4_pxlen(&ifa->addr->prefix)), ifa->cost);
-- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@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."