Git Product home page Git Product logo

analysetcp's Introduction

analyseTCP

A utility for analysing tcpdump traces with regard to latency and loss. It supports analyses with a sender side trace alone as well as with both a sender and receiver side trace.

###Features with only a sender side trace

  • Detailed information about race

    • Packets sent (data/retransmissions,unique bytes) (SYN/FIN/RST)
    • Payload size and latency (ACK time) variance with customizable percentiles.
    • Retransmission count statistics (first/second/third...)
    • DupACK statistics
  • Loss estimation based on retransmissions

  • Saving latency (ACK time) to file for all packets (both aggregated and per stream)

###Features with sender and receiver side traces

  • True loss values based on the data that was received.
  • Calculating the amount of data received by initial transmit, retransmit and RDB.
  • Saving one-way delay variation for the received data. Handles clock skew drifting between sender and receiver hosts.

##Prerequisites: cmake pcap (Ubuntu package: libpcap-dev)

###To build :/analysetcp$ mkdir build :/analysetcp$ cd build :/analysetcp/build$ cmake .. :/analysetcp/build$ make

##Example output :~/analysetcp/build$./analyseTCP -s 10.0.0.12 -r 10.0.0.22 -p 5000 -q 22000 -f sender.pcap -g receiver.pcap

STATS FOR CONN: 10.0.0.12:22000 -> 10.0.0.22:5000
  Duration: 602 seconds (0.167222 hours)
  Total packets sent                            :       6264
  Total data packets sent                       :       6259
  Total pure acks (no payload)                  :          2
  SYN/FIN/RST packets sent                      :      2/1/0
  Number of retransmissions                     :        272
  Number of packets with bundled segments       :          0
  Number of received acks                       :       6002
  Total bytes sent (payload)                    :     755760
  Number of unique bytes                        :     723240
  Number of retransmitted bytes                 :      32520
  Redundant bytes (bytes already sent)          :      32520 (4.30 %)
  Estimated loss rate based on retransmissions  :       4.34 %
---------------------------------------------------------------
Receiver side loss stats:
  Bytes Lost (actual loss on receiver side)     :      31080
  Bytes Loss                                    :       4.11 %
  Ranges Lost (actual loss on receiver side)    :        259
  Ranges Loss                                   :       4.14 %
---------------------------------------------------------------
Payload size stats:
  Average                                       :        120
  Minimum                                       :        120
  Maximum                                       :        360
---------------------------------------------------------------
Latency stats:
  Minimum                                       :     150 ms
  Average                                       :     230 ms
  Maximum                                       :    1150 ms
===============================================================


General info for entire dump:
  10.0.0.12:22000 -> 10.0.0.22:5000
  Filename: sender.pcap
  Sent Packet Count     : 6264
  Received Packet Count : 6005
  ACK Count             : 6002
  Sent Bytes Count      : 755760
  Max payload size      : 360
  Received Bytes        : 724680
  Packets Lost          : 259
  Packet Loss           : 4.13474 %
  Ranges Count          : 5990
  Ranges Sent           : 6262
  Ranges Lost           : 259

Loss stats

Estimated loss rate based on retransmissions

This is the loss rate estimation based solely on the number of retransmissions. This only relies on the sender side dump. We define loss rate as percentage of packets that have to be retransmitted using regular TCP schemes.

Receiver side loss stats

These stats rely on both sender and receiver side dump and calculates the exact loss, that is, the bytes that were sent and not received on the receiver side.

The Ranges Loss does not correspond directly to packets, as the packets may be split after being sent. With no segmentation offloading or segmentation in any nodes between the sender and receiver, the range count should correspond pretty well to the number of packets with unique data.

##Notes

  • FIN segments with payload may be counted as two segments.

  • Negative packet loss values when analysing sender and receiver dumps:

    The packet loss is calculated by (sent packet - received packets). When
    segmentation offloading is enabled on the sender, the sender dump may
    contain fewer packets than the receiver dump. Disabling any segmentation
    offload features is advised.
    

##Difference between analyseTCP and tcptrace

Total bytes sent (payload) and Number of retransmitted bytes might differ slightly (2 bytes) from tcptrace, but according to tshark analysetcp is correct:

####Example of how to calculate total sum of tcp payload bytes and retransmitted bytes tshark -r trace.dump -qz io,stat,0,"ip.addr==10.0.0.10 && tcp.srcport ==
15103","COUNT(tcp.analysis.retransmission)ip.addr==10.0.0.10 && tcp.srcport == 15102 &&
tcp.analysis.retransmission","SUM(tcp.len)tcp.len && ip.addr==10.0.0.10 && tcp.srcport ==
15102","SUM(tcp.len)tcp.len && ip.addr==10.0.0.10 && tcp.srcport == 15102 && tcp.analysis.retransmission"

####Tests

Run cmake with: mkdir build && cd build cmake .. -DTESTS=1 make test ./test

analysetcp's People

Contributors

apetlund avatar bendikro avatar cise-midoglu avatar enfiskutensykkel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.