3个不稳定版本
0.2.1 | 2024年6月7日 |
---|---|
0.2.0 | 2024年3月7日 |
0.1.0 | 2023年11月24日 |
#195 in 网络编程
365KB
8K SLoC
Statime
Statime是一个提供PTP版本2.1(IEEE1588-2019)实现的库。它提供了设置PTP普通时钟和边界时钟的所有构建块。
它被设计为能够与许多不同的底层平台一起工作,包括嵌入式目标。这意味着它不能使用标准库和平台特定库来与系统时钟和网络交互。这需要由库的用户提供。
在现代Linux内核上,statime-linux
crate提供了这些接口的现成实现。对于其他平台,用户需要自行实现这些。
statime-stm32
crate提供了一个如何在嵌入式目标上使用statime的示例。
statime-linux
crate为Linux提供了实现普通时钟或边界时钟的二进制文件。它需要足够的权限来更改系统时钟。最简单的方法是通过sudo启动它。
sudo ./target/debug/statime -c path/to/statime.toml
结构
statime
库已被构建成尽可能的平台无关。为了做到这一点,网络和时钟已被抽象化。statime-linux
库为基于Linux的平台提供了这些抽象的实现。对于其他平台,这需要由用户提供。有关更多详细信息,请参阅文档
Rust版本
Statime需要cargo/rust的nightly版本。最简单的方法是通过rustup获取这些。
以提升权限运行
由于PTP协议使用端口319和320,这里的代码需要以root身份运行。最好以非root用户构建代码,然后以root身份运行:
cargo +nightly build
然后以root身份运行
sudo ./target/debug/statime -i <ETHERNET INTERFACE NAME>
PTPd设置用于测试
PTPd可以用作测试的PTP主时钟。由于PTP标准所需的端口使用,此主时钟必须位于与在此存储库中运行代码的机器不同的机器上。在Ubuntu上,可以使用以下命令安装:
apt install ptpd
您可能不希望将其作为服务持续运行,因此可以通过以下命令禁用它:
service ptpd disable
然后,要启动ptpd,以root身份运行
ptpd -V -n -M -i <INTERFACE>
其中 <INTERFACE>
是ptpd要使用的网络接口。在这里 -n
禁用了ptpd的时钟调整,而 -M
确保它仅在主模式下运行。
路线图
- 2024年第二季度:电力行业配置+实验性NTS4PTP
- 2024年第三季度:稳定版Statime(待资助)
- 2024年第一季度至第四季度:采用工作及维护工作
支持我们的工作
Statime的开发得到了NLnet Foundation的NGI Assure Fund的友好支持。
SIDN Fonds通过SIDN Labs的TimeNL合作,以资助开发运行Statime和ntpd-rs的时钟设备。
2023年8月,主权技术基金对Pendulum(Statime和ntpd-rs)进行了投资。有关更多信息,请参阅他们的网站。
我们持续寻求对感兴趣方和未来工作的参与和资助。请参阅项目Pendulum或联系[email protected]。
依赖关系
~4MB
~83K SLoC