Post by Claudio JekerBtw. for ospfd you can use "interface lo1" to reliably redistribute the
loopback address.
I have configured a router with yyy.yy.yyy.247/32 on lo1 and yyy.yy.yyy.247/28
on vlan2244. This seems attractive since BGP sessions can be bound to an address
which is available (at least over one of my metro links) whether or not OSPF
is running - (not to mention because I am working in a fairly small PI block
and would really like to avoid burning another /28 ;-)
The vlan already has a router acting as DR.
If I configure vlan2244 before lo1, all is well, associations are formed,
prefixes are seen.
If I configure lo1 before vlan2244 (default order for /etc/netstart), ospfd
doesn't act on any packets coming from the DR, it believes that it should be
DR itself, but no outbound packets are seen by tcpdump -i vlan2244 (or -i lo1).
I can work-around this at startup by altering netstart as follows,
but I wondered:-
1) is this an acceptable work-around?
2) should ospfd handle this any differently?
3) is it bloody stupid to be doing this?
--- netstart.orig Wed Nov 22 20:21:41 2006
+++ netstart Sat Feb 10 13:32:09 2007
@@ -289,7 +289,7 @@
# Configure all the non-loopback interfaces which we know about, but
# do not start interfaces which must be delayed.
# Refer to hostname.if(5) and bridgename.if(5)
-ifmstart "" "trunk vlan carp gif gre pfsync pppoe"
+ifmstart "" "trunk vlan carp gif gre pfsync pppoe lo"
if [ "$ip6kernel" = "YES" -a "x$rtsolif" != "x" ]; then
fw=`sysctl -n net.inet6.ip6.forwarding`
@@ -311,7 +311,7 @@
# The pfsync interfaces need to come up before carp.
# Configure all the carp interfaces which we know about.
# They must come up after pfsync but before default route.
-ifmstart "trunk vlan pfsync carp"
+ifmstart "trunk vlan pfsync carp lo"
# /etc/mygate, if it exists, contains the name of my gateway host
# that name must be in /etc/hosts.
-- -- -- -- -- -- -- --
# ls -l `which ospfd`
-r-xr-xr-x 1 root bin 108900 Feb 7 00:47 /usr/sbin/ospfd
# cat /etc/ospfd.conf
router-id yyy.yy.yyy.247
auth-type crypt
auth-md 1 YlqnfuTjFhs7v6
auth-md-keyid 1
hello-interval 2
router-dead-time 10
area 0.0.0.0 {
interface lo1
interface vlan2244 { metric 20 }
}
# sh /etc/netstart lo1 vlan2244
# ospfd -d
startup
orig_rtr_lsa: area 0.0.0.0
orig_rtr_lsa: stub net, interface vlan2244
if_fsm: event UP resulted in action START and changing state for interface vlan2244 from DOWN to WAIT
start_spf_timer: IDLE -> DELAY
spf_calc: calculation started, area ID 0.0.0.0
spf_calc: calculation ended, area ID 0.0.0.0
spf_start_holdtimer: DELAY -> HOLD
spf_timer: state HOLD -> IDLE
if_act_elect: interface vlan2244 old dr none new dr yyy.yy.yyy.247, old bdr none new bdr none
orig_rtr_lsa: area 0.0.0.0
orig_rtr_lsa: stub net, interface vlan2244
orig_rtr_lsa: area 0.0.0.0
orig_rtr_lsa: stub net, interface vlan2244
if_fsm: event WAITTIMER resulted in action ELECT and changing state for interface vlan2244 from WAIT to DR
^Z[1] + Suspended ospfd -d
# bg
[1] ospfd -d
# tcpdump -nilo1
tcpdump: listening on lo1, link-type LOOP
^C
0 packets received by filter
0 packets dropped by kernel
# tcpdump -nivlan2244
tcpdump: listening on vlan2244, link-type EN10MB
14:23:12.018878 SSTP STP config root=88c4.0:c:31:64:f7:0 rootcost=0 bridge=88c4.0:c:31:64:f7:0 port=11 ifcost=128 age=0/0 max=20/0 hello=2/0 fwdelay=15/0 pvid=2244
14:23:12.357744 yyy.yy.yyy.243 > 224.0.0.5: OSPFv2-hello 44: rtrid yyy.yy.yyy.3 backbone dr yyy.yy.yyy.243 [tos 0xc0] [ttl 1]
14:23:14.018983 SSTP STP config root=88c4.0:c:31:64:f7:0 rootcost=0 bridge=88c4.0:c:31:64:f7:0 port=11 ifcost=128 age=0/0 max=20/0 hello=2/0 fwdelay=15/0 pvid=2244
14:23:14.367676 yyy.yy.yyy.243 > 224.0.0.5: OSPFv2-hello 44: rtrid yyy.yy.yyy.3 backbone dr yyy.yy.yyy.243 [tos 0xc0] [ttl 1]
14:23:16.019399 SSTP STP config root=88c4.0:c:31:64:f7:0 rootcost=0 bridge=88c4.0:c:31:64:f7:0 port=11 ifcost=128 age=0/0 max=20/0 hello=2/0 fwdelay=15/0 pvid=2244
14:23:16.377767 yyy.yy.yyy.243 > 224.0.0.5: OSPFv2-hello 44: rtrid yyy.yy.yyy.3 backbone dr yyy.yy.yyy.243 [tos 0xc0] [ttl 1]
^C
-- -- -- -- -- -- -- --