Поиск по этому блогу

22.04.2011

Тестирование витой пары с коммутатора

В коммутаторах, например Cisco, имеется функционал для тестирования витой пары.
Вот пример подобных тестов.
Ошибок нет, но обратил внимание, что запуск теста test cable-diagnostics tdr interface Gig 2/0/21 привел к пропаданию связи.
switch#show cable-diagnostics tdr interface Gig 2/0/21
TDR test last run on: April 22 08:52:51

Interface Speed Local pair Pair length Remote pair Pair status
--------- ----- ---------- ------------------ ----------- --------------------
Gi2/0/21 1000M Pair A 13 +/- 10 meters Pair A Normal
Pair B 17 +/- 10 meters Pair B Normal
Pair C 17 +/- 10 meters Pair C Normal
Pair D 20 +/- 10 meters Pair D Normal
Следующий тест показал наличие кроссоверного кабеля с неиспользуемыми парами. Причем длину кабеля определил именно по нерабочим парам.
switch#show cable-diagnostics tdr interface Gig 3/0/3
TDR test last run on: April 22 08:48:42

Interface Speed Local pair Pair length Remote pair Pair status
--------- ----- ---------- ------------------ ----------- --------------------
Gi3/0/3 100M Pair A N/A Pair B Normal
Pair B N/A Pair A Normal
Pair C 74 +/- 2 meters Pair D Short
Pair D 72 +/- 2 meters Pair C Short

21.04.2011

SFP с DOM

Оптические трансиверы с функцией диагностики DOM чрезвычайно полезны, так как можно определить параметры сигнала. Так, например, при приеме в -30dBm линк может не заработать. Так-то можно было бы грешить на патчкорд или кабель, но трансивер может указать на возможную причину пропадания - слишком большое затухание сигнала.
switch#sh int GigabitEthernet1/0/12 transceiver
ITU Channel not available (Wavelength not available),
Transceiver is internally calibrated.
If device is externally calibrated, only calibrated values are printed.
++ : high alarm, + : high warning, - : low warning, -- : low alarm.
NA or N/A: not applicable, Tx: transmit, Rx: receive.
mA: milliamperes, dBm: decibels (milliwatts).

Optical Optical
Temperature Voltage Tx Power Rx Power
Port (Celsius) (Volts) (dBm) (dBm)
--------- ----------- ------- -------- --------
Gi1/0/12 36.6 3.30 -6.3 -18.4

VTP домены и DTP

В своей статье Greg Ferro советует разбивать сеть на несколько разных vtp доменов, чтобы снизить вероятность ошибки, в частности. Вспомнил такую ошибку как:
%DTP-5-DOMAINMISMATCH: Unable to perform trunk negotiation on port X/X/X because of VTP domain mismatch.
В таком случае необходимо отключить DTP. Вообще-то, если явно настроен trunk на обоих коммутаторах, то отключать DTP считается хорошей практикой:
interface GigabitEthernet1/0/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
Как вариант, можно попробовать отключить vtp в порту (no vtp).

Отключение VTP

Долгое время читал и считал, что VLAN Trunk Protocol (VTP) отключить на коммутаторе cisco нельзя, а можно только перевести его в transparent режим. Случайно нашел в интерфейсе следующую команду (ios 12.2(53)):
switch#sh run int GigabitEthernet1/0/1
Building configuration...

Current configuration : 107 bytes
!
interface GigabitEthernet1/0/1
switchport trunk encapsulation dot1q
switchport mode trunk
no vtp
end
switch#sh vtp interface

Interface VTP Status
------------------------------------
FastEthernet1/0/1 enabled
FastEthernet1/0/2 enabled
FastEthernet1/0/3 enabled
FastEthernet1/0/4 enabled
FastEthernet1/0/5 enabled
FastEthernet1/0/6 enabled
FastEthernet1/0/7 enabled
FastEthernet1/0/8 enabled
FastEthernet1/0/9 enabled
FastEthernet1/0/10 enabled
FastEthernet1/0/11 enabled
FastEthernet1/0/12 enabled
FastEthernet1/0/13 enabled
FastEthernet1/0/14 enabled
FastEthernet1/0/15 enabled
FastEthernet1/0/16 enabled
FastEthernet1/0/17 enabled
FastEthernet1/0/18 enabled
FastEthernet1/0/19 enabled
FastEthernet1/0/20 enabled
FastEthernet1/0/21 enabled
FastEthernet1/0/22 enabled
FastEthernet1/0/23 enabled
FastEthernet1/0/24 enabled
GigabitEthernet1/0/1 disabled
GigabitEthernet1/0/2 enabled
Оказывается, что глобальное отключение vtp - это дело будущего, а на 6500 серии отключить VTP можно уже сейчас. Ссылка.

14.04.2011

ip dscp vs dscp

Согласно документации, match ip dscp используется при обработке ipv4 пакетов, а match dscp при обработке ipv4 и ipv6 (matching on both IPv4 and IPv6 packets is the default).
В классах можно написать и так и так:
router(config-cmap)#match dscp ?
<0-63> Differentiated services codepoint value
af11 Match packets with AF11 dscp (001010)
af12 Match packets with AF12 dscp (001100)
af13 Match packets with AF13 dscp (001110)
af21 Match packets with AF21 dscp (010010)
af22 Match packets with AF22 dscp (010100)
af23 Match packets with AF23 dscp (010110)
af31 Match packets with AF31 dscp (011010)
af32 Match packets with AF32 dscp (011100)
af33 Match packets with AF33 dscp (011110)
af41 Match packets with AF41 dscp (100010)
af42 Match packets with AF42 dscp (100100)
af43 Match packets with AF43 dscp (100110)
cs1 Match packets with CS1(precedence 1) dscp (001000)
cs2 Match packets with CS2(precedence 2) dscp (010000)
cs3 Match packets with CS3(precedence 3) dscp (011000)
cs4 Match packets with CS4(precedence 4) dscp (100000)
cs5 Match packets with CS5(precedence 5) dscp (101000)
cs6 Match packets with CS6(precedence 6) dscp (110000)
cs7 Match packets with CS7(precedence 7) dscp (111000)
default Match packets with default dscp (000000)
ef Match packets with EF dscp (101110)

router(config-cmap)#match ip dscp ?
<0-63> Differentiated services codepoint value
af11 Match packets with AF11 dscp (001010)
af12 Match packets with AF12 dscp (001100)
af13 Match packets with AF13 dscp (001110)
af21 Match packets with AF21 dscp (010010)
af22 Match packets with AF22 dscp (010100)
af23 Match packets with AF23 dscp (010110)
af31 Match packets with AF31 dscp (011010)
af32 Match packets with AF32 dscp (011100)
af33 Match packets with AF33 dscp (011110)
af41 Match packets with AF41 dscp (100010)
af42 Match packets with AF42 dscp (100100)
af43 Match packets with AF43 dscp (100110)
cs1 Match packets with CS1(precedence 1) dscp (001000)
cs2 Match packets with CS2(precedence 2) dscp (010000)
cs3 Match packets with CS3(precedence 3) dscp (011000)
cs4 Match packets with CS4(precedence 4) dscp (100000)
cs5 Match packets with CS5(precedence 5) dscp (101000)
cs6 Match packets with CS6(precedence 6) dscp (110000)
cs7 Match packets with CS7(precedence 7) dscp (111000)
default Match packets with default dscp (000000)
ef Match packets with EF dscp (101110)



Только вот в итоге получается странная ситуация, когда в классе dscp без ip пусто, а нужный пакет попадает в class-default
[skip]
Class-map: CRITICAL (match-all)
0 packets, 0 bytes
30 second offered rate 0 bps, drop rate 0 bps
Match: dscp af31 (26)
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
bandwidth 500 kbps

Class-map: class-default (match-any)
1221 packets, 206132 bytes
30 second offered rate 64000 bps, drop rate 0 bps
Match: any
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0
(pkts output/bytes output) 1556/225992
Fair-queue: per-flow queue limit 16
Exp-weight-constant: 9 (1/512)
Mean queue depth: 0 packets
dscp Transmitted Random drop Tail/Flow drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob

default 725/75020 0/0 0/0 20 40 1/10
cs2 2/114 0/0 0/0 24 40 1/10
af31 1291/213297 0/0 0/0 32 40 1/10

После изменения класса на match ip dscp все заработало как надо:
        Class-map: CRITICAL (match-all)
59085 packets, 9809972 bytes
30 second offered rate 49000 bps, drop rate 0 bps
Match: ip dscp af31 (26)
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 59085/9809972
bandwidth 500 kbps

Class-map: class-default (match-any)
18241 packets, 3680987 bytes
30 second offered rate 12000 bps, drop rate 0 bps
Match: any
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0
(pkts output/bytes output) 37948/4614391
Fair-queue: per-flow queue limit 16
Exp-weight-constant: 9 (1/512)
Mean queue depth: 0 packets
dscp Transmitted Random drop Tail/Flow drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob

default 38097/4629021 0/0 0/0 20 40 1/10
cs2 106/6042 0/0 0/0 24 40 1/10

Такие дела...

07.04.2011

Применение call-block

Рассмотрю пример, когда на телефонной станции в голосовой шлюз cisco через E1 отправляется 100 номеров маской 20*, где * - любое количество символов. Логично, что если какой-то абонент на телефоне ошибочно наберет вместо четырехзначного трехзначный номер, либо не успеет по таймауту набрать последнюю цифру четырехзначного номера, то в поток Е1 будет смаршрутизирован звонок на трехзначный номер.
В случае, если на шлюзе cisco прописан dial-peer без четкого шаблона следующего вида, то шлюз и станция будут занимать все свободные на момент звонка таймслоты в попытках переадресовать звонок друг другу, так как dial-peer'ов с трехзначными номерами на шлюзе нет.
dial-peer voice 50 pots
description default
huntstop
preference 10
destination-pattern .T
progress_ind alert enable 8
direct-inward-dial
port 0/0/0:15
forward-digits all
Занятые таймслоты будут являться причиной отказа. Следует проверять статистику по isdn кодам на наличие ошибок no circuit (34), no resource (47), normal unspecified (31).


Варианта решения такой проблемы два. Это отказ от dial-peer'ов c .T или применение функционала call-block. Рассмотрим пример применения последнего:
voice translation-rule 100
rule 1 reject /^...$/
voice translation-profile reject
translate called 100

dial-peer voice 50 pots
call-block translation-profile incoming reject
call-block disconnect-cause incoming unassigned-number
Теперь все звонки на трехзначные номера будут возвращаться с ошибкой unassigned-number.
Проверяется включением отладки и чисткой счетчиков кодов isdn:
voip-gw#debug isdn q931
voip-gw#clear h323 gateway cause-codes
Делается тестовый звонок со станции. В логах запись вида:
Bearer Capability i = 0x8090A3
Standard = CCITT
Transfer Capability = Speech
Transfer Mode = Circuit
Transfer Rate = 64 kbit/s
Channel ID i = 0xA9831B
Exclusive, Channel 27
Facility i = 0x9FAA068001008201008B0100A11402020100020100800B412E562E20506574726F76
Progress Ind i = 0x8183 - Origination address is non-ISDN
Calling Party Number i = 0x0980, '2000'
Plan:Private, Type:Unknown
Called Party Number i = 0x89, '300'
Plan:Private, Type:Unknown
Sending Complete
ISDN Se0/0/0:15 Q931: TX -> RELEASE_COMP pd = 8 callref = 0xD546
Cause i = 0x8081 - Unallocated/unassigned number
В статистике увеличился счетчик:
voip-gw#sh h323 gateway cause-codes

CAUSE CODE STATISTICS AT 5d17h

DISC CAUSE CODE FROM OTHER PEER FROM H323 PEER
1 unassigned number (1) 1 0
16 normal call clearing ( 35 7
17 user busy (17) 1 0
19 no user answer (19) 0 2

Но это еще не все. Двухзначная маска на станции позволяет звонить на двухзначные номера. В логах звонок с занятием таймслотов выглядит многократный набор одного и того же номера с вероятным появлением в отладке ошибок вида:
**ERROR**: CCPRI_Go: call id 0x245B event 0x65 No ccb Source->HOST
Поэтому правило приводится к следующему виду:
voice translation-rule 100
rule 1 reject /^...$/
rule 2 reject /^..$/

04.04.2011

Unequal cost load sharing

В случае использования нескольких каналов связи с одинаковой пропускной способностью, например, пары Е1, можно применить различные технологии, чтобы максимально эффективно использовать полученную полосу пропускания:
- MFR;
- MLPPP;
- Load Balancing с CEF, как per-destination sharing, так и per-packet sharing.

MFR и MLPPP можно использовать только на WAN-интерфейсах (v.35, g.703). Сейчас более распространены случаи, когда организуются резервные каналы связи меньшей пропускной способностью, чем у основного. Иногда ставится задача перенести часть нагрузки на резервный канал.
Возможные варианты:
- Балансировка средствами протокола EIGRP;
- Балансировка средствами MPLS TE.

В конфигурации, собранной на эмуляторе GNS3, используется два маршрутизатора, объединенных между собой парой интерфейсов. Признаюсь, что заметка в основном предназначена для хранения конфигураций.


Маршрутизатор 1:
Router#sh run
Building configuration...

Current configuration : 3831 bytes
!
upgrade fpd auto
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Router
!
boot-start-marker
boot-end-marker
!
logging message-counter syslog
!
no aaa new-model
ip source-route
ip cef
!
!
!
!
no ip domain lookup
no ipv6 cef
!
multilink bundle-name authenticated
mpls traffic-eng tunnels
mpls traffic-eng link-management timers periodic-flooding 30
!
!
voice dsp waitstate 24898
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
log config
hidekeys
!
!
!
!
!
!
class-map match-all ping
match access-group name ping
!
!
policy-map ping
class ping
bandwidth 50
policy-map 150k
class class-default
shape average 150000
service-policy ping
!
!
!
!
!
interface Loopback0
ip address 10.0.0.1 255.255.255.255
!
interface Loopback1
ip address 192.168.1.1 255.255.255.0
!
interface Tunnel0
bandwidth 1000
ip unnumbered Loopback0
load-interval 30
tunnel destination 10.0.0.2
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth 100
tunnel mpls traffic-eng path-option 1 explicit name SE1/0
tunnel mpls traffic-eng path-option 2 dynamic
tunnel mpls traffic-eng load-share 90
service-policy output 150k
no routing dynamic
!
interface Tunnel1
ip unnumbered Loopback0
load-interval 30
tunnel destination 10.0.0.2
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth 50
tunnel mpls traffic-eng path-option 1 explicit name SE1/1
tunnel mpls traffic-eng path-option 2 dynamic
tunnel mpls traffic-eng load-share 30
no routing dynamic
!
interface FastEthernet0/0
no ip address
shutdown
duplex half
!
interface FastEthernet0/0.100
encapsulation dot1Q 100
ip address 10.2.2.0 255.255.255.254
!
interface Serial1/0
bandwidth 100
ip address 10.1.1.0 255.255.255.254
ip router isis
load-interval 30
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 100
serial restart-delay 0
max-reserved-bandwidth 100
ip rsvp bandwidth 100
!
interface Serial1/1
bandwidth 60
ip address 10.1.1.2 255.255.255.254
ip router isis
load-interval 30
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 60
serial restart-delay 0
isis metric 20
max-reserved-bandwidth 100
ip rsvp bandwidth 60
!
interface Serial1/2
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/3
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/4
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/5
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/6
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/7
no ip address
shutdown
serial restart-delay 0
!
router isis
net 49.0000.0024.0000.0000.0001.00
is-type level-2-only
advertise passive-only
metric-style wide
mpls traffic-eng router-id Loopback0
mpls traffic-eng level-2
passive-interface Loopback0
!
router bgp 65024
template peer-session AS
remote-as 65024
update-source Loopback0
exit-peer-session
!
no synchronization
bgp log-neighbor-changes
network 192.168.1.0
neighbor 10.0.0.2 inherit peer-session AS
no auto-summary
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
ip explicit-path name SE1/0 enable
next-address 10.1.1.1
!
ip explicit-path name SE1/1 enable
next-address 10.1.1.3
!
ip access-list extended ping
permit icmp host 192.168.1.2 host 192.168.2.2
!
logging alarm informational
!
!
!
!
route-map aff permit 10
!
!
!
mpls ldp router-id Loopback0
!
control-plane
!
!
!
mgcp fax t38 ecm
mgcp behavior g729-variants static-pt
!
!
!
!
gatekeeper
shutdown
!
!
line con 0
logging synchronous
stopbits 1
line aux 0
stopbits 1
line vty 0 4
login
!
end

Router#

Маршрутизатор 2:
Building configuration...

Current configuration : 3458 bytes
!
upgrade fpd auto
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Router
!
boot-start-marker
boot-end-marker
!
logging message-counter syslog
!
no aaa new-model
ip source-route
ip cef
!
!
!
!
no ip domain lookup
no ipv6 cef
!
multilink bundle-name authenticated
mpls traffic-eng tunnels
mpls traffic-eng link-management timers periodic-flooding 30
!
!
template peer-session
!
!
voice dsp waitstate 24898
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
log config
hidekeys
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.0.0.2 255.255.255.255
!
interface Loopback1
ip address 192.168.2.1 255.255.255.0
!
interface Tunnel0
ip unnumbered Loopback0
load-interval 30
tunnel destination 10.0.0.1
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth 100
tunnel mpls traffic-eng path-option 1 explicit name SE1/0
tunnel mpls traffic-eng path-option 2 dynamic
tunnel mpls traffic-eng load-share 90
no routing dynamic
!
interface Tunnel1
ip unnumbered Loopback0
load-interval 30
tunnel destination 10.0.0.1
tunnel mode mpls traffic-eng
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng priority 7 7
tunnel mpls traffic-eng bandwidth 50
tunnel mpls traffic-eng path-option 1 explicit name SE1/1
tunnel mpls traffic-eng path-option 2 dynamic
tunnel mpls traffic-eng load-share 30
no routing dynamic
!
interface Tunnel9
no ip address
!
interface FastEthernet0/0
no ip address
shutdown
duplex half
!
interface Serial1/0
bandwidth 128
ip address 10.1.1.1 255.255.255.254
ip router isis
load-interval 30
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 100
serial restart-delay 0
max-reserved-bandwidth 100
ip rsvp bandwidth 100
!
interface Serial1/1
bandwidth 60
ip address 10.1.1.3 255.255.255.254
ip router isis
load-interval 30
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 60
serial restart-delay 0
isis metric 20
max-reserved-bandwidth 100
ip rsvp bandwidth 60
!
interface Serial1/2
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/3
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/4
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/5
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/6
no ip address
shutdown
serial restart-delay 0
!
interface Serial1/7
no ip address
shutdown
serial restart-delay 0
!
router isis
net 49.0000.0024.0000.0000.0002.00
is-type level-2-only
advertise passive-only
metric-style wide
mpls traffic-eng router-id Loopback0
mpls traffic-eng level-2
passive-interface Loopback0
!
router bgp 65024
template peer-session AS
remote-as 65024
update-source Loopback0
exit-peer-session
!
no synchronization
bgp log-neighbor-changes
network 192.168.2.0
neighbor 10.0.0.1 inherit peer-session AS
no auto-summary
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
ip explicit-path name SE1/0 enable
next-address 10.1.1.0
!
ip explicit-path name SE1/1 enable
next-address 10.1.1.2
!
logging alarm informational
!
!
!
!
!
!
mpls ldp router-id Loopback0
!
control-plane
!
!
!
mgcp fax t38 ecm
mgcp behavior g729-variants static-pt
!
!
!
!
gatekeeper
shutdown
!
!
line con 0
logging synchronous
stopbits 1
line aux 0
stopbits 1
line vty 0 4
login
!
end

Router#

В настройках туннелей включена опция load-sharing, что является по-сути per-packet sharing, но с учетом полосы. В примере это 3 к 1. Очевидно, что использовать подобную балансировку бессмысленно, если физические свойства каналов существенно отличаются.

Используемые материалы:
MPLS TE – Load Sharing
Perfect Load-Balancing: How Close Can You Get?