100mb/s по pppoe в Debian

Как и писал раньше, провели мне GPON, то бишь 100 Мбит/с (не 200 Мбит/с потому, что через старенький роутер). Доступ в интернет появляется после поднятия pppoe-сессии, стало быть, нужно ее через что-то поднимать. Дальше буду рассказывать, как отвоевывал скорость соединения.

Роль домашнего сервера у меня играет Pegatron Walle L6 на Intel Atom N230.

Pegatron Walle L6

На данный аппарат водружен Debian/Testing, а это Wheezy сейчас. Внутри крутятся всякие сервисы-сервера для любительских разработок и просто самообразования.

Также сервер этот играет роль домашнего маршрутизатора, поднимая pppoe-сессию (а раньше и pptp) до провайдера. Изначально выполнялось средствами пакета pppoe:

(SERVER)root@dmserver:~# aptitude show pppoe
Пакет: pppoe                                    
Состояние: установлен
Автоматически установлен: нет
Версия: 3.8-3
Приоритет: необязательный
Раздел: net
Сопровождающий: Andreas Barth <aba@not.so.argh.org>
Размер в распакованном виде: 332 k
Зависимости: libc6 (>= 2.5), ppp (>= 2.3.10-1)
Описание: PPP over Ethernet driver
PPP over Ethernet (PPPoE) is a protocol used by many ADSL Internet service providers. This package allows you to connect to those PPPoE service providers.

Конфигурационный файл унаследовался от ADSL, который тоже требовал pppoe. Был он следующего вида:

(SERVER)root@dmserver:~# cat /etc/ppp/peers/adsl
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1412"
noipdefault
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
noaccomp
default-asyncmap

Внимание мое привлек факт, что скорость скачивания не поднималась выше 6 Мб/с:

(SERVER)root@dmserver:~# wget ftp://ftp.tomsknet.ru/test4
--2011-10-12 21:18:31--  ftp://ftp.tomsknet.ru/test4
           => «test4»
Распознаётся ftp.tomsknet.ru (ftp.tomsknet.ru)... 217.18.130.25
Подключение к ftp.tomsknet.ru (ftp.tomsknet.ru)|217.18.130.25|:21... соединение установлено.
Выполняется вход под именем anonymous ... Выполнен вход в систему!
==> SYST ... готово.  ==> PWD ... готово.
==> TYPE I ... готово.   ==> CWD не нужен.
==> SIZE test4 ... 104857600
==> PASV ... готово.  ==> RETR test4 ... готово.
Размер (байт): 104857600 (100M) (не достоверно)

100%[=====================================================>] 104 857 600 6,45M/s   за 16s   

2011-10-12 21:18:47 (6,23 MB/s) - «test4» saved [104857600]

Эй, а где заявленные 100Мбит/с? На помощь приходит пакет ppp, который уже установлен по зависимостям:

(SERVER)root@dmserver:~# aptitude show ppp
Пакет: ppp                                      
Состояние: установлен
Автоматически установлен: да
Версия: 2.4.5-5
Приоритет: необязательный
Раздел: admin
Сопровождающий: Marco d'Itri <md@linux.it>
Размер в распакованном виде: 1 040 k
Зависимости: libc6 (>= 2.7), libpam0g (>= 0.99.7.1), libpcap0.8 (>= 0.9.8), libpam-modules, libpam-runtime, procps
Ломают: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)
Описание: служба реализующая протокол точка-точка (PPP)
 Протокол PPP (Point-to-Point Protocol -- точка-точка) обеспечивает стандартный механизм передачи данных (дейтаграмм) через последовательные линии связи, а также предварительного согласования различных параметров канала связи.

Этот пакет наиболее часто используется для создания коммутируемых соединений (dial-up) и некоторыми видами широкополосного доступа (GPRS).

Внутри есть несколько плагинов, в том числе и для pppoe:

(SERVER)root@dmserver:~# dpkg -L ppp | grep rp-pppoe
/usr/lib/pppd/2.4.5/rp-pppoe.so

Пробуем его:

(SERVER)root@dmserver:~# cat /etc/ppp/peers/gpon
plugin rp-pppoe.so
eth0
noipdefault
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
persist
noauth
noaccomp
default-asyncmap
updetach

Результат:

(SERVER)root@dmserver:~# wget ftp://ftp.tomsknet.ru/test4
--2011-10-12 21:23:14--  ftp://ftp.tomsknet.ru/test4
           => «test4»
Распознаётся ftp.tomsknet.ru (ftp.tomsknet.ru)... 217.18.130.25
Подключение к ftp.tomsknet.ru (ftp.tomsknet.ru)|217.18.130.25|:21... соединение установлено.
Выполняется вход под именем anonymous ... Выполнен вход в систему!
==> SYST ... готово.  ==> PWD ... готово.
==> TYPE I ... готово.   ==> CWD не нужен.
==> SIZE test4 ... 104857600
==> PASV ... готово.  ==> RETR test4 ... готово.
Размер (байт): 104857600 (100M) (не достоверно)

100%[=====================================================>] 104 857 600 11,1M/s   за 9,0s   

2011-10-12 21:23:23 (11,1 MB/s) - «test4» saved [104857600]

Более того, исключив роутер из цепочки, можно поднять скорость и до 20Мб/с.

При практически идентичных конфигах второй вариант дает выигрыш почти вдвое больший, нагрузка на процессор в обоих случаях не является сколько-нибудь заметной. А если не видно разницы, зачем платить больше? (с)

Насколько я понимаю, идеологически первый вариант более хорош: ppp устанавливает соединение, а pppoe уже работает уровнем выше, реализуя необходимый протокол. То есть самый настоящий Unix-way, когда каждый модуль занимается только своим делом. И даже вполне может статься, донастройка конфигов поднимет скорость до приемлемых величин. Но какое это может иметь значение для ленивых чайников вроде меня?

Добавить комментарий

Ваш e-mail не будет опубликован.