[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Generating ns traffic from a trace file
Dr. Klun,
The following note addressing questions similar to yours may
help. In particular, see the C program at the end of the message.
I converted the Star Wars video trace from Mark Garrett
at Bellcore to the ns trace file format. I'll make it
available when I have a chance in the next few days.
Lee
To: Ind m <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: How to use a trace for traffic gntr?
Date: Tue, 04 May 1999 19:26:42 -0400
From: Lee Breslau <[email protected]>
> Dear ns-gurus,
>
> Can anyone out there explain "How to use a trace file
> for a traffic source generator". The trace file I am
> referring to is *not* the ns-generated tracefile.
> For example, I have a file with tuples
> "Bytes vs. Timestamp". e.g 100 2.4456,
> indicating 100 byte-pkt arrived at 2.4456 secs... and so on... How do I
> make ns read the file and generate pkts appropriately?
>
> I looked at the documentation for Application/Traffic/Trace, but its
> very unclear and the format is also confusing (to me)
>
Each record in the trace file consists of 2 32-bit fields. The first
represents the inter-packet time in microseconds, the second represents
the packet size in bytes.
So you probably want to do the following:
1. Swap the order of the fields
2. Convert absolute time to inter-packet times.
3. Convert inter-packet times to microseconds.
4. Convert them to binary.
For number 4, a simple program like the following might work.
Lee
#include <stdio.h>
typedef struct _trec {
unsigned int trec_time;
unsigned int trec_len;
} trec;
main()
{
trec t;
void exit();
/* assume we read and write stdio */
while (fscanf(stdin, "%d %d", &t.trec_time, &t.trec_len) != EOF)
if (fwrite((char *)&t, sizeof(trec), 1, stdout) != 1) {
(void)fprintf(stderr, "write failed\n");
exit(1);
}
return 0;
}