ブリッジ VLAN プロトコルを 802.1q から 802.1ad に変更すると、パケットが失われ始めました。

ブリッジ VLAN プロトコルを 802.1q から 802.1ad に変更すると、パケットが失われ始めました。

swbridgeタグ付きフレームを.sendingするブリッジインタフェース()がありますvlan_protocol=802.1q。 WiresharkはARP要求(他のデバイスからのping要求)を正常に表示できますが、にvlan_protocol変更すると802.1adWiresharkでパケットを表示できなくなります。

次のコマンドを使用してブリッジ 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

ご覧のとおり、すべてのポートがスレーブであるブリッジがあります。

私は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の設定がどこで機能しないのかわかりませんが、次のように設定します。私のスイッチ最初から始めましょう(名前が2つのファイルであるとします)。ポート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 ...自動的に許可されましたが効果がありませんでした)。

おすすめ記事