Данный способ диагностики применим в случае появления проблем с установлением 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.

  1. Перейдите в режим конфигурирования, далее в режим настройки дефолтного pppoe-ia профиля.  Активируйте профиль PPPOE-IA, который назначен на OLT чип по умолчанию, примените и сохраните настройки.

    LTP-8X# configure terminal
    LTP-8X(config)# profile pppoe-ia pppoe-ia-00
    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 сессии, которые будут установлены после активации профиля, будут доступны для мониторинга.

    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


  2. Далее необходимо настроить уровень логирования для модуля 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


  3. Если необходимо настроить отправку отладочных логов на удаленный 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. Необходимо заменить на актуальное значение.

  4. Для того чтобы вернуть исходные настройки логирования по завершению анализа, выполните:
    На 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-фрейм.

            +-----------+-----------+-------------+--------------------+-----------
            |   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  |              |
            +----------+----------+--------+------------+----------+---------------

Далее рассмотрим пример 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 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: wrong frame format - can not find EndOfList tag, len=36
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: cid+rid='^A'
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] VLTAG: msgVlanTagsNum=1, vlanOuterOrig=(1,8100,0258), vlanOuter=(1,8100,0258), vlanInner=(0,0000,0000)
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] 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 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA]
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: rx(75): c=2,p=000 s->p PADO e0 d9 e3 5a c2 c8 98 de d0 06 7f 60 81 00 02 58 88 63 11 07 00 00 00 33 01 02 00 0b 6b 6f ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA]
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: rx(60): c=2,p=3681 p->s PADR 98 de d0 06 7f 60 e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 19 00 00 00 24 01 01 00 00 01 03 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] SESTB: addses: id=0: chan=2, port=3681, client=e0:d9:e3:5a:c2:c8, server=98:de:d0:06:7f:60, sess=0000, start=1732004485, hostUniq=00 04 00 6b 20 38
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: wrong frame format - can not find EndOfList tag, len=60
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: cid+rid='^A'
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] VLTAG: msgVlanTagsNum=1, vlanOuterOrig=(1,8100,0258), vlanOuter=(1,8100,0258), vlanInner=(0,0000,0000)
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: tx(76): 98 de d0 06 7f 60 e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 19 00 00 00 34 01 01 00 00 01 03 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA]
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] RX: rx(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 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] SESTB: start: id=0: chan=2, port=3681, client=e0:d9:e3:5a:c2:c8, server=98:de:d0:06:7f:60, sess=0001, start=1732004485, hostUniq=00 00
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] ONTTB: addses: c=2,p=3681 sessNum=1

Например, разберем первое сообщение из этого лога - 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 ...
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: wrong frame format - can not find EndOfList tag, len=36
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] addvstag: cid+rid='^A'
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] VLTAG: msgVlanTagsNum=1, vlanOuterOrig=(1,8100,0258), vlanOuter=(1,8100,0258), vlanInner=(0,0000,0000)
Nov 19 15:21:25 LTP-4X pmchal: debug: [PPPOEIA] 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 ...

Здесь мы можем видеть следующее (построчно):

  1. Запрос поступил (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, и.т.д.
  2. Информацию о длине пакета. при наличии ошибки wrong frame format - can not find EndOfList tag, её можно проигнорировать.
  3. Информацию о добавленных PPPOE-IA агентом тегах к фрейму. В данном примере они не добавляются.
  4. Информацию о количестве меток VLAN, TPID, и идентификаторах VLAN в HEX.
  5. Информацию о том, что фрейм отправлен с чипа и заголовки фрейма после возможной модификации чипом в HEX.

Ниже приведен пример Termination Request (PADT), вызванного клиентом.

Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [PPPOEIA] RX: rx(60): c=2,p=3681 p->s PADT 1c af f7 0e 1c 17 e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 a7 00 0c 00 0c 01 03 00 04 00 6b ...
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [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
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [PPPOEIA] addvstag: wrong frame format - can not find EndOfList tag, len=36
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [PPPOEIA] addvstag: cid+rid='^A'
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [PPPOEIA] VLTAG: msgVlanTagsNum=1, vlanOuterOrig=(1,8100,0258), vlanOuter=(1,8100,0258), vlanInner=(0,0000,0000)
Nov 19 15:21:23 KOZM-KULAKOVO-GPON1 pmchal: debug: [PPPOEIA] RX: tx(68): 1c af f7 0e 1c 17 e0 d9 e3 5a c2 c8 81 00 02 58 88 63 11 a7 00 0c 00 1c 01 03 00 04 00 6b ...