Тестирование сетевых карт Fast Ethernet

Сергей Пахомов, Сергей Самохин

Методика тестирования

Результаты тестирования

Выбор редакции

   3Com EtherLink XL 3C905C-TX-M

   Allied Telesyn AT2500

   Butterfly

   CNet CNPro 200

   COMPEX RE-100TX

   D-Link DFE-538TX

   Genius GF100TXR III

   IBM Ether Jet

   Intel Ether Express PRO/100+ Management Adapter

   Intel PRO 100B

   PRIME PX-100

   PRIME PX-100jr

   SMC EZ Card 10/100 (SMC 1211TX/WL)

   SMC EtherPower II 10/100 SMC9432TX/MP

   UTT

   Genius GE 2500III

Заключение

 

LinkPro TL-6600E

 

В тестовой лаборатории «КомпьютерПресс» проведено тестирование 15 сетевых адаптеров Fast Ethernet с интерфейсом PCI на предмет выяснения их производительности при использовании в сетях 100Base-TX. Тестировались: 3Com EtherLink 3C905C-TX-M, Allied Telesyn AT-2500, Butterfly, CNet CN Pro200, Compex RE100TX, D-Link DFE-538TX, Genius GF100TXR III, IBM Ether Jet, Intel Ether Express PRO/100+ Management Adapter, Intel PRO 100B, PRIME PX-100, PRIME PX-100jr, SMC EZ Card 10/100 (SMC 1211TX/WL), SMC EtherPower II 10/100 (SMC9432TX/MP), UTT. Вне конкурса был протестирован один адаптер Ethernet 10Base-TX Genius GE 2500III.

В тестовой лаборатории «КомпьютерПресс» было проведено тестирование 14 сетевых адаптеров стандарта Ethernet 10/100 Base-TX с интерфейсом PCI, предназначенных для использования в рабочих станциях.

Сетевой адаптер (Network Interface Card, NIC) в комплексе со своим драйвером является базовым элементом любой сети. В зависимости от логической топологии сети стека используемых сетевых протоколов и конструктивных особенностей сетевые адаптеры могут выполнять различный набор функций, но независимо от назначения основная задача любого сетевого адаптера — выполнять функцию сопряжения между компьютером и сетью. В этом смысле любой адаптер в комплекте с драйвером должен выполнять две основные операции: передачу и прием кадров.

С конструктивной точки зрения любой адаптер содержит несколько основных элементов: модуль согласования со средой передачи данных, входной/выходной буфер, микропроцессор адаптера, ПЗУ адаптера, модуль преобразования параллельного кода в последовательный и модуль согласования с компьютером. Естественно, конструктивные особенности всех элементов адаптера зависят и от типа логической топологии сети, и от типа среды передачи данных.

Модуль согласования адаптера со средой передачи данных зависит прежде всего от типа среды для передачи данных. Наиболее распространенной на сегодняшний день является сеть Fast Ethernet с теоретической пропускной способностью в 100 Мбит/с. В качестве среды передачи данных в такой сети может выступать либо волоконно-оптический кабель (100 Base-F), либо медный кабель «витая пара» (100 Base-T). Используют как экранированный (STP), так и неэкранированный (UTP) кабель либо пятой (CAT5), либо третий категории (CAT3). При использовании кабеля CAT3 задействуются все четыре пары четырехпарного кабеля, а сама среда именуется 100 Base-T4. Однако адаптеры, предназначенные для передачи данных по такой среде, используют достаточно редко. Более распространены адаптеры, предназначенные для работы с кабелем CAT5, в котором из четырех пар проводов используются только две: одна пара «работает» на передачу данных, а другая — на прием. Такая среда получила название 100 Base-TX. Для подсоединения адаптера к такой среде используют разъемы RJ-45. Разумеется, модуль согласования со средой передачи данных — это не только разъем для подсоединения адаптера к линии. Основная функция модуля — осуществление гальванической развязки с кабелем. Для этой цели могут использоваться как импульсные трансформаторы, так и оптроны.

Буферы ввода/вывода данных, как правило, конструктивно объединяемые в одной микросхеме с микропроцессором, необходимы для промежуточного хранения данных. Буферы осуществляют передачу данных по принципу «первый пришел — первый вышел» (FIFO). Использование буфера позволяет возложить функции контроля за сетью на адаптер. При этом сам компьютер может не отслеживать момент передачи данных.

Микропроцессор адаптера выполняет все основные функции. Он отвечает за окончательное формирование структуры кадра (добавление MAC-адреса источника и получателя) и вычисление контрольной суммы кадра. Учитывая, что данные передаются по сети не в том виде, в котором они поступают от компьютера к адаптеру, микропроцессор отвечает за необходимое логическое кодирование данных и формирование линейного кода.

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

Чтобы избежать таких ситуаций, для передачи данных применяется особое логическое кодирование, основанное на принципе избыточности. Смысл такого кодирования достаточно прост. Последовательность бит данных разбивается на отдельные порции, называемые символами. Затем каждый исходный символ заменяется на новый, который содержит уже большее количество бит, чем исходный. Например, логический код 4B/5B, используемый в сетях Fast Ethernet, означает, что каждому символу из четырех бит ставится в соответствие символ из пяти бит. Использование одного избыточного бита позволяет рассматривать некоторые комбинации последовательностей бит как запрещенные. Действительно, исходный символ длиной в 4 бита имел 16 различных битовых комбинаций, а результирующий символ длиной в 5 бит имеет 32 различных битовых комбинаций. Из этих 32 комбинаций отбираются только 16, которые и ставятся в соответствие исходным символам. Естественно, возникает вопрос: к чему такие сложности и какое преимущество дает такая подмена символов? Дело в том, что из 32 различных битовых комбинаций можно выбрать 16 таких комбинаций, в которых не встречалось бы более двух нулей подряд. Следовательно, в передаваемой последовательности бит исключается возможность появления длинных последовательностей нулей, что улучшает самосинхронизирующие свойства кода. Кроме того, поскольку часть битовых комбинаций является запрещенной, повышается вероятность распознавания приемником искаженных символов. Если приемник принимает запрещенный код, значит, на линии произошло искажение сигнала.

Другим способом логического кодирования, который в сети Fast Ethernet применяется совместно с кодом 4B/5B, является скрэмблирование. Скрэмблирование — это «перемешивание» исходных данных с целью улучшения логического кода. Основная цель процесса скрэмблирования — представить данные в таком виде, чтобы избежать длинных последовательностей повторяющихся битов.

Если с длинной последовательностью нулей успешно справляются с помощью логического кодирования 4B/5B и скрэмблирования, то для устранения длинных последовательностей единиц в стандарте Fast Ethernet используют потенциальный код с инверсией при единице NRZI (Non Return to Zero with ones Inverted). В данном коде используются два уровня сигнала. При передаче нуля потенциал не меняется, а при передаче единицы сигнал инвертируется на противоположный. Такой подход позволяет решить проблему синхронизации при приеме сигнала.

С целью еще большего улучшения самосинхронизирующих свойств передаваемого сигнала и уменьшения ширины спектра, что влечет за собой возможность увеличения скорости передачи и уменьшения мощности передатчика, данные подвергают еще одному типу линейного трехпозиционного кодирования — MLT-3 (Multi-Level Transition). В этом коде используются три уровня сигнала: -1, 0 и +1. Сам по себе код похож на NRZI — при передаче нуля потенциал сигнала не меняется, а при передаче единицы сигнал инвертируется. Единственное отличие заключается в том, уровень потенциала, представляющего единицу, зависит не от одного, а от двух предыдущих значений потенциалов, представляющих единицу. Так, три последовательные единицы всегда передаются тремя различными потенциалами (—1, 0, +1), и при этом не важно, имеются ли между этими единицами нули.

При передаче данных через сетевой адаптер микропроцессор осуществляет логическое кодирование, скрэмблирование и цифровое кодирование, а при приеме данных осуществляется (соответственно) обратное преобразование. Работой микропроцессора управляет микропрограмма, «зашитая» в ПЗУ процессора и драйвер адаптера.

Структурная схема преобразований данных в адаптере при приеме/передаче

Для согласования адаптера с компьютером служит модуль согласования с компьютером. Большинство современных адаптеров предназначены для установки в PCI-слот компьютера. Именно, согласование адаптера с PCI-шиной компьютера и отвечает за модуль согласования, выполняемый в виде отдельной микросхемы. Как известно, существует несколько типов PCI-шин, которые различаются и по тактовой частоте (66- и 33-мегагерцевые) и по ширине шины данных (32- и 64-битные). Для рабочих станций используются, как правило, сетевые адаптеры с поддержкой 32-битной 33-мегагерцевой PCI-шины, а 64-битные многопортовые адаптеры устанавливаются в серверы. Пропускная способность 32-битной 33-мегагерцевой PCI-шины составляет 133 Мбайт/с, что намного больше пропускной способности сети Fast Ethernet.

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

Кроме рассмотренных нами основных функций многие сетевые адаптеры наделяются дополнительными функциями. Среди наиболее распространенных стоит отметить следующие: автосогласование скорости функционирования, возможность удаленной загрузки, поддержка режима Bus Master, дистанционное включение (Wake on LAN), управление питанием (ACPI).

Возможность работы в сетях Ethernet 10Base-TX и Fast Ethernet 100Base-TX c автоопределением режима работы (автосогласование) означает, что адаптер сам определяет максимально возможную скорость функционирования. Кроме того, в этом случае допускается работа адаптера в неоднородной сети, а переход от сети Ethernet к Fast Ethernet не требует никаких дополнительных настроек.

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

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

Дистанционное включение (Wake on LAN) позволяет производить включение компьютера по сети при поддержке такой возможности материнской платой. Для этой цели используются трехконтактные разъемы на материнской плате и сетевом адаптере, соединяемые специальным кабелем. Кроме того, необходимо и специальное программное обеспечение.

Поддержка режима управления питанием ACPI позволяет снизить энергопотребление. APCI — это технология, обеспечивающая работу системы управления питанием и реализуемая как программными, так и аппаратными методами.

Впрочем, какими бы дополнительными функциями ни обладали сетевые адаптеры, главной характеристикой любого адаптера, определяющей его производительность, является пропускная способность. Казалось бы, о какой пропускной способности может идти речь, если самим стандартом Fast Ethernet определена пропускная способность в одном направлении равная 100 Мбит/с? Это действительно так, но в данном случае речь идет лишь о максимально возможной (теоретической) пропускной способности. Реальная же производительность адаптера зависит от конкретной модели и может быть существенно ниже.

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

Вместо того чтобы рассматривать пропускную способность адаптера и степень утилизации процессора по отдельности, лучше определить индекс эффективной производительности (Performance/Efficiency Index Ratio, P/E) как отношение пропускной способности адаптера (измеряемой в Мбит/с) к степени утилизации центрального процессора (измеряемой в %). Значение индекса эффективной производительности позволяет легко сравнивать адаптеры между собой — чем выше индекс, тем более производительным является адаптер.

Методика тестирования

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

Для проведения тестирования был собран стенд, состоящий из 9 рабочих станций, а для объединения компьютеров в одноранговую сеть использовался неуправляемый 12-портовый коммутатор 3Сom SuperStack II Baseline Switch. В качестве локальной сети для проведения тестирования использовалась сеть Fast Ethernet 100Base-TX с пропускной способностью 200 Мбит/с в полнодуплексном режиме работы. На всех рабочих станциях были установлены операционная система Microsoft Windows 2000 Professional SP1 и стек сетевых протоколов TCP/IP.

Конфигурация компьютера, на котором устанавливался тестируемый сетевой адаптер, была следующая:

  • материнская плата: DFI CS65-EC (чипсет i815);
  • процессор: Intel Pentium III — 650 МГц;
  • оперативная память: 128 Мбайт PC 133;
  • жесткий диск: IDE FUJITSU MDE 3084AE, 8,4 Гбайт.

Конфигурации всех остальных компьютеров-клиентов были одинаковыми:

  • материнская плата: ASUS P3BF (чипсет i440);
  • процессор: Intel Pentium III — 500 МГц;
  • оперативная память: 128 Мбайт PC 100;
  • жесткий диск: IDE FUJITSU MPD 3108AT, 9,4 Гбайт;
  • сетевой адаптер: 3Com 3C905B.

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

Другой возможный способ создания необходимых условий тестирования заключается одновременном использовании нескольких компьютеров-клиентов. Если копировать файл, расположенный в кэше компьютера, на котором установлен тестируемый сетевой адаптер, одновременно на несколько клиентов, то на долю каждого клиента приходится достаточно низкий трафик. Например, при использовании 10 клиентов максимальный трафик на каждый из них не превосходит 10 Мбит/с. При такой скорости передачи файла дисковая подсистема компьютера-клиента не сможет ограничивать пропускную способность сети, а сам трафик будет определяться пропускной способностью тестируемого сетевого адаптера.

В нашем тестировании для измерения производительности сетевых адаптеров использовались программные пакеты NetBench 7.0 компании Ziff Davis и IOmeter компании Intel.

Пакет NetBench 7.0 — это программный продукт, состоящий из набора тестов, предназначенных для тестирования производительности файловых серверов и сетевых адаптеров. Принцип действия теста сетевых адаптеров достаточно прост: файл размером около 100 Мбайт создается в оперативной памяти компьютера, на котором установлен тестируемый сетевой адаптер, после чего считывается несколькими (в нашем случае семью) компьютерами-клиентами. Считывание файла происходит последовательно, но порциями по 512 Кбайт, 1 Кбайт, 2 Кбайт, 4 Кбайт, 8 Кбайт, 16 Кбайт, 32 Кбайт и 64 Кбайт. Отдельный компьютер-контроллер синхронизирует действия всех клиентов и собирает статистику результатов. Результатом теста является зависимость полезного сетевого трафика от размера порции считывания.

Как следует из описания, тест NetBench реализует взаимодействие «оперативная память — сеть — оперативная память», что позволяет нагрузить именно тестируемую сетевую подсистему.

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

Разница между полным и полезным трафиками зависит от многих факторов, в частности от размера порции файла, которыми осуществляется передача. Чем меньше размер порции передачи, тем выше разница между полным и полезным трафиками. Проанализировав результаты тестов, мы пришли к выводу, что безотносительно к типу используемых адаптеров разница между полным и полезным трафиками в тесте NetBench составляет приблизительно 6% при размере порции чтения в 512 байт и постепенно уменьшается до 4% при размере порции чтения в 64 Кбайт. В тесте IOmeter разница между полным и полезным трафиками составляет 8-9% при размере порции чтения/записи в 512 байт и уменьшается до 3% при размере порции чтения/записи в 64 Кбайт.

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

Особенность теста NetBench заключается в том, что на самом компьютере с тестируемым сетевым адаптером не запускаются какие-либо программы, кроме System Monitoring. То есть инициаторами сетевого взаимодействия являются только компьютеры-клиенты. Такая ситуация не вполне отвечает действительности, так как обычно именно рабочие станции инициализируют процессы сетевого взаимодействия, например операции копирования файлов на сервер или, наоборот, с сервера. С другой стороны, поскольку на рабочих станциях не запускаются какие-либо приложения, степень утилизации процессора определяется исключительно работой сетевого драйвера и операционной системы, что позволяет более корректно определить индекс эффективной производительности.

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

Пакет IOmeter, по сути, является программным генератором сетевого трафика и позволяет измерять как полезный сетевой трафик, так и степень утилизации процессора. С его помощью можно измерять абсолютную пропускную способность сетевого адаптера как в режиме передачи, так и в режиме приема. При измерении пропускной способности в режиме приема на каждом из 8 компьютеров-клиентов устанавливалась программа генератора, эмулирующая сетевой трафик в направлении к компьютеру с тестируемым сетевым адаптером, а при измерении пропускной способности в режиме передачи программа генератора запускалась на компьютере с тестируемым адаптером и эмулировала сетевой трафик на 8 компьютеров-клиентов.

В обоих режимах работы тест IOmeter реализует взаимодействие «оперативная память — сеть — оперативная память», а считывание и запись данных происходит последовательно порциями по 512 Кбайт, 1 Кбайт, 2 Кбайт, 4 Кбайт, 8 Кбайт, 16 Кбайт, 32 Кбайт и 64 Кбайт.

Особенностью теста IOmeter является то, что утилизация процессора на компьютере с тестируемым адаптером практически полностью определяется запущенным на нем приложением, а не операционной системой. С одной стороны, это не позволяет определить степень участия операционной системы и сетевого драйвера в загрузке процессора, но, с другой стороны — более соответствует реальной ситуации.

В начало В начало

Результаты тестирования

Основные технические характеристики тестируемых сетевых адаптеров приведены в табл. 1.

Для оценки качества сетевых адаптеров мы выбрали ряд наиболее важных, на наш взгляд, характеристик, а именно: абсолютную пропускную способность и индекс эффективной производительности по результатам тестов NetBench и IOmeter, возможность удаленной загрузки (Boot ROM), дистанционное включение (Wake on LAN), управление питанием (ACPI) и сервисная поддержка. При этом отметим, что все протестированные нами карты поддерживают режимы автосогласования скорости функционирования и Bus Master.

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

Единственной проблемой, возникающей при этом, является определение результата выполнения тестовых программ NetBench и IOmeter. Обе эти программы представляют конечный результат в виде графиков зависимостей сетевого трафика от размера блока считываемых или записываемых данных, что очень удобно для визуального сравнения пропускных характеристик адаптеров, но неприемлемо для расчета показателя качества. В этом случае необходимо, чтобы все характеристики были представлены в числовом виде. Поэтому каждому графику следует поставить в соответствие некоторое число, то есть закодировать графики в числовом виде. Самый простой способ сделать это — определить средний сетевой трафик. Аналогичным образом рассчитывался средний индекс эффективной производительности.

Интегральные показатели качества сетевых адаптеров, рассчитанные по описанной выше методике, использовались при выборе самого качественного адаптера. Чем выше интегральный показатель качества адаптера, тем лучше. Если же разделить интегральный показатель качества адаптера на его цену, то полученное значение будет характеризовать уровень выгоды — чем выше отношение «качество/цена», тем выгоднее покупка адаптера. Результаты оценки характеристик адаптеров и интегральный показатель качества представлены в табл. 3.

Индексы эффективной производительности сетевых адаптеров

Средняя полная пропускная способность сетевых адаптеров в Мбит/с

Средняя утилизация процессора сетевыми адаптерами, (%)

В начало В начало

Выбор редакции

Победители проведенного тестирования определялись в номинациях «Самый качественный адаптер» и «Оптимальный адаптер».

Выбор победителей в номинации «Самый качественный адаптер» основывался на интегральном показателе качества. Лидером в этой номинации стала модель IBM Ether Jet. Второе место в этой номинации заняла модель Intel Ether Express PRO/100+ Management Adapter.

Выбор победителя в номинации «Оптимальный адаптер» основывался на отношении «цена/качество». Выбора редакции в этой номинации был удостоен сетевой адаптер Genius GF100TXR III. Второе место в этой номинации заняла модель PRIME PX-100jr.


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует