Linux 터미널(netem)에서 패킷을 손상시키는 중 오류가 발생했습니다.

Linux 터미널(netem)에서 패킷을 손상시키는 중 오류가 발생했습니다.

다음 규칙은 패킷의 임의 오프셋에 1비트 오류를 ​​도입하여 패킷의 5%를 손상시킵니다.

sudo tc qdisc 변경 dev ens8 루트 netem 손상 5%

하지만 최근에 다음과 같은 오류가 발생했습니다.

오류: Qdisc를 찾을 수 없습니다. 생성하려면 NLM_F_CREATE 플래그를 지정하세요.

패킷 손상을 시뮬레이션할 수 있는 다른 방법을 제공하거나 도움을 줄 수 있습니까? 오류 감지 메커니즘이 얼마나 잘 작동하는지 확인하기 위해 패킷 손상을 시뮬레이션하려고 합니다.

답변1

초기 기본값큐 디스크커널에 의해 설정된 특수 핸들은 0:수정되거나 참조될 수 없습니다. 새 파일로만 덮어쓸 수 있습니다.큐 디스크. change기존 참고자료 활용뿌리 큐 디스크, 그러나 이는 기본 커널의 qdisc가 될 수 없으므로 이는 버그입니다.

그래서 이번이 처음이에요네템 큐 디스크사용하는 경우 add키워드를 사용해야 하며 이는 아마도 과거 어느 시점에 수행된 작업이었을 것입니다. 그런 다음 키워드를 통해 참조하는 것으로 충분 change하므로 나중에 키워드를 사용하여 일부 매개변수(예: 손상 비율)를 변경할 수 있습니다 .root

바로 가기가 replace시도되므로 change실패하면 실행됩니다 add.

따라서 결국 이 명령은 처음과 다음 몇 번 작동합니다.

sudo tc qdisc replace dev ens8 root netem corrupt 5%

이걸 삭제하고 싶어큐 디스크이 작업은 한 번 수행해야 합니다(기본적으로 다시 수행되므로 두 번째에는 실패합니다).큐 디스크커널에 의해 설치되며 금지됨):

sudo tc qdisc delete dev ens8 root

add, change, replace(예: change또는 else add) 의 사용법은 delete다른 많은 경우에서도 유사한 패턴을 따릅니다.IP 경로 2주문하다.

관련 정보