summaryrefslogtreecommitdiffstats
path: root/isisd/subdir.am
diff options
context:
space:
mode:
authorChristian Franke <chris@opensourcerouting.org>2018-05-10 17:37:05 +0200
committerChristian Franke <chris@opensourcerouting.org>2018-09-05 11:38:13 +0200
commit9b39405f00e17ef84a7a4659e37967728cbae283 (patch)
tree162408bad835012b838d62dd57eb74059692d263 /isisd/subdir.am
parentfabricd: implement asymmetric metric for tier 0 as per Section 6.2 (diff)
downloadfrr-9b39405f00e17ef84a7a4659e37967728cbae283.tar.xz
frr-9b39405f00e17ef84a7a4659e37967728cbae283.zip
fabricd: reimplement LSP transmission logic
Before this commit, isisd/fabricd maintained a bitfield for each LSP to track the SRM bit for each circuit, which specifies whether an LSP needs to be sent on that circuit. Every second, it would scan over all LSPs in `lsp_tick` and queue them up for transmission accordingly. This design has two drawbacks: a) it scales poorly b) it adds unacceptable latency to the update process: each router takes a random amount of time between 0 and 1 seconds to forward an update. In a network with a diamter of 10, it might already take 10 seconds for an update to traverse the network. To mitigate this, a new design was chosen. Instead of tracking SRM in a bitfield, have one tx_queue per circuit and declare that an LSP is in that queue if and only if it would have SRM set for that circuit. This way, we can track SRM similarly as we did before, however, on insertion into the LSP queue, we can add a timer for (re)transmission, alleviating the need for a periodic scan with LSP tick and reducing the latency for forwarding of updates. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Diffstat (limited to 'isisd/subdir.am')
-rw-r--r--isisd/subdir.am4
1 files changed, 2 insertions, 2 deletions
diff --git a/isisd/subdir.am b/isisd/subdir.am
index 792b0df6c..a45b9ca47 100644
--- a/isisd/subdir.am
+++ b/isisd/subdir.am
@@ -27,7 +27,6 @@ noinst_HEADERS += \
isisd/isis_events.h \
isisd/isis_flags.h \
isisd/isis_lsp.h \
- isisd/isis_lsp_hash.h \
isisd/isis_memory.h \
isisd/isis_misc.h \
isisd/isis_mt.h \
@@ -40,6 +39,7 @@ noinst_HEADERS += \
isisd/isis_spf_private.h \
isisd/isis_te.h \
isisd/isis_tlvs.h \
+ isisd/isis_tx_queue.h \
isisd/isis_vty_common.h \
isisd/isis_zebra.h \
isisd/isisd.h \
@@ -58,7 +58,6 @@ LIBISIS_SOURCES = \
isisd/isis_events.c \
isisd/isis_flags.c \
isisd/isis_lsp.c \
- isisd/isis_lsp_hash.c \
isisd/isis_memory.c \
isisd/isis_misc.c \
isisd/isis_mt.c \
@@ -69,6 +68,7 @@ LIBISIS_SOURCES = \
isisd/isis_spf.c \
isisd/isis_te.c \
isisd/isis_tlvs.c \
+ isisd/isis_tx_queue.c \
isisd/isis_vty_common.c \
isisd/isis_zebra.c \
isisd/isisd.c \