Skip to content

yuu61/RFC8762-CLI

Repository files navigation

RFC 8762 STAMP Implementation

RFC 8762 STAMP(Simple Two-way Active Measurement Protocol)の C 言語実装です。 ネットワーク性能測定(遅延、遅延変動、パケットロス)を行うための軽量なプロトコルです。

概要

STAMP は、ネットワークの性能測定を行うための標準化されたプロトコルです。このプロジェクトでは、RFC 8762 で定義されている STAMP プロトコルの Sender(送信側)と Reflector(反射側)を実装しています。

このプロジェクトは、Qiita の記事「クリスマスの夜に「RFC8762: 双方向遅延測定プロトコル STAMP」について勉強しよう!!」に触発されて作成しました。

主な機能

  • RTT (Round-Trip Time) 測定: パケットの往復時間を精密に測定
  • 片方向遅延測定: Forward / Backward delay の個別統計(-O オプション)
  • 統計情報: パケット送受信数、最小/最大/平均 RTT、ジッターを表示
  • IPv4/IPv6 デュアルスタック対応: IPv4 と IPv6 の両方に対応
  • ホスト名解決: IP アドレスだけでなくホスト名でも指定可能
  • PTP タイムスタンプ: NTP 形式に加え、PTP truncated format に対応(-P オプション)
  • ハードウェアタイムスタンプ: Linux NIC の HW タイムスタンプに対応(-i オプション)
  • PHC クロック連携: NIC の PTP Hardware Clock から直接時刻取得(-c オプション)
  • クロスプラットフォーム対応: Windows、Linux、macOS で動作

クイックスタート

ビルド

cmake --preset release
cmake --build --preset release

実行

# ターミナル1: Reflectorを起動
./build/release/reflector

# ターミナル2: Senderを起動
./build/release/sender 127.0.0.1

出力例:

STAMP Sender targeting 127.0.0.1:862
Press Ctrl+C to stop and show statistics
Seq  Fwd(ms)   Bwd(ms)   RTT(ms)  Offset(ms)  [adj_Fwd]  [adj_Bwd]
--------------------------------------------------------------------------------------------
0    0.152     0.148     0.300    0.002       0.150      0.150
1    0.145     0.155     0.300    -0.005      0.150      0.150
2    0.148     0.152     0.300    -0.002      0.150      0.150
^C
--- STAMP Statistics ---
Packets sent: 3
Packets received: 3
Packet loss: 0.00%
RTT min/avg/max = 0.300/0.300/0.300 ms

ドキュメント

参考資料

貢献・ライセンス

このプロジェクトは MIT ライセンスで公開されています。 バグ報告や機能追加の提案は、issue を作成してください。プルリクエストも歓迎します。

About

RFC 8762 STAMP (Simple Two-way Active Measurement Protocol) のC言語実装。RTT・遅延・パケットロスを測定。Windows/Linux/macOS対応、IPv4/IPv6デュアルスタック

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors