Просмотр исходного кода

rm QUIC_PORT_OFFSET outside of gossip (#8820)

* rm QUIC_PORT_OFFSET

* rm tests which no longer make sense
Alex Pyattaev 1 неделя назад
Родитель
Сommit
593a2aadd0

+ 1 - 0
CHANGELOG.md

@@ -16,6 +16,7 @@ Release channels have their own copy of this changelog:
 ## 4.0.0-Unreleased
 ### RPC
 #### Breaking
+* `--public-tpu-address` and `--public-tpu-forwards-address` CLI arguments and `setPublicTpuForwardsAddress`, `setPublicTpuAddress` RPC methods now specify QUIC ports, not UDP.
 #### Changes
 * Added `--enable-scheduler-bindings` which binds an IPC server at `<ledger-path>/scheduler_bindings.ipc` for external schedulers to connect to.
 ### Validator

+ 0 - 2
Cargo.lock

@@ -468,7 +468,6 @@ dependencies = [
  "solana-program-pack",
  "solana-program-runtime",
  "solana-pubkey",
- "solana-quic-definitions",
  "solana-rayon-threadlimit",
  "solana-rent",
  "solana-rpc",
@@ -11346,7 +11345,6 @@ dependencies = [
  "solana-net-utils",
  "solana-pubkey",
  "solana-pubsub-client",
- "solana-quic-definitions",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-signature",

+ 0 - 6
core/src/repair/serve_repair.rs

@@ -1919,9 +1919,6 @@ mod tests {
         nxt.set_gossip((Ipv4Addr::LOCALHOST, 1234)).unwrap();
         nxt.set_tvu(UDP, (Ipv4Addr::LOCALHOST, 1235)).unwrap();
         nxt.set_tvu(QUIC, (Ipv4Addr::LOCALHOST, 1236)).unwrap();
-        nxt.set_tpu((Ipv4Addr::LOCALHOST, 1238)).unwrap();
-        nxt.set_tpu_forwards((Ipv4Addr::LOCALHOST, 1239)).unwrap();
-        nxt.set_tpu_vote(UDP, (Ipv4Addr::LOCALHOST, 1240)).unwrap();
         nxt.set_rpc((Ipv4Addr::LOCALHOST, 1241)).unwrap();
         nxt.set_rpc_pubsub((Ipv4Addr::LOCALHOST, 1242)).unwrap();
         nxt.set_serve_repair(UDP, serve_repair_addr).unwrap();
@@ -1954,9 +1951,6 @@ mod tests {
         nxt.set_gossip((Ipv4Addr::LOCALHOST, 1234)).unwrap();
         nxt.set_tvu(UDP, (Ipv4Addr::LOCALHOST, 1235)).unwrap();
         nxt.set_tvu(QUIC, (Ipv4Addr::LOCALHOST, 1236)).unwrap();
-        nxt.set_tpu((Ipv4Addr::LOCALHOST, 1238)).unwrap();
-        nxt.set_tpu_forwards((Ipv4Addr::LOCALHOST, 1239)).unwrap();
-        nxt.set_tpu_vote(UDP, (Ipv4Addr::LOCALHOST, 1240)).unwrap();
         nxt.set_rpc((Ipv4Addr::LOCALHOST, 1241)).unwrap();
         nxt.set_rpc_pubsub((Ipv4Addr::LOCALHOST, 1242)).unwrap();
         nxt.set_serve_repair(UDP, serve_repair_addr2).unwrap();

+ 0 - 1
dev-bins/Cargo.lock

@@ -9377,7 +9377,6 @@ dependencies = [
  "solana-net-utils",
  "solana-pubkey",
  "solana-pubsub-client",
- "solana-quic-definitions",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-signature",

+ 10 - 4
gossip/src/cluster_info.rs

@@ -413,17 +413,23 @@ impl ClusterInfo {
         Ok(())
     }
 
-    pub fn set_tpu(&self, tpu_addr: SocketAddr) -> Result<(), ContactInfoError> {
-        self.my_contact_info.write().unwrap().set_tpu(tpu_addr)?;
+    pub fn set_tpu_quic(&self, tpu_addr: SocketAddr) -> Result<(), ContactInfoError> {
+        self.my_contact_info
+            .write()
+            .unwrap()
+            .set_tpu(contact_info::Protocol::QUIC, tpu_addr)?;
         self.refresh_my_gossip_contact_info();
         Ok(())
     }
 
-    pub fn set_tpu_forwards(&self, tpu_forwards_addr: SocketAddr) -> Result<(), ContactInfoError> {
+    pub fn set_tpu_forwards_quic(
+        &self,
+        tpu_forwards_addr: SocketAddr,
+    ) -> Result<(), ContactInfoError> {
         self.my_contact_info
             .write()
             .unwrap()
-            .set_tpu_forwards(tpu_forwards_addr)?;
+            .set_tpu_forwards(contact_info::Protocol::QUIC, tpu_forwards_addr)?;
         self.refresh_my_gossip_contact_info();
         Ok(())
     }

+ 18 - 102
gossip/src/contact_info.rs

@@ -8,7 +8,6 @@ use {
     assert_matches::{assert_matches, debug_assert_matches},
     serde::{Deserialize, Deserializer, Serialize},
     solana_pubkey::Pubkey,
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_sanitize::{Sanitize, SanitizeError},
     solana_serde_varint as serde_varint, solana_short_vec as short_vec,
     solana_streamer::socket::SocketAddrSpace,
@@ -180,17 +179,7 @@ macro_rules! set_socket {
             self.set_socket($key, socket)
         }
     };
-    ($name:ident, $key:ident, $quic:ident) => {
-        pub fn $name<T>(&mut self, socket: T) -> Result<(), Error>
-        where
-            SocketAddr: From<T>,
-        {
-            let socket = SocketAddr::from(socket);
-            self.set_socket($key, socket)?;
-            self.set_socket($quic, get_quic_socket(&socket)?)
-        }
-    };
-    (@multi $name:ident, $udp:ident, $quic:ident) => {
+    ($name:ident, $udp:ident, $quic:ident) => {
         pub fn $name<T>(&mut self, protocol: Protocol, socket: T) -> Result<(), Error>
         where
             SocketAddr: From<T>,
@@ -296,9 +285,13 @@ impl ContactInfo {
         SOCKET_TAG_TPU_FORWARDS,
         SOCKET_TAG_TPU_FORWARDS_QUIC
     );
-    set_socket!(@multi set_serve_repair, SOCKET_TAG_SERVE_REPAIR, SOCKET_TAG_SERVE_REPAIR_QUIC);
-    set_socket!(@multi set_tpu_vote, SOCKET_TAG_TPU_VOTE, SOCKET_TAG_TPU_VOTE_QUIC);
-    set_socket!(@multi set_tvu, SOCKET_TAG_TVU, SOCKET_TAG_TVU_QUIC);
+    set_socket!(
+        set_serve_repair,
+        SOCKET_TAG_SERVE_REPAIR,
+        SOCKET_TAG_SERVE_REPAIR_QUIC
+    );
+    set_socket!(set_tpu_vote, SOCKET_TAG_TPU_VOTE, SOCKET_TAG_TPU_VOTE_QUIC);
+    set_socket!(set_tvu, SOCKET_TAG_TVU, SOCKET_TAG_TVU_QUIC);
     set_socket!(set_alpenglow, SOCKET_TAG_ALPENGLOW);
 
     remove_socket!(
@@ -450,8 +443,12 @@ impl ContactInfo {
         node.set_gossip((Ipv4Addr::LOCALHOST, 8000)).unwrap();
         node.set_tvu(UDP, (Ipv4Addr::LOCALHOST, 8001)).unwrap();
         node.set_tvu(QUIC, (Ipv4Addr::LOCALHOST, 8002)).unwrap();
-        node.set_tpu((Ipv4Addr::LOCALHOST, 8003)).unwrap(); // quic: 8009
-        node.set_tpu_forwards((Ipv4Addr::LOCALHOST, 8004)).unwrap(); // quic: 8010
+        node.set_tpu(UDP, (Ipv4Addr::LOCALHOST, 8003)).unwrap();
+        node.set_tpu(QUIC, (Ipv4Addr::LOCALHOST, 8009)).unwrap();
+        node.set_tpu_forwards(UDP, (Ipv4Addr::LOCALHOST, 8004))
+            .unwrap();
+        node.set_tpu_forwards(QUIC, (Ipv4Addr::LOCALHOST, 8010))
+            .unwrap();
         node.set_tpu_vote(UDP, (Ipv4Addr::LOCALHOST, 8005)).unwrap();
         node.set_tpu_vote(QUIC, (Ipv4Addr::LOCALHOST, 8007))
             .unwrap();
@@ -479,8 +476,10 @@ impl ContactInfo {
         node.set_gossip((addr, port + 1)).unwrap();
         node.set_tvu(UDP, (addr, port + 2)).unwrap();
         node.set_tvu(QUIC, (addr, port + 3)).unwrap();
-        node.set_tpu((addr, port)).unwrap(); // quic: port + 6
-        node.set_tpu_forwards((addr, port + 5)).unwrap(); // quic: port + 11
+        node.set_tpu(UDP, (addr, port)).unwrap();
+        node.set_tpu(QUIC, (addr, port + 6)).unwrap();
+        node.set_tpu_forwards(UDP, (addr, port + 5)).unwrap();
+        node.set_tpu_forwards(QUIC, (addr, port + 11)).unwrap();
         node.set_tpu_vote(UDP, (addr, port + 7)).unwrap();
         node.set_tpu_vote(QUIC, (addr, port + 9)).unwrap();
         node.set_rpc((addr, DEFAULT_RPC_PORT)).unwrap();
@@ -661,28 +660,6 @@ fn sanitize_entries(addrs: &[IpAddr], sockets: &[SocketEntry]) -> Result<(), Err
     Ok(())
 }
 
-// Verifies that the other socket is at QUIC_PORT_OFFSET from the first one.
-#[cfg(test)]
-fn sanitize_quic_offset(
-    socket: &Option<SocketAddr>, // udp
-    other: &Option<SocketAddr>,  // quic: udp + QUIC_PORT_OFFSET
-) -> Result<(), Error> {
-    (other == &socket.as_ref().map(get_quic_socket).transpose()?)
-        .then_some(())
-        .ok_or(Error::InvalidQuicSocket(*socket, *other))
-}
-
-// Returns the socket at QUIC_PORT_OFFSET from the given one.
-fn get_quic_socket(socket: &SocketAddr) -> Result<SocketAddr, Error> {
-    Ok(SocketAddr::new(
-        socket.ip(),
-        socket
-            .port()
-            .checked_add(QUIC_PORT_OFFSET)
-            .ok_or_else(|| Error::InvalidPort(socket.port()))?,
-    ))
-}
-
 #[cfg(all(test, feature = "frozen-abi"))]
 impl solana_frozen_abi::abi_example::AbiExample for ContactInfo {
     fn example() -> Self {
@@ -1000,67 +977,6 @@ mod tests {
         }
     }
 
-    #[test]
-    fn test_sanitize_quic_offset() {
-        let mut rng = rand::thread_rng();
-        let socket = repeat_with(|| new_rand_socket(&mut rng))
-            .filter(|socket| matches!(sanitize_socket(socket), Ok(())))
-            .find(|socket| socket.port().checked_add(QUIC_PORT_OFFSET).is_some())
-            .unwrap();
-        let mut other = get_quic_socket(&socket).unwrap();
-        assert_matches!(sanitize_quic_offset(&None, &None), Ok(()));
-        assert_matches!(
-            sanitize_quic_offset(&Some(socket), &None),
-            Err(Error::InvalidQuicSocket(_, _))
-        );
-        assert_matches!(sanitize_quic_offset(&Some(socket), &Some(other)), Ok(()));
-        assert_matches!(
-            sanitize_quic_offset(&Some(other), &Some(socket)),
-            Err(Error::InvalidQuicSocket(_, _))
-        );
-        other.set_ip(new_rand_addr(&mut rng));
-        assert_matches!(
-            sanitize_quic_offset(&Some(socket), &Some(other)),
-            Err(Error::InvalidQuicSocket(_, _))
-        );
-        other.set_ip(socket.ip());
-        assert_matches!(sanitize_quic_offset(&Some(socket), &Some(other)), Ok(()));
-    }
-
-    #[test]
-    fn test_quic_socket() {
-        let mut rng = rand::thread_rng();
-        let mut node = ContactInfo::new(
-            Keypair::new().pubkey(),
-            rng.gen(), // wallclock
-            rng.gen(), // shred_version
-        );
-        let socket = repeat_with(|| new_rand_socket(&mut rng))
-            .filter(|socket| matches!(sanitize_socket(socket), Ok(())))
-            .find(|socket| socket.port().checked_add(QUIC_PORT_OFFSET).is_some())
-            .unwrap();
-        // TPU socket.
-        node.set_tpu(socket).unwrap();
-        assert_eq!(node.tpu(Protocol::UDP).unwrap(), socket);
-        assert_eq!(
-            node.tpu(Protocol::QUIC).unwrap(),
-            SocketAddr::new(socket.ip(), socket.port() + QUIC_PORT_OFFSET)
-        );
-        node.remove_tpu();
-        assert_matches!(node.tpu(Protocol::UDP), None);
-        assert_matches!(node.tpu(Protocol::QUIC), None);
-        // TPU forwards socket.
-        node.set_tpu_forwards(socket).unwrap();
-        assert_eq!(node.tpu_forwards(Protocol::UDP).unwrap(), socket);
-        assert_eq!(
-            node.tpu_forwards(Protocol::QUIC).unwrap(),
-            SocketAddr::new(socket.ip(), socket.port() + QUIC_PORT_OFFSET)
-        );
-        node.remove_tpu_forwards();
-        assert_matches!(node.tpu_forwards(Protocol::UDP), None);
-        assert_matches!(node.tpu_forwards(Protocol::QUIC), None);
-    }
-
     #[test]
     fn test_set_and_remove_alpenglow() {
         let mut rng = rand::thread_rng();

+ 23 - 24
gossip/src/node.rs

@@ -11,13 +11,11 @@ use {
         multihomed_sockets::BindIpAddrs,
         sockets::{
             bind_gossip_port_in_range, bind_in_range_with_config, bind_more_with_config,
-            bind_to_with_config, bind_two_in_range_with_offset_and_config,
-            localhost_port_range_for_tests, multi_bind_in_range_with_config,
+            bind_to_with_config, localhost_port_range_for_tests, multi_bind_in_range_with_config,
             SocketConfiguration as SocketConfig,
         },
     },
     solana_pubkey::Pubkey,
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_streamer::quic::DEFAULT_QUIC_ENDPOINTS,
     solana_time_utils::timestamp,
     std::{
@@ -134,18 +132,15 @@ impl Node {
             bind_in_range_with_config(bind_ip_addr, port_range, socket_config)
                 .expect("tvu_quic bind");
 
-        let ((tpu_port, tpu_socket), (tpu_port_quic, tpu_quic)) =
-            bind_two_in_range_with_offset_and_config(
-                bind_ip_addr,
-                port_range,
-                QUIC_PORT_OFFSET,
-                socket_config,
-                socket_config,
-            )
-            .expect("tpu_socket primary bind");
+        let (tpu_port, tpu_socket) =
+            bind_in_range_with_config(bind_ip_addr, port_range, socket_config)
+                .expect("tpu_socket primary bind");
         let tpu_sockets =
             bind_more_with_config(tpu_socket, 32, socket_config).expect("tpu_sockets multi_bind");
 
+        let (tpu_port_quic, tpu_quic) =
+            bind_in_range_with_config(bind_ip_addr, port_range, socket_config)
+                .expect("tpu_socket primary bind");
         let mut tpu_quic = bind_more_with_config(tpu_quic, num_quic_endpoints.get(), socket_config)
             .expect("tpu_quic bind");
 
@@ -156,17 +151,14 @@ impl Node {
         );
         let tpu_quic_addresses = Self::get_socket_addrs(&tpu_quic);
 
-        let ((tpu_forwards_port, tpu_forwards_socket), (tpu_forwards_quic_port, tpu_forwards_quic)) =
-            bind_two_in_range_with_offset_and_config(
-                bind_ip_addr,
-                port_range,
-                QUIC_PORT_OFFSET,
-                socket_config,
-                socket_config,
-            )
-            .expect("tpu_forwards primary bind");
+        let (tpu_forwards_port, tpu_forwards_socket) =
+            bind_in_range_with_config(bind_ip_addr, port_range, socket_config)
+                .expect("tpu_forwards primary bind");
         let tpu_forwards_sockets = bind_more_with_config(tpu_forwards_socket, 8, socket_config)
             .expect("tpu_forwards multi_bind");
+        let (tpu_forwards_quic_port, tpu_forwards_quic) =
+            bind_in_range_with_config(bind_ip_addr, port_range, socket_config)
+                .expect("tpu_forwards primary bind");
         let mut tpu_forwards_quic =
             bind_more_with_config(tpu_forwards_quic, num_quic_endpoints.get(), socket_config)
                 .expect("tpu_forwards_quic multi_bind");
@@ -303,9 +295,16 @@ impl Node {
         )
         .unwrap();
         info.set_tvu(QUIC, (advertised_ip, tvu_quic_port)).unwrap();
-        info.set_tpu(public_tpu_addr.unwrap_or_else(|| SocketAddr::new(advertised_ip, tpu_port)))
+        info.set_tpu(UDP, (advertised_ip, tpu_port)).unwrap();
+        info.set_tpu(
+            QUIC,
+            public_tpu_addr.unwrap_or_else(|| SocketAddr::new(advertised_ip, tpu_port_quic)),
+        )
+        .unwrap();
+        info.set_tpu_forwards(UDP, (advertised_ip, tpu_forwards_port))
             .unwrap();
         info.set_tpu_forwards(
+            QUIC,
             public_tpu_forwards_addr
                 .unwrap_or_else(|| SocketAddr::new(advertised_ip, tpu_forwards_port)),
         )
@@ -485,13 +484,13 @@ mod multihoming {
             // tpu_quic
             let tpu_quic_address = self.addresses.tpu_quic[interface_index];
             cluster_info
-                .set_tpu(tpu_quic_address)
+                .set_tpu_quic(tpu_quic_address)
                 .map_err(|e| e.to_string())?;
 
             // tpu_forwards_quic
             let tpu_forwards_quic_address = self.addresses.tpu_forwards_quic[interface_index];
             cluster_info
-                .set_tpu_forwards(tpu_forwards_quic_address)
+                .set_tpu_forwards_quic(tpu_forwards_quic_address)
                 .map_err(|e| e.to_string())?;
 
             // tpu_vote_quic

+ 0 - 2
programs/sbf/Cargo.lock

@@ -309,7 +309,6 @@ dependencies = [
  "solana-poh",
  "solana-program-runtime",
  "solana-pubkey",
- "solana-quic-definitions",
  "solana-rayon-threadlimit",
  "solana-rent",
  "solana-rpc",
@@ -9900,7 +9899,6 @@ dependencies = [
  "solana-net-utils",
  "solana-pubkey",
  "solana-pubsub-client",
- "solana-quic-definitions",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-signature",

+ 3 - 4
rpc/src/cluster_tpu_info.rs

@@ -96,7 +96,6 @@ mod test {
             leader_schedule_cache::LeaderScheduleCache,
         },
         solana_poh_config::PohConfig,
-        solana_quic_definitions::QUIC_PORT_OFFSET,
         solana_runtime::{
             bank::Bank,
             genesis_utils::{
@@ -218,15 +217,15 @@ mod test {
 
         let validator0_socket = (
             SocketAddr::from((Ipv4Addr::LOCALHOST, 1111)),
-            SocketAddr::from((Ipv4Addr::LOCALHOST, 1111 + QUIC_PORT_OFFSET)),
+            SocketAddr::from((Ipv4Addr::LOCALHOST, 1112)),
         );
         let validator1_socket = (
             SocketAddr::from((Ipv4Addr::LOCALHOST, 2222)),
-            SocketAddr::from((Ipv4Addr::LOCALHOST, 2222 + QUIC_PORT_OFFSET)),
+            SocketAddr::from((Ipv4Addr::LOCALHOST, 2223)),
         );
         let validator2_socket = (
             SocketAddr::from((Ipv4Addr::LOCALHOST, 3333)),
-            SocketAddr::from((Ipv4Addr::LOCALHOST, 3333 + QUIC_PORT_OFFSET)),
+            SocketAddr::from((Ipv4Addr::LOCALHOST, 3334)),
         );
         let recent_peers: HashMap<_, _> = [
             (

+ 0 - 1
tpu-client/Cargo.toml

@@ -41,7 +41,6 @@ solana-message = { workspace = true, optional = true }
 solana-net-utils = { workspace = true }
 solana-pubkey = { workspace = true }
 solana-pubsub-client = { workspace = true }
-solana-quic-definitions = { workspace = true }
 solana-rpc-client = { workspace = true }
 solana-rpc-client-api = { workspace = true }
 solana-signature = { workspace = true }

+ 1 - 7
tpu-client/src/nonblocking/tpu_client.rs

@@ -16,7 +16,6 @@ use {
     solana_epoch_schedule::EpochSchedule,
     solana_pubkey::Pubkey,
     solana_pubsub_client::nonblocking::pubsub_client::{PubsubClient, PubsubClientError},
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_rpc_client::nonblocking::rpc_client::RpcClient,
     solana_rpc_client_api::{
         client_error::{Error as ClientError, ErrorKind, Result as ClientResult},
@@ -196,12 +195,7 @@ impl LeaderTpuCache {
             .filter_map(|contact_info| {
                 let pubkey = Pubkey::from_str(&contact_info.pubkey).ok()?;
                 let socket = match protocol {
-                    Protocol::QUIC => contact_info.tpu_quic.or_else(|| {
-                        let mut socket = contact_info.tpu?;
-                        let port = socket.port().checked_add(QUIC_PORT_OFFSET)?;
-                        socket.set_port(port);
-                        Some(socket)
-                    }),
+                    Protocol::QUIC => contact_info.tpu_quic,
                     Protocol::UDP => contact_info.tpu,
                 }?;
                 Some((pubkey, socket))

+ 0 - 1
validator/Cargo.toml

@@ -69,7 +69,6 @@ solana-perf = { workspace = true }
 solana-poh = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-pubkey = { workspace = true }
-solana-quic-definitions = { workspace = true }
 solana-rayon-threadlimit = { workspace = true }
 solana-rent = { workspace = true }
 solana-rpc = { workspace = true }

+ 12 - 11
validator/src/admin_rpc_service.rs

@@ -701,10 +701,10 @@ impl AdminRpc for AdminRpcImpl {
             post_init
                 .cluster_info
                 .my_contact_info()
-                .tpu(Protocol::UDP)
+                .tpu(Protocol::QUIC)
                 .ok_or_else(|| {
                     error!(
-                        "The public TPU address isn't being published. The node is likely in \
+                        "The public TPU QUIC address isn't being published. The node is likely in \
                          repair mode. See help for --restricted-repair-only-mode for more \
                          information."
                     );
@@ -712,15 +712,14 @@ impl AdminRpc for AdminRpcImpl {
                 })?;
             post_init
                 .cluster_info
-                .set_tpu(public_tpu_addr)
+                .set_tpu_quic(public_tpu_addr)
                 .map_err(|err| {
-                    error!("Failed to set public TPU address to {public_tpu_addr}: {err}");
+                    error!("Failed to set public TPU QUIC address to {public_tpu_addr}: {err}");
                     jsonrpc_core::error::Error::internal_error()
                 })?;
             let my_contact_info = post_init.cluster_info.my_contact_info();
             warn!(
-                "Public TPU addresses set to {:?} (udp) and {:?} (quic)",
-                my_contact_info.tpu(Protocol::UDP),
+                "Public TPU addresses set to {:?} (quic)",
                 my_contact_info.tpu(Protocol::QUIC),
             );
             Ok(())
@@ -738,7 +737,7 @@ impl AdminRpc for AdminRpcImpl {
             post_init
                 .cluster_info
                 .my_contact_info()
-                .tpu_forwards(Protocol::UDP)
+                .tpu_forwards(Protocol::QUIC)
                 .ok_or_else(|| {
                     error!(
                         "The public TPU Forwards address isn't being published. The node is \
@@ -749,15 +748,17 @@ impl AdminRpc for AdminRpcImpl {
                 })?;
             post_init
                 .cluster_info
-                .set_tpu_forwards(public_tpu_forwards_addr)
+                .set_tpu_forwards_quic(public_tpu_forwards_addr)
                 .map_err(|err| {
-                    error!("Failed to set public TPU address to {public_tpu_forwards_addr}: {err}");
+                    error!(
+                        "Failed to set public TPU QUIC address to {public_tpu_forwards_addr}: \
+                         {err}"
+                    );
                     jsonrpc_core::error::Error::internal_error()
                 })?;
             let my_contact_info = post_init.cluster_info.my_contact_info();
             warn!(
-                "Public TPU Forwards addresses set to {:?} (udp) and {:?} (quic)",
-                my_contact_info.tpu_forwards(Protocol::UDP),
+                "Public TPU Forwards address set to {:?} (quic)",
                 my_contact_info.tpu_forwards(Protocol::QUIC),
             );
             Ok(())

+ 0 - 3
validator/src/cli.rs

@@ -27,7 +27,6 @@ use {
     solana_faucet::faucet::{self, FAUCET_PORT},
     solana_hash::Hash,
     solana_net_utils::{MINIMUM_VALIDATOR_PORT_RANGE_WIDTH, VALIDATOR_PORT_RANGE},
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_send_transaction_service::send_transaction_service::{self},
     solana_streamer::quic::{
         DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE,
@@ -345,8 +344,6 @@ pub fn port_range_validator(port_range: String) -> Result<(), String> {
                 start,
                 start + MINIMUM_VALIDATOR_PORT_RANGE_WIDTH
             ))
-        } else if end.checked_add(QUIC_PORT_OFFSET).is_none() {
-            Err("Invalid dynamic_port_range.".to_string())
         } else {
             Ok(())
         }

+ 3 - 3
validator/src/commands/run/args.rs

@@ -348,7 +348,7 @@ pub fn add_args<'a>(app: App<'a, 'a>, default_args: &'a DefaultArgs) -> App<'a,
             .takes_value(true)
             .validator(solana_net_utils::is_host_port)
             .help(
-                "Specify TPU address to advertise in gossip [default: ask --entrypoint or \
+                "Specify TPU QUIC address to advertise in gossip [default: ask --entrypoint or \
                  localhost when --entrypoint is not provided]",
             ),
     )
@@ -359,8 +359,8 @@ pub fn add_args<'a>(app: App<'a, 'a>, default_args: &'a DefaultArgs) -> App<'a,
             .takes_value(true)
             .validator(solana_net_utils::is_host_port)
             .help(
-                "Specify TPU Forwards address to advertise in gossip [default: ask --entrypoint \
-                 or localhostwhen --entrypoint is not provided]",
+                "Specify TPU Forwards QUIC address to advertise in gossip [default: ask \
+                 --entrypoint or localhostwhen --entrypoint is not provided]",
             ),
     )
     .arg(

+ 0 - 7
vortexor/README.md

@@ -202,13 +202,6 @@ The Vortexor's TPU and forward addresses can be found in its log file. For examp
 [2025-04-24T17:40:13.098760226Z INFO  solana_vortexor] Creating the Vortexor. The tpu socket is: Ok(0.0.0.0:9200), tpu_fwd: Ok(0.0.0.0:9201)
 ```
 
-When configuring the validator, deduct the `QUIC_PORT_OFFSET` (which is 6) from
-the TPU and forward ports. For example, with the ports shown in the vortexor's
-log file, the TPU and forward port should be set to the following when starting
-the validator:
-- TPU port: `9200` → `9194`, then specify 9194 in the --public-tpu-address for the validator.
-- TPU forward port: `9201` → `9195`, then specify 9195 in the --public-tpu-forwards-address for the validator.
-
 ---
 
 ### Step 4: Configure the Validator

+ 0 - 3
vortexor/src/cli.rs

@@ -1,7 +1,6 @@
 use {
     clap::{builder::ValueParser, crate_description, crate_name, ArgAction, ColorChoice, Parser},
     solana_net_utils::{MINIMUM_VALIDATOR_PORT_RANGE_WIDTH, VALIDATOR_PORT_RANGE},
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_streamer::quic::{
         DEFAULT_MAX_CONNECTIONS_PER_IPADDR_PER_MINUTE, DEFAULT_MAX_STAKED_CONNECTIONS,
         DEFAULT_MAX_STREAMS_PER_MS, DEFAULT_MAX_UNSTAKED_CONNECTIONS,
@@ -24,8 +23,6 @@ fn parse_port_range(port_range: &str) -> Result<(u16, u16), String> {
                 start,
                 start.saturating_add(MINIMUM_VALIDATOR_PORT_RANGE_WIDTH)
             ))
-        } else if end.checked_add(QUIC_PORT_OFFSET).is_none() {
-            Err("Invalid dynamic_port_range.".to_string())
         } else {
             Ok((start, end))
         }

+ 3 - 12
vortexor/src/main.rs

@@ -6,7 +6,6 @@ use {
     solana_core::banking_trace::BankingTracer,
     solana_keypair::read_keypair_file,
     solana_net_utils::sockets::{bind_in_range_with_config, SocketConfiguration as SocketConfig},
-    solana_quic_definitions::QUIC_PORT_OFFSET,
     solana_signer::Signer,
     solana_streamer::streamer::StakedNodes,
     solana_vortexor::{
@@ -22,7 +21,7 @@ use {
     std::{
         collections::HashMap,
         env,
-        net::{IpAddr, SocketAddr},
+        net::IpAddr,
         path::PathBuf,
         sync::{atomic::AtomicBool, Arc, RwLock},
     },
@@ -169,16 +168,8 @@ pub fn main() {
         tpu_sockets.tpu_quic_fwd[0].local_addr()
     );
 
-    let tpu_address = tpu_sockets.tpu_quic[0].local_addr().unwrap();
-    let tpu_public_address = SocketAddr::new(
-        tpu_address.ip(),
-        tpu_address.port().saturating_sub(QUIC_PORT_OFFSET),
-    );
-    let tpu_fwd_address = tpu_sockets.tpu_quic_fwd[0].local_addr().unwrap();
-    let tpu_fwd_public_address = SocketAddr::new(
-        tpu_fwd_address.ip(),
-        tpu_fwd_address.port().saturating_sub(QUIC_PORT_OFFSET),
-    );
+    let tpu_public_address = tpu_sockets.tpu_quic[0].local_addr().unwrap();
+    let tpu_fwd_public_address = tpu_sockets.tpu_quic_fwd[0].local_addr().unwrap();
 
     for destination in destinations.read().unwrap().iter() {
         info!(