Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Hardware Hacking Software The Internet

Simulating Network Latency? 76

ixmo asks: "I've just come around an interesting problem: to simulate low-bandwidth network links without buying expensive WAN simulators, I can connect two old Cisco routers back to back with serial cables, and control the bandwidth via the 'clock rate' IOS command, but how can I simulate network latency? Is there some OS tool or patch (for Linux/OpenBSD) that allows for tuning of network delay? Any hints?"
This discussion has been archived. No new comments can be posted.

Simulating Network Latency?

Comments Filter:
  • FreeBSD Dummynet (Score:4, Insightful)

    by Inominate ( 412637 ) on Friday August 20, 2004 @06:28PM (#10028319)
    FreeBSD's dummynet can quite easily do it. I suspect the same of openbsd and linux.

    What kind of question is this for ask slashdot?
    • What kind of question is this for ask slashdot?

      The typical kind of question that involves some topic already explored indepth somewhere else on the web and has a potential solution.

    • Re:FreeBSD Dummynet (Score:3, Interesting)

      by Drakon ( 414580 ) *
      What also may work is lowering the granularity of the timer in the kernel,
      ie HERTZ=1

    • Re:FreeBSD Dummynet (Score:5, Informative)

      by jesup ( 8690 ) * <(randellslashdot) (at) (jesup.org)> on Saturday August 21, 2004 @02:21AM (#10030790) Homepage
      Dummynet can absolutely do it. Put a PC with BSD & Dummynet and two ethernet interfaces in to simulate delay/loss/BW restrictions/etc. Very configurable. You can chose which packets are affected.

      Worst problem: fixed delay, not bell-curve/whatever. You can roughly approximate delay variance by several rules of varying probabilities. Also, loss is random not bursty. For most testing, this is fine.

      It can take a little while to get used to configuring it. Don't forget to make it act like a network in both directions!
      • Re:FreeBSD Dummynet (Score:5, Informative)

        by Piquan ( 49943 ) on Saturday August 21, 2004 @06:14AM (#10031301)

        Dummynet can absolutely do it. Put a PC with BSD & Dummynet and two ethernet interfaces in to simulate delay/loss/BW restrictions/etc. Very configurable. You can chose which packets are affected.

        You betcha. At a job I previously had, supporting TCP/IP for a large Unix producer, I had a FreeBSD box set up for just this purpose. It only had one ether interface, and was in a different part of the building from the test lab, but that didn't matter; I'd use PPP over TCP to connect to the test machines.

        I'd use it to test how different OSs (including our own) would handle different bandwidth*delay products, packet loss, etc. For instance, one I found out that a customer was having problems with a lossy WAN connection to an NT server. I experimented with high packet loss percentages, and changed the rules to narrow down the problem. Turns out that NT won't retransmit a FIN packet, at least not back then.

        When I left that job, my coworkers insisted that I show them how to set up that box to run those kinds of experiments.

        Quite an educational experience, too. It's one thing to read Richard Stevens describing congestion avoidance algorithms; it's something else to watch them in action.

  • by mayoff ( 29924 ) on Friday August 20, 2004 @06:28PM (#10028323) Homepage
    Use a longer cable.
    • by BrynM ( 217883 ) * on Friday August 20, 2004 @06:42PM (#10028423) Homepage Journal
      Use a longer cable.
      Or do what my last job did: Use CAT-3! Oh, you're just testing... Too bad they weren't.
    • by WasterDave ( 20047 ) <davep AT zedkep DOT com> on Friday August 20, 2004 @07:17PM (#10028716)
      It's good fun telling people who come down here to visit (New Zealand) that the twists in our cat 5 go the other way - because the earth's magnetic field is reversed.

      Made all the better when they discover that southern hemisphere monitors actually *are* different for exactly the same reason.

      Dave
      • Re:In related news (Score:3, Insightful)

        by menscher ( 597856 )
        Made all the better when they discover that southern hemisphere monitors actually *are* different for exactly the same reason.

        I call bull. The Earth's magnetic field is far too weak to have an effect on anything like that. Besides, don't you think someone might notice if it mattered whether your monitor was facing north or south? You really shouldn't believe everything your BOFH tells you.

        • Re:In related news (Score:4, Interesting)

          by SuiteSisterMary ( 123932 ) <slebrunNO@SPAMgmail.com> on Friday August 20, 2004 @08:22PM (#10029194) Journal

          Go type 'southern hemisphere monitors' into Google.

        • !bull (Score:3, Informative)

          by jamesh ( 87723 )
          I don't know the science behind it, but I did used to work in a manufacturing plant for a certain very large computer manufacturer (whose name has 3 letters in it), and the part numbers for monitors for southern and northern (and in at least 1 case, equatorial) units was in fact different for precisely this reason.

          To be fair though, I did try out a nothern hemisphere monitor once (I am in Australia) and don't remember noticing any difference.

          There are variations between the magnetic lines of the earth all
        • My monitor has in its OSD controls a utility for setting up your monitor based on the direction its faceing. Its a large professional monitor so I assume thats why.
        • Re:In related news (Score:3, Informative)

          by FireFury03 ( 653718 )
          One of the reasons you have to calibrate your own monitor's picture rotation is because it is affected by the local geomagnetic field.
        • It's for that reason that many ultra-high-end CRTs are unavailible in the southern hemisphere. It's just not worth makign the variant. I understand they can be converted after manufacture at some expense, however.

          I work for a newspaper and we need _good_ monitors for colour correction. I'm all too familiar with this issue (and the issue of not having the money for the monitors we need anyway... *sigh*).
      • I call bull too. After changing my monitor's orientation, the colors are skewed, until I hit the degauss button. Problem solved. Turning it umop apisdn causes the same problem, until I hit the degauss button.

        In the past, monitors weren't large enough to be affected much by shadow mask magnification, so they didn't include their own degaussing coils. It was easy to screw one up with a magnetic field back then, and it might take the user a while to find someone with the tool to fix it. (Video arcades usually
      • Made all the better when they discover that southern hemisphere monitors actually *are* different for exactly the same reason.

        A bit off-topic, but can somebody elaborate a bit on this? I know monitors use coils to bend the electron beams in order to scan the beams accross the surface of the monitor, but I don't think this would be affected by the northern vs. southern hemisphere (anymore than turning your monitor to face south instead of north).
    • Use a longer cable.

      And of course, make sure the cable is coiled up like hell rather than straight...

  • by Marxist Hacker 42 ( 638312 ) <seebert42@gmail.com> on Friday August 20, 2004 @06:28PM (#10028324) Homepage Journal
    This may be the oddest use for this yet- but any large file would work >200MB. Set up your Serial port for a slow connection, say 110 baud, then start an ftp transfer in the background of SP2 from one machine to the other. That ought to simulate latency errors just fine.
  • dummynet (Score:3, Informative)

    by Fweeky ( 41046 ) on Friday August 20, 2004 @06:31PM (#10028352) Homepage
    FreeBSD has dummynet [freebsd.org]; I'd guess OpenBSD has something similar.
  • We use Dummynet (Score:5, Informative)

    by jshare ( 6557 ) on Friday August 20, 2004 @06:33PM (#10028365) Homepage
    We use FreeBSD and its "dummynet" capabilites. (Perhaps other BSDs have this as well?)

    You can get m0n0wall and stick it on random hardware. I think you then have to recompile the kernel to enable dummynet.

    We use a Soekris 4501. It'll only bridge upto about 50mbit of traffic, but if you want to simulate T1 speeds it'll be fine. Beefier hardware (the soekris box is roughly a 133MHz 486) will probably let you max out at wire speed.

  • Stand next to the router and simulate rough conditions... ... yank out the wire a couple times. ... play kick the router. ... simulate lightening by plugging a network cable into a 220V plug ... paint sunspots on your face and spew out some EMF pulses like the sun.
  • What if you want to simulate two multiplatform networks connected? I think this guy is looking for hardware because the commercial latency simulators are ~$2000.
    • If the poster was looking for hardware, they wouldn't have posted:
      "Is there some OS tool or patch (for Linux/OpenBSD)"
      I know people don't like to RTFA, but at least read the fucking post you're replying to.
      • He still may want a hardware solution, seeing as how he mentioned one. And people should RTFC(comments) before posting "Try Dummynet!" toplevel 10 times.
    • I think this guy is looking for hardware because the commercial latency simulators are ~$2000.

      So is a pair of good PCs running free latency simulation software.

  • Simple (Score:5, Funny)

    by Anonymous Coward on Friday August 20, 2004 @07:27PM (#10028807)
    Sign up with Comcast.
    • Re:Simple (Score:3, Informative)

      by cfallin ( 596080 )
      AMEN TO THAT. All my friends in the area and I are on Comcast (still better than DSL, considering price), and a few in particular seem to have outages every week or so. There are random incidents of packet loss every few days that cause Trillian to drop my AIM connection. It's really quite annoying, but for the price (compared to a quality T1) you can't complain much.
    • Re:Simple (Score:3, Informative)

      by michael_cain ( 66650 )
      Oddly enough, Comcast has a Linux-based program named NETSIM that does exactly what the original article was looking for. It emulates queueing delays for a variety of access technologies (dial-up, DSL, etc) including custom settings. It emulates network impairments like delay, jitter and loss. It has been used to test a variety of commercial IP-based services under a broad range of impairment conditions. The usability group made extensive use of NETSIM while evaluating different upstream/downstream speed li
  • Linux QoS (Score:5, Informative)

    by Phacka ( 144710 ) on Friday August 20, 2004 @07:50PM (#10028988) Homepage
    Network emulator
    CONFIG_NET_SCH_NETEM:
    Say Y if you want to emulate network delay, loss, and packet re-ordering. This is often useful to simulate networks when testing applications or protocols.
  • single-shot delays (Score:3, Interesting)

    by isj ( 453011 ) on Friday August 20, 2004 @08:27PM (#10029219) Homepage
    I have found kill -s SIGSTOP and kill -s SIGCONT on the server process useful for simulating a temporary network congestion / single packet-drop on a TCP connection.
  • OpenBSD (Score:3, Informative)

    by macx666 ( 194150 ) * on Friday August 20, 2004 @08:57PM (#10029388) Homepage

    For openbsd you can throttle bandwidth right in PF [openbsd.org].

    Just cap whichever queue you want at whatever rate you want.

  • My Thesis (Score:2, Interesting)

    by Xetrov ( 267777 )
    My thesis (which I am only just starting) deals with networking, and one major part of it is in simulating different network conditions.

    I was planning to write my own wrapper around the standard socket operations which will add things like latency, unreliability etc etc (for testing the robustness of a protocol).

    However I am looking forward to seeing some of the answers here as maybe I wont have to do as much work as I previously thought ;)
  • NIST ATM simulator (Score:3, Informative)

    by Anonymous Coward on Friday August 20, 2004 @10:29PM (#10029845)
    The NIST ATM simulator [nist.gov] (public domain) might be useful. You need to provide some personal info to download it, but that isn't verified.
  • nistnet (Score:5, Informative)

    by j1m+5n0w ( 749199 ) on Friday August 20, 2004 @10:47PM (#10029945) Homepage Journal

    Nistnet [nist.gov] is another tool that simulates delay.

    -jim

    • I'll second this. Last job I had, we used it to simulate telcom provider's networks. Very cool software.

    • NIST Net absolutely rocks. We build network appliances, so we use it a lot here. It's intended to suimulate low-bandwidth or high-latency networks across LANs, but you can directly control packet-drop rates, arrange for packets to be delivered out of order, etc.

      An excellent example of Your Tax Dollars At Work.
  • Shaper (Score:2, Informative)

    Howabout using a traffic shaper I should do what you want.

    Shaper is a traffic shaper and a packet filter for a server and for a gateway. With only limited configuration information, that are to be supplied, this script can control which and how information flow through the box.

    http://www.chronox.de/

    There are other ones as well type shapper at freshmeat.
  • by wotevah ( 620758 ) on Saturday August 21, 2004 @12:07AM (#10030319) Journal
    Use a bandwidth limiter that throttles your send rate. Someone else mentioned PF for BSD. On linux you can use the shaper module. My old notes go something like this, it might still work. Assuming eth0 is your output interface (the limiter works only on outgoing traffic, so you need the other end to do the same):
    modprobe shaper
    shapecfg attach shaper0 eth0
    shapecfg speed shaper0 9600 # in baud
    ifconfig shaper0 <eth0-address> netmask <eth0-netmask>
    # remote automatic route added by above
    route del -net <eth0-network> netmask <eth0-netmask> dev shaper0
    # add routes to be choked
    route add -host <otherhost> dev shaper0
    # or if going through a router
    route add -net <othernet> gw <router> dev shaper0
    ...you get the idea. I wonder if iptools makes this a bit less hacky.
    • I don't think this is what the person asking wants though. This might limit BANDWIDTH, but it doesn't do anything to the real latency.

      What the submitter wants is to simulate a line that already exists, and already has it's own bandwidth and latency.

      Several people have answered this without understanding what the problem is. Some people say "just hose your connection with other traffic!" but that will cause packet-loss where a dedicated serial line (like a WAN) generally won't have any if it's not overload
      • True, the shaper obviously cannot simulate all low-latency networks and I may have misinterpreted from the parent post that he was working on "low-bandwidth networks". But not knowing his purpose, listing even remote possibilities might be a good idea.

    • That is, you get the PFY to stand there and if someone's traffic light stays on a bit too much, unplug them from the switch for a few seconds.
  • Use Google? (Score:2, Informative)

    by Anonymous Coward
    Google is sometimes a very good tool for finding things like this out, without having to submit a question to Slashdot. A Google for simulating network latency [google.com] and a click on the first link turns up a thread on a FreeBSD mailing list that provides the answer: Dummynet.
  • by Myself ( 57572 ) on Saturday August 21, 2004 @02:30AM (#10030820) Journal
    Connect the machines using PPP over a pair of Ricochet modems, available on eBay for a song. They include a neat little command for developers:

    AT~I13 -- WAN Simulation Command and Information Display
    This command enables the Ricochet modem's WAN simulation feature.
    Syntax:
    AT~I13
    You can use this function to test various transport protocols in the presence of network delay and packet loss. This simulation only affects the modem's transport modes, i.e., LIGHT/PPP/SLIP/STREAM. If you are going to reset the WAN simulation values, then you should reboot the modem because it is not built to reset and process incoming packets at the same time. WAN simulation affects the processing of received packet, therefore, when testing the simulation needs to be set at both ends of the connection.

    The incoming packets are processed in the following order. First, the drop percentage value is checked and the modem drops that N% immediately. Second, the base delay is added to a random percentage of the variable delay. Then the packet is inserted on a time ordered delivery queue. If the variable delay component is great enough, a large number of incoming packets will be reordered.

    Note:
    In WAN simulation, there are fewer (Time to Live) TTL expirations than in an real network because packets ending up on the delivery queue is not expiring based on the TTL value.
  • Two Modems, Two phone lines, dial them either straight to each other, or better yet... into an ISP.. that will give a great simulation. Perhaps even dial up one of them to an East Coast number, and another to a West Coast access number.. Should do the trick
  • link in Netkit.org (Score:1, Insightful)

    by Anonymous Coward
    I've seen a tool "delayer", in a paper on www.netkit.org, used for testing TCP windowing negotiation
    http://www.netkit.org/docs/netkit-clark-and-nagle- 01.pdf [netkit.org]
    JurgenK.
  • Nistnet (Score:2, Informative)

    by gproux ( 4130 )
    http://snad.ncsl.nist.gov/itg/nistnet/

    nuff said...
  • by johnnys ( 592333 ) on Saturday August 21, 2004 @11:09AM (#10032257)
    I know dummynet has already been mentioned, but here's some detailed info on how to set it up from comp.unix.bsd.freebsd.misc.

    Article: http://groups.google.ca/groups?hl=en&lr=&ie=UTF-8& selm=ucggua1ghi9ic1%40corp.supernews.com&rnum= 12 [google.ca]

  • config NET_SCH_DELAY (Score:5, Informative)

    by Kevin Burtch ( 13372 ) on Saturday August 21, 2004 @12:34PM (#10032744)

    I'm shocked no-one has posted this!

    It's been in the kernel for while, though I don't know much about using it. I never bothered even looking at it (had no need) until a coworker wanted to use it (on Thursday) to do some testing and asked me about it.

    Here's the chunk of Kconfig:

    config NET_SCH_DELAY
    tristate "Delay simulator"
    depends on NET_SCHED
    help
    Say Y if you want to delay packets by a fixed amount of
    time. This is often useful to simulate network delay when
    testing applications or protocols.

    To compile this driver as a module, choose M here: the module
    will be called sch_delay.

    Please reply to this if you have been able to get this working... the tuning parameters to tc we found give errors (and yes, we built installed the latest iproute2 tarball).
    Then again, we only spent a few minutes playing with it (he had to leave).

  • VPN out and back in (Score:3, Informative)

    by sparty ( 63226 ) on Saturday August 21, 2004 @04:15PM (#10033904) Homepage
    If you've got an offsite broadband connection you can stick a PPTP server on (I use PopTop, http://www.poptop.org or http://poptop.sf.net ), try making a VPN connection out to that server and then back in. I've found that operating stuff over VPN at work tends to introduce significant latency (more than running over an 802.11b wireless bridge, which is also quite noticable compared to a hardwired Ethernet connection), so if you can VPN out and back in, you should have a fair amount of latency involved. If out-and-back-in doesn't work, just in (i.e. test machine A offsite, operating via VPN, talks to test machine B which is onsite) should still introduce noticable latency.

    (This does, of course, assuming that you're testing with routable protocols)
  • by laejoh ( 648921 ) on Monday August 23, 2004 @03:41AM (#10042295)
    1. I put a linux box acting as router, firewall, apache server and internet connection on the network.

    2. Then I post a story on slashdot with a link to the apache server.

    3. ???

    4. Instant latency!

    (And by carefully choosing the size of the documents/jpegs/mpegs I can actually simulate different kinds of latency!!!)
  • My idea is this: put the server and the client on a hub (not a switch), and put another couple computers on the hub ping flooding each other. The collisions will make the average latency increase.

    I don't know if a bunch of collision will affect the latency, or just the bandwidth though.
  • It is kind of a pain. You need to adjust QoS settings to cause congestion or delay. 2 ways: One mark the traffic you want to be delayed and then pump a bunch of traffic through the pipe at the same time. Apply QoS to the unmatched traffic (say a ttcp stream is good). This will provide a real world latency and will be hard to predict how much latency. The second way is to manually mess with the low latency queing settings for an interface (decrease queue size is one way), beware this will foobar your p
  • Depending on the precision you need, you could use this combination to create latency and generate losses. I've written a quick hack like this for some tests I had to do, and it works (I did it a bit hastily, and it's sure to to be buggy, but, oh well..)
  • I am also looking to simulate a network delay (satellite link) and was interested by the CONFIG_NET_SCH_NETEM for linux. Does anyone know if this works for IPV6? If so, is there documentation for it anywhere on how to use it? Or is there any other free network delay simulator for linux/freeBSD/or solaris that will work for IPV6?????

BLISS is ignorance.

Working...