Awanit512 / 3-TCP-LEDBAT_in_WiFi

Low Extra Delay Background Transport (LEDBAT) is Less than Best Effort (LBE) type of transport. It is used by BitTorrent and Apple Inc as their default transport mechanisms for large-sized file transfers. This project aims to evaluate the performance of LEDBAT in WiFi environments, including Gigabit WiFi, with and without Rate Adaptation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#3 Exhaustive evaluation of TCP LEDBAT in WiFi environments.

Planning & Design Description Doc can be found here : planning_and_design_readme.md

Our Exmaple Code and Corresponding GNU Plots are in:

Branch : `exhaustive_evaluation_ledbat`
Directory : scratch directory
In the scratch directory we have two more directory
One of them is TCP-Ledbat-Evaluation which contains our example code here is the link
On the other hand the Second directory TCP-LEDBAT-Graphs-Traces here .This holds the corresponding GNU plots of individual throughput and Combined Throughput for flows of sink Nodes/STA(stations).
Inside TCP-LEDBAT-Graphs-Traces each Toplogy has its own Folder conating plt, png files of GNU plots and some has xml file for animations which can be viewed using NetAnim Tool. These folder also contains readme.md stating configuration done / command line arguments passed for geenrating such garphs/results.


According To the planned Task for this Assignment Stated in planning_and_design_readme.md

We have Implemented Example Code for performing Exhaustive Evaluation of TCP LEDBAT in WiFi environments. Thus Corresponding to this the team has come up with 5-6 examples code measuring througput of sink Nodes for different types of flows and in different scenarios example for former includes Tcp Ledbat Flows, TcpNewRenoFlows / or other Tcp Varient and for latter we have simualted the experiment for dfifferent wifi-standard, different rate adaption algorithm, diffrent Error rate Model e.t.c as well tried to write a scalable code thus giving more flexibility to user to pass desired command line arguments for which user wants to experiment the simulation (those arguments can be shown by use of -help flag while running the example).



Below shows a brief view Of Ledbat ALgorithm which is kept it for reference.

Brief: Low Extra Delay Background Transport (LEDBAT) is Less than Best Effort (LBE) type of transport. BitTorrent and Apple Inc use variants of LEDBAT as their default transport mechanisms for large-sized file transfers. This project aims to evaluate the performance of LEDBAT in WiFi environments, including Gigabit WiFi, with and without Rate Adaptation.
Contributors: Mentor
Mohit P. Tahiliani [Assistant Prof in the Dept. CSE NITK Surathkal, Mangalore, India]( Github Repo )
Mentee

Awanit Ranjan [181CO161] ( Github Repo )
Keerti Chaudhary [181CO226] ( Github Repo )
Yerramaddu Jahnavi [181CO260] ( Github Repo )

Recommended Reading:
Description Link
LEDBAT: RFC 6817 Link
Less-than-Best-Effort Service for Community Wireless Networks: Challenges at Three Layers Link
Exploration and evaluation of traditional TCP congestion control techniques Link
Performance evaluation of a Python implementation of the new LEDBAT congestion control algorithm Link
Common TCP Evaluation Suite draft-irtf-iccrg-tcpeval-01 Link
WiFi architecture in ns-3 Link
LEDBAT Operations/Algorithm:
Sender side and Receiver side operations Pseudocode / Mechanisms
Receiver side
   on data_packet:
       remote_timestamp = data_packet.timestamp
       acknowledgement.delay = local_timestamp() - remote_timestamp
       // fill in other fields of acknowledgement
       acknowledgement.send()
   
Sender side
on initialization:
  set all NOISE_FILTER delays used by current_delay() to +infinity
  set all BASE_HISTORY delays used by base_delay() to +infinity
  last_rollover = -infinity # More than a minute in the past.
on acknowledgement:
  delay = acknowledgement.delay
  update_base_delay(delay)
  update_current_delay(delay)
  queuing_delay = current_delay() - base_delay()
  off_target = TARGET - queuing_delay + random_input()
  cwnd += GAIN * off_target / cwnd
  // flight_size() is the amount of currently not acked data.
  max_allowed_cwnd = ALLOWED_INCREASE + TETHER*flight_size()
  cwnd = min(cwnd, max_allowed_cwnd)
random_input()
  // random() is a PRNG between 0.0 and 1.0
  // NB: RANDOMNESS_AMOUNT is normally 0
  RANDOMNESS_AMOUNT * TARGET * ((random() - 0.5)*2)
update_current_delay(delay)
  // Maintain a list of NOISE_FILTER last delays observed.
  forget the earliest of NOISE_FILTER current_delays
  add delay to the end of current_delays
current_delay()
  min(the NOISE_FILTER delays stored by update_current_delay)
update_base_delay(delay)
  // Maintain BASE_HISTORY min delays. Each represents a minute.
  if round_to_minute(now) != round_to_minute(last_rollover)
    last_rollover = now
    forget the earliest of base delays
    add delay to the end of base_delays
  else
    last of base_delays = min(last of base_delays, delay)
base_delay()
  min(the BASE_HISTORY min delays stored by update_base_delay)
   

About

Low Extra Delay Background Transport (LEDBAT) is Less than Best Effort (LBE) type of transport. It is used by BitTorrent and Apple Inc as their default transport mechanisms for large-sized file transfers. This project aims to evaluate the performance of LEDBAT in WiFi environments, including Gigabit WiFi, with and without Rate Adaptation.

License:GNU General Public License v2.0


Languages

Language:Python 66.2%Language:C++ 33.2%Language:C 0.4%Language:MATLAB 0.1%Language:Makefile 0.0%Language:Click 0.0%Language:Shell 0.0%Language:Gnuplot 0.0%Language:Perl 0.0%Language:Batchfile 0.0%