tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

GSoC 2011 project proposal [packet timestamping]



Hello everybody!

I am a last year IT student from Saint-Petersburg, Russia.

I want to post my proposal here before pushing it to google-melange,
to receive useful feedback.

Any comments and remarks are welcome & anticipated =)

Just for reference here is my brief cv (html): http://sandycat.info/cv.html

-------------

Google Summer Of Code 2011 project proposal.

"Socket option to timestamp UDP packets in NetBSD kernel"

Rationale

It is often needed for applications that receive data via UDP to store
data
together with its reception time, or account packets arrival time as
precisely
as possible.

Typical use cases include:

    1. Data reproduction in real-time for performance analysis or
quality control;

    2. More precise clock synchronization in NTP/PTP protocol
implementation;

    3. Measuring latency in 10 GB networks (or faster);

    4. Improved precision timing in high frequency trading done by
hedge funds;

    5. Realtime audio/video streaming (RTP/RTCP)

Previously the only way to get the reception time was to call
gettimeofday(2)/clock_gettime(2) upon data reception.

That is not a very good idea because:

    1. It makes one additional system call thereby decreasing maximum
reception rate.

    2. Timing is imprecise, because delay from the time of packet
reception by
       network adapter and time of actual reception by user-land is
non-deterministic
       and isn’t taken into consideration.

Right now NetBSD provides some basic packet timestamping which
needs to be extended and implemented in NIC drivers.

Project objectives

This project’s aim is the further implementation of timestamping in
NetBSD kernel.
The project objectives are:

    1. Implement SO_TIMESTAMPNS option and SO_TIMESTAMPING_* control
messages;

    2. Design and implement SIOCSHTSTAMP ioctl support in one ore more
drivers;

    3. Design and implement an API that [On having enough time]:
        a. selects which clock is used;
        b. provides information about available clocks, their
precision and the position
        where the sampling is performed.

    4. Provide some test programs and documentation.

--------------


Home | Main Index | Thread Index | Old Index