Перейти до

SNMP OID BDCOM EPON / GEPON / GPON


Рекомендованные сообщения

Всем привет, заезженная тема но приходиться искать по всем уголкам интернета - А именно OID и как их использовать.
Начнём. 
для новичков.
bash 

set_olt_oids() {
    # Общие для EPON (BDCOM)
    if [[ "$1" =~ ^(P3310|P3310B|P3310C|P3608|P3608B|P3316|P3600-16E|P3608-2TE|P3616-2TE|IEP3310)$ ]]; then
        OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1"
        OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
        OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2"
        OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2"
        OID_AUNT_ONU_STATUS="SNMPv2-SMI::enterprises.3320.101.10.1.1.26"
        OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80"
        OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
        OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
        OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
        LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
        LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
        LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11" 
        OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8"
        OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде
        OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12"
        OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14"
        OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0 reboot
        OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2" #.$portID.$mac10" i 0 #mac decimal onu
    fi

    # Общие для GPON
    if [[ "$1" =~ ^(GP3600-08|GP3600-16B|GP3600-08B)$ ]]; then
        ETH_STATUS="1.3.6.1.2.1.2.2.1.8" # статус порта 1 портовая ону
        ETH_STATUS4="1.3.6.1.4.1.3320.10.4.1.1.4" # статус портов 4х портовая ону
        OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
        OID_ADMIN_STATUS="1.3.6.1.4.1.3320.10.4.1.1.3"
        OID_DOWN_REASON="1.3.6.1.4.1.3320.10.3.1.1.35"
        OID_DIST="1.3.6.1.4.1.3320.10.3.1.1.33"
        OID_MODEL_ONU="1.3.6.1.4.1.3320.10.3.1.1.9"
        OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
        OID_REBOOT_ONU="1.3.6.1.4.1.3320.10.3.2.1.4" #snmpset -v2c -c RW IP OID.onuIndex i 1 reboot
        
    fi

    # Уникальные параметры для моделей
    case "$1" in
        # EPON модели
        P3310 | P3310B)
            OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
            OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
            OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
            ;;
        IEP3310)
            OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
            OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
            OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
            ;;
        P3608 | P3608B | P3310C | P3316 | P3600-16E | P3608-2TE | P3616-2TE)
            OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
            OID_RX_OLT="1.3.6.1.4.1.3320.101.108.1.3"
            OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
            OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
            ;;
        # GPON модели
        GP3600-08 | GP3600-16B | GP3600-08B | P3600-08E)
            OID_RX_ONU="1.3.6.1.4.1.3320.10.3.4.1.2"
            OID_RX_OLT="1.3.6.1.4.1.3320.10.2.3.1.3"
            OID_TX_ONU="1.3.6.1.4.1.3320.10.3.4.1.3"
            OID_GET_MAC="1.3.6.1.4.1.3320.10.3.1.1.4"
            ;;
        *)
            echo -e "\e[1;91mНеизвестный режим OLT: $1\e[0m"
            return 1
            ;;
    esac
    return 0
}
что бы было понятно в дальнейшем что за переменные 
snmp1="snmpwalk -v2c -c паблик стринг"
snmp2="snmpwalk -v2c -Ouqv -c паблик стринг"
snmp3="snmpget -v2c -c паблик стринг"
snmp3q="snmpget -v2c -Ouqv -c паблик стринг"
snmp4="snmpget -v2c -Ouqv -c приват стринг"
snmp5="snmpset -v2c -c приват стринг"

EPON GEPON
1- OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1" на бдкомах епон 
= SNMPv2-SMI::enterprises.3320.101.10.4.1.1.96 = Hex-STRING: A0 94 6A 97 CC 50

snmp_response=$($snmp3 "$IP" "$OID_GET_MAC.$1" 2>/dev/null | awk -F'Hex-STRING: ' '{print tolower($2)}' | tr -d ' ')
    onu_mac=$(echo "$snmp_response" | sed 's/\(..\)/\1:/g;s/:$//') #Переводим в человеческий вид
    mac10=$(echo "$snmp_response" | awk '{    # Переводим в mac10 дада способов есть миллиард.
        for (i=1; i<=length; i+=2) {
            printf "%d", strtonum("0x" substr($0, i, 2))
            if (i + 2 <= length) printf "."
        }
        print ""
    }')


лучший способ сделать функцию для форматирования снмп запросов в зависимости от типов STRING / HEX-STRING / COUNTER32 и тд тп.

ifID=$($snmp1 "$IP" "$OID_IF_MAC10" 2>/dev/null | awk -v mac="$mac10" '$0 ~ mac {split($1, arr, "."); print arr[length(arr)-6]; exit}') 


2 - OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
тут без лишних слов возвращает вендор онушек 
SNMPv2-SMI::enterprises.3320.101.10.1.1.1.97 = STRING: "XPON"   если укажем параметр -Oqv  или -Ouqv получим просто "XPON" и надо будет лишь сделать | tr -d ' " '    что бы удалить лапки.

3 - OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2" аналогично вендорам, получаем модель.

4- OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2"  - температура ону делим на / 256
SNMPv2-SMI::enterprises.3320.101.10.5.1.2.17 = INTEGER: 7027  
temp_onu=$($snmp3q $IP 1.3.6.1.4.1.3320.101.10.5.1.2.$INDEX | awk '{printf "%.2f", $1/265}' 2>/dev/null)

5 - OID_AUNT_ONU_STATUS="1.3.6.1.4.1.3320.101.10.1.1.26"
SNMPv2-SMI::enterprises.3320.101.10.1.1.26.276 = INTEGER: 3

onuAunt_type=$($snmp3q $IP "$OID_AUNT_ONU_STATUS.$INDEX" 2>/dev/null)
    case "$onuAunt_type" in
        0) onuAunt_type_txt="authenticated" ;;
        1) onuAunt_type_txt="registered" ;;
        2) onuAunt_type_txt="deregistered" ;;
        3) onuAunt_type_txt="auto_config" ;;
        4) onuAunt_type_txt="lost" ;;
        *) onuAunt_type_txt="unknown" ;;
    esac

6 - OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80" uptime
SNMPv2-SMI::enterprises.3320.101.10.1.1.80.207 = INTEGER: 290907
timetick 
| awk '{h=int($1/3600); m=int(($1%3600)/60); s=$1%60; printf "AliveTime: %dч %dмин %dсек\n", h, m, s}')${reset}"

7 - OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
SNMPv2-SMI::enterprises.3320.101.10.1.1.27.149 = INTEGER: 1600
на епоне в метрах  на гпоне делим на 10

8 - OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
SNMPv2-SMI::enterprises.3320.101.11.1.1.3.14.60.21.18.8.130.175 = Hex-STRING: 3C 15 12 08 82 AF  
SNMPv2-SMI::enterprises.3320.101.11.1.1.3      .14-PORTINDEX     60.21.18.8.130.175  - MAC10                = Hex-STRING: MAC HEX

9- OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.227.186 = INTEGER: 125
SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.247.136 = INTEGER: 125
возвращает PORT INDEX и можно грепнуть по mac10 найти индекс и можно грепнуть через мак10

10 - LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
дату отдаёт в хексе. надо декодировать это дело.
вызов snmp + IP + oid + PORTINDEX + MAC10 
date_hex=$($snmp1 $IP "$LASTREG_DATE.$IF_INDEX.$mac10" 2>/dev/null | awk -F': ' '{print $2}' | tr -d ' ')
if [[ -n "$date_hex" ]]; then
        # Преобразуем дату из hex в числовое представление
        data=($(echo "$date_hex" | sed 's/../0x& /g'))
        local year=$((data[0] * 256 + data[1]))
        local month=${data[2]}
        local day=${data[3]}
        local hour=${data[4]}
        local minute=${data[5]}
        local second=${data[6]}


local formatted_date=$(printf "%04d-%02d-%02d %02d:%02d:%02d" "$year" "$month" "$day" "$hour" "$minute" "$second")


10 - LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
аналогично 9му оиду.

11 - LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11" 

DEREG_STATUS=$($snmp3 $IP "$LASTDEREG_REASON.$IF_INDEX.$mac10" -Oqv 2>/dev/null)

    case "$DEREG_STATUS" in
        2) dereg_status_text="normal";;
        3) dereg_status_text="mpcp-down";;
        4) dereg_status_text="oam-down";;
        5) dereg_status_text="firmware-download";;
        6) dereg_status_text="illegal-mac";;
        7) dereg_status_text="llid-admin-down";;
        😎 dereg_status_text="wire-down";;
        9) dereg_status_text="power-off";;
        255) dereg_status_text="unknown";;
        0) dereg_status_text="Нет данных.";;
        *) dereg_status_text="not found";;
    esac

есть прикол если онушка autoconfig статус 3 / authenticated статус 0
там инвертируються 7 и 8  может и от моделей ону зависеть.... 
7) dereg_status_text="llid-admin-down";;
😎 dereg_status_text="wire-down";;
это уже тестами )


12  -  OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8" статус езернет ничего не обычного кроме того что может верно отдать данные с 2-3го раза )
2 down 1 up 
там же есть прикол с authenticated autoconfig инвертируется...
local PORT_COUNT=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX" | wc -l)
local ETH_STATUS=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX.$port" 2>/dev/null)
        [[ "$ETH_STATUS" =~ ^[0-9]+$ ]] || continue  # Проверяем, что ETH_STATUS - это число
        if [[ "$onuAunt_type" == "0" ]]; then
            STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 2 ]] && echo "UP" || echo "DOWN" )
        else
            STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 1 ]] && echo "UP" || echo "DOWN" )
        fi

13 - OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде.
14 - OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12"   гигабит езернет порты на онушках (кол-во)
15 - OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14"   ФастЕзернет 100мбит аналогично. 
INTEGER 

16 - OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0                                  reboot REBOOT ONU epon snmp
$snmp5 "$IP" "$OID_REBOOT_ONU.$INDEX" i 0 >/dev/null 2>&1

17 - delete onu epon  удалить ону бдком снмп 
OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2"
$snmp5 "$IP" "$OID_DEL_ONU.$ifID.$mac10" i 0 > /dev/null 2>&1    oid.PORTINDEX.mac10 i 0 
остальные есть выше там думаю всё понятно.

SIGNAL LEVELS в зависимости от моделей плат и олтов расписаны 
все везде одинаково 
$snmp2 "$IP" "$OID_RX_OLT.$INDEX" 2>/dev/null | awk '{print $NF / 10}')   результат делим на 10.

epon пакеты, ошибки по портам на онушке.
broadcasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.16.$INDEX.$port" 2>/dev/null)
multicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.17.$INDEX.$port" 2>/dev/null)
unicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.18.$INDEX.$port" 2>/dev/null)
pause=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.19.$INDEX.$port" 2>/dev/null)
fcserrs=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.20.$INDEX.$port" 2>/dev/null )
oversize=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.13.$INDEX.$port" 2>/dev/null)
jabber=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.14.$INDEX.$port" 2>/dev/null)

мне бы такое помогло.. а не искать на тонне форумов и сайтов и неделю тыкая snmpwalk и выясняя что и для чего. остального и в инете полно. 

Відредаговано legenda vols
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від Amigo
      Продам GEPON ОЛТи BDCOM
      1. BDCOM P3310B (Вживаний) - 6000 грн.
      2. BDCOM P3310C (Вживаний) - 7500 грн.
      3. BDCOM P3310C (Вживаний без вух) - 7000 грн.
      4. BDCOM P3608-2TE (Вживаний) - 20000 грн.
      5. BDCOM P3608-2TE  (Вживаний) - 19000 грн.

    • Від grapefruit
      Доброго вечора, спільното!
      Можливо хтось стикався з завданням,коли потрібно на OLT BDCOM GP3600 по oid визначити час розреєстрування ону. В неті нічого знайти не вдалося, через MIB браузер тоже ніц.
      Якщо підкажете буде дуже вдячний, або хоч підкажіть де шукати.
      Всім гарного вечора)
    • Від alexeya
      Продам OLT ZTE C320. OLT укомплектован блоком живлення PRAM, двома платами GTGH(K00), платою керування SMXA(A31).

      Кожна GTGH-плата, це 16 GPON портів, 16 GPON модулів C++.
      SMXA-плата, це SFP+ (10G) порт, 1 гігабітний комбо порт.

      В наявності 2 одиниці. Один новий, один був у використанні (стан близький до нового)

      Ціна нового - 120000 грн
      Ціна вживаного - 105000 грн

      BDCOM GP-3600-08B куплявся в ДЕПСі в вересні 23 року. В ньому використовувались тільки 3 порти (тобто є тільки 3 GPON SFP модулі). 48к разом з модулями

      ОЛТИ без модулів:
      3310B-2AC - 1штука - 8000
      3310B - 2 штуки - 7500
      3310B + Proline UPS - 1 штука - 8500
      3310D + Proline UPS - 1 штука - 12500
      BDCOM P3600-04 + Proline UPS - 1 штука - 16500
      3616-2TE - 3 штуки - 53к

      Додам вживані EPON С++ модулі по 400 грн за штуку. Або нові по 750 грн за штуку
    • Від Hamster_Serg
      Таке запитання чи хтось використовував 10G порт на олті(BDCOM GP3600-16B) як магістраль для наступного комутатора( комутатор<->олт<->комутатор)?
      І чи пробували транзитом пропускати QinQ з 3 мітками VLAN(QinQ в QinQ)?
    • Від Hamster_Serg
      Всім привіт.
      В мене з'явилася проблема з BDCOM(tm) GP3600-16B прошивка Version 10.3.0D Build 124190.
      Проблема в наступному, що коли додаєш VLAN на порт або просто створюєш, олт бутається через 10 секунд.
      Після цього все працює стабільно і можна додавати без всяких проблем.
      Чи була в когось така проблема ?
      Дякую за відповідь
×
×
  • Створити нове...