All of lore.kernel.org
 help / color / mirror / Atom feed
From: oumer@kom.auc.dk
To: Joe Clark <joeclark@iastate.edu>
Cc: netfilter@lists.netfilter.org
Subject: Re: Simulated Packet Delays
Date: Fri, 25 Jun 2004 08:48:11 +0200 (CEST)	[thread overview]
Message-ID: <1088146091.40dbcaab348fa@webmail.kom.aau.dk> (raw)
In-Reply-To: <38331824510441751@webmail.iastate.edu>

HI,

I recommend using libipq, cause I am using it at the moment and it seems to
perform pretty OK, interms of processing time and the like. 

A simple way of doing this (not necessarily the best) will be (roughly):

-set rules to queue the concerned packets;
-Create some kind of queue (just use stl deque, for example, or use priority
queue) and put the packet_id, and the time it should be let go (ie current time
+ the amount of time you want to delay it) of each packet that is queued. (using
libip methods, ipq_read, ipq_getpacket and the like, which are described pretty
well in the man pages)

-Create a thread that constantly checks the firing times of the top of the
queue, and if it has passed, will simply call ipq_setverdict with the packet_id 
of the concerned packet, and remove the entry from the queue, and so on ...

Regards,
Oumer


Quoting Joe Clark <joeclark@iastate.edu>:

> Hi.  For a research project, I need to find a way to simulate long
> delays (ie,
> simulating 70ms or so of delay over a typically-1ms delay LAN).  From
> what I've
> seen online, the Netfilter mechanism seems to be the best way to do
> this.  There
> are some Linux packet filtering facilities available with little or no
> work
> (qdisc, tc, etc), but none seem to do the delay that I'm seeking.
> 
> So, from my web search, I would need to write a simple kernel module
> that would
> NF_QUEUE all outgoing packets on a link, and then in user space read the
> packet
> info in, set up a delay-based queuing mechanism, and then dequeue the
> packets
> after the delay and reinject them (NF_ACCEPT via an ioctl?).
> 
> Is that the best method?  I saw something about libipq, which has to do
> with how
> to use the NF_QUEUE framework in userspace.  I also saw a reference that
> said I
> could create a /dev/... device for reading in netfilter queued packets. 
> Which
> is the preferred or current way to do it?
> 
> Thanks for any help you can provide.
> - Joe Clark
> 
> 
> 
> 


      reply	other threads:[~2004-06-25  6:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-24 23:33 Simulated Packet Delays Joe Clark
2004-06-25  6:48 ` oumer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1088146091.40dbcaab348fa@webmail.kom.aau.dk \
    --to=oumer@kom.auc.dk \
    --cc=joeclark@iastate.edu \
    --cc=netfilter@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.