跳到主要内容
版本:Next

模拟时间干扰

本文介绍如何使用 Chaosd 模拟时间偏移场景。你可以通过命令行模式或服务模式创建实验。

模拟时间故障相关参数说明​

配置项配置缩写服务模式字段说明类型值
time-offset-ttime-offset指定时间偏移的长度string 类型未设置默认值;必须设置。例如,-5m
clock-ids-slice-cclock-ids-slice指定将要发生偏移的时钟的 ID。多个时钟 ID 之间用逗号分隔。有关详细信息,请参见 clock_gettime 文档string 类型默认值为 "CLOCK_REALTIME"
pid-ppid进程的标识符int 类型未设置默认值;必须设置

使用命令行模式模拟时间故障​

在创建实验前,你可以运行以下命令查看时间故障的选项:

chaosd attack clock -h

快速示例​

准备测试程序:

cat > time.c << EOF
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>

int main() {
printf("PID : %ld\n", (long)getpid());
struct timespec ts;
for(;;) {
clock_gettime(CLOCK_REALTIME, &ts);
printf("Time : %lld.%.9ld\n", (long long)ts.tv_sec, ts.tv_nsec);
sleep(10);
}
}
EOF

gcc -o get_time ./time.c

然后运行 get_time 并尝试对其发起攻击。示例如下:

chaosd attack clock -p $PID -t 11s

使用服务模式模拟时间故障​

运行 快速示例 中的测试程序,然后使用以下命令创建时间故障实验:

curl -X POST 172.16.112.130:31767/api/attack/clock -H "Content-Type:application/json" -d '{"pid":123, "time-offset":"11s"}'