Aller au contenu principal
Version : 2.6.7

Simuler des fautes temporelles

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Ce document explique comment utiliser Chaosd pour simuler un scénario de décalage temporel. Vous pouvez créer des expériences soit en mode ligne de commande, soit en mode service.

Créer des expériences en mode ligne de commande

Cette section explique comment créer des expériences de fautes temporelles à l'aide de commandes.

Avant de créer une expérience, vous pouvez exécuter la commande suivante pour consulter les options des fautes temporelles :

chaosd attack clock -h

Le résultat est le suivant :

$ chaosd attack clock -h

clock skew

Usage:
chaosd attack clock attack [flags]

Flags:
-c, --clock-ids-slice string The identifier of the particular clock on which to act.More clock description in linux kernel can be found in man page of clock_getres, clock_gettime, clock_settime.Muti clock ids should be split with "," (default "CLOCK_REALTIME")
-h, --help help for clock
-p, --pid int Pid of target program.
-t, --time-offset string Specifies the length of time offset.

Global Flags:
--log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'
--uid string the experiment ID

Exemple rapide

Préparez le programme de test :

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

Exécutez ensuite get_time et tentez de l'attaquer. Voici un exemple :

chaosd attack clock -p $PID -t 11s

Configurations pour simuler des fautes temporelles

ParameterTypeNoteDefault valueRequiredExample
timeOffsetstringSpecifies the length of time offset.NoneYes-5m
clockIds[]stringSpecifies the ID of clock that will be offset. See the clock_gettime documentation for details.["CLOCK_REALTIME"]No["CLOCK_REALTIME", "CLOCK_MONOTONIC"]
pidstringThe identifier of the process.NoneYes1

Créer des expériences en mode service

(mise à jour en cours)