Discussion:
[quagga-dev 16552] Quagga next review
Paul Jakma
2017-01-23 19:10:30 UTC
Permalink
Hi,

I've a bunch of commits staged in volatile/next:

http://git.savannah.gnu.org/cgit/quagga.git/log/?h=volatile/next

Please review. Also, please git send-email anything missing. I'd like
another release within a few week. Bit of a "tick tock" cycle, given
last few releases (release with lots of commits, then one with a small
set of fixes, etc.).

Shortlog:

Baruch Siach (1):
lib/memory: fix indirect static link with zlib

Christian Franke (19):
zebra: fix a crash in static_add_ipv6 caused by a NULL dereference
isisd: exit if daemonizing fails
ospf6d: remove unused broken function
zebra: make fpm netlink_route_info_fill more robust
bgpd: fix potential crash in community_list_dup_check
bgpd: setting nexthop doesn't need inet_pton
bgpd: check return value of zebra_interface_state_read
bgpd: don't leak memory in community_regexp_include
bgpd: fix memory leaks in show commands
ospfd: fix double assignment in ospf_vl_set_timers
pimd: don't leak original_s_route on error
ripd: print md5 auth digest correctly
vtysh: handle case if there is no match in "write terminal $daemon"
vtysh: fix a memory leak in vtysh_client_execute
ospfd: Update route in zebra when tag changes
*: Port Christians tweaks for 32-bit route tags
ospf6d: add support for route tags
ripd: add support for route tags
ripngd: add support for route tags

Daniel Walton (1):
bgpd: fix "show ip bgp" column alignment

David Lamparter (4):
lib: linklist: add listnode_add_before()
lib: add thread_add_timer_tv (struct timeval)
lib: AgentX: use threads instead of eventloop hack
zebra: fix link-params CLI handling

Donald Sharp (8):
pimd: Remove dead code.
pimd: Remove source_new unneeded parameter
pimd: Remove igmp_add_group_by_addr unneeded parameter
pimd: Add support for displaying ip mroute
pimd: Add ability to safely ignore route-maps
pimd: Fix of using uninitialized Memory
ospfd: Fix arm compile issue
vtysh, zebra: Fix link-params to use exit-link-params

Igor Ryzhov (1):
vtysh: send "no interface" command to all daemons that support it

Jafar Al-Gharaibeh (2):
config: Give the option of disabling run as user/group
zserv: get rid of code duplication in nexthop_lookup[_mrib] functions

Job Snijders (1):
bgpd: Add support for BGP Large Communities

Martin Winter (1):
build: configure.ac - use AC_PROG_CC_C99 instead of cflags to force c99 mode

Paul Jakma (20):
lib/stream: Add stream_discard, to discard read data from a stream
bgpd: Add route count from neighbours & established sessions to bgp summary
ospfd: 'ip ospf network' interface should down iface before changing type
lib: vty_prefix_list_install should validate afi/safi
build: Add GCC stack-protector/SSP to default flag set
isisd,ospf6d,bgpd: Fix GCC 6 warnings on indentation not matching control flow
ripd: Fix GCC6 warning on misleading indentation
tools: Remove historic scripts
tools/multiple-bgpd: extend the ring, enable mpath, add links to +-2 instances
tools: Extend multiple-bgpd.sh to support BIRD, ExaBGP plus more configurables
lib: track worst case # of cycles and don't allow granularity to go above
bgpd: Modernise BGP defaults for MRAI and connect time
bgpd: Rejiggle exported nht function names and consolidate some code
bgpd: Remove change that makes NHT tickle BGP FSM.
bgpd: consolidate start timer backoff via a 'BGP_Stop_with_error' FSM event
bgpd: Make the exponential backoff on BGP stop_with_error slower
bgpd: Graphviz dot files for the BGP FSM
nhrpd: Add libgen.h include for basename call
bgpd: Fix unhandled enum warning for AFI_ETHER
lib: routemap.h depends on prefix.h

Quentin Young (2):
lib: Clean command.c
zebra: Change bitwise operations to purpose-built macros

Renato Westphal (1):
bgpd: fix invalid memory access in peer_free()

Thomas Petazzoni (1):
configure: fix static linking with readline

Thorvald Natvig (1):
Extend BGP_SEND_ASPATH_CHECK to cover confederations

Timo Teräs (5):
zebra: use FIB state for nexthop tracking
zebra: fix nht validity checking to be same as when it's resolved
bgpd: honor disable-connected-check option with next hop tracking
bgpd: simplify ebgp-multihop and ttl-security handling
nhrpd: implement next hop resolution protocol


regards,
--
Paul Jakma | ***@jakma.org | @pjakma | Key ID: 0xD86BF79464A2FF6A
Fortune:
"If you are afraid of loneliness, don't marry."
-- Chekhov
Mike Tancsa
2017-01-23 19:57:01 UTC
Permalink
Hi Paul,
Is there any chance some of these commits might fix the issue with ibgp
peers not getting a full set updates as described by a few users ?

eg

https://lists.quagga.net/pipermail/quagga-users/2016-January/014248.html
Post by Paul Jakma
Hi,
http://git.savannah.gnu.org/cgit/quagga.git/log/?h=volatile/next
Please review. Also, please git send-email anything missing. I'd like
another release within a few week. Bit of a "tick tock" cycle, given
last few releases (release with lots of commits, then one with a small
set of fixes, etc.).
lib/memory: fix indirect static link with zlib
zebra: fix a crash in static_add_ipv6 caused by a NULL dereference
isisd: exit if daemonizing fails
ospf6d: remove unused broken function
zebra: make fpm netlink_route_info_fill more robust
bgpd: fix potential crash in community_list_dup_check
bgpd: setting nexthop doesn't need inet_pton
bgpd: check return value of zebra_interface_state_read
bgpd: don't leak memory in community_regexp_include
bgpd: fix memory leaks in show commands
ospfd: fix double assignment in ospf_vl_set_timers
pimd: don't leak original_s_route on error
ripd: print md5 auth digest correctly
vtysh: handle case if there is no match in "write terminal $daemon"
vtysh: fix a memory leak in vtysh_client_execute
ospfd: Update route in zebra when tag changes
*: Port Christians tweaks for 32-bit route tags
ospf6d: add support for route tags
ripd: add support for route tags
ripngd: add support for route tags
bgpd: fix "show ip bgp" column alignment
lib: linklist: add listnode_add_before()
lib: add thread_add_timer_tv (struct timeval)
lib: AgentX: use threads instead of eventloop hack
zebra: fix link-params CLI handling
pimd: Remove dead code.
pimd: Remove source_new unneeded parameter
pimd: Remove igmp_add_group_by_addr unneeded parameter
pimd: Add support for displaying ip mroute
pimd: Add ability to safely ignore route-maps
pimd: Fix of using uninitialized Memory
ospfd: Fix arm compile issue
vtysh, zebra: Fix link-params to use exit-link-params
vtysh: send "no interface" command to all daemons that support it
config: Give the option of disabling run as user/group
zserv: get rid of code duplication in nexthop_lookup[_mrib] functions
bgpd: Add support for BGP Large Communities
build: configure.ac - use AC_PROG_CC_C99 instead of cflags to force c99 mode
lib/stream: Add stream_discard, to discard read data from a stream
bgpd: Add route count from neighbours & established sessions to bgp summary
ospfd: 'ip ospf network' interface should down iface before changing type
lib: vty_prefix_list_install should validate afi/safi
build: Add GCC stack-protector/SSP to default flag set
isisd,ospf6d,bgpd: Fix GCC 6 warnings on indentation not matching control flow
ripd: Fix GCC6 warning on misleading indentation
tools: Remove historic scripts
tools/multiple-bgpd: extend the ring, enable mpath, add links to +-2 instances
tools: Extend multiple-bgpd.sh to support BIRD, ExaBGP plus more configurables
lib: track worst case # of cycles and don't allow granularity to go above
bgpd: Modernise BGP defaults for MRAI and connect time
bgpd: Rejiggle exported nht function names and consolidate some code
bgpd: Remove change that makes NHT tickle BGP FSM.
bgpd: consolidate start timer backoff via a 'BGP_Stop_with_error' FSM event
bgpd: Make the exponential backoff on BGP stop_with_error slower
bgpd: Graphviz dot files for the BGP FSM
nhrpd: Add libgen.h include for basename call
bgpd: Fix unhandled enum warning for AFI_ETHER
lib: routemap.h depends on prefix.h
lib: Clean command.c
zebra: Change bitwise operations to purpose-built macros
bgpd: fix invalid memory access in peer_free()
configure: fix static linking with readline
Extend BGP_SEND_ASPATH_CHECK to cover confederations
zebra: use FIB state for nexthop tracking
zebra: fix nht validity checking to be same as when it's resolved
bgpd: honor disable-connected-check option with next hop tracking
bgpd: simplify ebgp-multihop and ttl-security handling
nhrpd: implement next hop resolution protocol
regards,
_______________________________________________
Quagga-dev mailing list
https://lists.quagga.net/mailman/listinfo/quagga-dev
--
-------------------
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, ***@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada http://www.tancsa.com/
Paul Jakma
2017-01-23 21:49:00 UTC
Permalink
Post by Mike Tancsa
Hi Paul,
Is there any chance some of these commits might fix the issue
with ibgp peers not getting a full set updates as described by a few
users ?
I don't know, not familiar with that issue.

Can you give more details on the topology and config? Or if you can come
up with a reproducer using the tools/multiple-bgpd.sh script, that'd
help.

regards,
--
Paul Jakma | ***@jakma.org | @pjakma | Key ID: 0xD86BF79464A2FF6A
Fortune:
They will only cause the lower classes to move about needlessly.
-- The Duke of Wellington, on early steam railroads.
Mike Tancsa
2017-01-23 22:17:34 UTC
Permalink
Post by Paul Jakma
Post by Mike Tancsa
Hi Paul,
Is there any chance some of these commits might fix the issue with
ibgp peers not getting a full set updates as described by a few users ?
I don't know, not familiar with that issue.
Can you give more details on the topology and config? Or if you can come
up with a reproducer using the tools/multiple-bgpd.sh script, that'd help.
There are a few people who have run into the issue. The peer with the
problem seems to exhibit the behaviour when there are "many" ebgp peers.
Routes learned from the ebgp peers do not all get propagated to ibgp
peers. It seems random prefixes do not get sent to the ibgp peers.
tcpdump confirms they are never sent.
Jan Hugo I think has narrowed it down much more than I have.

---Mike
--
-------------------
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, ***@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada http://www.tancsa.com/
Paul Jakma
2017-01-23 22:33:46 UTC
Permalink
Post by Mike Tancsa
There are a few people who have run into the issue. The peer with the
problem seems to exhibit the behaviour when there are "many" ebgp
peers. Routes learned from the ebgp peers do not all get propagated to
ibgp peers. It seems random prefixes do not get sent to the ibgp
peers. tcpdump confirms they are never sent. Jan Hugo I think has
narrowed it down much more than I have.
Ok, any details you have would be great.

I did BGP stress testing late last summer, of Quagga and BIRD. Those
tests depended on all prefixes getting through to a 'monitor' bgpd to
detect the end of the test run. Though, not complex topologies.

Need to work to build a comprehensive, free software, routing test-rig,
to catch those issues (and incorporate BIRD, OpenBGPd, etc., to enable
comparison testing and find strength/weaknesses - and provide them with
the same kind of testing as a benefit).

If there's people interested in that...

regards,
--
Paul Jakma | ***@jakma.org | @pjakma | Key ID: 0xD86BF79464A2FF6A
Fortune:
Kime's Law for the Reward of Meekness:
Turning the other cheek merely ensures two bruised cheeks.
jan hugo prins
2017-01-25 16:32:02 UTC
Permalink
Hi,

I have narrowed down the problem so far as to that I know what peer is
causing the issue on both my routers.
I have all information I have regarding my setup and tests etc shared
with Martin Winter and he has created a test bed but in this test bed we
have not been able so far to reproduce the issue.

What we see is that the moment the peering session with the partner
comes up (EBGP) the router with this session stops sending all updates
or part of its updates to it's iBGP peers. This results over time in an
incomplete set of routes on the other routers in the iBGP mesh.

A last test that I have to do is to see if there is a difference in the
peer being in a peergroup or having it's own config outside of the
peergroup. I have done this test but part of the logs I created (pcap
files) weren't downloaded because I was under the impression that the
problem had disappeared. But a few days later I got alerts from my
monitoring servers that the number of routes in the iBGP mesh was
getting below the alert thresh-hold which proved to me that the problem
was actually still there but a little bit less visible.

I think Martin has created a complete overview of my configuration and
documented most of it in his debugging work set.

My production routers are running the latest 0.99 version because I
can't upgrade to 1.1 because of a serious OSPF6 bug that completely
destroys my internal IPv6 routing.

Jan Hugo
Post by Paul Jakma
Post by Mike Tancsa
There are a few people who have run into the issue. The peer with
the problem seems to exhibit the behaviour when there are "many" ebgp
peers. Routes learned from the ebgp peers do not all get propagated
to ibgp peers. It seems random prefixes do not get sent to the ibgp
peers. tcpdump confirms they are never sent. Jan Hugo I think has
narrowed it down much more than I have.
Ok, any details you have would be great.
I did BGP stress testing late last summer, of Quagga and BIRD. Those
tests depended on all prefixes getting through to a 'monitor' bgpd to
detect the end of the test run. Though, not complex topologies.
Need to work to build a comprehensive, free software, routing
test-rig, to catch those issues (and incorporate BIRD, OpenBGPd, etc.,
to enable comparison testing and find strength/weaknesses - and
provide them with the same kind of testing as a benefit).
If there's people interested in that...
regards,
Paul Jakma
2017-01-30 12:35:00 UTC
Permalink
Post by jan hugo prins
Hi,
I have narrowed down the problem so far as to that I know what peer is
causing the issue on both my routers. I have all information I have
regarding my setup and tests etc shared with Martin Winter and he has
created a test bed but in this test bed we have not been able so far
to reproduce the issue.
It'd be really good to post the details you have so far on this (e.g. a
reproducer environement) to a public place, e.g. bugzilla, so that
others could look.

regards,
--
Paul Jakma | ***@jakma.org | @pjakma | Key ID: 0xD86BF79464A2FF6A
Fortune:
Badges? We don't need no stinking badges.
Loading...