prober: remove per-packet DERP pub key copying overheads (#14658)

Updates tailscale/corp#25883

Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
Jordan Whited
2025-01-15 15:47:26 -08:00
committed by GitHub
parent 0481042738
commit 84b0379dd5

View File

@@ -925,6 +925,7 @@ func derpProbeBandwidthTUN(ctx context.Context, transferTimeSeconds, totalBytesT
destinationAddrBytes := destinationAddr.AsSlice() destinationAddrBytes := destinationAddr.AsSlice()
scratch := make([]byte, 4) scratch := make([]byte, 4)
toPubDERPKey := toc.SelfPublicKey()
for { for {
n, err := dev.Read(bufs, sizes, tunStartOffset) n, err := dev.Read(bufs, sizes, tunStartOffset)
if err != nil { if err != nil {
@@ -953,7 +954,7 @@ func derpProbeBandwidthTUN(ctx context.Context, transferTimeSeconds, totalBytesT
copy(pkt[12:16], pkt[16:20]) copy(pkt[12:16], pkt[16:20])
copy(pkt[16:20], scratch) copy(pkt[16:20], scratch)
if err := fromc.Send(toc.SelfPublicKey(), pkt); err != nil { if err := fromc.Send(toPubDERPKey, pkt); err != nil {
tunReadErrC <- err tunReadErrC <- err
return return
} }
@@ -971,6 +972,7 @@ func derpProbeBandwidthTUN(ctx context.Context, transferTimeSeconds, totalBytesT
buf := make([]byte, mtu+tunStartOffset) buf := make([]byte, mtu+tunStartOffset)
bufs := make([][]byte, 1) bufs := make([][]byte, 1)
fromDERPPubKey := fromc.SelfPublicKey()
for { for {
m, err := toc.Recv() m, err := toc.Recv()
if err != nil { if err != nil {
@@ -979,7 +981,7 @@ func derpProbeBandwidthTUN(ctx context.Context, transferTimeSeconds, totalBytesT
} }
switch v := m.(type) { switch v := m.(type) {
case derp.ReceivedPacket: case derp.ReceivedPacket:
if v.Source != fromc.SelfPublicKey() { if v.Source != fromDERPPubKey {
recvErrC <- fmt.Errorf("got data packet from unexpected source, %v", v.Source) recvErrC <- fmt.Errorf("got data packet from unexpected source, %v", v.Source)
return return
} }