Cisco channel misconfig error

Давненько ничего сюда не постил, сорри. Материалов достаточно, просто руки не доходят. Постараюсь не уходить так надолго. Пока свежо в памяти, расскажу, что у нас приключилось совсем недавно (а точнее - позавчера). Ничто не предвещало беды, когда port-channel из нескольких 10GE интерфейсов (между…

Давненько ничего сюда не постил, сорри. Материалов достаточно, просто руки не доходят.
Постараюсь не уходить так надолго.

Пока свежо в памяти, расскажу, что у нас приключилось совсем недавно (а точнее — позавчера).

Ничто не предвещало беды, когда port-channel из нескольких 10GE интерфейсов (между cat6500 и extreme x650) упал с сообщением

Jan 17 16:07:01.581 marmot: %PM-SP-4-ERR_DISABLE: channel-misconfig error detected on Po2, putting Po2 in err-disable state

при том, что последнее изменение конфигурации этого шеститонника было за три дня до этого. Потом (через полминуты) он поднимался по autorecover и через пару минут падал опять с тем же сообщением. Пересоздание этого port-channel ситуацию не изменило. В дебаге тоже ничего путного.

На поиск причин и методов устранения ушло около часа.
Как оказалось, один из клиентов начал слать странные bpdu, а поскольку он был включен в x650, на его порту bpdu не фильтровались, а проходили дальше на 6500. А 6500 при этом укладывал port-channel со столь странной диагностикой.

Открыл для себя команду «no spanning-tree etherchannel guard misconfig«. Точнее, это sha90w мне её открыл (и заодно себе). Всем рекомендую.

Выводы:
1. STP — зло. Если его использование необходимо, BPDU должны ходить только в пределах собственной сети, и фильтроваться на всех клиентских портах в обе стороны (не лениться делать это через mac acl, где более простых способов нет). Хотя даже в этом случае нельзя быть полностью спокойным.
2. Реализация L2 в Cisco IOS мягко говоря странная.

Приведу ещё один пример, на этот раз гипотетической ситуации, демонстрирующей эти два вывода.
Допустим, мы купили L2-транспорт у стороннего оператора, q-in-q. И этот оператор (по нашей просьбе или по своей инициативе) прописал для нас туннелирование bpdu, «l2protocol-tunnel stp» на каталистах. Мы аккуратно прописали bpdufilter на клиентских портах и используем stp на этом линке.

И тут один из наших клиентов прислал нам туннелированный bpdu-пакет (а фактически, произвольный пакет на мультикастовый мак 01:00:0c:cd:cd:d0). Этот пакет прошёл наш bpdufilter, потому что это не bpdu, и ушёл в этот транспорт. Тамошний каталист, туннелирующий bpdu, обнаруживает уже туннелированный пакет. Вместо того, чтобы его дропнуть, он что-то не очень внятное сообщает в лог и закрывает порт по err-disable, хоть там 8*10GE и 1000 виланов. И не сообщает, в каком вилане ему пришёл вызвавший такую его реакцию пакет. И этот errdisable не отключается.

Фактически имеем примерно то же самое, что в реальном позавчерашнем случае: незащищённость от активности с клиентских портов, крайне скудная диагностика свича и сложность диагностировать проблему вручную, укладывание всего порта (в т.ч. port-channel) из-за одного неожиданного пакета по err-disable вместо того, чтобы просто дропнуть этот пакет, на cisco ios (другие вендоры за этим не замечены).

Как-нибудь при случае расскажу ещё о всяких интересных граблях на mstp (из-за чего мы сейчас используем только pv-stp).


The preview effect may be slightly different from that of the source document. You can download the document and view it on your local PC.

Contents

Issue Description

Background:

Huawei CE6800 stack is replacing an old CISCO stack. Now CE6800 should be interconnected with another CISCO stack as in the following picture.

The HUAWEI-CISCO devices are interconnected using an Eth-trunk/Port-channel.

Issue:

The eth-trunk/port channel cannot go UP.

Configuration is the same for both physical interfaces on each device.

CISCO:

interface GigabitEthernet0/0/1

 switchport trunk encapsulation dot1q

 switchport trunk allowed vlan x,y,z

 switchport mode trunk

 switchport nonegotiate

 channel-group 1 mode active

interface Port-channel1

switchport trunk encapsulation dot1q

 switchport trunk allowed vlan x,y,z

 switchport mode trunk

 switchport nonegotiate

Huawei:

interface Eth-Trunk9

 port link-type trunk

 port trunk allow-pass vlan x,y,z

 mode lacp-static

interface GE1/0/9

  eth-trunk 9

The ports on Huawei are in UP/UP state, but the eth-trunk is in DOWN state. No log/information present on Huawei. Instead in CISCO we can find the following:

%LINK-5-CHANGED: Interface GigabitEthernet0/0/1, changed state to administratively down

%LINK-3-UPDOWN: Interface GigabitEthernet0/0/1, changed state to up

%PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi 0/0/1, putting 0/0/1 in err-disable state

Solution

Steps that you might consider in bringing UP the eth-trunk:

1.       Make sure that the eth-trunk and port-channel on CISCO are using the same protocol: LACP.

On Cisco

channel-group number mode active

channel-group number mode passive

On Huawei

mode lacp-static

2.       By default Huawei is running MSTP while CISCO is running PVST+ (Per Vlan Spanning Tree). In order to assure interoperation between these two protocols , he have to reconfigure the STP mode of Huawei to VBST (equivalent to running STP or RSTP in each VLAN)

[Huawei] stp mode vbst

3.       If a Huawei device is connected CISCO device they use different Proposal/Agreement mechanism (enhanced and common) by default and these two devices may fail to interoperate.

Configure on Huawei the common fast transition mode under the interface view:

[Huawei] stp no-agreement check

4.       On CloudEngine 6868 the number of protected VLANs in VBST is 128 in versions earlier than V2R5 and 500 in versions later than V2R5. Pay attention to the number of VLANs allow on the interface.

If the number of VLANs exceeds the upper limit,  there might appear a loop in one of the unprotected VLANs.

To disable part of the VLAN on Huawei:

[Huawei] stp vlan x,y,z disable

5.       When the CISCO switch detects an EtherChannel misconfiguration, the EtherChannel Guard places the switch interface in the error-disabled state and displays an error message.

We can disable “ehterchannel guard misconfig” to see if the port-channel goes UP.

CISCO# no spanning-tree etherchannel guard misconfig

Please exercise with caution this command.

An example of a misconfiguration is when the channel parameters are not identical and do not match on both sides of the EtherChannel. Another example could be when only one side is configured with channel parameters. EtherChannel parameters must be the same on both sides for the guard to work.

6.       Another issue that might cause channel-misconfig to put ports in err-disable:

A channel is supposed to be point to point and the feature is adding a consistency check based on the source mac address of the BPDU received.

If you keep receiving BPDUs from several source mac addresses, this feature will assume that you have a bundling problem and shut down the port.

You can configure the mac-address of BPDU:

[HUAWEI] mac-address bpdu 0100-0CCC-CCCD

STP_EC_Misconfig_Guard3

I’ll be working between SW1 and SW3 for this lab, as it can work to cover both the lab topics of “EtherChannel Misconfig Guard” as well as Layer 3 EtherChannels, and reviewing some EtherChannel Load-Sharing and testing load-sharing to finish!

EtherChannel Misconfig Guard – Hiding in plain sight throughout all these labs!

Every time the Err-Disable would happen on one side of the EtherChannel while using the “channel-group # mode on” configuration (AKA manual EtherChannel), what was happening was Misconfig Guard placing ports into Err-Disable state, because the EtherChannel detected a possible loop.

Misconfig Guard is on by default, and is seen here in “show span summ” output, as it is an STP specific command for loop prevention:

SW1#sh span summ
Switch is in pvst mode
Root bridge for: VLAN0001
Extended system ID is enabled
Portfast Default is disabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
EtherChannel misconfig guard is enabled
UplinkFast is disabled
BackboneFast is disabled

EtherChannel Misconfig Guard was seen in this format several times while configuring static EtherChannel on the lab:

SW1(config-if-range)#channel-group 13 mode on
Creating a port-channel interface Port-channel 13

SW1(config-if-range)#
*Mar 1 00:07:42.027: %LINK-3-UPDOWN: Interface Port-channel13, changed state to up
*Mar 1 00:07:43.034: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel13, changed state to up
SW1(config-if-range)#
SW1(config-if-range)#
*Mar 1 00:08:23.710: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Fa1/0/1, putting Fa1/0/1 in err-disable state
*Mar 1 00:08:23.735: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Fa1/0/2, putting Fa1/0/2 in err-disable state
*Mar 1 00:08:23.752: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Fa1/0/3, putting Fa1/0/3 in err-disable state
*Mar 1 00:08:23.777: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Fa1/0/4, putting Fa1/0/4 in err-disable state
SW1(config-if-range)#

The closest I’ve seen to a semi-official time is 40 seconds while labbing, there is no official timer that I have found for this, and it works by detecting “Port IDs” from the remote interfaces on an EtherChannel.

How this works is Spanning-Tree sees the Port-Channel interface as one logical interface, and expects to receive a single Port ID / MAC Address / etc from the links bundled into that logical interface, so if it starts to see multiple Port IDs coming back on its bundled links it detects a loop is present and shuts everything down.

The reason a loop is detected is because of the switches operation in the flooding of frames, the Port-Channel is only going to flood a frame over one link in the bundle, and when the remote switch receives this frame it is going to flood it out all interfaces except the interface it rode in on!

To illustrate this, say SW3 receives a frame and floods it over to SW1:

STP_EC_Misconfig_Guard2

When SW1 receives the frame on Fa1/0/1, it will flood it out Fa1/0/2 – 4 connected back to SW3, as per the normal frame forwarding nature of a layer 2 switch:

STP_EC_Misconfig_Guard3

EtherChannel Misconfig Guard detects this issue, somewhere right around 40 seconds after the EtherChannel goes ‘Up’, and put all bundled links into an Err-Disable state:

STP_EC_Misconfig_Guard

Here is how the EtherChannel looks on the lab while in this Err-Disable state:

EC_Err

From this perspective, “channel-group 13 mode on” was configured on SW3, but not on SW1, so it shows the Amber ports indicating the Err-Disable state on SW3 – However SW1 ports are only logically down (No lights at all).

So only the side with the EtherChannel configured / having a problem will put its bundled links into Err-Disable, and this means the remote side of the links will go into a non-admin “Down” state, and do not need to get bounced to come back to an ‘Up’ state.

To remedy the situation on SW3, a quick shut / no shut can be done on the interfaces to bounce them out of Err-Disable, once the configuration is corrected on the remote side.

To enable or disable EtherChannel Misconfig Guard:

SW1(config)#span ?
backbonefast Enable BackboneFast Feature
etherchannel Spanning tree etherchannel specific configuration
extend Spanning Tree 802.1t extensions
logging Enable Spanning tree logging
loopguard Spanning tree loopguard options
mode Spanning tree operating mode
mst Multiple spanning tree configuration
pathcost Spanning tree pathcost options
portfast Spanning tree portfast options
transmit STP transmit parameters
uplinkfast Enable UplinkFast Feature
vlan VLAN Switch Spanning Tree

SW1(config)#span etherchannel ?
guard Configure guard features for etherchannel

SW1(config)#span etherchannel guard ?
misconfig Enable guard to protect against etherchannel misconfiguration

SW1(config)#span etherchannel guard misconfig ?
<cr>

Note that this is done from “Global Config” mode and not on an interface range or Port-Channel interface, and watch the configuration syntax because it is entered with those last two words backwards from its official Cisco name of Misconfig Guard.

This can be DISABLED in the same place:

SW1(config)#no span etherchannel guard misconfig
SW1(config)#do sh span summ
Switch is in pvst mode
Root bridge for: VLAN0001
Extended system ID is enabled
Portfast Default is disabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
EtherChannel misconfig guard is disabled
UplinkFast is disabled
BackboneFast is disabled

So to quickly review Misconfig Guard bullet point style:

  • Misconfig Guard is Enabled by default on Cisco switches
  • Misconfig Guard detects loops based on Port IDs received
  • Puts links in bundle into Err-Disable, remote side goes logical down
  • “span ether guard misconfig” at global level, “no” in front to disable
  • “sh span summ” to verify if it is enabled or disabled

All there is to EtherChannel Misconfig Guard – Easy points on exam day!

Layer 3 EtherChannel fundamentals and configuration

Layer 3 EtherChannel is used as an alternative to a Layer 2 EtherChannel to limit the scope of of Broadcast traffic on the network, allowing for hosts a network to traverse the EtherChannel only when routed over it, while still providing link redundancy to the other side of the EtherChannel.

Separating Broadcast traffic can also be achieved by putting the EtherChannel ports in its own VLAN, however there are still Spanning-Tree impact on the logical link, such as Forward Delay timers and Path Cost that may cause the logical link to go into a non-FWD state.

Layer 3 EtherChannels do require a Layer 3 switch as will be seen below in the configuration, but it should be noted that only speed / duplex settings need to match across the interfaces, because the other Layer 2 information will not matter!

I labbed up a quick example of a layer 3 EtherChannel between SW1 and SW3:

SW1 Port-Channel Configuration

SW1(config)#int po13
*Mar 1 00:25:41.171: %LINK-3-UPDOWN: Interface Port-channel13, changed state to down
SW1(config-if)#no switchport
SW1(config-if)#ip add 10.0.0.1 255.255.255.252

The Port-Channel interface is created and configured before anything, and this logical interface must be configured with “no switchport” just like a physical interface, or there will be no option to apply “ip add x.x.x.x” to the logical interface.

SW1 Interface Range Configuration

SW1(config-if)#int ra fa1/0/1 – 4
SW1(config-if-range)#no switchport
SW1(config-if-range)#
(Fa1/0/1 – 4 all bounce Down and back Up)
SW1(config-if-range)#channel-group 13 mode on
SW1(config-if-range)#
*Mar 1 00:26:52.382: %LINK-3-UPDOWN: Interface Port-channel13, changed state to up
*Mar 1 00:26:53.389: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel13, changed state to up
SW1(config-if-range)#

I removed the flood of 4 physical interfaces bouncing from the “No switchport” command that turns them from a Layer 2 mode of operation to Layer 3, and only after the “channel-group” including the existing Port-Channel is applied does the Port-Channel interface come up.

A couple of important notes for configuration is that it goes backward from a Layer 2 EtherChannel, being you need to create the Port-Channel interface first, then apply it to the physical interfaces.

A very important note for exam day is that the channel-group # applied to the physical interfaces must match the Port-Channel #, and if the command “ip add x.x.x.x” is not being recognized on an interface, it needs “no switchport” command applied to it:

SW1(config-if)#ip add ?
% Unrecognized command
SW1(config-if)#no switchport
SW1(config-if)#
*Mar 1 00:25:41.171: %LINK-3-UPDOWN: Interface Port-channel13, changed state to down
SW1(config-if)#ip add 10.0.0.1 255.255.255.252
SW1(config-if)#

Be sure to watch for this on exam day!

SW3 Configuration

SW3(config)#int po31
SW3(config-if)#no switchport
SW3(config-if)#ip add 10.0.0.2 255.255.255.0
SW3(config-if)#int ra fa1/0/1 – 4
SW3(config-if-range)#no switchport
SW3(config-if-range)#
SW3(config-if-range)#channel-group 31 mode on
SW3(config-if-range)#

Verification from SW3 that we have a Layer 3 EtherChannel

SW3(config-if-range)#do ping 10.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/218/1024 ms
SW3(config-if-range)#do sh span

No spanning tree instance exists.

SW3(config-if-range)#

SW3(config-if-range)#do sh ether summ
Flags: D – down P – bundled in port-channel
I – stand-alone s – suspended
H – Hot-standby (LACP only)
R – Layer3 S – Layer2
U – in use f – failed to allocate aggregator

M – not in use, minimum links not met
u – unsuitable for bundling
w – waiting to be aggregated
d – default port

Number of channel-groups in use: 1
Number of aggregators: 1

Group Port-channel Protocol Ports
——+————-+———–+———————————————–
31 Po31(RU) – Fa1/0/1(P) Fa1/0/2(P) Fa1/0/3(P)
Fa1/0/4(P)

SW3(config-if-range)#

Pings are returned between the two sides, no spanning-tree instance is shown for the EtherChannel, and the “sh ether summ” output shows it is an Active Layer 3 EC.

So easy a caveman can do it. On to the final topic of this post, load-sharing!

EtherChannel Load-Balancing / Load-Sharing fundamentals and configuration

EtherChannel does “Load sharing” rather than true “Load balancing” with traffic, as each flow of traffic is divided up over the available links and not individual packets or frames for a flow, so it is referred to as load-sharing because it distributes the load as it can.

The traffic flow of particular Hosts will always take the same port / link in the EtherChannel, as a Cisco hash algorithm will run on the criteria defined in the load-balancing configuration, which I will work with from the following output:

SW1(config)#
SW1(config)#port-channel ?
load-balance Load Balancing method

SW1(config)#port-channel load-balance ?
dst-ip Dst IP Addr
dst-mac Dst Mac Addr
src-dst-ip Src XOR Dst IP Addr
src-dst-mac Src XOR Dst Mac Addr
src-ip Src IP Addr
src-mac Src Mac Addr

SW1(config)#

Highlighted in blue shows load balancing by IP Address, highlighted in green shows load balancing by MAC Address, and both must define either the source / destination / both source and destination parameter be used in calculating the link to be used.

My switches are not running CatOS, so I don’t have a Layer 4 option to load balance by Port #, however it does exist on Cisco 6k / 6500 series Catalyst switches.

Also to note for exam day, this is done at global configuration level, so this will effect the entire switch and how it distributes traffic across links!

There is a Cisco Proprietary hashing algorithm is really a topic of its own that I won’t delve into for the sake of getting this topic finish, however to learn how to calculate the nuts and bolts of how links are chosen for traffic flows, there is an excellent Cisco documented regarding the selection process located here.

One important note for exam day is that XOR refers to the computing of both source and destination values by the hashing algorithm, and there is no mix-and-match with XOR, both source and destination types must be the same (MAC, IP, Etc).

Essentially it depends on the # of links present, how much load they are able to handle, and this is run against the last 3 bits of the MAC / IP Address to create a value between 0-7 which indicates the Port in the EtherChannel that traffic flow will take.

From that Cisco article, a general idea of load balancing can be seen here, as to how much each link will carry at different amounts of links in the EtherChannel:

8 – 1:1:1:1:1:1:1:1
7 – 2:1:1:1:1:1:1
6 – 2:2:1:1:1:1
5 – 2:2:2:1:1
4 – 2:2:2:2
3 – 3:3:2
2 – 4:4

This is not a percentage of traffic going over the link, but the ratio of how much traffic will go over the links, highlighted in red shows the only true load balancing ratios are at 8 / 4 / 2 links bundled in the Port-Channel.

The hashing algorithm cannot be changed or reconfigured, only how load-balancing is performed on the switch per the global config can it the distribution be manipulated!

To view the current load-balancing configured, “show ether load-balance” is issued:

SW1#sh ether ?
<1-48> Channel group number
detail Detail information
load-balance Load-balance/frame-distribution scheme among ports in
port-channel
port Port information
port-channel Port-channel information
protocol protocol enabled
summary One-line summary per channel-group
| Output modifiers
<cr>

SW1#sh ether load ?
| Output modifiers
<cr>

A lot of output, but the command is “show ether-channel load-balance” in full.

SW1#sh ether load
EtherChannel Load-Balancing Configuration:
src-mac

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source MAC address
IPv4: Source MAC address
IPv6: Source MAC address

SW1#

By default, the load balancing on a Cisco switch is by MAC Address, which means the same hosts will ALWAYS use the same Port in the EtherChannel, as the MAC Address will normally never change on a Host.

This means that any traffic flow from Host A to Host B across an EtherChannel will always use the same link, and the only chance of variation would be to use the XOR or “both” command to run against the hash algorithm to possibly produce a different value.

So to achieve as close to the closest thing to perfect load distribution (equal load distribution of traffic flows), either 8 / 4 / 2 links is required, however for scenarios it will take some planning demonstrated at the bottom of the post!

The EtherChannel can be tested with the command “test ether …” from user exec mode, either by IP or MAC Address, which will be demonstrated using the following Topology:

STP_EC_TestEther

In this example I plugged R1 and R2 into Fa1/0/12 on each switch to represent IP Hosts, and sent a ping across the wire to confirm connectivity:

R1#ping 10.0.0.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
R1#

Connectivity!

To test the connectivity on a MAC or Layer 2 level, I first ran “sh mac add dyn” to get my dynamically learned MAC Address:

SW1#sh mac add dyn
Mac Address Table
——————————————-

Vlan Mac Address Type Ports
—- ———– ——– —–
1 001b.5336.f2cd DYNAMIC Po13
1 001e.f797.f14b DYNAMIC Fa1/0/12
1 5897.1eab.ce03 DYNAMIC Po13
1 5897.1eab.ce04 DYNAMIC Po13
1 5897.1eab.ce05 DYNAMIC Po13
1 5897.1eab.ce06 DYNAMIC Po13
Total Mac Addresses for this criterion: 6
SW1#

Pretty obvious from looking at this which MAC Addresses are part of the Port-Channel and which are unique, however using this information I ran through the following:

SW1#test ether ?
load-balance Load balancing information

SW1#test ether load ?
interface Port-channel interface

SW1#test ether load int po13 ?
ip IP address
ipv6 IPv6 address
mac Mac address

SW1#test ether load int po13 mac ?
H.H.H Source MAC address

SW1#test ether load int po13 mac 001e.f797.f14b ?
H.H.H Destination MAC address (egress value for routed unicast)

SW1#test ether load int po13 mac 001e.f797.f14b 001b.5336.f2cd ?
<cr>

The moment of truth:

SW1#test ether load int po13 mac 001e.f797.f14b 001b.5336.f2cd
Would select Fa1/0/2 of Po13

One good to know behavior for exam day, is this test can only be run on the criteria configured in terms of MAC / IP, when I try to test IP Load Balancing:

SW1#test ether load int po13 ip 10.0.0.1 10.0.0.2
Configured load-balance is “src-mac”, cannot select member of Po13 based on IP address

To test the IP load balancing to see if it selects the same Port for the communication, I configure the EtherChannel based on IP:

SW1(config)#port-channel ?
load-balance Load Balancing method

SW1(config)#port-channel load ?
dst-ip Dst IP Addr
dst-mac Dst Mac Addr
src-dst-ip Src XOR Dst IP Addr
src-dst-mac Src XOR Dst Mac Addr
src-ip Src IP Addr
src-mac Src Mac Addr

SW1(config)#port-channel load src-ip ?
<cr>

SW1(config)#port-channel load src-dst-ip ?
<cr>

SW1(config)#port-channel load src-ip

Highlighted in blue is to demonstrate all of these return only a <cr> after entering the load balancing parameter, whether it is source / destination or using both!

Now to perform a Layer 3 test to see if the traffic flow will hit the same port:

SW1#test ether load int po13 ip 10.0.0.1 10.0.0.2
Would select Fa1/0/3 of Po13

SW1#

Indeed it does hit a different port this time!

One good to note caveat with this, is that a source AND destination is required for the EtherChannel test command, whether its configured for only source or destination, both values are still required for the hash algorithm to determine which port is used.

The following is a scenario where you would want to change the default load balancing:

STP_EC_Scenario2

SW1 will need to be changed from the default “src-mac” as all traffic flows will be coming from the same source MAC of the email server, and thus taking the same single link every time.

In this scenario, the default “src-mac” could be left on SW2, but SW1 would need to be changed to “dst-mac” or src-dst-mac” to perform best practice load balancing!

Ideally you will use “src-dst-ip” on switches to get the closest to equal cost load balancing, however if presented with limited options, make sure to consider a situation like the one above where you can accomplish semi-equal cost load balancing with “dst-mac”!

That is it for this one, up next will be Multi-Layer switching!

?

LiveJournal

Log in

If this type of authorization does not work for you, convert your account using the link

November 9 2011, 11:27

Categories:

  • IT
  • Компьютеры
  • Cancel

Создание агрегированных каналов на оборудовании разных вендоров задача, как выяснилось, непростая. Для создания таких каналов может быть использован протокол:

  • LACP (Link Aggregation Control Protocol) — стандартый протокол;
  • PAgP (Port Aggregation Protocol) — закрытый Cisco;
  • Статическое агрегирование (без протоколов).

Преимущества статического агрегирования:

  • Нет дополнительных задержек при формировании канала.

Преимущества агрегирования с использованием специальных протоколов:

  • Согласование настроек с удаленной стороной позволяет избежать ошибок и петель в сети.
  • Поддержка standby-интерфейсов позволяет агрегировать до 16ти портов, 8 из которых будут активными, а остальные в режиме standby

Создание Etherchannel на Cisco (Layer 2), порты лучше выключить:

sw1(config)# interface range f0/11-12
sw1(config-if-range)# shutdown
sw1(config-if-range)# channel-group 1 active
sw1(config-if-range)# channel-protocol lacp

Переводим interface в режим trunk и пропускаем нужные vlan (интерфейсы, добавленные в etherchannel больше не трогаем):

sw1(config)# interface port-channel 1
sw1(config-if-range)# switchport
sw1(config-if-range)# sw mode trunk
sw1(config-if-range)# sw trunk allowed vlan 2
sw1(config-if-range)# sw trunk allowed vlan add 3
sw1(config-if-range)# no shutdown

Суммарная информация о состоянии Etherchannel:

sw1#sh etherchannel summary

Информация LACP об удаленном коммутаторе:

Информация LACP о локальном коммутаторе:

Создание Etherchannel на HP

Статическое агрегирование каналов с помощью LACP стоит использовать:

  • когда устройство с другой стороны настроено для работы в режиме static LACP,
  • когда необходимо настроить IGMP или STP для агрегированного канала с настройками не по умолчанию,
  • когда необходимо чтобы агрегированный канал принадлежал не только VLAN 1, а GVRP отключен,
  • когда необходимо зеркалировать трафик с агрегированного канала.

Статический транк LACP будет установлен, если с другой стороны настроен транк:

  • Active LACP
  • Passive LACP
  • статический транк

Настройка статического агрегированного канала с помощью LACP:

sw(config)# trunk 20-21 trk1 lacp
sw(config)# vlan 2 tagged trk1
sw(config)# vlan 3 tagged trk1

Посмотреть на статус канала можно командами:

Вот, вроде бы, и все. Однако, тут выяснилось, что Etherchannel не может установиться, т.е. он устанавливается, но падает через несколько секунд с сообщением:

%PM-SP-4-ERR_DISABLE: channel-misconfig error detected on Po2, putting Po2 in err-disable state

Дело здесь в нашем любимом Spanning-tree protocol (STP). После долгих копаний выяснилось, что один из коммутаторов cisco, тоже подключенных к HP, шлет странные bpdu, на порту HP эти bpdu не фильтровались, а проходили дальше на нужную нам для Etherchannel cisco. Псоле чего блокировался порт и Etherchannel падал.

Если посмотреть в:

Sw1#show spanning-tree summary

то там есть:

EtherChannel misconfig guard is enabled

Эта функция включена по умолчанию. Ее можно, конечно, и отключить, но это не по-нашему, не по-бразильски.
На cisco включен PVST. Multicast mac-address для Cisco PVST+ BPDU — 01000ccccccd. Если на HP отфильтровать пакеты с этим MAC’ом, то все сразу станет хорошо:

sw(config)# filter multicast 01000c-cccccd drop trk1

Все существующие фильтры можно увидеть по команде:

Неоценимую помощь оказали ресурсы:

раз

два

Всем привет! 

Коммутаторы SW1, SW2 и роутеры ASR1 и ASR1 являются частью VPLS. SW1 подключен через Port-channel интерфейс. Больше года все работало нормально но недавно на нем стал падать Port-channel интерфейс на SW1. В логах:

bpdu.thumb.png.9ed3bd07f2b4e0d6b540121ef5313a47.png

000080: Jan 20 12:21:54 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi1/0/26, putting Gi1/0/26 in err-disable state
000081: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi1/0/27, putting Gi1/0/27 in err-disable state
000082: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi1/0/28, putting Gi1/0/28 in err-disable state
000083: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/21 in err-disable state
000084: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/22 in err-disable state
000085: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/23 in err-disable state
000086: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/24 in err-disable state
000087: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/25 in err-disable state
000088: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/26 in err-disable state
000089: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/27 in err-disable state
000090: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/28 in err-disable state
000091: Jan 20 12:21:55 MSK: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Po1 in err-disable state

Возможно совпадение, но несколько недель назад мы подключили к данному VPLS еще и Operator1 (клиент, которому отдаем мультикаст). Есть подозрение, что он иногда присылает какой-то кривой BPDU и из за этого все падает. Просто заметил, что root-bridge для коммутатора SW1 была какая-то железка, которая явно не моя. Судя по OUI префиксу какой-то джунипер (у меня их нет). Сейчас я поменял root уже на свой коммутатор. Так же на коммутаторе SW1 включил «errdisable recovery cause channel-misconfig». Можно как-то на ASR отфильтровать все BDPU от Operator1? По аналогии со spanning-tree bpdufilter на коммутаторах? И можно повесить spanning-tree bpdufilter на интерфейсы коммутаторов, которыми они к VPLS подключены? Сейчас один из них является root-bridge


Изменено 21 января, 2022 пользователем fox_m

В этой статье мы рассмотрим определение состояния отключения из-за ошибки, опишем восстановление из этого состояния и предоставим примеры такого восстановления. В данной статье взаимозаменяемо используются термины «errdisabled» и «отключенный из-за ошибки».

Примечание: Состояние порта err-disabled отображается в выходных данных команды show interfaces interface_number status.

Для воспроизведения примеров, приведенных в данном документе, необходимы два коммутатора серии Cisco Catalyst 4500/6500 (или эквивалентных) в лабораторной среде с настройками, сброшенными до заводских. На коммутаторах должно быть установлено ПО Cisco IOS®, и у каждого коммутатора должно быть по два порта Fast Ethernet, поддерживающих функции EtherChannel и PortFast.

Данные сведения были получены в результате тестирования приборов в специфической лабораторной среде. В качестве начальной конфигурации для всех описанных в документе устройств использовались стандартные (заводские) настройки. В условиях реально действующей сети при использовании каждой команды необходимо четко понимать, какие последствия может иметь применение той или иной команды.

Платформы, на которых используется отключение из-за ошибки

Функция отключения из-за ошибки поддерживается на следующих коммутаторах Catalyst:

  • коммутаторы Catalyst со следующим программным обеспечением Cisco IOS:
    • 2900XL / 3500XL
    • 2940 / 2950 / 2960 / 2970
    • 3550 / 3560 / 3560-E / 3750 / 3750-E
    • 4000 / 4500
    • 6000 / 6500
  • коммутаторы Catalyst со следующим программным обеспечением Catalyst (CatOS):
    • 2948G
    • 4500 / 4000
    • 5500 / 5000
    • 6500 / 6000

Способ реализации функции отключения из-за ошибки зависит от программной платформы. В этом документе особое внимание уделяется функции отключения из-за ошибки на коммутаторах с программным обеспечением Cisco IOS.

Состояние «Errdisabled»

Назначение состояния «Errdisabled»

Если в конфигурации отображается порт, который должен быть включен, но программное обеспечение на коммутаторе обнаружило порт в состояние ошибки, то программное обеспечение отключит этот порт. Другими словами, порт автоматически отключается операционной системой коммутатора, так как порт обнаружен в состоянии ошибки.

Когда порт отключается из-за ошибки, он фактически выключается, а прием и отправка трафика через него не выполняются. Цвет индикатора порта становится оранжевым, а при выполнении команды show interfaces отображается состояние порта err-disabled. Ниже приводится пример вывода данных о порте в состоянии error-disabled из интерфейса командной строки коммутатора:

cat6knative#show interfaces gigabitethernet 4/1 status

Port Name Status Vlanv Duplex Speed Type
Gi4/1 err-disabled 100 full 1000 1000BaseSX

Или, если данный интерфейс отключен из-за состояния ошибки, и в консоли, и в системном журнале можно увидеть сообщения, подобные следующим:

%SPANTREE-SP-2-BLOCK_BPDUGUARD:
Received BPDU on port GigabitEthernet4/1 with BPDU Guard enabled. Disabling port.
%PM-SP-4-ERR_DISABLE:
bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state

Сообщение данного примера отображается, когда порт хоста принимает блок BPDU. Фактический вид сообщения зависит от причины состояния ошибки.

Функция отключения из-за ошибки решает две задачи.

  • Она позволяет администраторам знать, когда и где возникла проблема с портом.
  • Она исключает возможность того, что данный порт может вызвать сбой других портов модуля (или всего модуля). Такой сбой может произойти, когда «неисправный» порт монополизирует буферы или сообщения об ошибках порта монополизируют связи между процессами на плате, что может в итоге вызвать серьезные сетевые проблемы. Функция отключения из-за ошибки помогает предотвратить такие ситуации.

Причины возникновения состояния «Errdisabled»

Эта функция была первоначально реализована для обработки особых конфликтных ситуаций, когда коммутатор обнаруживал в порту избыточные или поздние конфликты. Избыточные конфликты возникают, когда кадр отбрасывается из-за обнаружения 16 конфликтов подряд. Поздние конфликты возникают, когда каждое из подключенных к линии устройств определило, что линия занята. Ниже перечислены некоторые возможные причины ошибок данных типов:

  • кабель, не соответствующий спецификациям (слишком длинный, неправильного типа или поврежденный);
  • неисправная сетевая интерфейсная плата (с физическими неполадками или проблемами драйверов);
  • неправильная конфигурация дуплексного режима порта.
    Неправильная конфигурация дуплексного режима порта является распространенной причиной ошибок из-за невозможности правильного согласования скорости и дуплексного режима между двумя напрямую соединенными устройствами (например, сетевой адаптер, подключенный к коммутатору). Только у полудуплексных соединений могут возникать конфликты в ЛВС. Так как для Ethernet характерен множественный доступ с контролем несущей (CSMA), конфликты являются обычным явлением для полудуплексных соединений, пока они составляют малую часть трафика.

Интерфейс может перейти в состояние «errdisabled» по различным причинам. Среди таких причин могут быть следующие:

  • Несоответствие дуплексных режимов
  • неправильная конфигурация каналов портов
  • нарушение защиты BPDU
  • состояние обнаружения однонаправленной связи (UDLD)
  • обнаружение поздних конфликтов
  • обнаружение переброски канала
  • нарушение безопасности
  • переброска по протоколу агрегации портов (PAgP)
  • защита протокола туннелирования уровня 2 (L2TP)
  • ограничение скорости DHCP-отслеживания
  • неисправный модуль GBIC, подключаемый модуль малого форм-фактора (SFP) или кабель
  • проверка протокола ARP
  • встроенное питание

Примечание: По умолчанию для всех таких причин включено обнаружение отключения из-за ошибки. Чтобы отключить обнаружение отключения из-за ошибки, выполните команду no errdisable detect cause. Команда show errdisable detect отображает состояние обнаружения отключения из-за ошибки.

Проверка нахождения портов в состоянии «Errdisabled»

Чтобы определить, был ли порт отключен из-за ошибки, выполняется команда show interfaces.

Пример данных об активном порте:

cat6knative#show interfaces gigabitethernet 4/1 status

Port Name Status Vlan Duplex Speed Type
Gi4/1 Connected 100 full 1000 1000BaseSX

Ниже приводится пример данных о том же порте в состоянии отключения из-за ошибки:

cat6knative#show interfaces gigabitethernet 4/1 status

Примечание: Если порт отключен из-за ошибки, индикатор на передней панели, соответствующей данному порту, будет выключен.

Определение причины состояния «Errdisabled» (сообщения консоли, системный журнал и команда «show errdisable recovery»)

Когда коммутатор переводит порт в состояние отключения из-за ошибки, он отправляет консоли сообщение с описанием причины отключения порта. В данном разделе приведены два примера сообщений с причинами отключения портов.

  • В первом случае отключение вызвано функцией защиты PortFast BPDU.
  • Во втором случае отключение вызвано ошибкой в конфигурации EtherChannel.

Примечание: Эти сообщения можно также увидеть в системном журнале, если выполнить команду show log .

Вот примеры сообщений:

%SPANTREE-SP-2-BLOCK_BPDUGUARD:
Received BPDU on port GigabitEthernet4/1 with BPDU Guard enabled. Disabling port.

%PM-SP-4-ERR_DISABLE:
bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state

%SPANTREE-2-CHNMISCFG: STP loop — channel 11/1-2 is disabled in vlan 1

Если выполнена команда errdisable recovery, можно определить причину состояния «errdisabled» с помощью команды show errdisable recovery.

Ниже представлен пример:

cat6knative#show errdisable recovery

ErrDisable Reason Timer Status
udld Enabled
bpduguard Enabled
security-violatio Enabled
channel-misconfig Enabled
pagp-flap Enabled
dtp-flap Enabled
link-flap Enabled
2ptguardl Enabled
psecure-violation Enabled
gbic-invalid Enabled
mac-limit Enabled
unicast-flood Enabled
arp-inspection Enabled

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Interface Errdisable reason Time left(sec)
Fa2/4 bpduguard 273

Восстановление порта из состояния отключения из-за ошибки

В этом разделе предоставляются примеры способов обнаружения портов, отключенных из-за ошибки, и их восстановления, а также краткое обсуждение некоторых дополнительных причин отключения портов из-за ошибки. Чтобы восстановить порт из состояния «errdisabled», сначала необходимо установить и устранить основную причину проблемы, а затем включить порт. Если включить порт, не устранив причину проблемы, он снова будет отключен из-за ошибки.

Исправление основной причины

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

  • Неверная конфигурация EtherChannel
    Порты, задействованные в работе EtherChannel, должны обладать согласованными конфигурациями. У портов должны быть одинаковые сети VLAN, режим магистрали, скорость, дуплексный режим и т.д. Большинство отличий конфигураций в рамках одного коммутатора выявляются и заносятся в отчет при создании канала. Если на одной стороне коммутатор настроен для EtherChannel, а на другой — нет, процесс STP может отключить объединенные в канал порты на стороне, настроенной для поддержки режима EtherChannel. В режиме EtherChannel перед объединением портов в канал PAgP-пакеты не отправляются другой стороне для согласования; предполагается, что на другой стороне режим объединения в канал также поддерживается. Кроме того, в данном примере режим EtherChannel не включается на другом коммутаторе, однако соответствующие порты оставляются отдельными, не задействованными в каналах портами. Если оставить другой коммутатор в этом состоянии примерно на минуту, протокол STP коммутатора с включенным режимом EtherChannel считает, что образовалась петля. В результате объединенные в канал порты переводятся в состояние отключения из-за ошибки.В данном примере обнаружена петля и отключены порты. В выходных данных команды show etherchannel summary указывается, что Number of channel-groups in use (Число используемых групп каналов) равно 0. Если обратить внимание на один из вовлеченных портов, можно заметить, что он находится в состоянии err-disabled:%SPANTREE-2-CHNL_MISCFG: Detected loop due to etherchannel misconfiguration
    of Gi4/1cat6knative#show etherchannel summaryFlags: D — down P — in port-channel
    I — stand-alone s — suspended
    H — Hot-standby (LACP only)
    R — Layer3 S — Layer2
    U — in use f — failed to allocate aggregator                u — unsuitable for bundling
    Number of channel-groups in use: 0
    Number of aggregators: 0

    Group Port-channel Protocol Ports
    ——+————-+————+————————————————

    Режим EtherChannel отключен, так как на данном коммутаторе порты были переведены в состояние «errdisable».

    cat6knative#show interfaces gigabitethernet 4/1 status

    Port Name Status Vlan Duplex Speed Type
    Gi4/1 err-disabled 100 full 1000 1000BaseSX

    Чтобы определить характер проблемы, см. соответствующее сообщение об ошибке. В сообщении указывается, что функция EtherChannel обнаружила петлю в дереве STP. В этом разделе описывается возникновение данной проблемы, когда на одном устройстве (в этом случае коммутатор) канал EtherChannel вручную переведен в режим «Включено» (в противоположность режиму согласования), а на другом подключенном устройстве (в этом случае другой коммутатор) канал EtherChannel вообще не включен. Один из способов разрешения этой ситуации заключается в переводе режима канала в состояние «desirable» на обеих сторонах соединения с последующим повторным включением портов. В результате обе стороны формируют канал только после взаимного согласования. Если создание канала не согласовано, обе стороны продолжают функционировать как обычные порты.

    cat6knative(config-terminal)#interface gigabitethernet 4/1
    cat6knative(config-if)#channel-group 3 mode desirable non-silent

  • Несоответствие дуплексных режимов
    Несоответствие дуплексных режимов встречается довольно часто из-за неудачного автоматического согласования скорости и дуплексного режима. В отличие от полудуплексного устройства, которому приходится дожидаться освобождения своего сегмента ЛВС другими передающими устройствами, дуплексное устройство при необходимости выполняет передачу независимо от других устройств. Если эта передача выполняется одновременно с передачей полудуплексного устройства, данное устройство будет рассматривать это как конфликт (в течение данного временного интервала) или как поздний конфликт (по истечении данного временного интервала). Так как дуплексное устройство никогда не ожидает конфликтов, на этой стороне никогда не допускается необходимость повторной передачи отброшенных пакетов. Низкий процент конфликтов характерен для полудуплексного режима, но не для дуплексного. Регистрация на порте коммутатора слишком большого количества конфликтов обычно указывает на несоответствие дуплексных режимов. Убедитесь, что на обеих сторонах кабеля порты настроены на одинаковые скорость и дуплексный режим. Командаshow interfaces interface_number предоставляет данные о скорости и дуплексном режиме портов коммутатора Catalyst. Более поздние версии протокола обнаружения Cisco (CDP) могут предупреждать о несоответствии дуплексных режимов перед переводом порта в состояние отключения из-за ошибки.Кроме того, в сетевом адаптере есть настройки, такие как автополярность, которые могут вызвать данную проблему. В случае сомнений отключите такие настройки. Если есть несколько сетевых адаптеров одного производителя и на всех таких сетевых адаптерах проявляется та же проблема, посетите веб-узел производителя, чтобы прочитать заметки о выпуске и получить драйверы последних версий.Ниже перечислены другие возможные причины поздних конфликтов:
    • неисправный сетевой адаптер (с физическими неполадками, а не просто с ошибками конфигурации);
    • неисправный кабель
    • слишком длинный сегмент кабеля
  • защита портов BPDU
    В режиме PortFast порт должен подключаться только к конечной станции (рабочей станции или серверу), а не к устройствам, генерирующим BPDU-блоки дерева STP, таким как коммутаторы, мосты или маршрутизаторы, формирующие мостовые соединения. При приеме BPDU-блока дерева STP через порт с включенной STP-функцией PortFast и защитой от пакетов BPDU дерева STP коммутатор переводит порт в состояние «err-disable», чтобы защитить сеть от возможного возникновения петель. Функция PortFast предполагает, что порт коммутатора не может сформировать физическую петлю. Поэтому PortFast пропускает первоначальные проверки протокола STP для данного порта, чтобы избежать тайм-аута конечных станций при загрузке. Сетевые администраторы должны тщательно реализовывать функцию PortFast. На портах с включенной функцией PortFast защита BPDU препятствует образованию петель в ЛВС.В следующем примере показано, как включить эту функцию. Этот пример выбран из-за простоты создания ситуации отключения из-за ошибки в данном случае:cat6knative(config-if)#spanning-tree bpduguard enableВ этом примере коммутатор Catalyst 6509 подключен к другому коммутатору (серии 6509). Коммутатор Catalyst 6500 отправляет блоки BPDU каждые 2 секунды (при использовании настроек STP по умолчанию). При включении режима PortFast для порта коммутатора 6509 функция защиты BPDU отслеживает поступающие в этот порт блоки BPDU. Поступление блока BPDU в порт означает, что устройство не является конечным. В этом случае функция защиты BPDU отключает данный порт во избежание возможного образования петли в дереве STP.cat6knative(config-if)#spanning-tree portfast enable

    Warning: Spantree port fast start should only be enabled on ports connected
    to a single host. Connecting hubs, concentrators, switches, bridges, etc. to
    a fast start port can cause temporary spanning tree loops.

    %PM-SP-4-ERR_DISABLE: bpduguard error detected on Gi4/1, putting Gi4/1 in
    err-disable state.

    В этом сообщении коммутатор сообщает о поступлении блока BPDU в порт с поддержкой PortFast, из-за чего коммутатор отключает порт Gi4/1.

    cat6knative#show interfaces gigabitethernet 4/1 status

    Port Name Status Vlan Duplex Speed Type
    Gi4/1 err-disabled 100 full 1000 1000BaseSX

    Функцию PortFast необходимо отключить, так как данный порт является портом с непригодным соединением. Соединение является непригодным, так как включена функция PortFast, а коммутатор подключается к другому коммутатору. Необходимо помнить, что функция PortFast используется только на портах, подключенных к конечным станциям.

    cat6knative(config-if)#spanning-tree portfast disable

  • UDLD
    Протокол обнаружения однонаправленной связи (UDLD) позволяет устройствам, подключенным с помощью оптоволоконных или медных кабелей Ethernet (например кабелей категории 5), отслеживать физическую конфигурацию кабелей и обнаруживать появление однонаправленных соединений. При обнаружении однонаправленного соединения протокол UDLD отключает соответствующий порт и создает сообщение предупреждения для пользователя. Однонаправленные соединения могут вызвать множество проблем, включая петли в топологии STP.Примечание: Работа UDLD основана на обмене пакетами протокола между соседними устройствами. Устройства на обеих сторонах соединения должны поддерживать протокол UDLD. Этот же протокол должен поддерживаться на соответствующих портах. Если UDLD включен только на одном порте, на этом конце соединения может быть настроен переход UDLD в состояние «err-disable».Каждый порт коммутатора, настроенный на UDLD, отправляет пакеты протокола UDLD, в которых указывается устройство порта (или идентификатор порта) и соседнее устройство (или идентификаторы портов), которые видны UDLD на данном порте. В полученных с другой стороны пакетах соседние порты должны видеть свои собственные устройство или идентификатор порта (эхо). Если порт не видит собственного устройства или идентификатора порта во входящих UDLD-пакетах в течение заданного времени, такое соединение считается однонаправленным. В результате соответствующий порт отключается, а в консоли печатается сообщение примерно такого содержания:PM-SP-4-ERR_DISABLE: udld error detected on Gi4/1, putting Gi4/1 in err-disable state.
  • Ошибка неустойчивости соединения (link-flap)
    Неустойчивость соединения означает постоянное подключение и отключение интерфейса. Если число таких ошибок за 10 секунд больше пяти, интерфейс переводится в состояние «err-disable». Распространенной причиной неустойчивости соединения являются проблемы первого уровня (L1), такие как неисправность кабеля, несоответствие дуплексных режимов или неисправная плата GBIC. Просмотрите сообщения консоли или сообщения, отправленные на сервер системного журнала, в которых сообщается причина отключения портов.%PM-4-ERR_DISABLE: link-flap error detected on Gi4/1, putting Gi4/ 1 in err-disable stateЧтобы просмотреть данные об ошибках неустойчивости соединения, выполните следующую команду:cat6knative#show errdisable flap-values
    ErrDisable Reason Flaps Time (sec)
    pagp-flap 3 30
    dtp-flap 3 30
    link-flap 5 10
  • Ошибка обратной петли (loopback)
    Ошибка обратной петли возникает, когда пакет запроса keepalive возвращается обратно к отправившему его порту. По умолчанию коммутатор отправляет запросы keepalive всем интерфейсам. Устройство может отправлять пакеты обратно исходному интерфейсу по петле, которая обычно возникает из-за наличия в сети логической петли, не заблокированной протоколом STP. Исходный интерфейс принимает отправленный им пакет сообщения keepalive, а коммутатор отключает данный интерфейс (errdisable). Когда пакет keepalive возвращается обратно к отправившему его порту, появляется следующее сообщение:%PM-4-ERR_DISABLE: loopback error detected on Gi4/1, putting Gi4/1 in err-disable stateПо умолчанию в ПО на базе Cisco IOS версии 12.1EA сообщения keepalive отправляются всеми интерфейсами. В программном обеспечении на базе Cisco IOS 12.2SE или более поздней версии сообщения keepalive по умолчанию не отправляются оптоволоконными и восходящими интерфейсами. Предлагаемый обходной путь заключается в отключении запросов keepalive и обновлении до ПО Cisco IOS 12.2SE или более поздней версии.
  • Нарушение защиты порта
    Защиту порта можно использовать вместе со статическими и динамически получаемыми MAC-адресами, чтобы ограничить входящий трафик порта. Чтобы ограничить трафик, можно ограничить MAC-адреса, которым разрешено отправлять трафик данному порту. Чтобы настроить порт коммутатора на отключение из-за ошибки при нарушении безопасности, выполните следующую команду:cat6knative(config-if)#switchport port-security violation shutdownНарушение безопасности происходит в следующих двух ситуациях:
    • Когда на защищенном порте число защищенных MAC-адресов достигло максимума, а исходный MAC-адрес входящего трафика не совпадает ни с одним из идентифицированных защищенных MAC-адресов.
      В этом случае защитой порта применяется настроенный режим нарушения.
    • Если трафик с защищенным MAC-адресом, настроенный или полученный на одном защищенном порте, пытается получить доступ к другому защищенному порту в той же сети VLAN.
      В этом случае защита порта применяет режим нарушения завершения работы.
  • Защита L2pt
    Когда блоки PDU уровня 2 входят в туннель или порт доступа на входящем пограничном коммутаторе, коммутатор заменяет пользовательский MAC-адрес PDU-назначения хорошо известным проприетарным адресом многоадресной рассылки Cisco: 01-00-0c-cd-cd-d0. Если включено туннелирование 802.1Q, пакеты также помечаются двумя тегами. Внешний тег является пользовательским тегом муниципальной сети, а внутренний тег — пользовательским тегом сети VLAN. Основные коммутаторы игнорируют внутренние теги и пересылают пакет всем магистральным портам в одной муниципальной сети VLAN. Пограничные коммутаторы на исходящей стороне восстанавливают данные о необходимом протоколе уровня 2 и MAC-адресе и пересылают пакеты всем туннельным портам или портам доступа внутри одной муниципальной сети VLAN. Поэтому блоки PDU уровня 2 сохраняются неизмененными и через инфраструктуру сервис-провайдера доставляются на другую сторону сети заказчика.Switch(config)#interface gigabitethernet 0/7
    l2protocol-tunnel {cdp | vtp | stp}Интерфейс переходит в состояние отключения из-за ошибки. Если инкапсулированный блок PDU (с собственным MAC-адресом назначения) получен из туннельного порта или порта доступа с включенным туннелированием уровня 2, туннельный порт отключается, чтобы предотвратить появление петель. Этот порт также отключается, когда достигается пороговое значение завершения работы для данного протокола. Порт можно снова включить вручную (выполнив последовательность команд shutdownno shutdown), или если включено восстановление из состояния «errdisabled», данная операция повторяется через указанный интервал времени.Интерфейс можно восстановить из состояния «errdisabled» включив порт с помощью команды errdisable recovery cause l2ptguard. Эта команда используется для настройки механизма восстановления после ошибки «максимальной скорости» уровня 2, чтобы интерфейс можно было вывести из отключенного состояния и попытаться снова использовать. Можно также задать временной интервал. Восстановление из состояния «errdisabled» по умолчанию отключено; при включении временной интервал по умолчанию равен 300 секундам.
  • Неисправный SFP-кабель
    Порты переходят в состояние «errdisabled» с сообщением об ошибке %PHY-4-SFP_NOT_SUPPORTED при подключении коммутаторов Catalyst 3560 и Catalyst 3750 с помощью соединительного SFP-кабеля.Соединительный SFP-кабель для коммутаторов Cisco Catalyst 3560 (CAB-SFP-50CM=) является бюджетным решением для соединений Gigabit Ethernet типа «точка-точка» между коммутаторами серии Catalyst 3560. 50-сантиметровый кабель является альтернативой использованию трансивера SFP при соединении коммутаторов серии Catalyst 3560 через SFP-порты на небольших расстояниях. Все коммутаторы серии Cisco Catalyst 3560 поддерживают соединительные SFP-кабели.<BR\P>При подключении коммутатора Catalyst 3560 к коммутатору Catalyst 3750 или любой другой модели коммутатора Catalyst нельзя использовать кабель CAB-SFP-50CM=. Два коммутатора можно соединить с помощью медного кабеля с SFP (GLC-T) на обоих устройствах вместо кабеля CAB-SFP-50CM=.

Повторное включение портов, отключенных из-за ошибки

После устранения причины проблемы порты остаются отключенными, если на коммутаторе не настроено восстановление из состояния «errdisabled». В этом случае необходимо включить порты вручную. Выполните команду shutdown, а затем — команду интерфейсного режима no shutdownна соответствующем интерфейсе, чтобы вручную включить порты.

Команда errdisable recovery позволяет выбрать тип ошибок, после которых порты снова автоматически включаются через указанный промежуток времени. Команда show errdisablerecovery показывает состояние по умолчанию после восстановления из состояния отключения из-за ошибки для всех возможных условий.

cat6knative#show errdisable recovery

ErrDisable Reason Timer Status
udld Disabled
bpduguard Disabled
security-violatio Disabled
channel-misconfig Disabled
pagp-flap Disabled
dtp-flap Disabled
link-flap Disabled
2ptguardl Disabled
psecure-violation Disabled
gbic-invalid Disabled
mac-limit Disabled
unicast-flood Disabled
arp-inspection Disabled

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Примечание: Стандартный интервал тайм-аута равен 300 секундам, и по умолчанию он отключен.

Чтобы включить errdisable recovery и выбрать состояния отключения из-за ошибки, выполните следующую команду:

cat6knative#errdisable recovery cause?

all Enable timer to recover from all causes
arp-inspection Enable timer to recover from arp inspection error disable
state
bpduguard Enable timer to recover from BPDU Guard error disable
state
channel-misconfig Enable timer to recover from channel misconfig disable
state
dhcp-rate-limit Enable timer to recover from dhcp-rate-limit error disable
state
dtp-flap Enable timer to recover from dtp-flap error disable
state
gbic-invalid Enable timer to recover from invalid GBIC error disable
state
l2ptguard Enable timer to recover from l2protocol-tunnel error
disable
state
link-flap Enable timer to recover from link-flap error disable
state
mac-limit Enable timer to recover from mac limit disable
state
pagp-flap Enable timer to recover from pagp-flap error disable
state
psecure-violation Enable timer to recover from psecure violation disable
state
udld Enable timer to recover from udld error disable
state
unicast-flood Enable timer to recover from unicast flood disable
state

В этом примере показано, как разрешить условие восстановления из состояния «errdisabled» при включенной защите BPDU:

cat6knative(Config)#errdisable recovery cause bpduguard

Полезное свойство этой команды состоит в том, что при включении восстановления из состояния «errdisabled», команда выдает список общих причин перевода портов в состояние отключения из-за ошибки. В следующем примере обратите внимание на то, что функция защиты BPDU была причиной отключения порта 2/4:

cat6knative#show errdisable recovery

ErrDisable Reason Timer Status
udld Disabled
bpduguard Enabled
security-violatio Disabled
channel-misconfig Disabled
pagp-flap Disabled
dtp-flap Disabled
link-flap Disabled
2ptguardl Disabled
psecure-violation Disabled
gbic-invalid Disabled
mac-limit Disabled
unicast-flood Disabled
arp-inspection Disabled

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Interface

Errdisable reason

Time left(sec)

Fa2/4

bpduguard

290

Если разрешено любое из условий восстановления из состояния «errdisabled», порты с таким условием снова включаются через 300 секунд. Это значение по умолчанию (300 секунд) можно изменить, выполнив следующую команду:

cat6knative(Config)#errdisable recovery interval timer_interval_in_seconds

В следующем примере длительность интервала восстановления из состояния «errdisabled» изменяется с 300 на 400 секунд:

cat6knative(Config)#errdisable recovery interval 400

Проверка

  • show version— отображение версии программного обеспечения, используемого на данном коммутаторе.
  • show interfaces interface interface_number status— отображение текущего состояния порта коммутатора.
  • show errdisable detect— отображение текущих настроек функции тайм-аута состояния «err-disable» и, если в данный момент есть порты, отключенные из-за ошибки, причины их отключения.

Устранение неполадок

  • show interfaces status err-disabled— отображение локальных портов в состоянии отключения из-за ошибки.
  • show etherchannel summary— отображение текущего состояния EtherChannel.
  • show errdisable recovery— отображение периода времени, по истечении которого интерфейсы восстанавливаются из состояния «errdisabled».
  • show errdisable detect— отображение причины состояния «err-disable».

Errdisabled

Источник: blogsvazista.ru/vosstanovlenue-porta-cisco-errdisabled/

Recently I was trying to bring up a EtherChannel connection between a Catalyst 3750 and a Catalyst 4507.

I was going to join 4 ports together.  One from each of the first 4 blades on the 4507.  It is good to use several blades to protect against a blade failure.

However, when I went to bring up the bundle using LACP, within seconds all bundled ports were shut down and this logging message popped up:

%PM-4-ERR_DISABLE: channel-misconfig (STP) error detect on GigabitEthernet1/0/45.

I was really stumped as to what was causing this.  Google searching did not really return any clear answers.

The message was stating that there error was somehow related to Spanning Tree Protocol.  I turned on all Spanning Tree debugs and re-enabled just the first port again, but the debugs didn’t show anything unusual happening.  What was interesting is that this error was only occurring on the 3750, no errors were showing up on the 4507.  I double checked the STP root bridge priorities, etc.

I started to comb the running-config with a fine toothed comb on the 3750.  It was then that I noticed this config towards the top:

spanning-tree etherchannel guard misconfig

This config intrigued me.  I had not noticed it before and I was unclear as to what it might do.  I no’d out the command and again tried to bring up just the first interface in the bundle.  No cigar, same epic fail.  At this point, I saved the config (write me) and reloaded the switch.  Once the switch was back up, I again tried to bring the the bundle members, but in reverse order, starting with gi1/0/48 and moving towards gi1/0/45.  One by one, they were each able to join the bundle.  Finally, I went to  bring up the last interface, gi1/0/45.  It came up, however the command show etherchannel 2 summary showed that it was in the waiting state.  This is indicated by state w.  It seemed to stay in waiting for about a minute until it changed to I.  The status I indicates that the port is individual and not part of the bundle.

I thought that it was strange for gi1/0/45 to go to individual mode.  I then traced the cabling from gi1/0/45 on the 3750 to fa3/3 on the 4507.  “Now just you wait a sec!”  I found that I had accidentally cabled to port fa3/5 instead.  This was the wrong port and was not configured to be part of the etherchannel.

Wow, so

spanning-tree etherchannel guard misconfig

Was trying to tell me that I had a mis-cabled port!  That’s pretty sweet.  I did a quick google search on the command and found that essentially it allows EtherChannel to use STP to attempt to find misconfigurations (including messed up cabling).

http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SXF/native/configuration/guide/stp_enha.html#wp1029499

This story has two morals:

1) Definitely configure STP etherchannel guard misconfig.  That command is just another of those that will watch your back.  You just gotta love those commands.

2) If your ports are going err-diable and your getting that odd STP misconfig error.  Remember to go check your cabling and which ports are config’d.

Happy Routing!

Понравилась статья? Поделить с друзьями:
  • Cisco asr error overrun
  • Cisco anyconnect ошибка подключения
  • Cisco 3750 error loading flash
  • Cisco anyconnect the client agent has encountered an error
  • Cisco anyconnect secure mobility client setup wizard ended prematurely как исправить