forum.bitel.ru
http://forum.bitel.ru/

[6.1] Поиск по giaddr
http://forum.bitel.ru/viewtopic.php?f=44&t=10662
Страница 1 из 1

Автор:  Phricker [ 29 июн 2015, 19:52 ]
Заголовок сообщения:  [6.1] Поиск по giaddr

На вики есть статья про разные типы устройств c разным форматом agentRemoteId

Заведена следующая ветка
Изображение
Конфиг устройств.

AGG
Код:
dhcp.deviceSearchMode=0

D-Link
Код:
#Определение option82 как строк
dhcp.option82.remoteId.type=0
# Нужно указать код субопции опции 82 для извлечения значений
# agentRemoteId обычно находится в субопции 2
dhcp.option82.agentRemoteId.code=2
# interfaceId обычно находится в субопции 1 (circuitId)
dhcp.option82.interfaceId.code=1
# vlanId обычно находится в субопции 1 (circuitId)
dhcp.option82.vlanId.code=1
# убираем заголовок-длину
dhcp.option82.removeHeader=2
# Нужно указать параметры извлечения agentRemoteId из субопции (dhcp.option82.agentRemoteId.code)
# позиция значения внутри субопции
dhcp.option82.agentRemoteId.position=0
# если длина значения может изменятся и нужно брать значение до конца субопции, то укажите -1
dhcp.option82.agentRemoteId.length=6
# код субопции 82, содержащей интерфейс, позиция и длина в субопции
dhcp.option82.interfaceId.position=2
dhcp.option82.interfaceId.length=2

HuaWei
Код:
# убираем заголовок-длину
dhcp.option82.removeHeader=0
# позиция agentRemoteId
dhcp.option82.agentRemoteId.position=0
dhcp.option82.agentRemoteId.length=0
#Определение option82 как строк
dhcp.option82.remoteId.type=1


DHCP приходящий с D-Link
Код:
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] InetAbstractDhcpProcessor - REQUEST:
Message type: BOOT_REQUEST
Dhcp message type: DHCP Discover{1}
htype: 1, hlen: 6, hops: 1
xid: 734504267, secs: 176, flags: 0
Client IP: 0.0.0.0
Your IP: 0.0.0.0
Server IP: 0.0.0.0
Relay IP: 10.154.0.1
Client MAC: {20CF30950959}
  Requested IP Address{50}=10.154.0.112
  Host name{12}={monitoring}
  Parameter request list{55}={1, 28, 2, 3, 15, 6, 119, 12, 44, 47, 26, 121, 42}
  Agent information{82}=
    sub{1}={000406570002}
    sub{2}={0006001B11215C93}

06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] AsciiProtocolHandler - preprocessDhcpRequest
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] AsciiProtocolHandler - circuitId=...W..
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] AsciiProtocolHandler - remoteId=.....!\�
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] InetAbstractDhcpProcessor - REQUEST_AFTER_PREPROCESS:
Message type: BOOT_REQUEST
Dhcp message type: DHCP Discover{1}
htype: 1, hlen: 6, hops: 1
xid: 734504267, secs: 176, flags: 0
Client IP: 0.0.0.0
Your IP: 0.0.0.0
Server IP: 0.0.0.0
Relay IP: 10.154.0.1
Client MAC: {20CF30950959}
  Requested IP Address{50}=10.154.0.112
  Host name{12}={monitoring}
  Parameter request list{55}={1, 28, 2, 3, 15, 6, 119, 12, 44, 47, 26, 121, 42}
  Agent information{82}=
    sub{1}={000406570002}
    sub{2}={0006001B11215C93}
Common options: {agentRemoteId=.....!\�, interfaceId=...W..}
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] InetAbstractDhcpProcessor - Agent device not found by agentRemoteId=.....!\�
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] InetDhcpDevice - Search serv on deviceId: 1841; 1; interfaceId: 0
06-29/16:43:17  INFO [dhcpLstnr-p-11-t-42] InetDhcpProcessor - InetServ not found.


В общем проблема в следующем.
Клиент сидящий с HuaWei - подключается.
У него option82 приходит как строка
Код:
 Agent information{82}=
    sub{1}={31}
    sub{2}={3233372E3834302E3030312E303832}


Клиент который подключается с DLink - не найдено устройство, о чем собственно написано.

Если конфиги HuaWei и DLink прописывать в AGG все работает, но только для одного конкретного коммутатора соответственно.

Автор:  Amir [ 29 июн 2015, 20:17 ]
Заголовок сообщения:  Re: [6.1] Поиск по giaddr

AsciiProtocolHandler какой-то странный remoteId проставляет для DLink - remoteId=.....!\�
Он установлен у AGG?

Автор:  Phricker [ 29 июн 2015, 20:22 ]
Заголовок сообщения:  Re: [6.1] Поиск по giaddr

чОрд. Туда то я не посмотрел.
Да у AGG стоит следующее.
Код:
      DhcpOption circuitIdOption = request.getSubOption( (byte)1 );
      DhcpOption remoteIdOption = request.getSubOption( (byte)2 );

      String circuitId = new String( circuitIdOption.value, "UTF-8" );
      String remoteId = new String( remoteIdOption.value, "UTF-8" );


      logger.info( "circuitId=" + circuitId );
      logger.info( "remoteId=" + remoteId );

      request.setOption( InetDhcpProcessor.AGENT_REMOTE_ID, remoteId );
      request.setOption( InetDhcpProcessor.INTERFACE_ID, circuitId );

Но если я уберу это, то как тогда будет проверяться строка которая приходит с HuaWei?

Автор:  Amir [ 29 июн 2015, 20:42 ]
Заголовок сообщения:  Re: [6.1] Поиск по giaddr

В giaddr же AGG указан? Т.е. получается, что определить, DLink это или Huawei можно только по содержимому пакета.
Значит и остается, что в этом скрипте в зависимости, например, от длины суб-опций по разному вытаскивать и проставлять AGENT_REMOTE_ID.

Автор:  Phricker [ 29 июн 2015, 20:47 ]
Заголовок сообщения:  Re: [6.1] Поиск по giaddr

Т.е. я вешаю обработчик протокола на AGG, который в зависимости от того, что пришло в option82, будет корректным образом расшифровывать и прописывать?
А уже потом будет происходить поиск устройства на котором абонент?

Автор:  Amir [ 29 июн 2015, 20:56 ]
Заголовок сообщения:  Re: [6.1] Поиск по giaddr

Только AGENT_REMOTE_ID.
Далее по AGENT_REMOTE_ID найдется агентское устройство и выполнится его предобработка и применятся его параметры, в т.ч. извлечения circuitId/VLAN/interface.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/