今回はGW冗長化のHSRPを設定してみようとおもいます。
使用したのはCatalyst 3560 4台になります。
やることとしては、
1, スイッチを設定する
– コラプストコアっぽい構成にする(この辺まだよく理解してない)
– STPは「Rapid PVST+」にする
– ディストリビューション層はポートチャネルで接続する
2, HSRPを設定する
– VLANごとにHSRPの設定を入れる
3, HSRPの動作検証
– HSRPがアクティブになってる方のスイッチを電源断し、Pingがどうなるかを確認する
– HSRPのホールドタイムとかその辺がきりかわる時間に関係するはず

スイッチを設定
###
### DWS1
###
# 基本設定
Switch>ena
Switch#conf t
Switch(config)#hostname DSW1
# トランクの設定
DSW1(config)#int range fastEthernet 0/1 - 8
DSW1(config-if-range)#switchport
DSW1(config-if-range)#switchport trunk encapsulation dot1q
DSW1(config-if-range)#switchport trunk allowed vlan 1,10,20
DSW1(config-if-range)#switchport mode trunk
DSW1(config-if-range)#no shutdown
DSW1(config-if-range)#exit
# ポートチャネルの設定
DSW1(config)#int range fastEthernet 0/7 - 8
### activeにしとくことでチャネルグループのポートに以上があった場合に一定時間経過すると、
### 該当ポートをメンバーから外してトラフィックを別ポートへ切り替えるぽい
DSW1(config-if-range)#channel-group 1 mode active
DSW1(config-if-range)#exit
DSW1(config)#int port-channel 1
DSW1(config-if)#no shutdown
DSW1(config-if)#exit
# RSTPの設定
### VTPのアップデートは中継するけど、自身には反映しないモードっぽい
### 手動で設定するときには入れといた方が良さげ
DSW1(config)#vtp mode transparent
DSW1(config)#vlan 10,20
DSW1(config-vlan)#exit
DSW1(config)#spanning-tree mode rapid-pvst
DSW1(config)#spanning-tree vlan 1,10 root primary
DSW1(config)#spanning-tree vlan 20 root secondary
# HSRPの設定
DSW1(config)#ip routing
DSW1(config)#int vlan 10
DSW1(config-if)#ip address 192.168.10.1 255.255.255.0
DSW1(config-if)#standby 4 ip 192.168.10.254
### プライオリティは高い方がRootになる
### デフォルトは100の模様
DSW1(config-if)#standby 4 priority 110
DSW1(config-if)#no shutdown
DSW1(config-if)#exit
DSW1(config)#int vlan 20
DSW1(config-if)#ip address 192.168.20.1 255.255.255.0
DSW1(config-if)#standby 4 ip 192.168.20.254
DSW1(config-if)#standby 4 priority 90
DSW1(config-if)#no shutdown
DSW1(config-if)#end
DSW1#write memory
###
### DWS2
###
# 基本設定
Switch>ena
Switch#conf t
Switch(config)#hostname DSW2
# トランクの設定
DSW2(config)#int range fastEthernet 0/1 - 8
DSW2(config-if-range)#switchport
DSW2(config-if-range)#switchport trunk encapsulation dot1q
DSW2(config-if-range)#switchport trunk allowed vlan 1,10,20
DSW2(config-if-range)#switchport mode trunk
DSW2(config-if-range)#no shutdown
DSW2(config-if-range)#exit
# ポートチャネルの設定
DSW2(config)#int range fastEthernet 0/7 - 8
DSW2(config-if-range)#channel-group 1 mode active
DSW2(config-if-range)#exit
DSW2(config)#int port-channel 1
DSW2(config-if)#no shutdown
DSW2(config-if)#exit
# RSTPの設定
DSW2(config)#vtp mode transparent
DSW2(config)#vlan 10,20
DSW2(config-vlan)#exit
DSW2(config)#spanning-tree mode rapid-pvst
DSW2(config)#spanning-tree vlan 1,10 root secondary
DSW2(config)#spanning-tree vlan 20 root primary
DSW2(config)#exit
# HSRPの設定
DSW2(config)#ip routing
DSW2(config)#int vlan 10
DSW2(config-if)#ip address 192.168.10.2 255.255.255.0
DSW2(config-if)#standby 4 ip 192.168.10.254
DSW2(config-if)#standby 4 priority 90
DSW2(config-if)#no shutdown
DSW2(config-if)#exit
DSW2(config)#int vlan 20
DSW2(config-if)#ip address 192.168.20.2 255.255.255.0
DSW2(config-if)#standby 4 ip 192.168.20.254
DSW2(config-if)#standby 4 priority 110
DSW2(config-if)#no shutdown
DSW2(config-if)#end
DSW2#write memory
###
### ASW1
###
# 基本設定
Switch>ena
Switch#conf t
Switch(config)#hostname ASW1
# トランクの設定
ASW1(config)#int range fastEthernet 0/1 - 6
ASW1(config-if-range)#switchport
ASW1(config-if-range)#switchport trunk encapsulation dot1q
ASW1(config-if-range)#switchport trunk allowed vlan 1,10,20
ASW1(config-if-range)#switchport mode trunk
ASW1(config-if-range)#no shutdown
ASW1(config-if-range)#exit
# アクセスポートの設定
ASW1(config)#int fastEthernet 0/7
ASW1(config-if)#switchport
ASW1(config-if)#switchport mode access
ASW1(config-if)#switchport access vlan 10
ASW1(config-if)#no shutdown
ASW1(config-if)#exit
ASW1(config)#int fastEthernet 0/8
ASW1(config-if)#switchport
ASW1(config-if)#switchport mode access
ASW1(config-if)#switchport access vlan 20
ASW1(config-if)#no shutdown
ASW1(config-if)#exit
# RSTPの設定
ASW1(config)#vtp mode transparent
ASW1(config)#vlan 10,20
ASW1(config-vlan)#exit
ASW1(config)#spanning-tree mode rapid-pvst
### アクセスポートにポートファストを設定しておかないと
### STPが収束するまでだいたい30秒ぐらい通信できなくなるので注意
ASW1(config)#int range fastEthernet 0/7 - 8
ASW1(config-if-range)#spanning-tree portfast
ASW1(config-if-range)#end
ASW1#write memory
###
### ASW2
###
# 基本設定
Switch>ena
Switch#conf t
Switch(config)#hostname ASW2
# トランクの設定
ASW2(config)#int range fastEthernet 0/1 - 6
ASW2(config-if-range)#switchport
ASW2(config-if-range)#switchport trunk encapsulation dot1q
ASW2(config-if-range)#switchport trunk allowed vlan 1,10,20
ASW2(config-if-range)#switchport mode trunk
ASW2(config-if-range)#no shutdown
ASW2(config-if-range)#exit
# アクセスポートの設定
ASW2(config)#int fastEthernet 0/7
ASW2(config-if)#switchport
ASW2(config-if)#switchport mode access
ASW2(config-if)#switchport access vlan 10
ASW2(config-if)#no shutdown
ASW2(config-if)#exit
ASW2(config)#int fastEthernet 0/8
ASW2(config-if)#switchport
ASW2(config-if)#switchport mode access
ASW2(config-if)#switchport access vlan 20
ASW2(config-if)#no shutdown
ASW2(config-if)#exit
# RSTPの設定
ASW2(config)#vtp mode transparent
ASW2(config)#vlan 10,20
ASW2(config-vlan)#exit
ASW2(config)#spanning-tree mode rapid-pvst
ASW2(config)#int range fastEthernet 0/7 - 8
ASW2(config-if-range)#spanning-tree portfast
ASW2(config-if-range)#end
ASW2#write memory
もろもろ確認
とりあえず、PC1 –> PC4 にPingを飛ばしてみます。ちゃんとGWの設定がされていれば疎通できるはずです。
$ ping -c 5 192.168.20.200
PING 192.168.20.200 (192.168.20.200): 56 data bytes
64 bytes from 192.168.20.200: icmp_seq=0 ttl=63 time=0.812 ms
64 bytes from 192.168.20.200: icmp_seq=1 ttl=63 time=0.933 ms
64 bytes from 192.168.20.200: icmp_seq=2 ttl=63 time=0.913 ms
64 bytes from 192.168.20.200: icmp_seq=3 ttl=63 time=0.915 ms
64 bytes from 192.168.20.200: icmp_seq=4 ttl=63 time=1.310 ms
--- 192.168.20.200 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.812/0.977/1.310/0.172 ms
$
飛びました。ちゃんとGWの設定ができてそうです。HSRPの設定を確認してみます。
DSW1#show standby brief
P indicates configured to preempt.
|
Interface Grp Prio P State Active Standby Virtual IP
Vl10 4 110 Active local 192.168.10.2 192.168.10.254
Vl20 4 90 Standby 192.168.20.2 local 192.168.20.254
DSW1#
VLANごとに設定が入ってますね。次にDSW1とDSW2でやりとりしてるHSRPのパケットを覗いてみます。
DSW1#conf t
DSW1(config)#monitor session 1 source interface port-channel 1
DSW1(config)#monitor session 1 destination interface fastEthernet 0/4
「224.0.0.2」の「UDP:1985」にマルチキャストしてるのが確認できます。またペイロード部分には、PriorityやGroup,Holdtimeなどが確認できます。

VLAN10のGWがActiveになっているDSW1を電源断します。
うまくHSRPが動作してればHoldtimeの10秒程度でDSW2に切り替わってくれるはずです。
PC1 –> PC4にPingを飛ばしつづけて切り替わる様子を確認してみます。
$ ping 192.168.20.200
PING 192.168.20.200 (192.168.20.200): 56 data bytes
64 bytes from 192.168.20.200: icmp_seq=0 ttl=63 time=1.555 ms
64 bytes from 192.168.20.200: icmp_seq=1 ttl=63 time=0.838 ms
64 bytes from 192.168.20.200: icmp_seq=2 ttl=63 time=0.741 ms
64 bytes from 192.168.20.200: icmp_seq=3 ttl=63 time=0.899 ms
64 bytes from 192.168.20.200: icmp_seq=4 ttl=63 time=0.810 ms
64 bytes from 192.168.20.200: icmp_seq=5 ttl=63 time=0.866 ms
64 bytes from 192.168.20.200: icmp_seq=6 ttl=63 time=0.657 ms
64 bytes from 192.168.20.200: icmp_seq=7 ttl=63 time=0.888 ms
64 bytes from 192.168.20.200: icmp_seq=8 ttl=63 time=0.956 ms
Request timeout for icmp_seq 9
Request timeout for icmp_seq 10
Request timeout for icmp_seq 11
Request timeout for icmp_seq 12
Request timeout for icmp_seq 13
Request timeout for icmp_seq 14
Request timeout for icmp_seq 15
Request timeout for icmp_seq 16
64 bytes from 192.168.20.200: icmp_seq=17 ttl=63 time=0.743 ms
64 bytes from 192.168.20.200: icmp_seq=18 ttl=63 time=0.782 ms
64 bytes from 192.168.20.200: icmp_seq=19 ttl=63 time=0.859 ms
64 bytes from 192.168.20.200: icmp_seq=20 ttl=63 time=0.835 ms
64 bytes from 192.168.20.200: icmp_seq=21 ttl=63 time=0.817 ms
64 bytes from 192.168.20.200: icmp_seq=22 ttl=63 time=0.884 ms
64 bytes from 192.168.20.200: icmp_seq=23 ttl=63 time=0.714 ms
64 bytes from 192.168.20.200: icmp_seq=24 ttl=63 time=0.748 ms
^C
--- 192.168.20.200 ping statistics ---
25 packets transmitted, 17 packets received, 32.0% packet loss
round-trip min/avg/max/stddev = 0.657/0.858/1.555/0.189 ms
$
だいたい10秒くらいでPingの疎通が回復しました。ちょっとの通信断は仕方ない感じですかね。
DSW2の方でVLAN10のGWがActiveになってることを確認します。
DSW2#show standby brief
P indicates configured to preempt.
|
Interface Grp Prio P State Active Standby Virtual IP
Vl10 4 90 Active local unknown 192.168.10.254
Vl20 4 110 Active local unknown 192.168.20.254
DSW2#
最後のDSW1の電源を復旧させます。今回はHSRPのプリエンプトの設定を入れてないので、復旧後もDSW2がActiveの状態となります。復旧後にルーティングテーブルが収束する前にActiveになったりすると、通信が不安定になったりする場合もあるっぽいです。また、ActiveとStandbyの切り替わりのバタつきを抑えるために入れない場合もあるみたいですね。運用方針しだいなのかな。
DSW1#show standby brief
P indicates configured to preempt.
|
Interface Grp Prio P State Active Standby Virtual IP
Vl10 4 110 Standby 192.168.10.2 local 192.168.10.254
Vl20 4 90 Standby 192.168.20.2 local 192.168.20.254
DSW1#
以上で今回の検証は終了です。HSRPの他にもVRRPなどGW冗長プロトコルはあるっぽいのでそのうちまた試してみたいともいます。
また、HSRPのオブジェクトトラッキングなどを設定するとよりちゃんとした冗長化を行うことが出きるみたいなのでこの辺もそのうちやってみたとおもいます。
それではまた。