summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ward <david.ward@ll.mit.edu>2024-06-02 06:42:23 -0400
committerDavid Ward <david.ward@ll.mit.edu>2024-06-02 06:44:59 -0400
commit172dd682d907c1e694db7e6d9d7d2023b3b566c5 (patch)
treea16c8f0bdc58045bd4f06ebb908e906ea077c96a
parent8954dd3a6b291cc2f778a322aad18418a13675f6 (diff)
bgpd: Adjust terminology related to DSCP
The default DSCP used for BGP connections is CS6. The DSCP value is not part of the TCP header. When setting the IP_TOS or IPV6_TCLASS socket options, the argument is not the 6-bit DSCP value, but an 8-bit value for the former IPv4 Type of Service field or IPv6 Traffic Class field, respectively. Fixes: 425bd64be847 ("bgpd: Allow bgp to control the DSCP session TOS value") Signed-off-by: David Ward <david.ward@ll.mit.edu>
-rw-r--r--bgpd/bgp_network.c8
-rw-r--r--bgpd/bgp_vty.c18
-rw-r--r--bgpd/bgpd.c2
-rw-r--r--bgpd/bgpd.h4
-rw-r--r--doc/user/bgp.rst4
5 files changed, 18 insertions, 18 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index b409cbe706..e09dbc22af 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -817,9 +817,9 @@ int bgp_connect(struct peer_connection *connection)
#ifdef IPTOS_PREC_INTERNETCONTROL
frr_with_privs(&bgpd_privs) {
if (sockunion_family(&connection->su) == AF_INET)
- setsockopt_ipv4_tos(connection->fd, bm->tcp_dscp);
+ setsockopt_ipv4_tos(connection->fd, bm->ip_tos);
else if (sockunion_family(&connection->su) == AF_INET6)
- setsockopt_ipv6_tclass(connection->fd, bm->tcp_dscp);
+ setsockopt_ipv6_tclass(connection->fd, bm->ip_tos);
}
#endif
@@ -905,9 +905,9 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen,
#ifdef IPTOS_PREC_INTERNETCONTROL
if (sa->sa_family == AF_INET)
- setsockopt_ipv4_tos(sock, bm->tcp_dscp);
+ setsockopt_ipv4_tos(sock, bm->ip_tos);
else if (sa->sa_family == AF_INET6)
- setsockopt_ipv6_tclass(sock, bm->tcp_dscp);
+ setsockopt_ipv6_tclass(sock, bm->ip_tos);
#endif
sockopt_v6only(sa->sa_family, sock);
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index be9942afb6..fbe1db9d2a 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -1760,10 +1760,10 @@ DEFPY (bgp_session_dscp,
bgp_session_dscp_cmd,
"bgp session-dscp (0-63)$dscp",
BGP_STR
- "Override default (C6) bgp TCP session DSCP value\n"
- "Manually configured dscp parameter\n")
+ "Override default (CS6) DSCP for BGP connections\n"
+ "Manually configured DSCP value\n")
{
- bm->tcp_dscp = dscp << 2;
+ bm->ip_tos = dscp << 2;
return CMD_SUCCESS;
}
@@ -1773,10 +1773,10 @@ DEFPY (no_bgp_session_dscp,
"no bgp session-dscp [(0-63)]",
NO_STR
BGP_STR
- "Override default (C6) bgp TCP session DSCP value\n"
- "Manually configured dscp parameter\n")
+ "Override default (CS6) DSCP for BGP connections\n"
+ "Manually configured DSCP value\n")
{
- bm->tcp_dscp = IPTOS_PREC_INTERNETCONTROL;
+ bm->ip_tos = IPTOS_PREC_INTERNETCONTROL;
return CMD_SUCCESS;
}
@@ -19191,9 +19191,9 @@ int bgp_config_write(struct vty *vty)
if (CHECK_FLAG(bm->flags, BM_FLAG_SEND_EXTRA_DATA_TO_ZEBRA))
vty_out(vty, "bgp send-extra-data zebra\n");
- /* BGP session DSCP value */
- if (bm->tcp_dscp != IPTOS_PREC_INTERNETCONTROL)
- vty_out(vty, "bgp session-dscp %u\n", bm->tcp_dscp >> 2);
+ /* DSCP value for outgoing packets in BGP connections */
+ if (bm->ip_tos != IPTOS_PREC_INTERNETCONTROL)
+ vty_out(vty, "bgp session-dscp %u\n", bm->ip_tos >> 2);
/* BGP InQ limit */
if (bm->inq_limit != BM_DEFAULT_Q_LIMIT)
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 09e64cf9ec..d8eba0ab22 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -8375,7 +8375,7 @@ void bgp_master_init(struct event_loop *master, const int buffer_size,
bm->terminating = false;
bm->socket_buffer = buffer_size;
bm->wait_for_fib = false;
- bm->tcp_dscp = IPTOS_PREC_INTERNETCONTROL;
+ bm->ip_tos = IPTOS_PREC_INTERNETCONTROL;
bm->inq_limit = BM_DEFAULT_Q_LIMIT;
bm->outq_limit = BM_DEFAULT_Q_LIMIT;
bm->t_bgp_sync_label_manager = NULL;
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index ad749ba676..1f8cc53349 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -166,8 +166,8 @@ struct bgp_master {
bool terminating; /* global flag that sigint terminate seen */
- /* DSCP value for TCP sessions */
- uint8_t tcp_dscp;
+ /* TOS value for outgoing packets in BGP connections */
+ uint8_t ip_tos;
#define BM_DEFAULT_Q_LIMIT 10000
uint32_t inq_limit;
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index ae342e4c13..58fdbf969b 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -4933,8 +4933,8 @@ setting.
.. clicmd:: bgp session-dscp (0-63)
-This command allows bgp to control, at a global level, the TCP dscp values
-in the TCP header.
+This command allows the BGP daemon to control, at a global level, the DSCP value
+used in outgoing packets for each BGP connection.
.. _bgp-suppress-fib: