23
22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

Embed Size (px)

Citation preview

Page 1: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

22-Sept-2005

Google Summer of Code Projects:Lightweight Precision Timestamps

Jeff Boote

Page 2: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Summer of Code 2005

•Program funded by Google ($2M)

•Supported students to work on open-source projects ($4500 per student)

•400 students were selected

•Each student was required to have a mentoring organization

•40 mentoring organizations

•Internet2 mentored 10 students

Page 3: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Internet2 mentored projects

•Mostly transport-related things (http://transport.internet2.edu/)

•Two projects to characterize internal delays

•Three projects to work on a transport tool

•Two projects to work on thrulay

•One project to build a Gaim plug-in

•8 success, 2 failures

Page 4: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Lightweight Precision Timestamps

•Implement a lightweight timestamp API

•Basically gettimeofday() without a system call

•2 projects successful

Page 5: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Uses

•For Internet2 mostly network delay measurements

•Owamp•Thrulay•Bulk-transport protocol (delay based congestion control)

•Wide applicability (code profiling, etc…)

Page 6: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

OWAMP (the problem)

•One-way network latency measurements• Control protocol• Test protocol• Sample implementation

•Find problems in the network• Congestion usually happens in one direction first…

• Routing (asymmetric, or just changes)• SNMP polling intervals mask high queue levels that active probes can show

Page 7: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Sample Implementation

Applications•owampd daemon•owping client

Built upon protocol abstraction library•Supports one-off applications•Allows authentication/policy hooks to be incorporated

Page 8: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Functionality (owping client)

•owping client requests OWD tests from an OWAMP server

•Client can be sender or reciever•Communication can be “open”, “authenticated”, or “encrypted”

•Supports the setup of many tests concurrently

•Supports the buffering of results on the server for later retrieval

Page 9: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Functionality (owampd)

owampd•Accepts requests for OWD tests•Responds with accepted/denied•Tests are formally started with a StartSessions message from the client.

•Runs tests•Sessions with packets received at the server are buffered for later retrieval

Page 10: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Architecture

Page 11: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Systemic Application Errors

Our tests indicate a systemic error of 73 usec *• Experiments with two systems connected via cross-over

cable• Two concurrent sessions (send,recv)• 10 packets/second

• Intel SCB2 motherboard

• 2x512 MB ECC registered RAM

• Intel PRO/100+ integrated NIC

• FreeBSD 4.6* 95% confidence level (RFC 2679)

* Error is specific to this OS/hardware/intensity level

* Tests with older version of owamp, should be a little better now.

Page 12: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Calibration Distribution

Page 13: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Characterization of Error

•Owamp (Min delay was 56 usec)•Timestamp fetching: 14.34 usec•Serialization: 10.24 usec•Unaccounted: 31.42 usec

•Ping (RTT 57 usec)•Timestamp Fetching: 5.07 usec•Serialization: 20.48 usec•Unaccounted: 31.45 usec

Page 14: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Precision Related Context Switches

Page 15: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Problems with “system” time for latency measurement

•Poor clock resolution• (typically 1-10 msec)

•Large amount of time to actually fetch timestamp

• Some systems better than others

•Large jitter• System-call - context switch threat

•No error estimates

•Drift estimate only happens at boot time for some systems

• Cold hardware

Page 16: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Project Definition

Use clock register (TSC) along with system-wide state to incorporate drift adjustment and conversion to UTC without system calls.

Page 17: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Implementation

Daemon•Treat “system” clock as an upstream NTP server

•Synchronize TSC values to “system” clock–Saves transformation information in shared memory so all local process have access to identical transformation

–Does not use locks - implemented with a rotating buffer with an index to the “current” set of coefficients (index updated with “atomic” operation)

Page 18: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Implementation

Client•Read TSC values directly•Read transformation information from shared memory

Page 19: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Validation of Implementation

See websites

Page 20: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Features

•No system calls

•Clock resolution related to processor speed

•Potential to provide error estimates

•Quick convergence

•Spike supressor to deal with system time jitter

•PLL/FLL state machine based on NTP algorithms

Page 21: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Future Enhancements to support OWAMP

•Add interaction with NTP to determine error of system clock

•Expose error of TSC synchronization as well as NTP

Page 22: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

2005-Sept-22

Project Pages

Fasttime (Alex Holkner)

http://fasttime.sourceforge.net/

TSC-xluo (Xun Luo)

http://tsc-xluo.sourceforge.net

(Both sites site references for related work)

Page 23: 22-Sept-2005 Google Summer of Code Projects: Lightweight Precision Timestamps Jeff Boote

www.internet2.edu