Linux 흐름 제어 유틸리티는 데이터그램, IP 패킷 또는 프레임을 수정합니까?

Linux 흐름 제어 유틸리티는 데이터그램, IP 패킷 또는 프레임을 수정합니까?

tc저는 Linux 커널 패킷 스케줄러를 구성하는 데 사용되는 Linux의 흐름 제어( ) 유틸리티를 사용하고 있습니다 . 또한 지연을 추가하거나 트래픽을 삭제하거나 손상시키는 netem명령을 사용합니다.tc

netem내 주요 질문은 전송 계층 데이터그램, IP 패킷 또는 링크 계층 프레임(이더넷과 같은)을 수정 합니까?입니다 .

내가 찾은이 페이지Linux 커널의 네트워크 통신 흐름을 설명합니다. 셰이핑 및 큐잉 규칙은 "레이어 2: 링크 계층(예: 이더넷)"에서 만들어진다고 언급합니다. 이는 netem프레임(레이어 2)에 손상, 손실 또는 지연이 추가된다는 의미입니까 ?

그러나 tc filter특정 IP:포트 쌍에 트래픽 규칙을 적용할 수 있으므로 이것이 전송 계층 데이터그램(계층 4)에서 작동한다는 의미입니까?

답변1

tc나가는 "패킷"이 하드웨어로 전송되는 순서인 대기열 규칙에 영향을 줍니다. 구현은 sk_buff구조 및 문서에서 작동합니다.sk_buff패킷 형식은 특정 네트워크 인터페이스가 사용하는 모든 것(예: 이더넷 인터페이스의 이더넷 패킷)이라는 것을 암시하는 것 같습니다.

따라서 이 레이어에 추가 손상이 있다고 가정합니다 netem corrupt. 이는 레이어 2 체크섬(특정 인터페이스에 사용되는 레이어 2가 무엇이든)을 통해 발견되어야 합니다.

또한 sk_buff더 높은 수준의 페이로드에 대한 포인터가 포함되어 있어 tc filter해당 페이로드에 대한 작업을 수행할 수 있는 이유를 설명합니다.

관련 정보