zlab-pub / wifi-ptp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wi-Fi PTP (Wi-PTP)

Brief

This project implements Precision Time Protocol (PTP) for Wi-Fi. Likely to be used in time-sensitive WLAN, UAV, etc., Original PTP is designed for LAN but it is possible to port it to Wi-Fi. The simplest way is to timestamp PTP packets in the NIC driver but is subject to several software uncertainties. This project makes use of the hardware TSF counter to emulate the hardware PTP clock like Ethernet NICs. A standard PTP clock interface is implemented in ath9k. Its performance is at 1 μs level. More details can be found in the ATC'21 paper.

Wi-PTP Implementation Overview

The above figure illustrates how Wi-PTP works.

Usage

The ath9k directory contains the modified ath9k driver based on Linux Kernel 4.19.37. The ptp directory contains the adjusted linuxptp.

Build & Replace ath9k Driver

  1. Patch drivers/net/wireless/ath in the Kernel source tree with this repo's ath9k.diff. We recommend patch to do this.

  2. Build ath9k driver.

    cd <kernel source>

    make M=drivers/net/wireless/ath
  1. Replace the ath9k driver.
WLAN_DEV=wlan0

ifdown ${WLAN_DEV}

rmmod ath9k
rmmod ath9k_common
rmmod ath9k_hw
rmmod ath

cd <kernel source>/drivers/net/wireless/ath
insmod ./ath.ko
insmod ./ath9k/ath9k_hw.ko
insmod ./ath9k/ath9k_common.ko
insmod ./ath9k/ath9k.ko

sleep 1

ifup ${WLAN_DEV}

Note: please replace the wlan0 above with the actual ath9k interface.

  1. Check for the PTP device.
    ls /sys/class/net/${WLAN_DEV}/device/ptp

The above command should output a ptp<X>.

Build linuxptp

The ptp version in this repo is modified to disable PTP capability checking.

    cd <repo path>/ptp

    make

After building the linuxptp, the ar9300+ wireless cards can be used to perform PTP as ethernet cards.

Citation

@inproceedings {273763,
author = {Paizhuo Chen and Zhice Yang},
title = {Understanding Precision Time Protocol in Today{\textquoteright}s Wi-Fi Networks: A Measurement Study},
booktitle = {2021 {USENIX} Annual Technical Conference ({USENIX} {ATC} 21)},
year = {2021},
isbn = {978-1-939133-23-6},
pages = {597--610},
url = {https://www.usenix.org/conference/atc21/presentation/chen},
publisher = {{USENIX} Association},
month = jul,
}

Contact

If you have any questions, please don't hesitate to contact yangzhc@shanghaitech.edu.cn or chenpzh@shanghaitech.edu.cn.

About


Languages

Language:C 90.4%Language:Roff 8.4%Language:Shell 0.7%Language:Makefile 0.5%