Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 8:

Протокол РРР

Параметры IPCP

С помощью протокола IPCP два устройства РРР производят согласование параметров IP-протокола перед установкой IP-соединения. Параметры IPCP включаются в пакет Configure-Request, подобный пакету протокола LCP. В табл. 8.5 приведены параметры IPCP, регулируемые RFC.

Таблица 8.5. Параметры протокола IPCP
Значение параметра Описание
1 IP-адреса
2 Протокол сжатия IP
3 Удаленный IP-адрес

Параметр 1 был исключен из новой редакции RFC и в настоящее время не используется. В его функции входило назначение IP-адресов устройствам РРР, которые принимают участие в сеансе. Однако было экспериментально доказано, что устройствам довольно трудно установить взаимно приемлемые IP-адреса. Поэтому вместо этого параметра был введен параметр 3.

Параметр 2 используется для согласования метода сжатия IP-пакетов с целью экономии полосы пропускания во время сеанса РРР. В настоящее время поддерживается метод сжатия заголовков TCP/IP Ван Якобсона (Van Jacobson). С его помощью можно сократить заголовок TCP/IP до трех октетов. Значение, посылаемое в пакете Configure-Request для включения функции сжатия IP, — 002d.

Параметр 3 используется для назначения IP-адреса клиентскому устройству РРР. С помощью этого параметра клиент может выбрать для себя приемлемый IP-адрес. Если хост РРР по какой-либо причине не может использовать, предложенный ему клиентом IP-адрес, то он может возвратить в пакете Configure-Nak альтернативный IP-адрес для клиента. По умолчанию никакой IP-адрес не назначается.

После успешного завершения переговоров IPCP через РРР-соединение могут пересылаться пакеты IP с одним из трех значений в поле Протокол: 0021 — для обычных, несжатых IP-пакетов, 002b — для TCP/IP-пакетов, сжатых по алгоритму Ван Якобсона, и 002f — для несжатых TCP-пакетов со сжатыми IP-заголовками (называемые несжатыми по Ван Якобсону).

Фаза завершения соединения

Когда клиенту требуется закончить сеанс РРР, он выдает пакет LCP типа Terminate-Request (описание пакетов LCP см. выше). Приняв такой пакет, сервер РРР должен ответить пакетом типа Terminate-Ack и разорвать соединение. Причем это не зависит от текущего состояния активных IP-соединений. Клиент может завершить сеанс РРР даже при активном IP-соединении. После того как сеанс РРР завершен, для открытия нового сеанса клиент должен выдать соответствующие пакеты LCP для установления соединения, даже если физическое соединение между модемами не было утеряно.

Реализации протокола РРР в ОС Linux

Операционная система Linux поддерживает протокол РРР, разбивая его функции на две части. Первая часть поддерживается на уровне ядра Linux, а вторая часть протокола РРР реализуется в прикладной программе для ОС Linux.

Функции РРР, которые необходимы для передачи пакетов HDLC через последовательное соединение, являются частью ядра ОС Linux. Благодаря этому достигается большая гибкость в работе по обычным телефонным линиям. Начиная с ядра Linux версии 2.0, был введен модульный принцип организации ядра. Теперь модули ядра можно загружать по мере необходимости и выгружать их, когда в них отпадает надобность, без компиляции ядра с новыми параметрами. В старых версиях ядра требовалась перекомпиляция ядра при добавлении или удалении из него каких-либо параметров. Теперь поддержка РРР в ядре включается намного легче. В большинство версий ядра поддержка РРР включается по умолчанию, так как сегодня он пользуется широкой популярностью.

Определить, включена ли в ядре вашей системы поддержка РРР, можно, наблюдая за сообщениями во время загрузки системы. Если во время загрузки появляется строка о поддержке РРР в ядре (или таковая имеется в файле отчета), то в ядре сконфигурирована поддержка РРР. В противном случае обратитесь к документации на имеющуюся версию ОС Linux или к документам PPP-HOWTO, если вы хотите добавить в систему поддержку протокола РРР.

Как уже отмечалось ранее, вторая часть айсберга РРР — это программа, которая управляет РРР-соединениями на сервере. Стандартом де факто для систем на базе ОС Linux стал программный пакет pppd, написанный Элом Лонгейром (Al Longyear), Полом Макеррасом (Paul Mackerras) и Майклом Калагеном (Michael Callahan). В большинство дистрибутивов ОС Linux включен бинарный пакет этой программы. В Red Hat 6.0 включена версия ppp-2.3.7, а в Caldera OpenLinux 2.2 входит ppp-2.3.5. Пакет pppd можно получить по FTP с сайта cs.anu.edu.au в каталоге /pub/software/ppp. Текущей версией на момент написания книги была ppp-2.3.10. Так как данный программный пакет сильно зависит от конфигурации ядра, настоятельно рекомендуем вам использовать версию РРР, которая поставляется с версией имеющегося ядра ОС Linux. Однако если вы любите приключения или имеете веские причины использовать именно последнюю версию РРР, то можно получить ее исходный код, а затем скомпилировать и установить ее самостоятельно. Текущую версию pppd можно получить в сети Internet по адресу:

ftp://cs.anu.edu.au/pub/software/ppp/ppp-2.3.10.tar.gz.

После получения файла извлеките его из архива tar. Далее выполните следующие шаги.

  • Запустите программу ./configure в рабочем каталоге ppp-2.3.5. С ее помощью создается Makefile для специфической версии ОС Linux.
  • Запустите GNU-программу make с параметром kernel ( make kernel ). Таким образом создаются файлы include для вашей версии Linux с необходимыми частями ядра для поддержки pppd.
  • Перекомпилируйте и установите новое ядро с поддержкой pppd (обратитесь к документации на имеющуюся версию ОС Linux, чтобы исключить любые неожиданности).
  • Запустите GNU программу make для компиляции программы pppd.
  • С правами пользователя root запустите программу GNU make с параметром install для создания выполняемых модулей и помещения их в соответствующие каталоги.

После установки pppd (либо с использованием бинарного пакета из поставки ОС Linux, либо компиляцией исходного кода) можно сконфигурировать pppd для работы в качестве клиента или сервера РРР.

Реализация клиента РРР в ОС Linux

Программа pppd может быть сконфигурирована для работы в качестве клиента РРР. Таким образом, можно реализовать подключение локального сервера электронной почты на базе ОС Linux с провайдером Internet, у которого находится хост РРР, с целью организации IP-соединения для передачи почты и другого IP-трафика. Для поддержки функций клиента РРР для ОС Linux имеются и другие программы. Ниже мы рассмотрим некоторые из них.

Параметры клиента в pppd

Для использования pppd в клиентском режиме необходимо настроить несколько параметров, которые отвечают за подключение и установление соединения с сервером РРР. Формат команды pppd следующий:

pppd <tty line> <speed> [options]

Здесь в роли <tty line> выступает последовательный СОМ-порт, к которому подключается модем (см. "Установка телекоммуникационного оборудования в ОС Linux" "Установка телекоммуникационного оборудования в ОС Linux"). Параметр <speed> обозначает скорость соединения модема с портом компьютера. Искусство применения программы заключается в подборе правильных параметров для команд, отдаваемых клиенту и серверу. Далее в этом разделе описываются некоторые параметры pppd для выполнения функций клиента РРР.

С помощью параметра connect в программе pppd можно использовать выполняемый сценарий оболочки для установки последовательных соединений перед началом работы программы pppd.

Параметр crtscts используется для включения аппаратного управления потоком RTS/CTS на последовательной линии.

Параметром defaultroute в таблице маршрутов задается маршрут по умолчанию, указывающий на IP-адрес удаленного сервера РРР. Запись в таблице маршрутов автоматически удаляется после прекращения сеанса РРР. Таким образом, Linux-серверу всегда будет известно, куда направлять IP-трафик, предназначенный для других сетей.

Параметр lock используется для создания специального файла в стиле UUCP для сигнализации о том, что модем занят.

Параметры mru и mtu позволяют регулировать максимальную величину принимаемого блока ( mru ) и максимальную величину передаваемого блока ( mtu ) во время фазы переговоров LCP. Помните, что принятие решения о величине этих блоков по-прежнему возлагается на сервер РРР. Довольно часто регулирование этих величин применяется на низкоскоростных линиях для уменьшения размера РРР-пакета.

С помощью параметра modem ОС Linux может использовать линии управления модемом. Так, если этот параметр задан, программа pppd будет ожидать появления сигнала несущей CD (carrier detect) при установлении соединения по модемной линии и сбрасывать сигнал готовности терминала DTR (data terminal ready) при разрыве соединения.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно