tc 필터 - 커널과 통신하는 중 오류가 발생했습니다.

tc 필터 - 커널과 통신하는 중 오류가 발생했습니다.

Geneve 프로토콜에 tc 플라워 필터를 추가하려고 하는데 다음 오류가 발생합니다.

% sudo tc filter add dev gnv0 protocol ip parent ffff: \
    flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
    action tunnel_key unset
RTNETLINK answers: No such file or directory
We have an error talking to the kernel

저는 Amazon Linux를 사용하고 있습니다.

% uname -a
Linux ip-10-0-40-230.ec2.internal 4.14.311-233.529.amzn2.x86_64 #1 SMP Thu Mar 23 09:54:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

트래픽을 미러링하는 AWS Gateway Load Balancer에서 GENEVE UDP 터널을 종료하고 싶습니다. 아이디어는 패킷을 원래 형태로 풀어내는 것입니다. 나는 또한 이것을 시도했지만 vxlan_opts성공하지 못했습니다. 따라서 질문은 필터보다 tc에 더 구체적인 것 같습니다.


온라인에서 제안된 일부 커널 모듈을 로드했습니다(필요한지 충분한지 확실하지 않음).

% lsmod | grep sch                                      
sch_htb                24576  0
sch_netem              20480  0
sch_ingress            16384  1

완전한 예:

sudo yum install tc
sudo modprobe sch_netem
sudo modprobe sch_htb

sudo ip link add name gnv0 type geneve dstport 6081 external
sudo ip link set gnv0 up
sudo tc qdisc add dev gnv0 ingress

sudo tc filter add dev gnv0 protocol ip parent ffff: \
    flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
    action tunnel_key unset

AL2023에서 시도했는데 비슷한 오류가 발생했습니다.

sudo ip link add name gnv0 type geneve dstport 6081 external
sudo ip link set gnv0 up
sudo tc qdisc add dev gnv0 ingress
sudo tc filter add dev gnv0 protocol ip parent ffff: \
    flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
    action tunnel_key unset
Error: Failed to load TC action module.
We have an error talking to the kernel

관련 정보