ну это же элементарнейшая вещь, стыдно такого не знать.
исторически, первобытные езернет-устройства, работавшие на витой паре, автосогласования не имели. тогда ещё не было FullDuplex. поэтому, когда было придумано автосогласование, в стандарте было определено - если противоположная сторона не отвечает на автосогласование, нужно перебрать 10/100 и остаться на HalfDuplex.
когда на порту принудительно выставляется какой-то режим работы, автосогласование при этом выключается и устройство перестаёт на него отвечать. в результате, если с одной стороны выставлен какой-то режим, а с другой стороны стоит Auto - вторая сторона будет считать первую сторону устаревшей и включит HalfDuplex.
а теперь представим себе ситуацию - с одной стороны стоит FullDuplex, с другой Auto. вторая сторона в соответствии со стандартом выставляет HalfDuplex. вторая сторона начинает передавать какой-то пакет. первая сторона тоже начинает передавать какой-то пакет - она же в FullDuplex, это нормально. вторая сторона в HalfDuplex видит эту передачу, считает её коллизией, обрывает передачу пакета, затаившись для повторной передачи. первая сторона считает CRC оборванного пакета и накручивает счётчик битых пакетов. вторая сторона перепосылает пакет - со второго, может быть с третьего и далее раза, он всё-таки доходит. в итоге для стороннего наблюдателя это выглядит как значительные потери - чем больше трафик, тем больше потерь.
мораль сей басни такова - - с обоих сторон должно стоять либо Auto, либо совпадающие режимы и скорости. - если с одной стороны Auto и это никак не изменить, а с другой стороны ну очень хочется выставить конкретный режим - надо ставить HalfDuplex. Тогда со стороны Auto тоже включится HalfDuplex и потерь не будет.
|