mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-28 15:36:25 +00:00
ospf: optimization for FRR's P2MP mode
FRR implements a non-standard, but compatible approach for sending update LSAs (it always send to 224.0.0.5) on P2MP interfaces. This change makes it so acks are also sent to 224.0.0.5. Since the acks are multicast, this allows an optimization where we don't send back out the incoming P2MP interface immediately allow time to rx multicast ack from neighbors on the same net that rx'ed the original (multicast) update. Signed-off-by: Lou Berger <lberger@labn.net>
This commit is contained in:
parent
675ba67d89
commit
c706f0e32b
@ -648,6 +648,13 @@ int ospf_flood_through_interface(struct ospf_interface *oi,
|
||||
OSPF_SEND_PACKET_DIRECT);
|
||||
}
|
||||
} else
|
||||
/* Optimization: for P2MP interfaces,
|
||||
don't send back out the incoming interface immediately,
|
||||
allow time to rx multicast ack to the rx'ed (multicast)
|
||||
update */
|
||||
if (retx_flag != 1 ||
|
||||
oi->type != OSPF_IFTYPE_POINTOMULTIPOINT || inbr == NULL ||
|
||||
oi != inbr->oi)
|
||||
ospf_ls_upd_send_lsa(oi->nbr_self, lsa,
|
||||
OSPF_SEND_PACKET_INDIRECT);
|
||||
|
||||
|
@ -4220,7 +4220,8 @@ static void ospf_ls_ack_send_list(struct ospf_interface *oi, struct list *ack,
|
||||
op->length = length;
|
||||
|
||||
/* Decide destination address. */
|
||||
if (oi->type == OSPF_IFTYPE_POINTOPOINT)
|
||||
if (oi->type == OSPF_IFTYPE_POINTOPOINT ||
|
||||
oi->type == OSPF_IFTYPE_POINTOMULTIPOINT)
|
||||
op->dst.s_addr = htonl(OSPF_ALLSPFROUTERS);
|
||||
else
|
||||
op->dst.s_addr = dst.s_addr;
|
||||
|
Loading…
Reference in New Issue
Block a user