Hello,
I am using NF_HOOKS (a "PRE_ROUTING" hook).
When I try to print the time stamps (sec and usec) of skb packets
which I recieve
in the hook callback I get 0. Other skb fileds are correct.
According to my understanding, the time stamp should be updated
when the packet is received. Isn't it so ? Any idea why am I getting
"0" for tstamp fields (tstamp is a field in sk_buff and is an intance
of skb_timeval).
(what I mean is that the values of skb->tstamp.off_sec and
skb>tstamp.off_usec are both 0 , for ongoing incoming packets)
Regards,
John
On Thu, Aug 17, 2006 at 05:37:15PM +0300, John Que (qwejohn@gmail.com) wrote:
Hello,
I am using NF_HOOKS (a "PRE_ROUTING" hook).
When I try to print the time stamps (sec and usec) of skb packets
which I recieve
in the hook callback I get 0. Other skb fileds are correct.
According to my understanding, the time stamp should be updated
when the packet is received. Isn't it so ? Any idea why am I getting
"0" for tstamp fields (tstamp is a field in sk_buff and is an intance
of skb_timeval).
Timestamps are disabled by default, if you have sockets which enable
SO_TIMESTAMP or netfilter queue target and other agents which can enable
it, you will see updated values in skb->tstamp.
--
Evgeniy Polyakov
Evgeniy,
Thnks, I appreciate your (quick) answer;
Following your answer I tried adding a call to net_enable_timestamp() in
a module I wrote which use NF_HOOKS.
This is what is done , for example, in ipq_rcv_skb(struct sk_buff *skb)
in linux-2.6.14 in net/ipv4/netfilter/ip_queue.c.
After doing so I get timestamps which are not 0.
what I wonder now is :
1) does this have ANY performance implication (when dealing with a
high network load which can get to 50,000 packets per second?
2) It does work as I said, but I want to be cautios: Am I permitted to
add this method ? are there any implications for adding this method
which can create troubles ?
I must say that I am NOT
On 8/17/06, Evgeniy Polyakov [off-list ref] wrote:
On Thu, Aug 17, 2006 at 05:37:15PM +0300, John Que (qwejohn@gmail.com) wrote:
quoted
Hello,
I am using NF_HOOKS (a "PRE_ROUTING" hook).
When I try to print the time stamps (sec and usec) of skb packets
which I recieve
in the hook callback I get 0. Other skb fileds are correct.
According to my understanding, the time stamp should be updated
when the packet is received. Isn't it so ? Any idea why am I getting
"0" for tstamp fields (tstamp is a field in sk_buff and is an intance
of skb_timeval).
Timestamps are disabled by default, if you have sockets which enable
SO_TIMESTAMP or netfilter queue target and other agents which can enable
it, you will see updated values in skb->tstamp.
--
Evgeniy Polyakov
Evgeniy,
Sorry ! ; last sentence in my reply was chopped so here is my message
again with this last sentence (complete this time)
Thnks, I appreciate your (quick) answer;
Following your answer I tried adding a call to net_enable_timestamp() in
a module I wrote which use NF_HOOKS.
This is what is done , for example, in ipq_rcv_skb(struct sk_buff *skb)
in linux-2.6.14 in net/ipv4/netfilter/ip_queue.c.
After doing so I get timestamps which are not 0.
what I wonder now is :
1) does this have ANY performance implication (when dealing with a
high network load which can get to 50,000 packets per second?
2) It does work as I said, but I want to be cautios: Am I permitted to
add this method ? are there any implications for adding this method
which can create troubles ?
I must say that I am NOT changing anywhere the timestamp; it's only
for statistics.
Regards,
John
On 8/17/06, Evgeniy Polyakov [off-list ref] wrote:
On Thu, Aug 17, 2006 at 05:37:15PM +0300, John Que (qwejohn@gmail.com) wrote:
quoted
Hello,
I am using NF_HOOKS (a "PRE_ROUTING" hook).
When I try to print the time stamps (sec and usec) of skb packets
which I recieve
in the hook callback I get 0. Other skb fileds are correct.
According to my understanding, the time stamp should be updated
when the packet is received. Isn't it so ? Any idea why am I getting
"0" for tstamp fields (tstamp is a field in sk_buff and is an intance
of skb_timeval).
Timestamps are disabled by default, if you have sockets which enable
SO_TIMESTAMP or netfilter queue target and other agents which can enable
it, you will see updated values in skb->tstamp.
--
Evgeniy Polyakov
On Fri, Aug 18, 2006 at 08:43:08AM +0300, John Que (qwejohn@gmail.com) wrote:
Following your answer I tried adding a call to net_enable_timestamp() in
a module I wrote which use NF_HOOKS.
This is what is done , for example, in ipq_rcv_skb(struct sk_buff *skb)
in linux-2.6.14 in net/ipv4/netfilter/ip_queue.c.
After doing so I get timestamps which are not 0.
what I wonder now is :
1) does this have ANY performance implication (when dealing with a
high network load which can get to 50,000 packets per second?
Yes, it has. do_gettimeofday() is quite slow on some processors and is
not SMP-friendly.
2) It does work as I said, but I want to be cautios: Am I permitted to
add this method ? are there any implications for adding this method
which can create troubles ?
I must say that I am NOT changing anywhere the timestamp; it's only
for statistics.
If you add ata least on socket with SO_TIMESTAMP option, it will enable
timestamps for all skbs, so you have not created any wrong thing, except
that slowed down your network processing.