mirror of
https://github.com/tailscale/tailscale.git
synced 2025-03-29 04:22:24 +00:00
prober: remove DERP pub key copying overheads in qd and non-tun measures (#14659)
Updates tailscale/corp#25883 Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
parent
84b0379dd5
commit
00bd906797
@ -431,6 +431,7 @@ func runDerpProbeQueuingDelayContinously(ctx context.Context, from, to *tailcfg.
|
|||||||
t := time.NewTicker(time.Second / time.Duration(packetsPerSecond))
|
t := time.NewTicker(time.Second / time.Duration(packetsPerSecond))
|
||||||
defer t.Stop()
|
defer t.Stop()
|
||||||
|
|
||||||
|
toDERPPubKey := toc.SelfPublicKey()
|
||||||
seq := uint64(0)
|
seq := uint64(0)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
@ -446,7 +447,7 @@ func runDerpProbeQueuingDelayContinously(ctx context.Context, from, to *tailcfg.
|
|||||||
txRecordsMu.Unlock()
|
txRecordsMu.Unlock()
|
||||||
binary.BigEndian.PutUint64(pkt, seq)
|
binary.BigEndian.PutUint64(pkt, seq)
|
||||||
seq++
|
seq++
|
||||||
if err := fromc.Send(toc.SelfPublicKey(), pkt); err != nil {
|
if err := fromc.Send(toDERPPubKey, pkt); err != nil {
|
||||||
sendErrC <- fmt.Errorf("sending packet %w", err)
|
sendErrC <- fmt.Errorf("sending packet %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -460,6 +461,7 @@ func runDerpProbeQueuingDelayContinously(ctx context.Context, from, to *tailcfg.
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
defer close(recvFinishedC) // to break out of 'select' below.
|
defer close(recvFinishedC) // to break out of 'select' below.
|
||||||
|
fromDERPPubKey := fromc.SelfPublicKey()
|
||||||
for {
|
for {
|
||||||
m, err := toc.Recv()
|
m, err := toc.Recv()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -469,7 +471,7 @@ func runDerpProbeQueuingDelayContinously(ctx context.Context, from, to *tailcfg.
|
|||||||
switch v := m.(type) {
|
switch v := m.(type) {
|
||||||
case derp.ReceivedPacket:
|
case derp.ReceivedPacket:
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
if v.Source != fromc.SelfPublicKey() {
|
if v.Source != fromDERPPubKey {
|
||||||
recvFinishedC <- fmt.Errorf("got data packet from unexpected source, %v", v.Source)
|
recvFinishedC <- fmt.Errorf("got data packet from unexpected source, %v", v.Source)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -767,9 +769,10 @@ func runDerpProbeNodePair(ctx context.Context, from, to *tailcfg.DERPNode, fromc
|
|||||||
// Send the packets.
|
// Send the packets.
|
||||||
sendc := make(chan error, 1)
|
sendc := make(chan error, 1)
|
||||||
go func() {
|
go func() {
|
||||||
|
toDERPPubKey := toc.SelfPublicKey()
|
||||||
for idx, pkt := range pkts {
|
for idx, pkt := range pkts {
|
||||||
inFlight.AcquireContext(ctx)
|
inFlight.AcquireContext(ctx)
|
||||||
if err := fromc.Send(toc.SelfPublicKey(), pkt); err != nil {
|
if err := fromc.Send(toDERPPubKey, pkt); err != nil {
|
||||||
sendc <- fmt.Errorf("sending packet %d: %w", idx, err)
|
sendc <- fmt.Errorf("sending packet %d: %w", idx, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -781,6 +784,7 @@ func runDerpProbeNodePair(ctx context.Context, from, to *tailcfg.DERPNode, fromc
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(recvc) // to break out of 'select' below.
|
defer close(recvc) // to break out of 'select' below.
|
||||||
idx := 0
|
idx := 0
|
||||||
|
fromDERPPubKey := fromc.SelfPublicKey()
|
||||||
for {
|
for {
|
||||||
m, err := toc.Recv()
|
m, err := toc.Recv()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -790,7 +794,7 @@ func runDerpProbeNodePair(ctx context.Context, from, to *tailcfg.DERPNode, fromc
|
|||||||
switch v := m.(type) {
|
switch v := m.(type) {
|
||||||
case derp.ReceivedPacket:
|
case derp.ReceivedPacket:
|
||||||
inFlight.Release()
|
inFlight.Release()
|
||||||
if v.Source != fromc.SelfPublicKey() {
|
if v.Source != fromDERPPubKey {
|
||||||
recvc <- fmt.Errorf("got data packet %d from unexpected source, %v", idx, v.Source)
|
recvc <- fmt.Errorf("got data packet %d from unexpected source, %v", idx, v.Source)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -925,7 +929,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()
|
toDERPPubKey := toc.SelfPublicKey()
|
||||||
for {
|
for {
|
||||||
n, err := dev.Read(bufs, sizes, tunStartOffset)
|
n, err := dev.Read(bufs, sizes, tunStartOffset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -954,7 +958,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(toPubDERPKey, pkt); err != nil {
|
if err := fromc.Send(toDERPPubKey, pkt); err != nil {
|
||||||
tunReadErrC <- err
|
tunReadErrC <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user