VLAN 드라이버는 VLAN 정보를 H/W 이더넷 드라이버에 어떻게 전달합니까?

VLAN 드라이버는 VLAN 정보를 H/W 이더넷 드라이버에 어떻게 전달합니까?

프로그래밍 방식으로 대상에 VLAN을 구현하려고 합니다.

하지만 먼저 VLAN 설정에 대한 더 나은 이해를 돕기 위해 VLAN을 수동으로 설정하고 싶었습니다. 그래서 vconfig/ifconfig 명령 조합을 사용하여 개발 시스템(ubuntu)에서 VLAN을 수동으로 설정했지만 의도한 대상에서 동일한 명령 조합을 사용하면 작동하지 않습니다.

두 시스템 모두 동일한 8021q 드라이버를 사용하므로 하위 수준 이더넷 드라이버에 VLAN 정보를 알리는 방법은 동일해야 합니다(제 생각에는). VLAN 드라이버 소스를 살펴본 후 VLAN 정보를 수집하고 결국 이더넷 드라이버에 전달되는 sk_buff 구조에 정보를 추가하는 것으로 보이지만 VLAN 마법이 어디에서 발생하는지 확실하지 않습니다(이더넷 드라이버 또는 8021q 드라이버). .

대상 시스템의 이더넷 드라이버 소스를 살펴본 결과 VLAN을 설정하는 ioctl 방법을 지원합니다. 그러나 이는 Linux가 이더넷 드라이버에 VLAN을 설정하는 기존 방식과는 다른 것 같습니다.

VLAN 드라이버(8021q.ko)는 어떤 메커니즘으로 이더넷 하드웨어에 VLAN에 대해 알리나요?

하드웨어에 VLAN을 설정하기 위해 이더넷 드라이버에 대한 특수 API 호출입니까, 아니면 VLAN 드라이버가 패킷에 VLAN 태그를 추가해야 합니까?

VLAN 구현에 대한 정보도 도움이 될 것입니다.

관련 정보