Skip to contentSkip to conversation

delay in bridge learning when forward delay is 0

Bridge Philip Craig 1 participant 1 message Jul 9, 2007 Ethernet bridge

lore
Share & tools
lore
#0 lore raw

Hi,

If you set the bridge forward delay to 0 with:
brctl setfd br0 0
then the bridge does not learn addresses for the first 20 seconds, and so it floods everything during this time.

The reason for this is that hold_time() returns 0 after a topology change, br_fdb_update() is a no-op if hold_time() is 0 (so that 'brctl setmaxage br0 0' can be used to disable learning), and the topology change flag isn't cleared for max_age seconds, so nothing is learnt during that time.

It seems that the intent of hold_time() is to expire entries that are older than forward_delay seconds at the time of the topology change, which it does, but then it keeps on checking this expiry again for max_age seconds, and bases these checks on the current time rather than the time of the change.

A quick fix for the forward delay 0 case would be to skip the topology change check if stp is disabled, but if I understand things correctly then the expiry isn't right for non-zero cases either.