BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 17:43

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 08 дек 2010, 21:01 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Добрый день!

Есть следующая связка шлюзов
Zyxel -> Cisco2 -> DHCP

Zyxel определен как:
Код:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.vlan.CiscoSSHSwitchRuleEditor
gate_manager.class=bitel.billing.server.ipn.vlan.CiscoSSHSwitchGateWorker
use.script=1

Скрипт пустой

Cisco2 определен как:
Код:
gate_manager.class=bitel.billing.server.ipn.vlan.CiscoVlanParentGateWorker
use.script=1

Скрипт пустой

Шлюз DHCP определен как:
Код:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.EmptyContractRuleEditor
gate_manager.class=bitel.billing.server.ipn.DHCPGateWorker

В договоре на шлюзе определяю соответствие ip mac port 10.128.17.1 4 00-90-27-59-95-E7

Сервер DHCP пробовал определять и как
Код:
processor.class=bitel.billing.server.ext.dhcp.DHCPRelayProcessor
и как
processor.class=bitel.billing.server.ext.dhcp.DHCPVlanRelayProcessor

#Номер субопции в Option 82, в которой  хранится vlan клиента(нумерация с 1)
dhcp.82.key.option.code=1
#Позиция(номер байта) внутри субопции, в которой  хранится vlan клиента(нумерация с 0).
dhcp.82.key.position=2 (5 тоже ставил)


при открытии/закрытии шлюза в логах DHCPD вот такая ошибка:
DEBUG 08.12.2010 19:54:53,975 Thread-7 admin command
DEBUG 08.12.2010 19:54:53,977 Thread-7 set gate 61 127.0.0.1
INFO 08.12.2010 19:54:53,979 Thread-7 setGatePortMacIp: gateId = 61;port=-1;adress=10.128.17.1;mac=00 90 27 59 95 E7
WARN 08.12.2010 19:54:53,979 Thread-7 Bad port or ip to gateId or mac=61


Клиент: вер. 5.1 сборка 432 от 30.11.2010 20:27:37
os:Windows XP; java:Sun Microsystems Inc., v.1.6.0_22
Сервер: вер. 5.1 сборка 544 от 30.11.2010 20:27:27
os:FreeBSD; java:Sun Microsystems Inc., v.1.6.0

bill вер. 5.1 сборка 220 от 03.12.2010 19:00:21
card вер. 5.1 сборка 153 от 08.11.2010 11:30:50
dialup вер. 5.1 сборка 163 от 03.12.2010 17:27:16
email вер. 5.1 сборка 148 от 29.09.2010 13:00:35
ipn вер. 5.1 сборка 213 от 29.11.2010 19:07:45
npay вер. 5.1 сборка 166 от 24.11.2010 19:21:13
phone вер. 5.1 сборка 222 от 01.12.2010 11:46:09
reports вер. 5.1 сборка 162 от 29.09.2010 13:00:39
ru.bitel.bgbilling.plugins.documents вер. 5.1 сборка 116 от 29.09.2010 13:01:09
voiceip вер. 5.1 сборка 152 от 03.12.2010 17:27:32
BGDHCP_IPN 5.1_137


Последний раз редактировалось borisk 20 дек 2010, 11:41, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 11 дек 2010, 11:59 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Up. Пожалуйста, горит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 15 дек 2010, 13:45 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
up, пожалуйста


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 20 дек 2010, 11:42 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
up


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 23 дек 2010, 20:00 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
у тебя не определен похоже port, у меня нет значения -1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 23 дек 2010, 21:14 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
port чего? DHCP сервера? Определен. Но мне кажется что это порт клиента имеется в виду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 24 дек 2010, 10:54 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Все правильно, порт клиента, он прописан в дшсп, его посылает в пакете свич


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 24 дек 2010, 13:41 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Хорошо. Но есть, допустим, такая вот связка шлюзов:
DHCP -> Cisco2 -> Zyxel

где можно посмотреть реализацию этих шлюзов, чтобы понять как шлюз Zyxel сообщает наверх данные о портах? Вот ни где этой информации не нашел. То бишь как шлюз DHCP отправляет данные серверу - понятно, а вот как шлюз Zyxel отправляет данные шлюзу DHCP не понятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 26 дек 2010, 00:09 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Что конкретно не понятно? В настройках шлюза указывается ip адрес клиента, порт, mac адрес и все это привязывается к шлюзу.
Вот реализация шлюза для в.4.6
Код:
/------- шлюз BGDHCP---------
setDHCP( DHCP, gateSetup )
{
      Socket socket = null;
      socket = new Socket( DHCP.get("dhcp.ip"), DHCP.get("dhcp.port") );
      InputStreamReader isr = new InputStreamReader( socket.getInputStream() );
      BufferedReader in = new BufferedReader( isr );
      ToXMLStream stream = new ToXMLStream();
        stream.setOutputStream(  socket.getOutputStream() );
        stream.setEncoding( "UTF-8");
        stream.startDocument();
        stream.startElement( "sync" );
        stream.addAttribute( "type", "dhcp" );
       
      stream.startElement( "gate" );
        stream.addAttribute( "id", String.valueOf( DHCP.get("gateId")) );
        stream.addAttribute( "host", DHCP.get("Relay") );   
      ParamDHCP(stream, "dhcp.router", gateSetup);
      ParamDHCP(stream, "dhcp.subnetMask", gateSetup);
      ParamDHCP(stream, "dhcp.dns", gateSetup);
      ParamDHCP(stream, "dhcp.ipAddressLeaseTime", gateSetup);
      ParamDHCP(stream, "dhcp.timeOffset", gateSetup);
      ParamDHCP(stream, "dhcp.option.121", gateSetup);
      ParamDHCP(stream, "dhcp.option.249", gateSetup);
        stream.endElement( "gate" );
      id = DHCP.get("id");
      ip = DHCP.get("ip").split(",");
      for (int i = 0; i < id.length; i++)
      {
           stream.startElement( DHCP.get("start") );
           stream.addAttribute( "gateId", DHCP.get("gateId") );
           stream.addAttribute( "id", String.valueOf( id[i] ) );
         ip[i] = ip[i].substring(0 , 9);
         Hex_ip = Integer.toHexString(Integer.parseInt(ip[i]));
         if(Hex_ip.length() < 8){
            Hex_ip = "0" + Hex_ip;
         }
//log.info("ip["+i+"]= " + Hex_ip.toUpperCase());
         Hex_ip   = Hex_ip.substring(0,2) + " " + Hex_ip.substring(2,4) + " " +Hex_ip.substring(4,6) + " " +
                  Hex_ip.substring(6,8);
           stream.addAttribute( "ip", Hex_ip.toUpperCase() );                           
           stream.endElement( DHCP.get("start") );
/*log.info("id["+i+"] = " + id[i]);
log.info("ip["+i+"]= " + ip[i]);
log.info("ip["+i+"]= " + Hex_ip.toUpperCase());
*/      }

//-------BGDHCP---------
        stream.flushPending();
        stream.getWriter().flush();
        stream.endElement( "sync" );
        stream.endDocument();
        stream.getWriter().flush();
        if( socket != null )
        {
            try
            {
                socket.close();
            }
            catch (Exception e)
            {}
        }
//-------BGDHCP---------
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 26 дек 2010, 19:52 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Я понял как сделано в вашей реализации. В фирменной же, похоже сделано через parentSync. Но для 5.1 отсутствует часть документации на API, потому и непонятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 27 дек 2010, 13:21 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
В доке 5.1 написано, как и в 4.6:
Цитата:
Должна быть обязательно реализована функция doSync() - именно она и отвечает за взаимодействие со шлюзом. Вот минимальный код шлюза:
protected void doSync()
{

}

Также дополнительно может быть определена дополнительная функция синхронизации со шлюзом предком. Она определяется у шлюза предка и вызывается потомком перед вызовом doSync().
protected void parentSync( Gate child, GateWorker childWorker)
{
}

где child - объект типа bitel.billing.server.ipn.bean.Gate, представляющий шлюз , который вызывал этот метод.

childWorker - объект типа bitel.billing.server.ipn.GateWorker, представляющий шлюз , который вызывал этот метод.

В скрипт передаются такие переменные:

con — объект java.sql.Connection для соединения с БД.

gate — объект bitel.billing.server.ipn.bean.Gate.

ruleTypeMap — объект java.util.Map<Integer, bitel.billing.server.ipn.bean.RuleType>. В нем содержаться все типы правил из БД. Ключ — id правила.

gateTypeMap — объект java.util.Map<Integer, bitel.billing.server.ipn.bean.GateType> gateTypeMap. В нем содержаться все типы шлюзов из БД. Ключ — id типа шлюза.

Log — объект org.apache.log4j.Logger. Для вывода сообщений , ошибок шлюза.

StatusList — объект List<bitel.billing.server.ipn.UserStatus> statusList. В нем содержаться статусы пользователей, которые синхронизируются на данном шлюзе. Ключ — id статуса.

GateErrors — объект java.lang.StringBuilder, содержащий ошибки выполнения шлюза.

mid — int, код модуля.

worker - объект типа GateWorker, обработчтик логики работы со шлюзом , который вызвал этот скрипт.

Примеры шлюзов и реализация большинства стандартных шлюзов есть на WiKi.

Для оптимизации работы скомпилированных шлюзов нужно поставить в конфигурацию модуля IPN:
gate.cache.script=1

Это опция кеширования скомпилированных типов шлюзов чтобы они каждый раз не компилировались при запуске синхронизации шлюза. Эту опцию нужно убирать на время отладки, если нужно менять скрипт шлюза .


В стандартной связке создается шлюз DHCP, затем создается шлюз Cisco2 потомок DHCP, а уже потом создается шлюз Switch потомок Cisco2. Поэтому и вызывается parentSync.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 27 дек 2010, 13:40 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Угу, а класс bitel.billing.server.ipn.GateWorker в 5.1 отсутствует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 27 дек 2010, 16:31 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Это к разработчикам, когда я начал использовать скриптовый DHCP шлюз, оказалось, что там были ошибки, подправили. Может тоже есть баг, или не подправили в доке. Мне это предстоит проходить после нового года. Может дожмешь до этого времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Непонятная ошибка шлюза DHCP
СообщениеДобавлено: 28 дек 2010, 12:13 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
borisk писал(а):
Угу, а класс bitel.billing.server.ipn.GateWorker в 5.1 отсутствует.

как так ? . Класс есть . Его нет в javadoc, добавил для 5.1.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 1.390s | 46 Queries | GZIP : On ]