You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add mgd-unnumbered falcon-lab topology and test
Add simple p2p toplogy with two mgd nodes running BGP unnumbered. This
test captures the issue where outbound connect() attempts fail due to
an invalid destination TCP port being used (0), as observed in
maghemite#782.
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* mgd: use BGP_PORT in unnumbered dummy sockaddr
Fixes: #782
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* Convert BGP_PORT from u16 to NonZeroU16
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* Unify internals for un/numbered peers
Instead of using a placeholder SocketAddr to represent the (peer, port),
use a PeerId and a NonZeruU16. This removes the need for unnumbered
peers to store a placeholder SocketAddr (which was only disambiguated by
scope_id anyway), since we have a proper way to represent them. This
provides the basis for further consolidation of un/numbered peers:
- merge new_session/new_unnumbered_session and
ensure_session/ensure_unnumbered_session into single functions taking
unnumbered_manager: Option<...>; drop the redundant peer_id arg from
new_session_locked
- fold update_unnumbered_session into update_session
- widen Error::UnknownPeer from IpAddr to PeerId
- route reset_unnumbered_neighbor through the unified get_session,
deleting UnnumberedManagerNdp::get_neighbor_session and its now-dead
routers table
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* bgp: fix PeerId variant in unnumbered tests
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* bgp: bind unnumbered peers to ifindex
We had been binding unnumbered interfaces to a source SocketAddr with
the scope_id set, but this is not always sufficient for socket lookups
to ensure link-local traffic is delivered consistently (See #780). This
adds a setsockopt call to bind the socket to the unnumbered interface
(via a socket2 wrapper). There haven't been any issues observed/reported
with BgpConnection sockets so far, but it's better to be proactive.
Also refactors try_resolve_connect_addr to centralize logging in the
caller and give better context around the resolution failure by
returning a Result with a new Error type ResolvePeerError.
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* buildomat: run mgd-unnumbered falcon-lab test
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* falcon-lab: add juniper, promote trio to quartet
Add support for JunOS in falcon-lab, integrating it into existing BFD
and BGP unnumbered tests (renaming trio to quartet). Adds a JuniperNode
type with full diagnostic collection.
JunOS images are expected to be prebuilt (this one was build using the
experimental voxel-image process) with a handful of prerequisites:
1) installed packages: docker, jq
2) crpd docker container installed
3) systemd service to manage creation of cargo-bay mount
4) systemd service to apply license and config to crpd
This allows falcon-lab to use cargo-bay as a transparent mount point so
it doesn't have to be in charge of managing its items. In particular,
the JunOS license must be staged there but falcon-lab is not responsible
for populating it. This is done either by the user or by CI.
Also refactors the linux diagnostics to be centralized so any other node
riding atop a linux base can make use of them (e.g. frr, eos, juniper).
Also updates the diagnostic collection logic to unpause nodes before
trying to grab diag info... can't really query a paused node, can you?
Also adds a README for falcon-lab.
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* falcon-lab: cleanup old state, per protocol diag
Adds logic to cleanup old guest configs on startup.
Adds logic to CI to call cleanup on test topologies after each run.
Splits diag collection by protocol (e.g. BGP/BFD info only collected in
tests when those protocols are in use).
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
* PR feedback
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
---------
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
0 commit comments