Перейти к содержимому
Калькуляторы

jsmax

Пользователи
  • Публикации

    17
  • Зарегистрирован

  • Посещение

Все публикации пользователя jsmax


  1. BDCOM - ONU попадает в чужой VLAN

    http://data.nag.ru/BDCOM/Firmware/P3608/ подходят для обеих моделей P3608-2TE и P3616-2TE ?
  2. BDCOM - ONU попадает в чужой VLAN

    @Muhachev Konstantin Спасибо, попробуем ваш вариант. А где можно брать актуальные версии софта ?
  3. Здравствуйте, Есть у клиента железки: gepon2#show version BDCOM(tm) P3608-2TE Software, Version 10.1.0E Build 37276 gepon3#show version BDCOM(tm) P3616-2TE Software, Version 10.1.0E Build 37276 Пара template-ов: epon onu-config-template CLIENT203 cmd-sequence 1 epon onu port 1 ctc vlan mode tag 203 cmd-sequence 2 epon onu port 1 ctc rate-limit 100000 ingress cmd-sequence 3 epon onu port 1 ctc rate-limit 100000 egress ! epon onu-config-template CLIENT204 cmd-sequence 1 epon onu port 1 ctc vlan mode tag 204 cmd-sequence 2 epon onu port 1 ctc rate-limit 100000 ingress cmd-sequence 3 epon onu port 1 ctc rate-limit 100000 egress Пример настройки интерфейса: interface EPON0/2 description Clients #2 epon onu-authen-method mac epon pre-config-template CLIENT204 binded-onu-llid 6-59 epon pre-config-template CLIENT203 binded-onu-llid 1-5 epon bind-onu mac xxxx.xxxx.xxxx 1 epon bind-onu mac xxxx.xxxx.xxxx 2 epon bind-onu mac xxxx.xxxx.xxxx 3 epon bind-onu mac xxxx.xxxx.xxxx 4 epon bind-onu mac xxxx.xxxx.xxxx 5 epon bind-onu mac xxxx.xxxx.xxxx 6 epon bind-onu mac xxxx.xxxx.xxxx 7 epon bind-onu mac xxxx.xxxx.xxxx 8 epon bind-onu mac xxxx.xxxx.xxxx 9 switchport trunk vlan-allowed 203-204 switchport mode trunk no switchport protected После перезагрузки OLT, например на интефейсе EPON0/2, первые 5 ONU должны быть в VLAN 203, остальные в VLAN 204. Но получается так что ONU попадают в виланы 203 и 204 хаотично, т.е. к примеру, ONU 1, 2, 7, 8 попадают в вилан 203, остальные в вилан 204. Данная проблема наблюдается только при загрузке OLT. Лечится удалением всех ONU с интерфейса и добавлением обратно. Есть идеи ? Спасибо.
  4. Здравствуйте, Маршрутизатор Juniper SRX поддерживает только SFP+ модули "SFPP-10GE-LR" (SR, ER, LRM). Кто знает чем можно прошить OEM SFP+ модуль на 10Км чтоб девайс выше его увидел ? Может у кого есть оригинальная прошивка модулей Juniper ?
  5. Люды добрые, очень надо c5400-jk9su2_ivs-mz.124-15.T17.bin Буду премного благодарен. Спасибо заранее.
  6. https://yadi.sk/d/wDlanOuNgBWh7 Спасибо, но по ссылке: jinstall-ex-4200-12.3R9.4-domestic-signed.tgz Можно, но только если есть учетная запись у них. Я писал выше что учетка будет в течении пары дней готова.
  7. Поделитесь пожалуйста с jinstall-ex-4200-12.3R9-S1-domestic-signed.tgz Доступ получим только через пару дней, не хочется терять время.
  8. И так, как и обещал, покажу куски кода более детально. Я могу конечно выложить полностью исходники, но поддержка нескольких айпи на клиента это не единственная вещь которую я реализовал, поэтому приведу код который занимается именно этим. Код написанный мною снабжен комментариями. После того как демон получил ответ "Access-Accept" от радиуса с атрибутом "Framed-IPX-Network", то он просто вместе с остальными параметрами шлет и этот параметр модулю: if ($rp->code eq "Access-Accept") { my $oev; .................... my $alive_interval = $rp->attr('Acct-Interim-Interval'); my $max_duration = $rp->attr('Session-Timeout'); my $idle_timeout = $rp->attr('Idle-Timeout'); my $pipaddr = $rp->attr('Framed-IPX-Network'); // Этим параметром демон указывает что это дочерния сессия $oev->{'type'} = ISG::EVENT_SESS_APPROVE; $oev->{'port_number'} = $exp_ev->{'port_number'}; ......................... if (defined($pipaddr)) { $oev->{'pipaddr'} = ISG::ip2long($pipaddr); // Тоже самое } if (isg_send_event($sk, $oev) < 0) { do_log("err", "Error sending reply for SESS_CREATE: $!"); } ......................... Получив эти данные, модуль вызывает функцию isg_update_session: static int isg_update_session(struct isg_net *isg_net, struct isg_in_event *ev) { struct isg_session *is; ............................... if (is) { is->info.in_rate = ev->si.sinfo.in_rate; is->info.in_burst = ev->si.sinfo.in_burst; is->info.pipaddr = ev->si.sinfo.pipaddr; // Указываем что у сессии есть родительская ............................... А теперь листинг где происходят главные действия: #elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) // У меня Centos 5.5 2.6.18-194.32.1.el5 isg_tg(struct sk_buff **pskb, const struct net_device *in, const struct net_device *out, unsigned int hooknum, const struct xt_target *target, const void *targinfo, void *userinfo) .................................. struct isg_session *is, *isrv, *classic_is = NULL; struct isg_session *pis = NULL; // Если пакет будет от дочерней сессии то эта переменная будет хранить родительскую struct isg_session *cis = NULL; // А в этой будем хранить дочернюю .................................. is = isg_lookup_session(isg_net, laddr); // Здесь ищем сессию от которой пришел пакет if (is == NULL) { // Если сессии нету то далее идет ее создание и отброс пакета .................................. /* * Смотрим если у этой сессии есть родительская */ if (is->info.pipaddr) { pis = isg_lookup_session(isg_net, is->info.pipaddr); // Если она есть то находим ее /* * Если находим то инициализируем переменные */ if (pis) { cis = is; // Сохраняем дочернюю is = pis; // Далее будем работать уже с родительской } else { /* * Если у родителя нету открытой сессии то создаем ее */ u_int8_t *src_mac = NULL; if (skb_mac_header(skb) >= skb->head && skb_mac_header(skb) + ETH_HLEN <= skb->data) { if (iinfo->flags & INIT_BY_SRC) { src_mac = eth_hdr(skb)->h_source; } } isg_create_session(isg_net, is->info.pipaddr, src_mac); goto DROP; } } .......................... found: .......................... /* * В is мы храним родительскую сессию, а в cis дочернюю. */ if (iinfo->flags & INIT_BY_SRC) { isg_update_tokens(is, now, ISG_DIR_IN); if (cis) { cis->in_last_seen = now; // Обновляем счетчик } if (pkt_len_bits <= is->in_tokens || !is->info.in_rate) { is->in_tokens -= pkt_len_bits; /* Если это дочерняя то обновляем ее счетчики */ if (cis) { cis->stat.in_bytes += pkt_len; cis->stat.in_packets++; } else { is->stat.in_bytes += pkt_len; is->stat.in_packets++; } ...................... Вот и все. Если есть вопросы, задавайте.
  9. ОК, освобожусь немножко и покажу куски кода чтобы идея была понятна. Полоса одна на всех.
  10. Поделюсь своим решением поддержки нескольких IP адресов. Работает уже пару месяцев, все ок. У каждой сессии может быть родительская: struct isg_session_info { u_int32_t ipaddr; /* User's IP-address */ u_int32_t pipaddr; /* Parent's IP Address (Only for additional sessions) */ ....... } Если у клиента всего лишь один IP адрес, то все происходит как обычно. Если у него несколько IP адресов (может быть даже из разных сетей) то выделяется один главный айпи для которого будет создана родительская сессия, для остальных айпи будут созданы дочерние сессии у которых pipaddr будет равен IP родительской. Теперь покажу как происходит авторизация дочерней сессии. У меня есть модуль в радиусе который тянет из биллинга клиентов, и если у клиента есть главный IP, а сессия открывается для дополнительного, то он отвечает так: [root@ex2 /]# radtest 192.168.10.11 192.168.10.11 localhost 0 test Sending Access-Request of id 207 to 127.0.0.1 port 1812 User-Name = "192.168.10.11" User-Password = "192.168.10.11" NAS-IP-Address = 127.0.0.1 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=207, length=51 Idle-Timeout = 1800 Acct-Interim-Interval = 0 Session-Timeout = 39604 Class = 0x31302f3130 Framed-IPX-Network = 192.168.10.10 Где Framed-IPX-Network это IP адрес родительской сессии (атрибут выбрал от балды). Счетчики обновляются для каждой сессии отдельно, но когда дело доходит до полосы пропускания, то она режется на основе счетчиков родительской сессии. Список клиентов выдлядит так: [root@ex2 /]# /usr/local/ISG/bin/ISG.pl User IP-address Parent IP Port number Uniq. Identifier Duration Bytes-in Bytes-out Rate-in Rate-out Status ......... 192.168.35.104 0.0.0.0 Virtual83 69C905438CD864C5 02:06:31 357.01 MB 6.07 MB 4 Mbit/s 2 Mbit/s On 192.168.22.149 0.0.0.0 Virtual392 72E352E634A71956 02:10:52 145.23 MB 10.85 MB 2 Mbit/s 1 Mbit/s On 192.168.42.80 0.0.0.0 Virtual654 1B207950199C66A7 02:09:18 10.91 MB 16.39 MB 4 Mbit/s 2 Mbit/s On 192.168.25.120 192.168.25.90 Virtual401 55FADF71734B0E79 02:10:33 8.65 MB 15.09 MB 10 Kbit/s 10 Kbit/s On 192.168.20.2 192.168.20.50 Virtual201 0E223E9BE5F27FB8 02:13:01 189.97 MB 7.86 MB 10 Kbit/s 10 Kbit/s On .......... Главный минус в моем подходе это куча дочерних сессий если клиенту выделен /28. За то видна статистика по каждому айпи адресу. Если что могу показать более детально код где происходит вся магия. PS. У меня нет NATа. Все IP адреса придуманы. Также нету классов направления, при разработке я их вообще не брал во внимание, так что с ними работать думаю не будет.
  11. А есть идеи как реялизовать L4 Redirect ? Ведь вся работа lISG происходит в таблице filter где пакеты только фильтруются, а подмена IP адресов и портов происходит в таблице nat ...
  12. Я бы так не сказал. Сама идея очень хороша, поэтому найдутся люди которые продолжат разработку. Я допустим уже реализовал поддержку 2-ух и более айпи адресов. У нас много клиентов с 2-мя айпи адресами или с сетями /29, поэтому пришлось дописывать их поддержку. Скоро будем тестить. Личная просьба автору: комментируйте пожалуйста хотя-бы немножко код, пару дней потратил только для его разбора.
  13. Установил на CentOS 5.5 .. Работает прекрасно. # uname -sr Linux 2.6.18-194.17.4.el5 # iptables -V iptables v1.3.5 Подправил немножко ISG.pl чтоб показывал "duration" и "Octets" в более дружелюбной форме: # ./ISG.pl User IP-address NAT IP-address Port number Uniq. Identifier Duration Octets-in Octets-out Rate-in Rate-out Service name Flags XXX.XXX.20.50 0.0.0.0 Virtual1 2296884591C681F5 00:00:48 461.34 KB 34.00 MB 5000000 10000000 Undefined A
  14. Прочитал про вышеуказанные платформы на оффсайтах. Весьма сумбурно и поверхостно все описано. Цены тоже не указаны. Интересует именно тема про AS5400 + PGW2200 ... Какие минусы ? Кто из них рулит все ? Я просто видел решение где вместо PGW 2200 используется сторонний опенсорсный софт, темболее что нам AS5400 легче достать ..
  15. Здравствуйте. Есть потоки E1 на SS7 от телекома и пул номеров. В плане давать клиентам услуги IP телефонии. Так как это SS7, то Cisco предлагает решение на AS5400 + PGW 2200 .. Прочитал много доков, но для меня так и остались многие вопросы без ответов. В частности: - На кого возлагается вся логика ? Я так полагаю маршрутизацией звонков, радиусом и регистрацией клиентских телефонов будет заниматься софтсвитч (PGW 2200) ? - Получается циска выступает лишь как конвертер из Е1 в IP ? - Какие еще решения можете предложить ?
  16. Ну это понятно ... Интересна сама проблема .. От чего может быть такое ... Гугл вообще про такое ничего не знает ..
  17. Здравствуйте. В последнее время столкнулись со следуещей проблемой: Некоторые машины в сети шлют арп запросы не только на айпи адреса из своей сети, но и на чужие айпи. В примере вывод с машинки подключенной к зазеркалированному порту: # tshark -i em1 -n 'ether dst host ff:ff:ff:ff:ff:ff' 0.204643 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 210.197.130.162? Tell 188.243.20.11 1.925713 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 114.198.190.79? Tell 188.243.20.11 2.484155 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 183.179.189.58? Tell 188.243.20.11 3.795447 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 86.122.186.146? Tell 188.243.20.11 4.483576 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 203.218.32.90? Tell 188.243.20.11 6.807573 00:1f:d0:30:fa:69 -> ff:ff:ff:ff:ff:ff ARP Who has 216.239.89.148? Tell 188.243.20.11 Проверяли клиента, получает айпи по DHCP, маска правильная, шлюз тоже, свежий Windows 7 ... Таких клиентов мы уже нашли штук 5 ... Никто с таким не сталкивался ?