1. 25 Aug, 2006 3 commits
    • Jonathon Duerig's avatar
      Added ewma for throughput. Various fixes. Various additional logging.... · 3d87838c
      Jonathon Duerig authored
      Added ewma for throughput. Various fixes. Various additional logging. Simplified saturation calculation and moved it to StateSensor
      3d87838c
    • Robert Ricci's avatar
      Fix a few bugs in argument handling for replay. · 9ba850a2
      Robert Ricci authored
      First, we can't use logWrite() in processArgs(), because it has not
      been initialized yet. (And, presumably, the log writer *has* to be
      initialized later, because at some point we will want to add command
      line args to control its behavior).
      
      Second, actually exit if there are any errors, instead of proceeding
      to do the wrong thin.
      9ba850a2
    • Mike Hibler's avatar
      More duct tape to keep the optional argument stuff alive. · 89f44abb
      Mike Hibler authored
      (Gotta dead horse, must keep beating it...)
      
      The problem is that, if you want to do anything--change the stub name,
      add a command line argument--you have to replace the whole command line
      and that requires knowing the rest of the default/previous command line
      that has not changed.
      89f44abb
  2. 24 Aug, 2006 2 commits
    • Leigh Stoller's avatar
      Add a limit option to help with debugging. The limit is the number of · 95feb639
      Leigh Stoller authored
      rows pushed across to the DP.
      95feb639
    • Jonathon Duerig's avatar
      Fixed the traffic model so that it is now in line with what Rob and I... · c6fa578a
      Jonathon Duerig authored
      Fixed the traffic model so that it is now in line with what Rob and I discussed. Delays are before the write with the write size cached. Writes expire based on an expiration date.
      
      Miscellaneous fixes. Open problem: PacketSensor does not deal correctly with zero-sized packets. I changed KernelTcp to pass such packets because otherwise there is no way to do state changes based on SYN/FIN/other packets. SYN is handled ok for now because of a change noted below. FIN is not.
      
      Added a StateSensor. As I discovered, using the kernel tcp_info data structure isn't useful when dealing with fields that change on a packet by packet basis because the kernel information is retrieved at processing time and not capture time. For instance, it is useless when trying to determine whether a connection was established by the time a particular packet was sent (to determine whether it is part of the three-way-handshake). The StateSensor keeps track of the state machine and correlates it to the packet involved. This allows the other sensors to rely on it to distinguish between connection setup and the rest of the connection traffic. Added references to it in the PacketSensor, the DelaySensor and the ThroughputSensor.
      
      Changed the way packet information was transmitted to the sensors to make it easier to add new packet types (as will be necessary when accept()s are handled).
      
      Fixed all outstanding flaws in the basic feedback mechanism. In short, "Its alive!". Currently the only data being transmitted is the base rtt (MinDelay). Now that the feedback is working in a basic form, it will be easier to get the other characteristics online.
      c6fa578a
  3. 22 Aug, 2006 4 commits
  4. 21 Aug, 2006 11 commits
    • Mike Hibler's avatar
      Tweaks to make auto-* work correctly with BSD /bin/sh · 9b8d05a3
      Mike Hibler authored
      Change dbmonitor to, by default, use the latest of A->B and B->A
      values when setting characteristics on site A.  Do this for both latency
      and bandwidth values, though should probably allow BW values to continue
      to be asymmetric.
      9b8d05a3
    • Robert Ricci's avatar
      Fix a bug noticed by Jon - make sure to not iterate off the end of the · 4b247a8d
      Robert Ricci authored
      list, which could happen if we somehow saw an ack for a packet whose
      send() we missed (ie. the kernel dropped it on the way in to pcap).
      4b247a8d
    • Robert Ricci's avatar
      Bug fixes: · fbda5f5d
      Robert Ricci authored
      Fix range check - this was necessary because of my change to the
      ackFor calculation.
      
      Tricky detail about STL list.erase() - it does *not* erase the end iterator,
      which meant that we were failing to remove the packet being acked (we were
      removing all packets up to that one). So, we have it increment the iterator
      in localAck() even if we find the one we're looking for.
      
      Tested well for lossless connections - still needs testing for lossy
      connections and SACK (see below). Hopefully, it works for the former,
      but I know it doesn't work for the latter.
      
      Added more debugging output to localAck()
      
      Added a check which should warn us if we see any SACKS, though I
      can't be sure it works, because I haven't seen any yet (that I know
      of! :)
      fbda5f5d
    • Kevin Atkinson's avatar
      · 018dd59b
      Kevin Atkinson authored
      Small script to set the cloudinfo from an input file.  Only works
      on elab experiments for now.
      018dd59b
    • Mike Hibler's avatar
      Simple perl script to grab latency/bw records from DB and print them out: · 4b9ba9ec
      Mike Hibler authored
      usage: showsamples.pl [-Bbdl] <srcix>|all <dstix>|all
         show database records for given site indices
             -B        show both srcix -> dstix and dstix -> srcix
             -b        show bandwidth
             -d        show delay (the default)
             -l        show loss
             -n <num>  show only the last <num> records
             -S <time> show records no later than unix timestamp <time>
      
      usage: showsamples.pl -e pid/eid
         show mapping of name->ix for all plab nodes in <pid>/<eid>
      4b9ba9ec
    • Robert Ricci's avatar
      Major re-work of the handleTcp() function, which had a fundamentally · e93ed0f4
      Robert Ricci authored
      wrong interpretation of how part of TCP works.
      
      Being an ACK and being a data packet are *not* mutually exclusive,
      though the old code assumed that they were.
      
      There are basically four things we might need to do:
      If outgoing
          (a) Handle an outgoing ACK
          (b) Handle an outgoing data packet
      If incoming
          (c) Handle an incoming ACK
          (d) Handle an incoming data packet
      
      Note that a and b can be done on the same packet, as well as c and d. Right
      now, however, our code only handles b and c. We will need to support a and
      d before we can model real applications, I think!
      
      Also, make handleTcp() more robust.
      e93ed0f4
    • Robert Ricci's avatar
    • Dan Gebhardt's avatar
    • Robert Ricci's avatar
      Bug fix for my last commit - still open pcap socket if we're saving · 01acaff8
      Robert Ricci authored
      replay information.
      01acaff8
    • Robert Ricci's avatar
      Don't open the pcap device if doing replay · e0866db5
      Robert Ricci authored
      e0866db5
    • Robert Ricci's avatar
      Typo police · df01a7e9
      Robert Ricci authored
      df01a7e9
  5. 18 Aug, 2006 11 commits
  6. 17 Aug, 2006 3 commits
  7. 16 Aug, 2006 1 commit
  8. 15 Aug, 2006 1 commit
    • Robert Ricci's avatar
      Add the ability for libnetmon to only output certain reports - this · 5f290b2c
      Robert Ricci authored
      is so that when we use a monitor that doesn't care about, say, writes,
      we can avoid waisting the CPU required to parse them.
      
      The four supported reports are:
          connect - connect() and close() notifications
          sockopt - Information about socket options
          io - read()s and write()s
          all - Duh. The default if none are given
      
      You can specify reports by setting LIBNETMON_REPORTS or using the
      new -r option to netmond. If you want more than one report type,
      seperate them with commas.
      
      Added a new control message, CM_REPORTS, to pass these back and forth
      from netmond to libnetmon.
      
      Added a long overdue LIBNETMON_NETMOND option which just uses the
      standard socket paths to talk to netmond - this way, you don't have
      to set them by hand when debugging, which is a huge PITA.
      5f290b2c
  9. 11 Aug, 2006 4 commits