Thu Feb 9 19:55:01 2012
"native vlan mismatch"が表示されることがよくある。
Feb 9 19:44:14 192.168.20.101 295: 01:23:47: %CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (10), with Cata2950_2 FastEthernet0/21 (1).
この時、各interfaceのnative vlanを見るために show interface **** switchportを実行すると、以下のようになっている。
fa 0/1
Access Mode VLAN: 10 (Marketing)
Trunking Native Mode VLAN: 1 (default)
fa 0/21
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Native Mode VLAN のvlanは両方1で一致している。
違っているのはaccess mode vlanのほうである。
fa 0/1はmode access, fa 0/21はtrunkになっていた。
fa 0/1をtrunkにするか、fa 0/1のaccess vlanを1にするとメッセージは出なくなる。
access - trunk でもinterfaceはupしている。
mismatchが出るということはなんらかの通信はしているはずだ。
一方はaccessだからタグなしで送信し、それをtrunkポートで受信するとnative vlanとみなすがそれが一致しないのか・・・
が、そもそもタグがないのだからnative vlanが何かもわからないのでは・・・?
違った。よくみると、%CDP-4-NATIVE_VLAN_MISMATCH となっている。
これはCDPにより検出されているのだ。
cdp neighborsを見ると、 fa 0/1のNative VLANは10になっていた。
これか......。
「accsessポートとトランクポート間で通信ができるか」
多くの人がNOと答えるであろう。私もNOだと思っていた。
しかし、今見ていると両方ともupしていてSTPの状態もFWDだ。
通信できている...?
が、やってみるとやはり通信できない。
でも両方UPでFWDだから、通信できているかいないかは簡単にはわからない......
access portの場合は所属vlanが異なっていても通信できる。
cdp neighbors detailを見るとnative vlanはそれぞれの所属vlanになっているが、
mismatchにはならない。
私はnative vlanを変更することはまずないので、mismatchが出るときは
trunk - access になっている可能性が高い。
...とすると、trunk - access になっていても所属vlanが同じなら通信できるということか...?
mode access (vlan1) ---- mode trunk (nativeはvlan 1)
の場合、通信できる。
accessポートはタグなしで送信し、trunkポートはnativeに限ってタグなしにするから、
vlan 1についてはお互いタグなしで通信できる。
これがmismatchだと、trunkポートはタグをつけるのでaccess側が破棄し、
accessポートはタグをつけないのでtrunk側はnative vlanとして扱う・・・
そうすると、場合によっては通信ができてしまうか?
port A: mode access (vlan 2) ---- port B: mode trunk (native vlan 1)
このような状態でport Aからport Bにブロードキャストを送信すると、
port Bはそれを受け取ってタグなしフレームなのでnative vlanのvlan 1に転送する。
もしこれがarp requestで、L3のセグメントが同じだったら、replyが返ってくることになり、通信は成立するが、わざわざこのように設定する必要はない。
port Aが複数のvlanの通信を行う必要があるならtrunkにし、vlan 1のみの通信を行うならport Aは対向装置のvlan 1のaccessポートに接続すべきである。
だからやっぱり「mismatch」が出るのは設定ミスが考えられる。
多分、デフォルト状態でケーブルをつなぐとtrunkになって、
その後vlanを設定して片方をaccessに変えたときとかに出るのかな。
access -access, trunk - trunk で使うようにする。
nativeは1になっているからそれを管理用にのみ使用する、ということでよいが
「そもそもなぜnative vlanなどというものがあるのか。」
この問いはネットを探してみてもちらほら見つかるが、
「native vlanにはタグがつかない」という説明しかしていない答えがほとんどで、
「そもそもなぜそんなものが必要なのか」という答えを明確にしている人がいない。
IEEE802.1qを読めばわかるだろうか?
ある有名なサイトでは「タグをサポートしていないスイッチとの互換性のため」と書いてあった。
多分そうだと思う。
trunkポートで、タグをつけると決めているのにタグをつけないフレームをわざわざ送るのは、trunkポートであっても相手からタグなしフレームがくる場合を想定して、それはnative vlanに所属するものとしよう、 と決めたのではないだろうか。
そうなると相手はタグを処理できないから、trunkポートの側もタグをつけずに送ってやる。
通信はできる。
しかし、タグをつけられないのだから当然そのlanは他のvlanとは区別された
特別なvlanとして扱われると。
Thu Feb 9 21:11:54 2012
ieee.orgへ行ってみたが、standardを読むには会員になる必要がある。
前にも同じことをしてやめたことがあるがこの際だから会員になってみようと、
住所やら経歴を入力するとmemberに登録しましたみたいなメッセージが表示されたが、
$143かかる... やめた、またの機会にしよう。
でも以前、確か802.1Qだったと思うけどPDFかなんかをダウンロードした記憶があるんだよな......
ぜんぜん読まなかったけど。