Speed/duplex capabilities

Не смотря на то, что уже давным-давно существует ethernet autonegotiation, до сих пор можно столкнуться с проблемой “линк встал в 100half” или подобной. half-duplex это задержки, низкая скорость, потери и прочие прелести. В этой заметке будут рассмотрены типовые ситуации, с которыми приходится сталкиваться в реальной жизни и способы их избегать. Схема для этой статьи будет тривиальной:

speed/duplex capabilities scheme

Основная идея – использовать функционал speed-duplex capabilities. Смысл фичи очень простой – вместо выключения autonegotiation и жёсткого задания режима скорости/дуплекса, разрешать или запрещать анонсирование того или иного режима скорости/дуплекса.

Такой функционал поддерживается, например, на коммутаторах Huawei Quidway S2300, Edge-Core ES3528M, Digital China DCS-3950-28C, Eltex MES, DLink DGS-3600, DGS-3200 Series и других.

Абонент задал жёстко скорость и дуплекс на порту

Допустим абонент знает, что half-duplex это зло и решил (на всякий случай) жёстко задать скорость у себя на порту:

customer ~ # ethtool -s eth1 autoneg off speed 100 duplex full

isp-switch(config-if-ethernet1/15)#shutdown
isp-switch(config-if-ethernet1/15)#no shutdown          
isp-switch#show interface ethernet status | i 1/15
1/15       UP/UP          a-100M  a-HALF  2100   FE  

Таким образом, отключив autonegotiation, он сам себе создал проблему – порт операторского свитча встал в 100half(потому что это режим по умолчанию по стандарту), при том со стороны абонента “всё хорошо”, там 100full:

customer ~ # ethtool eth1
Settings for eth1:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Speed: 100Mb/s
	Duplex: Full
        ...
	Link detected: yes

Чтобы избежать такой ситуации, запретим коммутатору анонсировать и использовать любые режимы, кроме 100full:

isp-switch(config-if-ethernet1/15)#speed-duplex auto 100 full
isp-switch(config-if-ethernet1/15)#shutdown
isp-switch(config-if-ethernet1/15)#no shutdown
isp-switch#show interface ethernet status | i 1/15
1/15       DOWN/DOWN      auto    auto    2100   FE  

Линк упал и не поднимается, потому что со стороны абонента жёстко 100full, порт свитча должен встать в 100half, но этот режим запрещён. Пока настройки со стороны клиента не будут исправлены, линк так и не поднимется и это хорошо(защита от последующих жалоб на скорость/потери/задержки).

Клиент может просто вернуть autonegotation или же дать симметричный ответ оператору – запретить анонсировать все режимы, кроме 100full:

customer ~ # ethtool -s eth1 autoneg on advertise 0x008
customer ~ # ethtool eth1
Settings for eth1:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  100baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  100baseT/Full 
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
        ...
	Link detected: yes

Оператор задал жёстко скорость и дуплекс на порту

В этом случае получаем ситуацию, обратную предыдующей, со стороны абонента будет 100half, со стороны провайдера 100full:

isp-switch(config-if-ethernet1/15)#speed-duplex force100-full
isp-switch(config-if-ethernet1/15)#shutdown
isp-switch(config-if-ethernet1/15)#no shutdown
isp-switch#show interface ethernet status | i 1/15
1/15       UP/UP          f-100M  f-full  2100   FE 

customer ~ # ethtool eth1
Settings for eth1:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  100baseT/Half 
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: No
	Speed: 100Mb/s
	Duplex: Half
        ...
	Link detected: yes

Лучше так не делать, иначе вам придётся иметь дело с абонентом и просить его установить жёстко 100full (и после смены оборудования/переустановки ПО у клиента опять будет 100half со всеми вытекающими)

Линк GE-GE и двухпарный кабель

speed-duplex capabilities scheme for GE-GE
Ни для кого не секрет, что для 100мбитных медных линков достаточно двухпарного кабеля и такой производится и используется в целях экономии.
Может случится страшное и между двумя GE-портами окажется такой кабель, тогда возможны 2 сценария: линк поднялся и линк не поднялся. Если линк поднялся(с обеих сторон настройки по умолчанию, то есть включен autonegotiation), то трафик ходить не будет, потому что линк поднимется на скорости 1000full, а для работы таких нужен четырёхпарный кабель. Рано или поздно абонент или инсталлятор этого подключения могут догадаться и поставить жёстко 100full в настройках порта на стороне абонента. В этом случае сервис как-то заработает, но со стороны провайдера будет 100half и опять же ошибки, задержки и потери.

Выход из этого положения – разрешить только 100full на стороне оператора:

isp-switch(config-if-ethernet1/28)#speed-duplex auto 100 full 
isp-switch(config-if-ethernet1/28)#shutdown
isp-switch(config-if-ethernet1/28)#no shutdown 

А если свитч оператора такое не умеет, то со стороны абонента:

customer ~ # ethtool -s eth1 autoneg on advertise 0x008

Если же линк изначально не поднимается, то решение точно такое же – установить 100full capability с одной из сторон(предпочтительно, со стороны оператора, чтоб не иметь проблем с абонентом после смены его оборудования или переустановки ПО).

Команды для других свитчей

Huawei S2300(в режиме конфигурирования интерфейса):

 auto speed 100
 auto duplex full

Edge-Core ES3528M(в режиме конфигурирования интерфейса):

 no capabilities 10half
 no capabilities 10full
 no capabilities 100half

Eltex MES(в режиме конфигурирования интерфейса):

 negotiation 100f

DLink DGS3600:

config ports 1:23 speed auto capability_advertised 100_full
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s