Jump to content

HUAWEI MA5683T OID и MIB


Recommended Posts

  • Replies 166
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Можно пробовать здесь https://github.com/alexlansovich/gpon   Скрины здесь https://github.com/alexlansovich/gpon/tree/master/install/screens  

З цим розібрався, забув додати номер ONT, тобто OIDи мають бути такі:   snmpset -v2c -c private 10.1.1.2 \ 1.3.6.1.4.1.2011.6.128.1.1.2.53.1.2.4227867648.2 i 3 \ #авторизація за MAC(3) 1.3.6.

Вот еще найдено и нарыто в инете MIB:   Тип Ethernet порта на ону: 1.3.6.1.4.1.2011.6.128.1.1.2.62.1.21.portID.onuid.Ethid 34 - GigaEthernet, 24 - FastEthernet, -1 not   (Возможно 

Posted Images

  • 2 weeks later...

ребят! я просил помощи с доступом к железке для написания этой софтины. Кто-то отморозился; "дайте доступ к серверу".

+ скрипт еще не оптимизирован под опрос боооольшого числа ОНУшек и есть куча-куча нюансов.

В этом скриптике ещё писанины и писанины.. + надо кое-что выносить на попап окна. 

 

 

Link to post
Share on other sites
  • 2 months later...
В 22.05.2018 в 17:50, pashaumka сказал:

ребят! я просил помощи с доступом к железке для написания этой софтины. Кто-то отморозился; "дайте доступ к серверу".

+ скрипт еще не оптимизирован под опрос боооольшого числа ОНУшек и есть куча-куча нюансов.

В этом скриптике ещё писанины и писанины.. + надо кое-что выносить на попап окна. 

 

  

 

Чо надо то?

 

Link to post
Share on other sites
  • 2 months later...

CATV (для ону з КТБ портом)

hwGponDeviceOntCatvOnlineStatus 1.3.6.1.4.1.2011.6.128.1.1.2.63.1.3 - статус порта
hwGponDeviceOntCatvOperateStatus 1.3.6.1.4.1.2011.6.128.1.1.2.63.1.2 - опер-статус
hwGponOntOpticalDdmAniCATVRxPower 1.3.6.1.4.1.2011.6.128.1.1.2.51.1.7 - Вхідний рівень по 1550 (КТБ)

 

Швидкість на сервіс-порті

.1.3.6.1.4.1.2011.5.14.5.3.1.7.serv-port+1 - швидкість на сервіс-порті

.1.3.6.1.4.1.2011.5.14.5.3.1.8.serv-port+1 - швидкість на сервіс-порті

Link to post
Share on other sites
  • 3 months later...

Вот еще найдено и нарыто в инете MIB:

 

Тип Ethernet порта на ону:

1.3.6.1.4.1.2011.6.128.1.1.2.62.1.21.portID.onuid.Ethid

34 - GigaEthernet, 24 - FastEthernet, -1 not   (Возможно неправильно и не полно....)

 

Скорость Ethernet порта

1.3.6.1.4.1.2011.6.128.1.1.2.62.1.4.portID.onuid.Ethid

5 - 10, 6- 100, 7-1000 

 

Ethernet autonegotiation

1.3.6.1.4.1.2011.6.128.1.1.2.62.1.3.portID.onuid.Ethid

5 - Full, 4-Half

 

GPON SFP модуль

Ветка 1.3.6.1.4.1.2011.6.128.1.1.2.23

В ней

1.4 - TX Power

1.3 - Bias

1.2 - Volt

1.1 - Temp

1.20 - SN

1.13 - PN

1.11 - Name

1.15 - Wave

1.6 - Distance

1.16 - Количество ону на порту

 

Не GPON SFP модуля:

1.3.6.1.4.1.2011.5.14.6.1.1

 

 

Формула ifIndex:

Два типа интерфейсов - Ethernet и GPON

ethernet_olt/slot/port

gpon_olt/slot/port

 

Переменные :

Ethernet   T = 7 psh=6

GPON T=125 psh=8

 

ifIndex = T * 2^25 + olt * 2^19 + slot * 2^13 + port * 2^psh

Например GPON_0/3/9

125 * 2^25 + 0 * 2^19 + 3 * 2^13 + 9 * 2^8 = 4194330880

 

 

Как узнать Service port onu:

Только snmpget !!

 

1.3.6.1.4.1.2011.5.14.5.5.1.7.portid.4.onuid.4294967295.4294967295.1.user-vlan

Так ону 0/0/0 ont 0 - 1.3.6.1.4.1.2011.5.14.5.5.1.7.4194304000.4.0.4294967295.4294967295.1.200

От ответа отнять 1 - будет реальный service-port.

 

За service-port можно вытянуть inner-vlan, user-vlan, vlan

х - service-port+1 ! 

inner-vlan:  1.3.6.1.4.1.2011.5.14.5.2.1.25.х

user-vlan - 1.3.6.1.4.1.2011.5.14.5.2.1.12.х

valn - 1.3.6.1.4.1.2011.5.14.5.2.1.8.х

 

Как вытянуть MAC на service-port еще не нашел.

 

И MIB - последний свободный service-port (Нуждается в проверке, выдает ли последний свободный или промежуточные также...)

1.3.6.1.4.1.2011.5.14.5.1

 

Некоторая информация была найдена тут - https://gpon.kou.li/huawei/olt/snmp.

Там же некий Milan Krčmář описывает как регистрировать ону по snmp. Но есть неточности и нуждается про проверке.

  • Like 1
Link to post
Share on other sites
В 06.03.2019 в 18:24, ur5kar сказал:

Как вытянуть MAC на service-port еще не нашел.

 

пока известно, что только Хуавеевские ОНТишки отдают маки на портах. остальные гонят 0xFF

Link to post
Share on other sites

Еще добавлю

 

1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7 - user-vlan на Ethernet портах ону.

1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.portid.onuid.ethernet_number

 

А можно как-то вытянуть МАС на service-port ?

Link to post
Share on other sites
  • 2 months later...

Я не нашел подходящих OID для регистрации ONT, есть решение на базе php expect. В конкретном примере номер свободного сервисного порта берется из базы mysql. Как понимаете, при таком условии можно выбрать любой свободный, а не последний в списке по OID  SNMPv2-SMI::enterprises.2011.5.14.5.1

 

Остаётся вопрос синхронизации занятых сервис портов, теоретически можно решать запросами, практически - нафиг надо. Тем более, что вынуть занятый сервис порт конкретной ONT проблемы не составляет. А когда он нам нужен? Скажем во время удаления. Как часто такое бывает? Почти никогда.

 

Ну вот как-то так получаем ответы на вопросы. Есть большое желание найти OID показывающий первый незанятый порт внутри списка, но пока не нашел ничего. А есть и другие задачи, скажем первый в группе, последний в группе, первый свободный внутри группы. Фантазия она-то безгранична, а возможности ограничены. Поэтому иногда без дублирования данных в базу просто не обойтись никак. Но это уже персональный цвет фломастера, конечно.

Link to post
Share on other sites
  • 1 month later...

Коллеги, кто знает описание состояний падений онушки?

hwGponDeviceOntRegisterInfoDownCause 1.3.6.1.4.1.2011.6.128.1.1.2.101.1.8

hwGponDeviceOntRegisterInfoDownTime 1.3.6.1.4.1.2011.6.128.1.1.2.101.1.7

hwGponDeviceOntRegisterInfoUpTime 1.3.6.1.4.1.2011.6.128.1.1.2.101.1.6

hwGponDeviceOntRegisterInfoType 1.3.6.1.4.1.2011.6.128.1.1.2.101.1.5

 

Вот например

array(10) {
  [0]=>
  string(2) "13"
  [1]=>
  string(2) "13"
  [2]=>
  string(1) "2"
  [3]=>
  string(1) "2"
  [4]=>
  string(1) "2"
  [5]=>
  string(1) "2"
  [6]=>
  string(1) "2"
  [7]=>
  string(1) "2"
  [8]=>
  string(2) "13"
  [9]=>
  string(3) "255"
}
NULL
array(10) {
  [0]=>
  string(22) ""2019-03-31 05:15:50Z""
  [1]=>
  string(22) ""2019-03-31 06:27:32Z""
  [2]=>
  string(22) ""2019-06-24 07:00:42Z""
  [3]=>
  string(22) ""2019-06-24 07:01:49Z""
  [4]=>
  string(22) ""2019-06-24 07:08:40Z""
  [5]=>
  string(22) ""2019-06-24 07:14:21Z""
  [6]=>
  string(22) ""2019-06-24 07:31:52Z""
  [7]=>
  string(22) ""2019-06-25 07:40:07Z""
  [8]=>
  string(22) ""2019-06-25 08:04:17Z""
  [9]=>
  string(2) """"
}

 

Link to post
Share on other sites
В 19.05.2019 в 07:55, Darth Vader2 сказал:

Я не нашел подходящих OID для регистрации ONT, есть решение на базе php expect. В конкретном примере номер свободного сервисного порта берется из базы mysql. Как понимаете, при таком условии можно выбрать любой свободный, а не последний в списке по OID  SNMPv2-SMI::enterprises.2011.5.14.5.1

 

Остаётся вопрос синхронизации занятых сервис портов, теоретически можно решать запросами, практически - нафиг надо. Тем более, что вынуть занятый сервис порт конкретной ONT проблемы не составляет. А когда он нам нужен? Скажем во время удаления. Как часто такое бывает? Почти никогда.

 

Ну вот как-то так получаем ответы на вопросы. Есть большое желание найти OID показывающий первый незанятый порт внутри списка, но пока не нашел ничего. А есть и другие задачи, скажем первый в группе, последний в группе, первый свободный внутри группы. Фантазия она-то безгранична, а возможности ограничены. Поэтому иногда без дублирования данных в базу просто не обойтись никак. Но это уже персональный цвет фломастера, конечно.

                // подготовим массивчик с номерами свобоодных сервис портов
                $free_service_ports=array_fill(0,20480,"free");
                Common::$service_ports_list = ServicePorts::get_list_service_ports();
                foreach(Common::$service_ports_list as $sport_no => $sport_info) {
                    $sport_no--;
                    unset($free_service_ports[$sport_no]);
                }
                Common::$free_service_ports = $free_service_ports;

 

Скрытый текст

 

Edited by pashaumka
Link to post
Share on other sites


        // http://php.net/manual/ru/function.strtok.php#87977
        protected static function subtok($string, $chr, $pos, $len = NULL) {
            return implode($chr,array_slice(explode($chr,$string), $pos, $len));
        }


            static function get_list_service_ports() {

                //hwExtSrvFlowEntry
                $memcache_obj = memcache_connect("127.0.0.1","11211") or die("Could not connect with memcached");

        //Попытаемся получить объект с ключом мыла

                $ex = memcache_get($memcache_obj,self::$ip."_hwExtSrvFlowEntry");
                if(($ex=="0") or (empty($ex)) ) {
                    // смело вставляем в базу

                        $oid="1.3.6.1.4.1.2011.5.14.5.2.1";
                        if( false === ( $result_oid = self::snmpQueryAll($oid) ) ) {
                            // незареганых онт нет
                            return false;
                        }
                        $res_array=array();
                        foreach( $result_oid as $key => $value ) {
                            $function_index = self::subtok($key,'.', -2);
                            $a_index=explode('.',$function_index);
                            $func=$a_index[0];
                            $srv_port_no=$a_index[1];
                            switch($a_index[0]) {
                                case "2": $func="shelf"; break;
                                case "3": $func="slot"; break;
                                case "4": $func="port"; break;
                                case "5": $func="ont_no"; break;
                                case "6": $func="gem_port"; break;
                                case "8": $func="vlan"; break;
                                case "9": $func="inb_tt_index"; break;
                                case "10": $func="out_tt_index"; break;
                                case "21": $func="inb_tt_name"; break;
                                case "22": $func="out_tt_name"; break;
                                default:  break;
                            }
                            $res_array[$srv_port_no][$func] = $value;
                        }


                        reset($res_array);
                        $res_array2=array();
                        foreach($res_array as $srv_port_no => $srvport_details ) {
                            $shelf=$slot=$port=$ont_no=$gem_port=$vlan= $inb_tt_index=$out_tt_index=$inb_tt_name=$out_tt_name ="";
                            foreach($srvport_details as $func => $value ) {
                                switch($func) {
                                    case "shelf": $shelf=$value; break;
                                    case "slot": $slot =$value; break;
                                    case "port": $port =$value; break;
                                    case "ont_no": $ont_no =$value; break;
                                    case "gem_port": $gem_port = $value; break;
                                    case "vlan": $vlan = $value; break;
                                    case "inb_tt_index": $inb_tt_index = $value; break;
                                    case "out_tt_index": $out_tt_index = $value; break;
                                    case "inb_tt_name": $inb_tt_name = $value; break;  
                                    case "out_tt_name": $out_tt_name = $value; break;  
                                    default: break;
                                }
                            }
                            $res_array2[$shelf][$slot][$port][$ont_no][$srv_port_no] =array("gem_port"    => $gem_port,
                                                                                            "vlan"        => $vlan,
                                                                                            "inb_tt_index"=>$inb_tt_index,
                                                                                            "out_tt_index"=>$out_tt_index,
                                                                                            "inb_tt_name"=>$inb_tt_name,  
                                                                                            "out_tt_name"=>$out_tt_name,  
                                                                                            );
                                /*$sql = "update `serviceports` SET ";
                                $sql = "`shelf`='".$shelf."'";
                                $sql = "`slot`='".$slot."'";  
                                $sql = "`port`='".$port."'";  
                                $sql = "`ont_no`='".$ont_no."'";
                                $sql = "`srv_port`='".$ont_no."'";*/
                        }
                        /*echo "<pre>";
                        print_r($res_array2);
                        echo "</pre>";
                        echo "<pre>";
                        print_r($res_array);
                        echo "</pre>";*/
                        $json_counts_array = json_encode($res_array2);
                        memcache_set($memcache_obj, self::$ip."_hwExtSrvFlowEntry", $json_counts_array, false, 86400);
                } else {
                    $res_array2 = json_decode($ex,true);   // true == as array
                }
                return($res_array2);
            }

  • Like 1
Link to post
Share on other sites

Это с ломом на амбразуру. Да, будет работать, но лучше что-то более элегантное. Фактически всего лишь моё мнение. Но - спасибо! Кто-то наверняка оценит и применит.

Edited by Darth Vader2
Link to post
Share on other sites

написал для себя на php управление и регистрацию ону по телнет.

для фронта используется codeigniter+mysql.

если надо - могу гитхабнуть(код не идеален))

  • Like 1
Link to post
Share on other sites
3 часа назад, alexlans сказал:

написал для себя на php управление и регистрацию ону по телнет.

для фронта используется codeigniter+mysql.

если надо - могу гитхабнуть(код не идеален))

Если можно был бы благодарен 

Link to post
Share on other sites
3 часа назад, alexlans сказал:

написал для себя на php управление и регистрацию ону по телнет.

для фронта используется codeigniter+mysql.

если надо - могу гитхабнуть(код не идеален))

Также был бы благодарен.

Link to post
Share on other sites
В 06.07.2019 в 11:33, alexlans сказал:

написал для себя на php управление и регистрацию ону по телнет.

для фронта используется codeigniter+mysql.

если надо - могу гитхабнуть(код не идеален))

Было бы интересно посмотреть если есть возможность поделитесь

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...