Данный способ диагностики применим в случае появления проблем с установлением PPPoE сессий клиентами, находящимися за ONT, либо клиентами, запущенными на ONT. В этом случае, если на OLT включен PPPoE Intermediate agent, для анализа можно воспользоваться функцией перехвата фреймов PPPoE, проходящих через OLT. Таким образом, при включении расширенного логирования по модулю OLT pppoe-ia, в логе можно будет увидеть как фреймы PPPoE, поступающие от ONT, так и ответные фреймы от BRAS, установленного на сети. Данная информация будет включать заголовки данных пакетов, типы запросов и прочее.
| Информация |
|---|
В дефолтной конфигурации на чип OLT назначен профиль pppoe-ia с именем pppoe-ia-00. По умолчанию функционал профиля отключен и OLT не осуществляет перехват и анализ заголовков транзитных PPPoE пакетов. Обычно данный профиль включается с целью добавления дополнительной информации об отправляемом в сеть клиентском PPPoE запросе, например о номере pon-порта откуда поступил запрос , путем добавления к фрейму специального PPPoE Vendor Specific tag. В данной статье рассмотрим включение данного функционала без добавления специальных меток, а только включение перехвата для анализа. |
В случае, если на OLT уже настроен профиль pppoe-ia, можно приступать сразу к выполнению пункта 2. Ниже приведена настройка начиная с активации профиля pppoe-ia.
Перейдите в режим конфигурирования, далее в режим настройки дефолтного pppoe-ia профиля. Активируйте профиль PPPOE-IA, который назначен на OLT чип по умолчанию, примените и сохраните настройки.
Без форматирования LTP-8X# configure terminal LTP-8X(config)# profile pppoe-ia pppoe-ia-00
При наличии проблем у клиентов с PPPoE, на OLT можно настроить логгирование уровня Debug по агенту PPPoE-IA для анализа и поиска причин.
PPPoE Intermediate Agent применяется для предоставления BRAS дополнительных данных о полученном PADI-запросе. К таким данным можно отнести информацию о терминале, на котором запущен PPPoE Intermediate Agent, а также информацию об ONT, с которого получен PADI-запрос. Модификация PADI пакетов производится путем перехвата и последующей обработки на CPU терминала.
1. В первую очередь, нужно включить обработку PPPoE трафика командой enable:
...
LTP-8X(config-pppoe-ia)("pppoe-ia-00")#
...
enable LTP-8X(config-pppoe-ia)("pppoe-ia-00")# do commit LTP-8X(config-pppoe-ia)("pppoe-ia-00")# do save LTP-8X(config-pppoe-ia)("pppoe-ia-00")# exitНа MA4000 для подтверждения выполненных в конфигурации изменений будет использоваться команда confirm.
Все клиентские PPPoE сессии, которые будут установлены после активации профиля, будут доступны для мониторинга.
Из дефолта, обработка PPPoE трафика выключена.
После применения настроек, можно мониторить активные PPPoE-сессии на gpon-port'ах:
| панель |
|---|
LTP-8X# show interface gpon-port 0 pppoe sessions |
...
Без форматирования LTP-8X#
...
show interface gpon-port 0 pppoe sessions PPPoE sessions (1): ## Serial GPON-port Ont ID Port Client MAC Session ID Duration Unblock 1 ELTX91000020 0 6 490 EC:B1:E0:23:4B:E6 0x0019 0:03:18 0:00:00Далее необходимо настроить уровень логирования для модуля pppoeia и модулей, отвечающих за запись отладочных сообщений в локальный лог-файл.
Для LTP-X данная конфигурация будет выглядеть так.Без форматирования LTP-4X(config)# logging module pmchal-pppoeia loglevel debug LTP-4X(config)# logging system loglevel debug LTP-4X(config)# logging file loglevel debug LTP-4X(config)# do commit LTP-4X(config)# do saveДля MA4000 настройка будет иметь некоторые отличия. Настройка будет выполняться по отдельным слотам. А конфигурация параметров уровня вывода в файл осуществляется в настройках logging filter. При этом для каждого слота будет использоваться свой logging filter. Например, для слота 0 настройка будет выглядеть следующим образом:
Без форматирования ma4000(config)# logging filter slot0 ma4000(pp4x-config-log-filter-slot0)# facility any debug ma4000(pp4x-config-log-filter-slot0)# exit ma4000(config)# slot 0 logging system loglevel debug ma4000(config)# slot 0 logging module pmchal-pppoeia loglevel debug ma4000(config)# do commit ma4000(config)# do confirmЕсли необходимо настроить отправку отладочных логов на удаленный syslog-сервер, расположенный в сети, необходимо дополнительно выполнить.
На LTP-X:Без форматирования LTP-4X(config)# logging remote 1.1.1.1 LTP-4X(config)# do commit LTP-4X(config)# do saveНа MA4000:
Без форматирования ma4000(config)# logging host 1.1.1.1 port 514 transport udp debug ma4000(config)# do commit ma4000(config)# do confirmВ данных примерах адрес удаленного syslog сервера указан 1.1.1.1. Необходимо заменить на актуальное значение.
Для того чтобы вернуть исходные настройки логирования по завершению анализа, выполните:
На LTP-X:Без форматирования LTP-4X(config)# logging module pmchal-pppoeia loglevel notice LTP-4X(config)# logging system loglevel notice LTP-4X(config)# logging file loglevel notice LTP-4X(config)# do commit LTP-4X(config)# do saveНа MA4000:
Без форматирования ma4000(config)# logging filter slot0 ma4000(pp4x-config-log-filter-slot0)# facility any info ma4000(pp4x-config-log-filter-slot0)# exit ma4000(config)# slot 0 logging system loglevel notice ma4000(config)# slot 0 logging module pmchal-pppoeia loglevel notice ma4000(config)# do commit ma4000(config)# do confirm
| Примечание |
|---|
После выполнения данных настроек, лог будет объемным. В логе будет присутствовать информация о каждом управляющем PPPoE пакете, который будет проходить через OLT. Наличие большого количества сообщения может вызывать излишнюю нагрузку на CPU OLT. Поэтому по завершению анализа рекомендуется вернуть настройки логирования в исходное состояние как описано в п.4. |
Локально лог можно посмотреть следующими командами:
Для LTP-X:
| Без форматирования |
|---|
LTP-4X# show log ltp
LTP-4X# show log buffer |
Для MA4000:
| Без форматирования |
|---|
ma4000# show log slot0 |
Для понимания отладки обратите внимание на то, из каких заголовков состоит PPPoE-фрейм.
| Без форматирования |
|---|
|
3. После выполнения настроек логгирования, можно вести анализ PPPoE трафика по лог файлам (buffer, ltp, ltp.1...).
Напомним структуру PPPoE-пакета:
| Без форматирования |
|---|
+-----------+-----------+-----------+-------------+--------------------+----------- | DMAC | SMAC | Type/Length | Payload Data | FCS | | 6 bytes | 6 bytes | 2 bytes | Variable length | 4 bytes | +-----------+-----------+-------------+--------------------+----------- | | | | | | | | | | +----------+----------+--------+------------+----------+--------------- | Ver | Type | Code | Session ID | Length | Payload Data1| | 4 bits | 4 bits | 1 byte | 2 bytes | 2 bytes | | +-- +----------+----------+--------+------------+----------+--------------+----------+--------------- |
Теперь, рассмотрим перехваченные пакеты PADI (PPPoE Active Discovery Initiation) и PADR (PPPoE Active Discovery Request) в логах. Их посылает pppoe-клиент, которым является WAN на ONT. Либо устройство за ONT, если ONT настроена в режиме Bridge.
-- |
Далее рассмотрим пример debug лога, полученного на LTP-4X. Отладочные сообщения имеют префикс pmchal: debug: [PPPOEIA]. Здесь мы можем видеть в логах процедуру установления сессии клиентом и, соответственно, фреймы PADI, PADO, PADR, PADS.
| панель |
|---|
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: rx(60): c=2,p=3681 p->s PADI ff ff ff ff ff ff e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 09 00 00 00 0c 01 03 00 04 00 6b ... |
| панель |
Aug 26 13:09:31 LTP-8X pmchal: debug: [PPPOEIA] |
Dst.mac - ff ff ff ff ff ff (48 5b 39 02 55 84)
Src.mac - ec b1 e0 23 4b e6
Отправленный пакет PADI, инициирует начало установления PPPoE-сессии. В ответ на полученный PADI, сервер должен отправить PADO (PPPoE Active Discovery Offer). На него в ответ клиент посылает PADR. И затем, цикл установленния PPPoE-сесии завершается отправкой сервером пакета PADS (PPPoE Active Discovery Session-confirmation).
Если, в ответ на PADI(PADR) сообщение от PPPoE-сервера не приходит PADO(PADS), то следует разбираться с сетью выше OLT.
Разрывы сессии
Если происходят разрывы PPPoE-сессии, и при этом ONT не отключается, то следует смотреть пакеты PADT ((PPPoE) Active Discovery Termination).
Этот пакет обрывает соединение с POP. Он может быть послан либо со стороны пользователя, либо со стороны сервера.
64): c=2,p=000 s->p PADS e0 d9 e3 5a c2 c8 98 de d0 06 7f 60 81 00 02 58 88 63 11 65 00 01 00 0c 01 01 00 00 01 03 ... |
Например, разберем первое сообщение из этого лога - PADI от клиента. Информация по нему включает следующие строки.
| панель |
|---|
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: rx(60): c=2,p=3681 p->s PADI ff ff ff ff ff ff e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 09 00 00 00 0c 01 03 00 04 00 6b ... |
| панель |
Aug 26 13:09:20 LTP-8X pmchal: debug: [PPPOEIA] |
В примере выше, инициатором разрыва сессии, выступает сервер, так как Dst.mac= ec b1 e0 23 4b e6 мак клиента, а Src.mac=48 5b 39 02 55 84 мак сервера.
В примере ниже, инициатором разрыва сессии, выступает клиент, так как первым идёт мак сервера, Dst.mac=48 5b 39 02 55 84, a Src.mac=ec b1 e0 23 4b e6 мак клиента.
RX: tx(68): ff ff ff ff ff ff e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 09 00 00 00 1c 01 03 00 04 00 6b ... |
Здесь мы можем видеть следующее (построчно):
- Запрос поступил (RX - запрос получен чипом) с pon-порта 2, с GEM-порта 3681 (c=2,p=3681) ID ONT здесь указан не будет. Далее виден тип сообщения PADI и L2 заголовки фрейма: ff ff ff ff ff ff - destination MAC, e0 d9 e3 5a c2 c8 - source MAC, и.т.д.
- Информацию о длине пакета. при наличии ошибки wrong frame format - can not find EndOfList tag, её можно проигнорировать.
- Информацию о добавленных PPPOE-IA агентом тегах к фрейму. В данном примере они не добавляются.
- Информацию о количестве меток VLAN, TPID, и идентификаторах VLAN в HEX.
- Информацию о том, что фрейм отправлен с чипа и заголовки фрейма после возможной модификации чипом в HEX.
Ниже приведен пример Termination Request (PADT), вызванного клиентом.
| панель | |
|---|---|
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 | |
| панель | |
Aug 26 12:44:12 LTP-8X pmchal: debug: [PPPOEIA] | |
| Примечание | |
После анализа проблем с PPPoE, верните прежний уровень логгирования system, file, pmchal-pppoeia. Без форматирования | SESTB: delses: NOTE: Session does not exist: chan=2, port=3681, client=e0:d9:e3:5a:c2:c8, server=1c:af:f7:0e:1c:17, sess=000c, start=0, hostUniq=00 00 |