From 4ceb5a44489ccee682c73863b21b8e2d6c6a1f44 Mon Sep 17 00:00:00 2001 From: David Venhoek Date: Fri, 24 Nov 2023 09:57:14 +0100 Subject: [PATCH] Removed outdated setup guide. --- docs/guide/images/setup.png | Bin 8031 -> 0 bytes docs/guide/setup.md | 146 ------------------------------------ 2 files changed, 146 deletions(-) delete mode 100644 docs/guide/images/setup.png delete mode 100644 docs/guide/setup.md diff --git a/docs/guide/images/setup.png b/docs/guide/images/setup.png deleted file mode 100644 index 72ac4d0569776c5eb909782fd224293ad5419266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8031 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 E0NvD+7ytkO diff --git a/docs/guide/setup.md b/docs/guide/setup.md deleted file mode 100644 index 02a8b4bfe..000000000 --- a/docs/guide/setup.md +++ /dev/null @@ -1,146 +0,0 @@ -# Setting up a simple PTP network - -This example network configuration consists of two ordinary clocks, connected to each other through a boundary clock, -all of which are running on Linux: - -![setup](images/setup.png) - -It should be relatively straightforward to extrapolate for more complicated networks. - -## Ordinary Clocks - -To get PTP up and running for each of the ordinary clocks, install `statime-linux` on both of them: - -```shell -cargo install --git https://github.com/pendulum-project/statime.git --rev 52b17e3 --bin statime-linux -``` - -`statime-linux` contains a CLI binary that can be used to start ordinary clock instances: - -```shell -# use ifconfig to find the descriptor corresponding to the interface connected to the boundary clock -ifconfig -statime-linux --interface enp1s0f1 -``` - -Ordinary clocks can also be configured through code. Doing so is very similar to configuring boundary clocks, which is -explained in the next section. - -## Boundary Clock - -Setting up a boundary clock is currently only possible through code. Start by creating a new Rust project: - -```shell -cargo new boundary_clock -cd boundary_clock -``` - -In `Cargo.toml`, add the following dependencies: - -```toml -[package] -name = "test-bc" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -clap = { version = "3.1.6", features = ["derive"] } -log = "0.4.14" -env_logger = "0.10.0" -statime = { git = "https://github.com/pendulum-project/statime.git", rev = "52b17e3" } -statime-linux = { git = "https://github.com/pendulum-project/statime.git", rev = "52b17e3" } -tokio = { version = "1.27", features = ["full"] } -``` - -Then, in `src/main.rs`, add the following code: - -```rust -use std::env; - -use statime::{ - datastructures::{ - common::{ClockIdentity, PortIdentity, TimeSource}, - datasets::{DefaultDS, DelayMechanism, PortDS, TimePropertiesDS}, - messages::SdoId, - }, - filters::basic::BasicFilter, - port::Port, - ptp_instance::PtpInstance, -}; -use statime_linux::{ - clock::{LinuxClock, LinuxTimer, RawLinuxClock}, - network::linux::{get_clock_id, LinuxRuntime}, -}; - -#[tokio::main] -async fn main() { - env_logger::init(); - - let local_clock = LinuxClock::new(RawLinuxClock::get_realtime_clock()); - let mut network_runtime = LinuxRuntime::new(false, &local_clock); - let clock_identity = ClockIdentity(get_clock_id().expect("Could not get clock identity")); - - let default_ds = - DefaultDS::new_boundary_clock(clock_identity, 2, 128, 128, 0, SdoId::default()); - - let time_properties_ds = - TimePropertiesDS::new_arbitrary_time(false, false, TimeSource::InternalOscillator); - - let port_1_ds = PortDS::new( - PortIdentity { - clock_identity, - port_number: 1, - }, - 1, - 1, - 3, - 0, - DelayMechanism::E2E, - 1, - ); - let interface = env::var("PORT1") - .expect("PORT1 interface descriptor not set") - .parse() - .expect("invalid interface descriptor for PORT1"); - let port_1 = Port::new(port_1_ds, &mut network_runtime, interface).await; - - let port_2_ds = PortDS::new( - PortIdentity { - clock_identity, - port_number: 2, - }, - 1, - 1, - 3, - 0, - DelayMechanism::E2E, - 1, - ); - let interface = env::var("PORT2") - .expect("PORT2 interface descriptor not set") - .parse() - .expect("invalid interface descriptor for PORT2"); - let port_2 = Port::new(port_2_ds, &mut network_runtime, interface).await; - - let mut instance = PtpInstance::new_boundary_clock( - default_ds, - time_properties_ds, - [port_1, port_2], - local_clock, - BasicFilter::new(0.25), - ); - - instance.run(&LinuxTimer).await; -} -``` - -This configures two PTP ports, binds them to interfaces described by the environment variables `PORT1` and `PORT2`, and -starts a boundary clock PTP instance. To run the binary, execute the following commands: - -```shell -# use ifconfig to find the descriptors corresponding to the interfaces connected to the ordinary clocks -ifconfig -PORT1=enp1s0f0 PORT2=enp1s0f1 cargo run -```