[RFC] BPF timestamping

Guy Helmer ghelmer at palisadesystems.com
Wed Jun 9 19:31:47 UTC 2010


On Jun 9, 2010, at 1:44 PM, Jung-uk Kim wrote:

> bpf(4) can only timestamp packets with microtime(9).  I want to expand 
> it to be able to use different format and resolution.  The patch is 
> here:
> 
> http://people.freebsd.org/~jkim/bpf_tstamp.diff
> 
> With this patch, we can select different format and resolution of the 
> timestamps.  It is done via ioctl(2) with BIOCSTSTAMP command.  
> Similarly, you can get the current format and resolution with 
> BIOCGTSTAMP command.  Currently, the following functions are 
> available:
> 
> 	BPF_T_MICROTIME		microtime(9)
> 	BPF_T_NANOTIME		nanotime(9)
> 	BPF_T_BINTIME		bintime(9)
> 	BPF_T_MICROTIME_FAST	getmicrotime(9)
> 	BPF_T_NANOTIME_FAST	getnanotime(9)
> 	BPF_T_BINTIME_FAST	getbintime(9)
> 	BPF_T_NONE		ignore time stamps
> 

I like this idea.  I've been using getmicrotime(9) myself.

> (Note: Additionally, there is an experimental machanism to tag packets 
> with timestamps in struct bintime format via mbuf_tags(9) from lower 
> layer, e.g., device driver.  However, I didn't test it because I 
> wasn't sure whether this is the right thing to do.)

Not sure about this.

> While I was here, I moved the bogus SIZEOF_BPF_HDR macro into bpf.c 
> and tried to make it little bit more correct.  For example, the 
> 32-bit shim should be able to handle alignment more properly for 
> non-Ethernet DLTs.  I tried my best not to break ABI/API (especially 
> for 32-bit platforms) and relevant places are all marked with 
> BURN_BRIDGES.

Not sure about this either.

Guy


More information about the freebsd-net mailing list