You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 31 Next »

Scope

Target is to provide a IMP/Gateway speedtest reference implementation to RDK-B community as part of banana Pi R4


Types of speedtests

  • IMP/Gateway speed test

    • Between CPE and ISP's Edge Router/Gateway to test upstream and downstream
  • Client speed test

    • Between connected client and gateway

Block diagram

  • t2speed-bpir4

Components involved

Backend ecosystems involved

  • Xconf

  • Kibana/Elastic or simple json upload with Markers

  • USP controller or webpa server 

  • Speedtest analytics engine  (An application running on top of Rest API's)

  • iperf3 server (Linux machine running with iperf3 server)


RDK-B Customer perspective

  • As an RDK-B operator/OEM/SoC how can use my vendor speedtest implementation 

    • [Response - Just replace iperf3 client in RDK-B BPI R4 with your custom vendor implementation - refer orange colored 
  • How about server

    • Replace iperf3 server with your actual server - refer orange colored
  • Does this cover client speed test

    • No

Technical requirements of gateway speed test

State machine design for Bananapi R4

  • High level design

    • Initial Setup:
      • User enables speed test by setting Enable_Speedtest=true
      • This is validated through cosa_ip_dml.c
      • Parameter is stored in TR-181
    • Test Execution:
      • User triggers test by setting Run=true
      • System checks Enable_Speedtest status
      • If enabled
          • /usr/ccsp/tad/speedtest.sh # Launches with lowest priority

    • Download Phase:
      • speedtest-client initiates download
      • BBHM updates tracked in real-time:
        • pStats->TestBytesReceived += s_result;

        • pStats->TotalBytesReceived += s_result;

      • Timing parameters updated:
        • ROMTime (start)
        • TCPOpenRequestTime
        • BOMTime (begin of measurement)
    • Upload Phase:
      • Similar flow to download
        • pStats->TotalBytesSent += s_result;

    • Completion:
      • Final statistics stored in BBHM
      • All parameters accessible via TR-181
      • Run parameter set back to false
    • The entire process is managed by the Test and Diagnostics framework, with:

      • Real-time statistics collection
      • Proper error handling
      • Persistent storage of results
      • TR-181 parameter updates throughout the test


  • Low level design

    • simple flow
    • Assumed output
      • iperf3 -c 192.168.2.151 -t 60 -b 100M -P 4

        root@RaspberryPi-Gateway:/# tail -n 25 /var/log/iperf3log.log [ 5] 0.00-60.00 sec 169 MBytes 23.6 Mbits/sec receiver [ 7] 0.00-60.00 sec 173 MBytes 24.2 Mbits/sec 150 sender [ 7] 0.00-60.00 sec 173 MBytes 24.2 Mbits/sec receiver [ 9] 0.00-60.00 sec 167 MBytes 23.3 Mbits/sec 152 sender [ 9] 0.00-60.00 sec 167 MBytes 23.3 Mbits/sec receiver [ 11] 0.00-60.00 sec 164 MBytes 23.0 Mbits/sec 159 sender [ 11] 0.00-60.00 sec 164 MBytes 23.0 Mbits/sec receiver [SUM] 0.00-60.00 sec 674 MBytes 94.2 Mbits/sec 621 sender [SUM] 0.00-60.00 sec 673 MBytes 94.1 Mbits/sec receiver

    • supported speedtest dml's 
      • speedtestdmls

Source code repo

Reference

Plan

  • Immediate

    1. Implement wrapper on top of iperf3 - rdk-speedtest-cli  - https://github.com/cpokuru/rdk-speedtest-cli/tree/develop
    2. update speedtest.sh to invoke rdk-speedtest-cli 
    3. invoke speedtest using speedtest dml's in test and diag from webpa
    4. Store test results in file & upload file to remote machine using curl
    5. Update speedtest status & the corresponding dmls'
  • Next

    • Investigate on upload/download dml's to update data.pls refer design

FAQ's

  • TBD






  • No labels