-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bgpd: bmp loc-rib peer up/down for vrfs #17001
base: master
Are you sure you want to change the base?
Conversation
Check export labels to pre-policy bmp Signed-off-by: Louis Scalbert <[email protected]>
bgpd/bgp_bmp.c
Outdated
struct stream *s = bmp_peerstate(bmpbgp->bgp->peer_self, bmpbgp->vrf_up == vrf_state_down); | ||
|
||
if (!s) { | ||
zlog_warn("bmp: peer state error"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Personally, I don't understand this warning (or error)...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removed
bgpd/bgp_bmp.c
Outdated
@@ -570,6 +641,14 @@ static void bmp_send_all(struct bmp_bgp *bmpbgp, struct stream *s) | |||
stream_free(s); | |||
} | |||
|
|||
static void bmp_send_all_safe(struct bmp_bgp *bmpbgp, struct stream *s) | |||
{ | |||
if (!s || !bmpbgp) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this be &&? Because if bmpbgp is NULL, then bmp_send_all() would dereference it...?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed to
if (!bmpbgp)
stream_free(s);
bgpd/bgp_packet.c
Outdated
@@ -698,12 +678,40 @@ void bgp_open_send(struct peer_connection *connection) | |||
/* Set BGP packet length. */ | |||
bgp_packet_set_size(s); | |||
|
|||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
bgpd/bgp_main.c
Outdated
@@ -319,6 +324,8 @@ static int bgp_vrf_disable(struct vrf *vrf) | |||
{ | |||
struct bgp *bgp; | |||
|
|||
zlog_info("BGP VRF DISABLE %s", vrf->name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop this or guard by debug foo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
bgpd/bgp_main.c
Outdated
@@ -286,6 +289,8 @@ static int bgp_vrf_enable(struct vrf *vrf) | |||
struct bgp *bgp; | |||
vrf_id_t old_vrf_id; | |||
|
|||
zlog_info("BGP VRF ENABLE %s", vrf->name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop this or guard by debug foo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
bgpd/bgp_main.c
Outdated
@@ -275,6 +277,7 @@ static int bgp_vrf_new(struct vrf *vrf) | |||
|
|||
static int bgp_vrf_delete(struct vrf *vrf) | |||
{ | |||
zlog_info("BGP VRF DELETE %s", vrf->name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop this or guard by debug foo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
bgpd/bgp_main.c
Outdated
@@ -267,6 +267,8 @@ static __attribute__((__noreturn__)) void bgp_exit(int status) | |||
|
|||
static int bgp_vrf_new(struct vrf *vrf) | |||
{ | |||
zlog_info("BGP VRF CREATE %s", vrf->name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we drop this or guard by debug foo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dropped
BMP_PEERDOWN_REMOTE_NOTIFY = 3, | ||
BMP_PEERDOWN_REMOTE_CLOSE = 4, | ||
BMP_PEERDOWN_ENDMONITOR = 5, | ||
BMP_PEERDOWN_LOCAL_TLV = 6, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see this https://datatracker.ietf.org/doc/html/rfc7854#section-10.8 Peer Down type, is it defined somewhere else?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added ref to https://datatracker.ietf.org/doc/rfc9069/ section 8.4
added bmp bgp peer for vrfs added peer up vrf in bmp peer up state added vrf state in bmpbgp added safe bmp_peer_sendall : bmp_peer_sendall_safe changed bgp_open_send to call new bgp_open_make bgp_open_make creates a bgp open packet, now used in bmp for peer up vrf added hook and call to bgp instance state vrf peer state is recomputed when interfaces (including vrf itf) go up / down and when it gets created or removed Link: mxyns@e48ba38 Signed-off-by: Philippe Guibert <[email protected]> Signed-off-by: Louis Scalbert <[email protected]> Signed-off-by: Maxence Younsi <[email protected]>
Log "peer up" message type in BMP collector logs. Signed-off-by: Louis Scalbert <[email protected]>
Add peer down log in bmp collector Signed-off-by: Louis Scalbert <[email protected]>
Check for bmp peer up / down messages Signed-off-by: Louis Scalbert <[email protected]>
Add test to check BMP in VRF. Note that the following configuration works with interface r1-eth0 towards 192.0.2.10 (BMP collector) in the default VRF but not in vrf1. > router bgp 65501 vrf vrf1 > bmp targets bmp1 > bmp connect 192.0.2.10 port 1789 min-retry 100 max-retry 10000 Also, for some reasons, the test works even without "bgpd: bmp loc-rib peer up/down for vrfs" commit. Signed-off-by: Louis Scalbert <[email protected]>
added bmp bgp peer for vrfs
added peer up vrf in bmp peer up state
added vrf state in bmpbgp
added safe bmp_peer_sendall : bmp_peer_sendall_safe
changed bgp_open_send to call new bgp_open_make
bgp_open_make creates a bgp open packet, now used in bmp for peer up vrf
added hook and call to bgp instance state
vrf peer state is recomputed when interfaces (including vrf itf) go up / down
and when it gets created or removed
Link: mxyns@e48ba38
Signed-off-by: Philippe Guibert [email protected]
Signed-off-by: Louis Scalbert [email protected]
Signed-off-by: Maxence Younsi [email protected]