202.152.208.0/20 で割り当てられている PI アドレスの経路広報を、/23 または /24 毎に異なるデータセンターに切替えていく作業を継続していました。
/23 または /24 毎に Interface VlanXXX を、冗長構成の境界ルータ (WS-C3750X-24T-E) にそれぞれ設定し HSRP で構成しています。
Switch Ports Model SW Version SW Image ------ ----- ----- ---------- ---------- * 1 30 WS-C3750X-24 15.0(2)SE C3750E-UNIVERSALK9-M
以下は 202.152.212.0/24 の例です。
#// bb00 interface Vlan212 description 202.152.212.0/24 ip address 202.152.212.2 255.255.255.0 no ip redirects no ip proxy-arp standby 212 ip 202.152.212.1 standby 212 priority 110 standby 212 preempt delay minimum 120 standby 212 track 1 decrement 10 #// bb01 interface Vlan212 description 202.152.212.0/24 ip address 202.152.212.3 255.255.255.0 no ip redirects no ip proxy-arp standby 212 ip 202.152.212.1 standby 212 priority 109 standby 212 preempt delay minimum 120 standby 212 track 1 decrement 10
この状態で、ping の疎通が確認出来ないケースが生じました。L3 スイッチ同士の対向と、外部からの Standby 側の IP アドレスに疎通が確認出来ないのです。
- NG: bb00 -> 202.152.212.3
- NG: bb01 -> 202.152.212.2
- NG: IIJ, ASAHI -> 202.152.212.3
ところが他のセグメントでは同様のケースの疎通で問題ない場合もあり、当初切り分けに悩みました。
まず、それぞれの L3 スイッチで sh standby すると、NG のセグメントでは Active/Active であることに気が付きました。
bb00#sh standby vlan 212 Vlan212 - Group 212 State is Active 8 state changes, last state change 00:14:00 Virtual IP address is 202.152.212.1 Active virtual MAC address is 0000.0c07.acd4 Local virtual MAC address is 0000.0c07.acd4 (v1 default) Hello time 3 sec, hold time 10 sec Next hello sent in 1.376 secs Preemption enabled, delay min 120 secs Active router is local Standby router is unknown Priority 110 (configured 110) Track object 1 state Up decrement 10 Group name is "hsrp-Vl212-212" (default) bb01#sh standby vlan 212 Vlan212 - Group 212 State is Active 8 state changes, last state change 00:15:33 Virtual IP address is 202.152.212.1 Active virtual MAC address is 0000.0c07.acd4 Local virtual MAC address is 0000.0c07.acd4 (v1 default) Hello time 3 sec, hold time 10 sec Next hello sent in 1.200 secs Preemption enabled, delay min 120 secs Active router is local Standby router is unknown Priority 109 (configured 109) Track object 1 state Up decrement 10 Group name is "hsrp-Vl212-212" (default)
Active/Active となる場合の切り分け方法は、物理層のエラーや設定ミス等の情報ばかりで現時点で当てはまる内容は探し出せませんでした。
双方の Interface を shut, no shut してもどちらも Active となり譲りません。
ところでふと、問題ないセグメントは L3 スイッチで設定した spanning-tree vlan priority の vlan id が、必ず配下の L2 port に 1 つ以上割り当てられていることに気が付きました。
interface GigabitEthernet1/0/1 switchport access vlan 213 switchport mode access spanning-tree portfast
NG だった 202.152.212.0/24 は、trunk により vlan id は流しているものの L2 スイッチのどの port にも割り当てていません。その可能性を確かめるべく、
sw(config)#int gi1/0/43 sw(config-if)#switchport access vlan 212 % Access VLAN does not exist. Creating vlan 212
試しに空いた port に switchport access vlan 212 と追加したところ、
bb00#sh standby vlan 212 Vlan212 - Group 212 State is Active 14 state changes, last state change 1d08h Virtual IP address is 202.152.212.1 Active virtual MAC address is 0000.0c07.acd4 Local virtual MAC address is 0000.0c07.acd4 (v1 default) Hello time 3 sec, hold time 10 sec Next hello sent in 0.080 secs Preemption enabled, delay min 120 secs Active router is local Standby router is 202.152.212.3, priority 109 (expires in 10.256 sec) Priority 110 (configured 110) Track object 1 state Up decrement 10 Group name is "hsrp-Vl212-212" (default) bb01#sh standby vlan 212 Vlan212 - Group 212 State is Standby 16 state changes, last state change 00:01:25 Virtual IP address is 202.152.212.1 Active virtual MAC address is 0000.0c07.acd4 Local virtual MAC address is 0000.0c07.acd4 (v1 default) Hello time 3 sec, hold time 10 sec Next hello sent in 1.104 secs Preemption enabled, delay min 120 secs Active router is 202.152.212.2, priority 110 (expires in 10.000 sec) Standby router is local Priority 109 (configured 109) Track object 1 state Up decrement 10 Group name is "hsrp-Vl212-212" (default)
40 – 50 秒程で sh standby の結果も想定通り Active, Standby と切替わり、問題となっていた ping の疎通がすべて解消されました。
なお、別の機会に conf t -> vlan 212 のみでは Active/Active の状態は変わらないことも確認しています。
削除する場合は switchport access vlan を別の vlan id に変更、上記の例では 212 が port 割り当てとして 1 つも存在しなくなるだけでは Active, Standby のまま稼動しますが、no vlan 212 とした後 expires の秒数が 0 となった時点で元の Active/Active に変わります。
特定の環境のみでしか再現しない現象か、ポピュラーな現象かはまだ総括出来ていませんが現時点での解決法の 1 つとして掲載しておきます。
- Cisco Catalyst 3750X HSRP Active/Active
- Cisco Catalyst 3750X - no spanning-tree vlan