Advertisement
Guest User

Untitled

a guest
Nov 25th, 2022
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.60 KB | None | 0 0
  1. monitor_reflector_responses_fping()
  2. {
  3.        
  4.     declare -A rtt_baselines_us
  5.  
  6.     # Read in baselines if they exist, else just set them to 1s (rapidly converges downwards on new RTTs)
  7.     for (( reflector=0; reflector<$no_reflectors; reflector++ ))
  8.     do
  9.         if [[ -f /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us ]]; then
  10.             read rtt_baselines_us[${reflectors[$reflector]}] < /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us
  11.         else
  12.             rtt_baselines_us[${reflectors[$reflector]}]=50000
  13.         fi
  14.     done
  15.  
  16.         # For each reflector initialize reflectory history for SMA
  17.         for ((reflector=0; reflector<$no_reflectors; reflector++))                          
  18.     do
  19.         declare -n reflector_rtts_us="reflector_${reflectors[$reflector]//./_}_rtts_us"                                                                                                              
  20.         declare -n reflector_rtts_idx="reflector_${reflectors[$reflector]//./_}_rtts_idx"                                                                                                              
  21.         reflector_rtts_idx=0
  22.         for ((i=0; i<$rtts_sma_period; i++)) do reflector_rtts_us[i]=50000; done
  23.         done
  24.  
  25.    
  26.     while read timestamp reflector _ seq_rtt
  27.     do
  28.         t_start_us=${EPOCHREALTIME/./}
  29.  
  30.         [[ $seq_rtt =~ \[([0-9]+)\].*[[:space:]]([0-9]+)\.?([0-9]+)?[[:space:]]ms ]] || continue
  31.  
  32.         seq=${BASH_REMATCH[1]}
  33.  
  34.         rtt_us=${BASH_REMATCH[3]}000
  35.         rtt_us=$((${BASH_REMATCH[2]}000+10#${rtt_us:0:3}))
  36.  
  37.         rtt_delta_us=$(( $rtt_us-${rtt_baselines_us[$reflector]} ))
  38.  
  39.         declare -n reflector_rtts_us="reflector_${reflector//./_}_rtts_us"                                                                                                              
  40.         declare -n reflector_rtts_idx="reflector_${reflector//./_}_rtts_idx"                                                                                                              
  41.  
  42.         reflector_rtts_us[$reflector_rtts_idx]=$rtt_us
  43.  
  44.         echo "rtt_baselines_us[$reflector]=${rtt_baselines_us[$reflector]}+($rtt_us-${reflector_rtts_us[((($reflector_rtts_idx+1)%$rtts_sma_period))]})/$rtts_sma_period"
  45.         rtt_baselines_us[$reflector]=$((${rtt_baselines_us[$reflector]}+($rtt_us-${reflector_rtts_us[((($reflector_rtts_idx+1)%$rtts_sma_period))]})/$rtts_sma_period))
  46.  
  47.         ((reflector_rtts_idx=(reflector_rtts_idx+1)%$rtts_sma_period))
  48.  
  49.         dl_owd_baseline_us=$((${rtt_baselines_us[$reflector]}/2))
  50.         ul_owd_baseline_us=$dl_owd_baseline_us
  51.  
  52.         dl_owd_us=$(($rtt_us/2))
  53.         ul_owd_us=$dl_owd_us
  54.  
  55.         dl_owd_delta_us=$(($rtt_delta_us/2))
  56.         ul_owd_delta_us=$dl_owd_delta_us       
  57.        
  58.         timestamp=${timestamp//[\[\]]}0
  59.  
  60.         printf '%s %s %s %s %s %s %s %s %s %s\n' "$timestamp" "$reflector" "$seq" "$dl_owd_baseline_us" "$dl_owd_us" "$dl_owd_delta_us" "$ul_owd_baseline_us" "$ul_owd_us" "$ul_owd_delta_us" > /var/run/cake-autorate/ping_fifo
  61.  
  62.         timestamp_us=${timestamp//[.]}
  63.  
  64.         printf '%s' "$timestamp_us" > /var/run/cake-autorate/reflector_${reflector//./-}_last_timestamp_us
  65.  
  66.         printf '%s' "$dl_owd_baseline_us" > /var/run/cake-autorate/reflector_${reflector//./-}_dl_owd_baseline_us
  67.         printf '%s' "$ul_owd_baseline_us" > /var/run/cake-autorate/reflector_${reflector//./-}_ul_owd_baseline_us
  68.        
  69.         printf '%s' "$timestamp_us" > /var/run/cake-autorate/reflectors_last_timestamp_us
  70.  
  71.     done</var/run/cake-autorate/fping_fifo
  72.  
  73.     # Store baselines to files ready for next instance (e.g. after sleep)
  74.     for (( reflector=0; reflector<$no_reflectors; reflector++))
  75.     do
  76.         printf '%s' ${rtt_baselines_us[${reflectors[$reflector]}]} > /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us
  77.     done
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement