Linux Netfilter discussions
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox