2010-12-22

Question of the day: STP filtering

Задача:
запретить все не-IP протоколы в vlan10. разрешить stp и ip.


решение:


mac access-list extended ANY
 permit any any
mac access-list extended STP+ARP
 permit any any lsap 0x4242 0x0
 permit any any 0x10B 0x0
 permit any any 0x806 0x0

vlan access-map IPONLY 10
 action forward
 match mac address STP+ARP
vlan access-map IPONLY 20
 action drop
 match mac address ANY
vlan access-map IPONLY 30
 action forward
!
vlan filter IPONLY vlan-list 10

коментарии:
ANY - любой не-IP трафик (т.е. любой трафик который свич не маршрутизирует/не обрабатывает персональными списками доступа. например для 3560 IPv6 под этот список не попадает, а на 3550 - попадает).
STP+ARP- явно разрешен STP по ssap/dsap 0x42, ARP по ethertype 0x806, и PVST в SNAP инкапсуляции с ethertype 0x10b
затем в vlan access-map разрешаем STP+ARP, запрещаем весь не айпи, разрешаем все прочее (потенциально ipv6).

вопрос: все ли ок?

ответ:
не совсем.
было обнаружено что между двумя 3560 все супер.
но между 3560 и 3550 при такой настройке не проходит STP!

SW3550#sh span vla 10 de | in Fast|eceived
 Port 5 (FastEthernet0/5) of VLAN0010 is designated forwarding
   BPDU: sent 47, received 0
 Port 13 (FastEthernet0/13) of VLAN0010 is designated forwarding
   BPDU: sent 47, received 0
 Port 16 (FastEthernet0/16) of VLAN0010 is designated forwarding
   BPDU: sent 47, received 0
SW3550#
SW3550#conf t
SW3550(config)#no vlan filter IPONLY vlan 10
SW3550(config)#^Z
SW3550#sh span vla 1 de | in Fast|eceived
 Port 5 (FastEthernet0/5) of VLAN0010 is designated forwarding
   BPDU: sent 61, received 0
 Port 13 (FastEthernet0/13) of VLAN0010 is root forwarding
   BPDU: sent 60, received 2
 Port 16 (FastEthernet0/16) of VLAN0010 is alternate blocking
   BPDU: sent 60, received 1
т.е мы видим что с примененным vlan filter счетчик полученных bpdu не растет! но если vlan-filter снять - все приходит в норму.
проверим почему это происходит:
SW3550#debug spann bpdu receive 
Spanning Tree BPDU Received debugging is on
SW3550#
*Mar  1 02:27:26.563: STP: VLAN0010 rx BPDU: config protocol = ieee, packet from FastEthernet0/13  , linktype SSTP , enctype 3, encsize 22 
*Mar  1 02:27:26.563: STP: enc 01 00 0C CC CC CD 00 19 E8 B7 9E 92 00 32 AA AA 03 00 00 0C 01 0B 
*Mar  1 02:27:26.567: STP: Data     000000000060100019E8B79E800000000060100019E8B79E8080120000140002000A00
*Mar  1 02:27:26.567: STP: VLAN0010 Fa0/13:0000 00 00 00 60010019E8B79E80 00000000 60010019E8B79E80 8012 0000 1400 0200 0A00
*Mar  1 02:27:26.567: STP(1) port Fa0/13 supersedes 0
расшифруем строку "STP: enc 01 00 0C CC CC CD 00 19 E8 B7 9E 92 00 32 AA AA 03 00 00 0C 01 0B ":
0100.0ccc.cccd - mac адрес используемый для STP.
0019.E8B7.9E92 - src mac bpdu
0032 - длина кадра (50байт)
AA AA - SSAP/DSAP (!)
далее идут код команды и тело bpdu.
но проблема уже найдена! мы получаем bpdu с неверным SSAP/DSAP!
Гугл нам подсказывает, что SAP 0xAA используется протоколами CDP/VTP/DTP и другими проприетарными протоколами cisco.
исправим конфиг:
mac access-list extended STP+ARP
 permit any any lsap 0xaaaa 0x0
vlan filter IPONLY vlan-list 10
и убедимся что bpdu проходят:
SW3550#clear spanning-tree counters 
SW3550# show span vla 1 det | in Fast|eceived
 Port 5 (FastEthernet0/5) of VLAN0010 is designated forwarding 
   BPDU: sent 2, received 0
 Port 13 (FastEthernet0/13) of VLAN0010 is root forwarding 
   BPDU: sent 2, received 2
 Port 16 (FastEthernet0/16) of VLAN0010 is alternate blocking 
   BPDU: sent 2, received 1

еще маленький эксперимент:
SW3560# debug spann bpdu receive
*Mar  1 02:49:01.021: STP: VLAN0023 rx BPDU: config protocol = ieee, packet from FastEthernet0/15  , linktype SSTP , enctype 3, encsize 22 
*Mar  1 02:49:01.021: STP: enc 01 00 0C CC CC CD EC 44 76 A4 64 11 00 32 AA AA 03 00 00 0C 01 0B 
*Mar  1 02:49:01.021: STP: Data     00000000008017EC4476A46400000000008017EC4476A4640080110000140002000A00
*Mar  1 02:49:01.029: STP: VLAN0023 Fa0/15:0000 00 00 00 8017EC4476A46400 00000000 8017EC4476A46400 8011 0000 1400 0200 0A00
*Mar  1 02:49:01.029: STP(23) port Fa0/15 supersedes 0
*Mar  1 02:49:01.625: STP: VLAN0001 rx BPDU: config protocol = ieee, packet from FastEthernet0/13  , linktype IEEE_SPANNING , enctype 2, encsize 17 
*Mar  1 02:49:01.625: STP: enc 01 80 C2 00 00 00 EC 44 76 A4 64 0F 00 26 42 42 03 
*Mar  1 02:49:01.625: STP: Data     00000000008001EC4476A46400000000008001EC4476A46400800F0000140002000A00
*Mar  1 02:49:01.633: STP: VLAN0001 Fa0/13:0000 00 00 00 8001EC4476A46400 00000000 8001EC4476A46400 800F 0000 1400 0200 0A00
*Mar  1 02:49:01.633: STP(1) port Fa0/13 supersedes 0
что мы видим?
мы видим что 3560 обмениваются bpdu двух видов: один называется linktype SSTP, и использует SAP 0xAA, второй называется IEEE_SPANNING, и использует SAP 0xAA O_o.

вопрос: что это значит, и как это понимать?

UPDATE: ответ: читаю http://www.cisco.com/en/US/tech/tk389/tk621/technologies_tech_note09186a00801d11a0.shtml
ищу слова shared spanning tree, sstp, vlan 1, non-vlan 1 и наслаждаюсь.

Немає коментарів: