Skip to content

Commit f5d881c

Browse files
upgrade FRR to version 10.0.1, upgrade libyang2 to 2.1.148. Tested using basic BGP neighborship formation with routes using BGP docker
1 parent dfa5002 commit f5d881c

20 files changed

+1945
-1129
lines changed

platform/vs/docker-sonic-vs/Dockerfile.j2

+3-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ RUN apt-get install -y net-tools \
6767
# For libkrb5-dev
6868
comerr-dev \
6969
libgssrpc4 \
70-
libkdb5-10
70+
libkdb5-10 \
71+
libprotobuf-c-dev \
72+
protobuf-c-compiler
7173

7274
RUN apt-get install -y -t bullseye-backports iproute2
7375

rules/frr.mk

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# FRRouting (frr) package
22

3-
FRR_VERSION = 8.5.4
3+
FRR_VERSION = 10.0.1
44
FRR_SUBVERSION = 0
5-
FRR_BRANCH = frr/8.5
6-
FRR_TAG = frr-8.5.4
5+
FRR_BRANCH = frr/10.0.1
6+
FRR_TAG = frr-10.0.1
77
export FRR_VERSION FRR_SUBVERSION FRR_BRANCH FRR_TAG
88

99

rules/libyang2.mk

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
# libyang2
22

3-
LIBYANG2_VERSION_BASE = 2.0
4-
LIBYANG2_VERSION = $(LIBYANG2_VERSION_BASE).112
5-
LIBYANG2_SUBVERSION = 6
3+
LIBYANG2_VERSION_BASE = 2.1
4+
LIBYANG2_VERSION = $(LIBYANG2_VERSION_BASE).148
5+
LIBYANG2_SUBVERSION = 0.1
66
LIBYANG2_FULLVERSION = $(LIBYANG2_VERSION)-$(LIBYANG2_SUBVERSION)
77

88
export LIBYANG2_VERSION_BASE
99
export LIBYANG2_VERSION
1010
export LIBYANG2_SUBVERSION
1111
export LIBYANG2_FULLVERSION
1212

13-
LIBYANG2 = libyang2_$(LIBYANG2_FULLVERSION)_$(CONFIGURED_ARCH).deb
13+
LIBYANG2 = libyang2t64_$(LIBYANG2_FULLVERSION)_$(CONFIGURED_ARCH).deb
1414
$(LIBYANG2)_SRC_PATH = $(SRC_PATH)/libyang2
1515
SONIC_MAKE_DEBS += $(LIBYANG2)
1616

1717
LIBYANG2_DEV = libyang2-dev_$(LIBYANG2_FULLVERSION)_$(CONFIGURED_ARCH).deb
1818
$(eval $(call add_derived_package,$(LIBYANG2),$(LIBYANG2_DEV)))
1919

20-
LIBYANG2_DBG = libyang2-dbgsym_$(LIBYANG2_FULLVERSION)_$(CONFIGURED_ARCH).deb
20+
LIBYANG2_DBG = libyang2t64-dbgsym_$(LIBYANG2_FULLVERSION)_$(CONFIGURED_ARCH).deb
2121
$(eval $(call add_derived_package,$(LIBYANG2),$(LIBYANG2_DBG)))
2222

2323

sonic-slave-bookworm/Dockerfile.j2

+3-1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ RUN apt-get update && apt-get install -y eatmydata && eatmydata apt-get install
144144
libjson-c-dev \
145145
libsystemd-dev \
146146
libcmocka-dev \
147+
libprotobuf-c-dev \
148+
protobuf-c-compiler \
147149
#{%- if CROSS_BUILD_ENVIRON != "y" %}
148150
python3-all-dev \
149151
python3-all-dbg \
@@ -750,4 +752,4 @@ RUN mkdir -p /.cargo && $RUST_ROOT/bin/rustup target add armv7-unknown-linux-gnu
750752
RUN mkdir -p /.cargo && $RUST_ROOT/bin/rustup target add aarch64-unknown-linux-gnu && echo "[target.aarch64-unknown-linux-gnu]\nlinker = \"aarch64-linux-gnu-gcc\"" >> /.cargo/config.toml
751753
{% endif -%}
752754
ENV RUSTUP_HOME $RUST_ROOT
753-
ENV PATH $PATH:$RUST_ROOT/bin
755+
ENV PATH $PATH:$RUST_ROOT/bin

sonic-slave-bullseye/Dockerfile.j2

+2
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ RUN apt-get update && apt-get install -y eatmydata && eatmydata apt-get install
148148
libsystemd-dev \
149149
python3-ipaddr \
150150
libcmocka-dev \
151+
libprotobuf-c-dev \
152+
protobuf-c-compiler \
151153
#{%- if CROSS_BUILD_ENVIRON != "y" %}
152154
python3-all-dev \
153155
python3-all-dbg \

src/libyang2/Makefile

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
SHELL = /bin/bash
33
.SHELLFLAGS += -e
44

5-
LIBYANG_URL = https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang
5+
LIBYANG_URL = https://deb.debian.org/debian/pool/main/liby/libyang2
66

77
DSC_FILE = libyang2_$(LIBYANG2_FULLVERSION).dsc
8-
ORIG_FILE = libyang2_$(LIBYANG2_VERSION).orig.tar.gz
8+
ORIG_FILE = libyang2_$(LIBYANG2_VERSION).orig.tar.xz
99
DEBIAN_FILE = libyang2_$(LIBYANG2_FULLVERSION).debian.tar.xz
1010

1111
DSC_FILE_URL = $(LIBYANG_URL)/$(DSC_FILE)
@@ -26,6 +26,10 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
2626
dpkg-source -x libyang2_$(LIBYANG2_FULLVERSION).dsc
2727

2828
pushd libyang2-$(LIBYANG2_VERSION)
29+
#The package libyang2.1.148 is taken from debian trixie, which only has dpkg-dev version 1.21.22
30+
#The bullseye package has dpkg-dev version 1.20.13
31+
#The VS package has dpkg-dev version 1.19.8
32+
sed -i 's/dpkg-dev (>= 1.22.5)/dpkg-dev (>= 1.19.8)/' debian/control
2933
#sed -i 's/set(LIBYANG_MAJOR_SOVERSION 1)/set(LIBYANG_MAJOR_SOVERSION 2)/' CMakeLists.txt
3034
#sed -i 's/libyang2/libyang2/' debian/libyang2.install
3135
# Enable large file support for 32-bit arch

src/sonic-frr/patch/0008-Use-vrf_id-for-vrf-not-tabled_id.patch

+16-24
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,11 @@
1-
From 44f3736ee601e06e43e978fa075402c3da4823bd Mon Sep 17 00:00:00 2001
2-
From: Stepan Blyschak <[email protected]>
3-
Date: Mon, 16 Jan 2023 11:45:19 +0000
4-
Subject: [PATCH] From 349e3f758860be0077b69919c39764d3486ec44a Mon Sep 17
5-
00:00:00 2001 Subject: [PATCH] use vrf id instead of table id
6-
7-
Signed-off-by: Stepan Blyschak <[email protected]>
8-
91
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
10-
index 325199eff..587045eac 100644
2+
index b8d097e58..b81a9db6d 100644
113
--- a/zebra/rt_netlink.c
124
+++ b/zebra/rt_netlink.c
13-
@@ -406,6 +406,30 @@ vrf_id_t vrf_lookup_by_table(uint32_t table_id, ns_id_t ns_id)
14-
return VRF_DEFAULT;
5+
@@ -385,6 +385,31 @@ static inline int proto2zebra(int proto, int family, bool is_nexthop)
6+
return proto;
157
}
16-
8+
179
+static uint32_t table_lookup_by_vrf(vrf_id_t vrf_id, ns_id_t ns_id)
1810
+{
1911
+ struct vrf *vrf;
@@ -37,14 +29,15 @@ index 325199eff..587045eac 100644
3729
+
3830
+ return RT_TABLE_UNSPEC;
3931
+}
32+
+
4033
+
4134
/**
4235
* @parse_encap_mpls() - Parses encapsulated mpls attributes
4336
* @tb: Pointer to rtattr to look for nested items in.
44-
@@ -782,14 +806,26 @@ int netlink_route_change_read_unicast_internal(struct nlmsghdr *h,
37+
@@ -817,14 +842,26 @@ int netlink_route_change_read_unicast_internal(struct nlmsghdr *h,
4538
if (rtm->rtm_family == AF_MPLS)
4639
return 0;
47-
40+
4841
- /* Table corresponding to route. */
4942
- if (tb[RTA_TABLE])
5043
- table = *(int *)RTA_DATA(tb[RTA_TABLE]);
@@ -58,7 +51,7 @@ index 325199eff..587045eac 100644
5851
+ table = rtm->rtm_table;
5952
+
6053
+ /* Map to VRF */
61-
+ vrf_id = vrf_lookup_by_table(table, ns_id);
54+
+ vrf_id = zebra_vrf_lookup_by_table(table, ns_id);
6255
+ } else {
6356
+ /* With FPM, rtm_table contains vrf id, see netlink_route_multipath_msg_encode */
6457
+ if (tb[RTA_TABLE])
@@ -69,14 +62,14 @@ index 325199eff..587045eac 100644
6962
+ /* Map to table */
7063
+ table = table_lookup_by_vrf(vrf_id, ns_id);
7164
+ }
72-
65+
7366
- /* Map to VRF */
74-
- vrf_id = vrf_lookup_by_table(table, ns_id);
67+
- vrf_id = zebra_vrf_lookup_by_table(table, ns_id);
7568
if (vrf_id == VRF_DEFAULT) {
7669
if (!is_zebra_valid_kernel_table(table)
7770
&& !is_zebra_main_routing_table(table))
78-
@@ -2102,12 +2138,24 @@ ssize_t netlink_route_multipath_msg_encode(int cmd,
79-
71+
@@ -2283,13 +2320,25 @@ ssize_t netlink_route_multipath_msg_encode(int cmd, struct zebra_dplane_ctx *ctx
72+
8073
/* Table corresponding to this route. */
8174
table_id = dplane_ctx_get_table(ctx);
8275
- if (table_id < 256)
@@ -85,6 +78,7 @@ index 325199eff..587045eac 100644
8578
- req->r.rtm_table = RT_TABLE_UNSPEC;
8679
- if (!nl_attr_put32(&req->n, datalen, RTA_TABLE, table_id))
8780
- return 0;
81+
- }
8882
+ if (!fpm) {
8983
+ if (table_id < 256)
9084
+ req->r.rtm_table = table_id;
@@ -103,9 +97,7 @@ index 325199eff..587045eac 100644
10397
+ if (!nl_attr_put32(&req->n, datalen, RTA_TABLE, vrf))
10498
+ return 0;
10599
+ }
106-
}
107-
108-
if (IS_ZEBRA_DEBUG_KERNEL)
109-
--
110-
2.17.1
100+
+ }
111101

102+
if (IS_ZEBRA_DEBUG_KERNEL)
103+
zlog_debug(
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,40 @@
1-
From a05f213343ee7ee5dbfcfd1984c40db5c262db3c Mon Sep 17 00:00:00 2001
2-
From: stormliang <[email protected]>
3-
Date: Mon, 19 Jun 2023 13:57:01 +0000
4-
Subject: [PATCH] From c423bce4db804c1d07d65ce3d06a9e62c4eceb2b Mon Sep 17
5-
00:00:00 2001 Subject: [PATCH] change log level for graceful restart events
6-
7-
81
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
9-
index 9624adfbe..74b4dfc4a 100644
2+
index 504343994..f58ab7c02 100644
103
--- a/bgpd/bgp_fsm.c
114
+++ b/bgpd/bgp_fsm.c
12-
@@ -778,10 +778,10 @@ static void bgp_graceful_restart_timer_expire(struct thread *thread)
13-
14-
peer = THREAD_ARG(thread);
15-
5+
@@ -739,9 +739,9 @@ static void bgp_graceful_restart_timer_expire(struct event *thread)
6+
afi_t afi;
7+
safi_t safi;
8+
169
- if (bgp_debug_neighbor_events(peer)) {
1710
- zlog_debug("%pBP graceful restart timer expired", peer);
1811
- zlog_debug("%pBP graceful restart stalepath timer stopped",
19-
- peer);
2012
+ if (peer) {
2113
+ zlog_info("%pBP graceful restart timer expired", peer);
2214
+ zlog_info("%pBP graceful restart stalepath timer stopped",
23-
+ peer);
15+
peer);
2416
}
25-
26-
FOREACH_AFI_SAFI (afi, safi) {
27-
@@ -842,8 +842,8 @@ static void bgp_graceful_stale_timer_expire(struct thread *thread)
28-
29-
peer = THREAD_ARG(thread);
30-
17+
18+
@@ -801,8 +801,8 @@ static void bgp_graceful_stale_timer_expire(struct event *thread)
19+
afi_t afi;
20+
safi_t safi;
21+
3122
- if (bgp_debug_neighbor_events(peer))
3223
- zlog_debug("%pBP graceful restart stalepath timer expired",
3324
+ if (peer)
3425
+ zlog_info("%pBP graceful restart stalepath timer expired",
3526
peer);
36-
27+
3728
/* NSF delete stale route */
38-
@@ -1412,20 +1412,17 @@ enum bgp_fsm_state_progress bgp_stop(struct peer *peer)
29+
@@ -1380,20 +1380,17 @@ enum bgp_fsm_state_progress bgp_stop(struct peer_connection *connection)
3930
/* graceful restart */
40-
if (peer->t_gr_stale) {
41-
THREAD_OFF(peer->t_gr_stale);
31+
if (connection->t_gr_stale) {
32+
EVENT_OFF(connection->t_gr_stale);
4233
- if (bgp_debug_neighbor_events(peer))
4334
- zlog_debug(
44-
- "%pBP graceful restart stalepath timer stopped",
45-
- peer);
46-
+ zlog_info(
47-
+ "%pBP graceful restart stalepath timer stopped",
48-
+ peer);
35+
+ zlog_info(
36+
"%pBP graceful restart stalepath timer stopped",
37+
peer);
4938
}
5039
if (CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT)) {
5140
- if (bgp_debug_neighbor_events(peer)) {
@@ -62,55 +51,46 @@ index 9624adfbe..74b4dfc4a 100644
6251
+ zlog_info(
6352
+ "%pBP graceful restart stalepath timer started for %d sec",
6453
+ peer, peer->bgp->stalepath_time);
65-
BGP_TIMER_ON(peer->t_gr_restart,
54+
BGP_TIMER_ON(connection->t_gr_restart,
6655
bgp_graceful_restart_timer_expire,
6756
peer->v_gr_restart);
68-
@@ -2225,17 +2222,15 @@ static enum bgp_fsm_state_progress bgp_establish(struct peer *peer)
57+
@@ -2216,8 +2213,7 @@ bgp_establish(struct peer_connection *connection)
6958
UNSET_FLAG(peer->sflags, PEER_STATUS_NSF_MODE);
70-
if (peer->t_gr_stale) {
71-
THREAD_OFF(peer->t_gr_stale);
59+
if (connection->t_gr_stale) {
60+
EVENT_OFF(connection->t_gr_stale);
7261
- if (bgp_debug_neighbor_events(peer))
7362
- zlog_debug(
74-
- "%pBP graceful restart stalepath timer stopped",
75-
- peer);
7663
+ zlog_info(
77-
+ "%pBP graceful restart stalepath timer stopped",
78-
+ peer);
64+
"%pBP graceful restart stalepath timer stopped",
65+
peer);
7966
}
80-
}
81-
82-
if (peer->t_gr_restart) {
83-
THREAD_OFF(peer->t_gr_restart);
67+
@@ -2225,8 +2221,7 @@ bgp_establish(struct peer_connection *connection)
68+
69+
if (connection->t_gr_restart) {
70+
EVENT_OFF(connection->t_gr_restart);
8471
- if (bgp_debug_neighbor_events(peer))
8572
- zlog_debug("%pBP graceful restart timer stopped", peer);
8673
+ zlog_info("%pBP graceful restart timer stopped", peer);
8774
}
88-
75+
8976
/* Reset uptime, turn on keepalives, send current table. */
9077
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
91-
index 8b3a1e3dd..2f3b837a5 100644
78+
index d6d874be2..337879a2d 100644
9279
--- a/bgpd/bgpd.c
9380
+++ b/bgpd/bgpd.c
94-
@@ -2453,15 +2453,13 @@ void peer_nsf_stop(struct peer *peer)
95-
96-
if (peer->t_gr_restart) {
97-
THREAD_OFF(peer->t_gr_restart);
81+
@@ -2629,13 +2629,11 @@ void peer_nsf_stop(struct peer *peer)
82+
83+
if (peer->connection->t_gr_restart) {
84+
EVENT_OFF(peer->connection->t_gr_restart);
9885
- if (bgp_debug_neighbor_events(peer))
9986
- zlog_debug("%pBP graceful restart timer stopped", peer);
10087
+ zlog_info("%pBP graceful restart timer stopped", peer);
10188
}
102-
if (peer->t_gr_stale) {
103-
THREAD_OFF(peer->t_gr_stale);
89+
if (peer->connection->t_gr_stale) {
90+
EVENT_OFF(peer->connection->t_gr_stale);
10491
- if (bgp_debug_neighbor_events(peer))
10592
- zlog_debug(
106-
- "%pBP graceful restart stalepath timer stopped",
107-
- peer);
10893
+ zlog_info(
109-
+ "%pBP graceful restart stalepath timer stopped",
110-
+ peer);
94+
"%pBP graceful restart stalepath timer stopped",
95+
peer);
11196
}
112-
bgp_clear_route_all(peer);
113-
}
114-
--
115-
2.17.1
116-

0 commit comments

Comments
 (0)