브리지 VLAN 프로토콜을 802.1q에서 802.1ad로 변경하면 패킷이 손실되기 시작했습니다.

브리지 VLAN 프로토콜을 802.1q에서 802.1ad로 변경하면 패킷이 손실되기 시작했습니다.

swbridge태그가 지정된 프레임을 .sending 하는 브리지 인터페이스( ) 가 있습니다 vlan_protocol=802.1q. Wireshark에서 ARP 요청(다른 장치의 ping 요청)을 성공적으로 볼 수 있지만, vlan_protocol로 변경하면 802.1ad더 이상 Wireshark에서 패킷을 볼 수 없습니다.

다음 명령을 사용하여 브리지 VLAN 프로토콜을 변경했습니다.

sudo bash -c 'echo "0x88a8" > /sys/class/net/swbridge/bridge/vlan_protocol'
# ip -d -j -p link show swbridge

...
                "vlan_filtering": 1,
                "vlan_protocol": "802.1ad",
...
# uname -a
Linux 5.15.71 ...
# bridge vlan
port              vlan-id  
port2             10
swbridge          10

제가 하고 싶은 것은 수신 패킷에 이중 VLAN 태그를 추가하는 것인데 이 단계에서 멈췄습니다.

편집하다

이 설정은 실용적이지 않을 수도 있지만 이것이 제가 원하는 것입니다. 클라이언트의 포트 2에서 QinQ 패킷(802.1AD)을 보고 싶습니다.

여기에 이미지 설명을 입력하세요.

이 설정은 GNS3에서 성공적으로 테스트되었습니다.

Cisco 장치 구성:

interface GigabitEthernet1/0/25
 switchport access vlan 10
 switchport mode access
!         
interface GigabitEthernet1/0/26
 switchport trunk allowed vlan 10
 switchport mode trunk
! 

MySwitch VLAN 구성(패킷이 수신되지 않는 이유를 설명하기 전에):

# bridge vlan
port1             11 PVID Egress Untagged
port2             1 PVID Egress Untagged
                  11
swbridge          1
                  11

보시다시피 모든 포트가 슬레이브인 브리지(swbridge)가 있습니다.

나는 VLAN int(다음 코드를 사용하여)를 만들었지만 결국 swbridge가 전혀 작동하지 않는다는 것을 알기 전까지는 작동하지 않았습니다 vlan_protocol 802.1ad(패킷이 통과하지 못했습니다).

ip link add link port1 name port1.11 type vlan proto 802.1ad id 11

또한 필요한 모듈이 존재한다고 생각합니다.

# lsmod
Module                  Size  Used by
8021q                  28672  0
...

답변1

Linux 브리지는 vlan_filtering=1단일 레이어 VLAN의 태그 지정/태그 해제를 지원합니다. 이는 802.1AD(QinQ라고도 하며 내부에 또 다른 스택 802.1Q VLAN 레이어가 있음을 의미함) VLAN 인식 브리지는 해당 포트에서 802.1Q 프레임(액세스 포트) 또는 802.1AD 프레임(트렁크)을 확인해야 함을 의미합니다. QinQ처럼 적절하게 처리되어야 합니다.

필요한 경우 추가 스택형(VLAN 지원) 브리지 또는 VLAN 인터페이스를 사용하여 이 단일 브리지에서 다루지 않는 모든 작업을 수행할 수 있습니다. 그러나 Cisco 스위치가 이미 레이어 1 VLAN 태깅(802.1Q VID 10)을 추가했기 때문에 이 설정에는 VLAN 인터페이스가 필요하지 않습니다.


의견에 따르면 실험은 다음과 같습니다.

client - port1 (IP/ARP) --> 
--> access-port - cisco (internal tagging) - trunk-port (802.1q vid 10) --> 
    --> port1 (access) - swbridge (internal tagging) - port2 (trunk, 802.1ad vid 11 before 802.1q vid 10) -->
        --> port2 - client

OP의 설정이 어디에서 작동하지 않는지 잘 모르겠지만 다음으로 설정합니다.내 스위치처음부터 시작해 보겠습니다(이름이 두 개의 파일이라고 가정).포트 1그리고포트 2OP 설명 일치)는 설정을 재현할 때 작동합니다.

브리지 자체 인터페이스에서는 아무것도 할 수 없으며 해당 포트만 수행할 수 있습니다. 캡처 완료내 스위치에서 이루어져야한다포트 1또는포트 2, 열려 있지 않음교환교(비록 무차별 모드에서 캡처가 작동하더라도).

# start over
ip link del dev swbridge
ip addr flush dev port1
ip addr flush dev port2

# all at once: VLAN filtering, 802.1AD and
# no VLAN enabled by default (not even VLAN 1), so no VLAN to delete later
ip link add name swbridge type bridge vlan_filtering 1 vlan_protocol 802.1ad vlan_default_pvid 0

ip link set dev port1 master swbridge up
ip link set dev port2 master swbridge up

bridge vlan add vid 11 dev port1 pvid untagged
bridge vlan add vid 11 dev port2

ip link set dev swbridge up

이제 클라이언트에서 전송된 ARP 또는 IP 패킷포트 1Cisco의 802.1Q 태그를 수신하고 그 위에 802.1AD 태그를 수신합니다.내 스위치따라서 클라이언트의 포트 2에서 QinQ로 수신됩니다.

여기에 관련된 VLAN 인터페이스가 없으며 VLAN 인터페이스가 생성되지 않았습니다. VLAN 인터페이스가 존재하는 경우내 스위치제거해야합니다.

참고: 필요한 경우 브리지 값을 vlan_protocol변경할 수 있습니다( /sys/class/net/swbridge/bridge/vlan_protocol또는 사용 ip link set dev swbridge type bridge vlan_protocol ...). 그러나 VLAN 인터페이스( )가 설정에 사용되는 경우 ip link add link ... name ... type vlan id ... protocol ...해당 VLAN 프로토콜은 나중에 변경할 수 없습니다. VLAN 프로토콜을 변경하려면 인터페이스를 삭제하고 다시 생성해야 합니다. 일단 작성된 계약은 변경할 수 없습니다. 변경을 시도했습니다(사용은 ip link set ... type vlan protocol ...자동으로 허용되었지만 효과가 없었습니다.

관련 정보