13.4. Слушатель InetDhcpListener

13.4.1. Процессор ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpProcessor
13.4.2. Процессор ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpHelperProcessor

Предназначен для обработки DHCP-пакетов для схем DHCP.82, ISG/CLIPS+DHCP.82. Используется в InetAccess, добавляется в контейнер следующим образом:

<context name="dhcp">
  <!-- Cоздание процессора dhcp-пакетов -->
  <bean name="dhcpProcessor" class="ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpProcessor"/>

  <scheduledExecutorService name="hrlydtlggr" corePoolSize="1" />

  <!-- Cоздание dataLogger, сохраняющего dhcp-пакеты на диск  -->
  <bean name="dhcpDataLogger" class="ru.bitel.bgbilling.modules.inet.dhcp.DhcpHourlyDataLogger">
    <param name="scheduledExecutor">hrlydtlggr</param>
  </bean>
 
  <!-- Cоздание слушателя dhcp-пакетов на порту с передачей ему процессора и dataLogger -->
  <bean name="dhcpListener" class="ru.bitel.bgbilling.kernel.network.dhcp.DhcpListener">
    <constructor>
      <!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
      <param name="host" value=""/>
      <!-- Порт, на котором будет открыт сокет -->
      <param name="port" value="67"/>
      <!-- Размер буфера приема слушателя -->
      <param name="byteBufferCapacity">512 * 1024</param>
      <!-- Количество потоков-обработчиков -->
      <param name="threadCount">10</param>
      <!-- Максимальное количество пакетов в очереди на обработку -->
      <param name="maxQueueSize">200</param>
      <!-- Передача процессора -->
      <param name="processor">dhcpProcessor</param>
      <!-- Передача dataLogger -->
      <param name="dataLogger"></param>
    </constructor>
  </bean>
</context>

Параметры:

host - IP-адрес, на котором слушатель, пустое значение - прослушивать любой IP-адрес;
port - прослушиваемый UDP порт;
byteBufferCapacity - размер буфера для приёма пакетов;
threadCount - число потоков-обработчиков пакетов, рекомендуемые значения 10-50, не рекомендуется указывать более 100;
maxQueueSize - максимальный размер очереди пакетов, при превышении размера очереди пакеты начинают отбрасываться и высылается аларм. Рекомендуемые значения 200-1000. Следует учитывать, что если по какой-то причине сервер не успевает обрабатывать пакеты, очередь растет, то какие-то пакеты из очереди могут быть обработаны с опозданием и DHCP-клиент уже выслал повторный запрос, который опять попадет в очередь и опять может быть обработан с опозданием. Поэтому большое значение вместо распределения нагрузки может вызвать ее увеличение;
dataLogger - объект, осуществляющий запись бинарных логов, по умолчанию это объект типа ru.bitel.bgbilling.modules.inet.dhcp.DhcpHourlyDataLogger (сохранение бинарных логов с разбивкой по источникам и часам);
processor - процессор, реализующий логику обработки пакетов.