Jump to content

HUAWEI MA5683T OID и MIB


Recommended Posts

  • Replies 162
  • 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...

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

Link to post
Share on other sites
16 часов назад, Alex210 сказал:

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

oid-ы нашёл)

1.3.6.1.4.1.2011.5.14.5.2.1.2.$service_port i 0

1.3.6.1.4.1.2011.5.14.5.2.1.3.$service_port i 10 // slot

1.3.6.1.4.1.2011.5.14.5.2.1.4.$service_port i 6 // pon

1.3.6.1.4.1.2011.5.14.5.2.1.5.$service_port i 4 // ont

1.3.6.1.4.1.2011.5.14.5.2.1.6.$service_port i 11 // gem

1.3.6.1.4.1.2011.5.14.5.2.1.7.$service_port i 4 // 4 - gpon, 6 - epon

1.3.6.1.4.1.2011.5.14.5.2.1.8.$service_port i 100 // vlan

1.3.6.1.4.1.2011.5.14.5.2.1.11.$service_port i 1 

1.3.6.1.4.1.2011.5.14.5.2.1.12.$service_port i 100 // user-vlan

тут это описано, но ещё на первой строчке возникает ошибка(( Предполагаю, что сначала нужно создать сервис-порт, но как это сделать - вопрос.... 

Link to post
Share on other sites
<?php

namespace App;

use App\Jobs\OLTAddServicePort;
use DivineOmega\SSHConnection\SSHConnection;
use Mockery\Exception;
use SNMP;

class HuaweilOLT
{
  const GPON_ONU_QTY_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.21.1.16';
  const EPON_ONU_QTY_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.31.1.12';
  const GPON_OPTICS_TX_POWER_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.23.1.4';
  const EPON_OPTICS_TX_POWER_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.33.1.4';

  const GPON_ONT_UNREGISTERED = '1.3.6.1.4.1.2011.6.128.1.1.2.48.1.2';
  const EPON_ONT_UNREGISTERED = '1.3.6.1.4.1.2011.6.128.1.1.2.58.1.2';
  const GPON_ONT_REGISTERED_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.%s';
  const EPON_ONT_REGISTERED_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.3.%s';
  const GPON_ONT_DESCRIPTION = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.9.%s.%s';
  const EPON_ONT_DESCRIPTION = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.%s.%s';
  const GPON_ONT_DESCRIPTION_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.9.%s';
  const EPON_ONT_DESCRIPTION_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.%s';
  const GPON_ONT_SIGNALS_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.51.1.4.%s';
  const ONT_SIGNALS_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.104.1.5.%s';

  const ONT_CONFIGURED_STRING = 'configured';

  const GPON_ONT_STATUS = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.15.%s.%s'; // 1 - online , 2 - offline
  const ONT_STATUS = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.15.%s.%s'; // 1 - online , 2 - offline
  const GPON_ONT_SIGNAL = '1.3.6.1.4.1.2011.6.128.1.1.2.51.1.4.%s.%s';
  const ONT_SIGNAL = '1.3.6.1.4.1.2011.6.128.1.1.2.104.1.5.%s.%s';
  const GPON_ONT_DISTANCE = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.20.%s.%s';
  const ONT_DISTANCE = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.19.%s.%s';
  const GPON_ONT_DOWN_CAUSE = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.24.%s.%s'; // 13 - power , 2 - оптика
  const ONT_DOWN_CAUSE = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.25.%s.%s'; // 13 - power , 2 - оптика
  const GPON_ONT_SOFT_VERSION = '1.3.6.1.4.1.2011.6.128.1.1.2.45.1.1.%s.%s';
  const ONT_SOFT_VERSION = '1.3.6.1.4.1.2011.6.128.1.1.2.55.1.5.%s.%s';



  /* @var $snmpSession SNMP */
  private $snmpSession;

  /* @var $sshSession SSHConnection */
//  private $sshSession;

  /* @var $sshSession PHPTelnet */
  private $telnetSession;

  /* @var $telnetLog string[] */
  private $telnetLog;

  public function __construct()
  {
    $snmpSession =  new \SNMP(\SNMP::VERSION_2c, '192.168.101.18', 'comunity');
    $snmpSession->oid_increasing_check = FALSE;
    $this->snmpSession = $snmpSession;
  }

  private function getSnmpValue($oid) {
    $parts = explode(': ', $this->snmpSession->get($oid));
    if (strpos($parts[0], 'Hex-STRING') === 0) {
      return hex2bin(trim(str_replace(' ', '', str_replace('00', '', $parts[1]))));
    }
    return trim($parts[1]);
  }
  
  public function getOntDataByInterfaceOntId($ifIndex, $ontId) {
    $interface = $this->decode_ifIndex($ifIndex);
    switch ($interface['type']) {
      case 'epon':
        $oidStatus = vsprintf(self::ONT_STATUS, [$ifIndex, $ontId]);
        $oidSignal = vsprintf(self::ONT_SIGNAL, [$ifIndex, $ontId]);
        $oidDistance = vsprintf(self::ONT_DISTANCE, [$ifIndex, $ontId]);
        $oidDownCause = vsprintf(self::ONT_DOWN_CAUSE, [$ifIndex, $ontId]);
        $oidSoftVersion = vsprintf(self::ONT_SOFT_VERSION, [$ifIndex, $ontId]);
        $ifaceUrl = route('eponPort', ['ifIndex' => $ifIndex]);
        break;
      case 'gpon':
        $oidStatus = vsprintf(self::GPON_ONT_STATUS, [$ifIndex, $ontId]);
        $oidSignal = vsprintf(self::GPON_ONT_SIGNAL, [$ifIndex, $ontId]);
        $oidDistance = vsprintf(self::GPON_ONT_DISTANCE, [$ifIndex, $ontId]);
        $oidDownCause = vsprintf(self::GPON_ONT_DOWN_CAUSE, [$ifIndex, $ontId]);
        $oidSoftVersion = vsprintf(self::GPON_ONT_SOFT_VERSION, [$ifIndex, $ontId]);
        $ifaceUrl = route('gponPort', ['ifIndex' => $ifIndex]);
        break;
    }

    return [
      'ifaceUrl' => $ifaceUrl,
      'status' => $this->getSnmpValue($oidStatus),
      'softVersion' => $this->getSnmpValue($oidSoftVersion),
      'signal' => $this->getSnmpValue($oidSignal),
      'distance' => $this->getSnmpValue($oidDistance),
      'downCause' => $this->getSnmpValue($oidDownCause),
      'interface' => "{$interface['type']} {$interface['shelf']}/{$interface['slot']}/{$interface['port']} {$ontId}",
    ];
  }

  public function getONTsQuantityInInterfaces($type = 'epon') {
    $result = [];
    switch ($type) {
      case 'epon':
        $oid = self::EPON_ONU_QTY_IN_INTERFACE;
        break;
      case 'gpon':
        $oid = self::GPON_ONU_QTY_IN_INTERFACE;
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}
    return $result;
  }

  public function getPONTxPowerInInterfaces($type = 'epon') {
    $result = [];
    switch ($type) {
      case 'epon':
        $oid = self::EPON_OPTICS_TX_POWER_IN_INTERFACE;
        break;
      case 'gpon':
        $oid = self::GPON_OPTICS_TX_POWER_IN_INTERFACE;
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)))/100;
        }
      }
    } catch (\Exception $e) {}
    return $result;
  }

  public function getUnregisteredOnts() {
    $result = [];
    try {
      $response_epon = $this->snmpSession->walk(self::EPON_ONT_UNREGISTERED);
      if (is_array($response_epon)) {
        foreach ($response_epon as $key=>$value) {
          preg_match('/.([\d]+).([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]][$portRegexpResult[2]] = str_replace(' ', ':', str_replace('Hex-STRING: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}
    try {
      $response_gpon = $this->snmpSession->walk(self::GPON_ONT_UNREGISTERED);
      if (is_array($response_gpon)) {
        foreach ($response_gpon as $key=>$value) {
          preg_match('/.([\d]+).([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]][$portRegexpResult[2]] = str_replace(' ', '', str_replace('Hex-STRING: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function getOntsSignalsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::ONT_SIGNALS_INTERFACE, [$ifIndex]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_SIGNALS_INTERFACE, [$ifIndex]);
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)))/100;
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function getRegisteredOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];

    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_REGISTERED_IN_INTERFACE, [$ifIndex]);
        try {
          $response = $this->snmpSession->walk($oid);
          if (is_array($response)) {
            foreach ($response as $key=>$value) {
              preg_match('/.([\d]+)$/', $key, $portRegexpResult);
              $result[$ifIndex][$portRegexpResult[1]] = strtolower(str_replace(' ', ':', str_replace('Hex-STRING: ', '', trim($value))));
            }
          }
        } catch (\Exception $e) {}
        break;

      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_REGISTERED_IN_INTERFACE, [$ifIndex]);
        try {
          $response = $this->snmpSession->walk($oid);
          if (is_array($response)) {
            foreach ($response as $key=>$value) {
              preg_match('/.([\d]+)$/', $key, $portRegexpResult);

              $result[$ifIndex][$portRegexpResult[1]] = $this->valueToSerial($value);
            }
          }
        } catch (\Exception $e) {}
        break;
    }

    return $result;
  }

  private function valueToSerial($value) {
    if (strpos($value, 'Hex-STRING') !== false) {
      return strtolower(str_replace(' ', '', str_replace('Hex-STRING: ', '', trim($value))));
    }

    if (strpos($value, 'STRING') !== false) {
      return bin2hex(str_replace('"', '', str_replace('STRING: ', '', trim($value))));
    }

    return $value;
  }

  public function confirmOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $result[] = $this->telnetSession->doCommand("config\n");
    sleep(1);
    $result[] = $this->telnetSession->doCommand("interface {$interface['type']} {$interface['shelf']}/{$interface['slot']}\n");
    sleep(1);
    switch ($interface['type']) {
      case 'epon':
        $result[] = $this->telnetSession->doCommand("ont confirm {$interface['port']} all mac-auth oam ont-lineprofile-name ftth ont-srvprofile-name ftth\n");
        break;
      case 'gpon':
        $result[] = $this->telnetSession->doCommand("ont confirm {$interface['port']} all sn-auth omci ont-lineprofile-name ftth ont-srvprofile-name ftth\n");
        break;
    }
    sleep(1);
    $result[] = $this->telnetSession->doCommand("\n");
    sleep(1);
    $result[] = $this->telnetSession->doCommand("quit\n");
    return $result;
  }

  public function getOntsUnconfiguredInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_DESCRIPTION_INTERFACE, [$ifIndex]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_DESCRIPTION_INTERFACE, [$ifIndex]);
        break;
    }

    try {
      $response = $this->snmpSession->walk($oid);

      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $ontRegexpResult);
          switch ($interface['type']) {
            case 'epon':
              $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontRegexpResult[1]}.1";
              break;
            case 'gpon':
              $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontRegexpResult[1]}.1";
              break;
          }
          $checkResult = $this->snmpSession->get($checkOid);
          if (!strpos($checkResult, '4094')) {
            $result[$ifIndex][] = $ontRegexpResult[1];
          }
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function createOntsServicePortsInInterface($ifIndex) {
    $result = [];
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $unconfiguredOnts = $this->getOntsUnconfiguredInInterface($ifIndex);
    if ($unconfiguredOnts) {
      $result[] = $this->telnetSession->doCommand("config\n");
      sleep(2);
      foreach ($unconfiguredOnts[$ifIndex] as $ontId) {
        $vlan = $interface['slot'] . ($interface['port'] > 9 ? $interface['port'] - 10 : $interface['port']);
        $result[] = $this->telnetSession->doCommand("service-port vlan {$vlan} port {$interface['shelf']}/{$interface['slot']}/{$interface['port']} ont {$ontId} eth 1-4 multi-service user-vlan untagged\n");
        sleep(2);
        $result[] = $this->telnetSession->doCommand("\n");
        sleep(2);
        switch ($interface['type']) {
          case 'epon':
            $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontId}.1";
            break;
          case 'gpon':
            $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontId}.1";
            break;
        }
        $checkResult = $this->snmpSession->get($checkOid);
        if (!strpos($checkResult, '4094')) {
          OLTAddServicePort::dispatch($ifIndex, $ontId);
        } else {
          $this->setOntDescriptionAsConfigured($ifIndex, $ontId);
        }
      }
      $result[] = $this->telnetSession->doCommand("quit\n");
    }
    return $result;
  }

  public function createOntsServicePortsInInterfaceOnt($ifIndex, $ontId) {
    $result = [];
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $result[] = $this->telnetSession->doCommand("config\n");
    sleep(2);
    $vlan = $interface['slot'] . ($interface['slot'] > 9 ? $interface['slot'] - 10 : $interface['slot']);
    $result[] = $this->telnetSession->doCommand("service-port vlan {$vlan} port {$interface['shelf']}/{$interface['slot']}/{$interface['port']} ont {$ontId} eth 1 multi-service user-vlan untagged\n");
    sleep(2);
    $result[] = $this->telnetSession->doCommand("\n");
    sleep(2);
    switch ($interface['type']) {
      case 'epon':
        $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontId}.1";
        break;
      case 'gpon':
        $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontId}.1";
        break;
    }
    $checkResult = $this->snmpSession->get($checkOid);
    if (!strpos($checkResult, '4094')) {
      OLTAddServicePort::dispatch($ifIndex, $ontId);
    } else {
      $this->setOntDescriptionAsConfigured($ifIndex, $ontId);
    }
    $result[] = $this->telnetSession->doCommand("quit\n");
    return $result;
  }

  public function setOntDescriptionAsConfigured($ifIndex, $ontId) {
    $this->setOntDescription($ifIndex, $ontId, self::ONT_CONFIGURED_STRING);
  }

  public function setOntDescription($ifIndex, $ontId, $description) {
    $interface = $this->decode_ifIndex($ifIndex);
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_DESCRIPTION, [$ifIndex, $ontId]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_DESCRIPTION, [$ifIndex, $ontId]);
        break;
    }
    $this->snmpSession->set($oid, 's', $description);
  }

  public function deleteOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $ontQuantity= $this->getONTsQuantityInInterfaces($interface['type']);
    if ($ontQuantity[$ifIndex] == 0) {
      return true;
    }
    $this->telnetCheckSession();
    $this->telnetExecCommands([
      "undo service-port port {$interface['shelf']}/{$interface['slot']}/{$interface['port']}",
      "",
      "y",
      "interface {$interface['type']} {$interface['shelf']}/{$interface['slot']}",
      "ont delete {$interface['port']} all",
      "y",
      "quit"
    ], true);
  }
//  private function checkSSHSession() {
//    if ($this->sshSession instanceof SSHConnection) {
//      return true;
//    }
//    $this->makeSSHSession();
//  }
//
//  private function makeSSHSession() {
//    $this->sshSession = (new SSHConnection())
//      ->to('192.168.101.18')
//      ->onPort(22)
//      ->as('login')
//      ->withPassword('password')
//      // ->withPrivateKey($privateKeyPath)
//      ->connect();
//  }

//  public function ssh() {
//    $this->checkSSHSession();
////    $command = $this->sshSession->run("quit");
//    $command = $this->sshSession->run("display system sys-info\n");
////    $command = $this->sshSession->run("enable\n");
////    $this->sshSession->run("config\n");
////    $command = $this->sshSession->run("display system sys-info");
//
//    dd($command->getOutput());  // 'Hello World'
//    dd($command->getRawError());
//  }

  private function telnetCheckSession() {
    if ($this->telnetSession instanceof PHPTelnet) {
      return true;
    }
    $this->telnetMakeSession();
  }

  private function telnetMakeSession() {
    $this->telnetSession = new PHPTelnet();
    $this->telnetSession->connect('192.168.101.18', 'user', 'pass');
    $this->telnetSession->doCommand("enable\n");
  }

  public function telnetCloseSession() {
    if ($this->telnetSession instanceof PHPTelnet) {
      $this->telnetSession->disconnect();
    }
  }

  public function telnetExecCommands($commands = [], $isConfiguration = true) {
    $this->telnetCheckSession();
    if ($isConfiguration) {
      $this->telnetLog[] = $this->telnetSession->doCommand("config\n");
      sleep(2);
    }
    foreach ($commands as $command) {
      $this->telnetLog[] = $this->telnetSession->doCommand("{$command}\n");
      sleep(2);
    }
    if ($isConfiguration) {
      $this->telnetLog[] = $this->telnetSession->doCommand("quit\n");
      sleep(2);
    }
  }

  public function telnetGetLog() {
    return $this->telnetLog;
  }


  public static function decode_ifIndex($ifIndex) {
    $board_type = ( $ifIndex & bindec('11111110000000000000000000000000') ) >> 25 ;
    switch($board_type) {
      case 126:
        $port_type="epon";
        $shelf_no       = ( $ifIndex & bindec('00000001111110000000000000000000') ) >> 19 ;
        $slot_no        = ( $ifIndex & bindec('00000000000001111110000000000000') ) >> 13 ;
        $port_no        = ( $ifIndex & bindec('00000000000000000001111100000000') ) >> 8  ;
        return(array("type"=>$port_type,"shelf"=>$shelf_no,"slot"=>$slot_no,"port"=>$port_no));
        break;
      case 125:
        $port_type = "gpon";
        $shelf_no       = ( $ifIndex & bindec('00000001111110000000000000000000') ) >> 19 ;
        $slot_no        = ( $ifIndex & bindec('00000000000001111110000000000000') ) >> 13 ;
        $port_no        = ( $ifIndex & bindec('00000000000000000001111100000000') ) >> 8  ;
        return(array("type"=>$port_type,"shelf"=>$shelf_no,"slot"=>$slot_no,"port"=>$port_no));
        break;
    }
  }
}

 

Может кому понадобиться

Link to post
Share on other sites
В 03.06.2021 в 17:16, Alex210 сказал:

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати. 

Link to post
Share on other sites

Andr1y, можно так найти серийник:

1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.

1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$port.$id

Тут ранее я сам этот вопрос поднимал и мне тут помогли ещё расшифровать некоторые "кривые" серийники. Почитайте.

Link to post
Share on other sites
В 05.06.2021 в 21:28, andr1y сказал:

Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати. 

Тут описано как это сделать по SNMP

Link to post
Share on other sites
  • 3 months later...
В 07.06.2021 в 08:10, Alex210 сказал:

Тут описано как это сделать по SNMP

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:

1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.

Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Link to post
Share on other sites
55 минут назад, lololo сказал:

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:


1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.


Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

У нас на 5683,5603,5608 работает. 

Эти oid-ы для установки (snmpset) задачи запроса:

1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2

 

Дальше ждём 4-6 секунд но не позже 20 секунд

и делаем snmpget

1.3.6.1.4.1.2011.6.103.4.1.3.1.2.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.3.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.4.2.0

 

Link to post
Share on other sites
17 часов назад, lololo сказал:

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:



1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.



Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Мы когда купили 5683 поискали мануал. Вначале подключились по телнету через СОМ порт. Настроили IP. Потом перешли на snmp и после нескольких пробных запросов получили в ответ порядка 80 тысяч записей кодов оидо/мибов. И начали изучение  их. Долго мучительно, с ошибками, но то что нам надо было для управления мы нашли. Так что и у Вас должно все получиться. Например Вы должный увидеть такое - 2011.6.106.1.1.0 = IpAddress: 192.168.1.1  Который меняете на свой и который должен быть доступен далее для управления.

И да.. самое интересное, что для СОМ порта там требуется цисковский кабель. Но Вы сами можете его сделать из простого СОМ-а и дешевле будет раз в 500 )))

Edited by vlad5503
Добавление сведений
Link to post
Share on other sites
17 часов назад, Alex210 сказал:

У нас на 5683,5603,5608 работает. 

Эти oid-ы для установки (snmpset) задачи запроса:

1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2

 

Дальше ждём 4-6 секунд но не позже 20 секунд

и делаем snmpget

1.3.6.1.4.1.2011.6.103.4.1.3.1.2.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.3.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.4.2.0

 

Это ясно, что это не для чтения. НО, тем не менее, на первом же запросе к ....4.1.2.1.2.2   - ошибка.

snmpset -v2c -c write_community 10.201.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Link to post
Share on other sites
36 минут назад, lololo сказал:

Это ясно, что это не для чтения. НО, тем не менее, на первом же запросе к ....4.1.2.1.2.2   - ошибка.


snmpset -v2c -c write_community 10.201.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Могу предположить что все три oid-а нужно выполнить за одну snmpset

Link to post
Share on other sites
1 минуту назад, Alex210 сказал:

Могу предположить что все три oid-а нужно выполнить за одну snmpset

С этого начинал. Результат аналогичный. Потом уже стал пытаться по одной.

snmpset -v2c -c write_community 10.202.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2 x "00 0B 01 00 00 05 00 07 06 00 06" 1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2 i 4
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

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

С этого начинал. Результат аналогичный. Потом уже стал пытаться по одной.


snmpset -v2c -c write_community 10.202.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2 x "00 0B 01 00 00 05 00 07 06 00 06" 1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2 i 4
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Я делаю по сервис-порту, значение на PHP получаю так: '000A01070004' . str_pad(dechex($service_port), 8, '0', STR_PAD_LEFT);

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

День добрый, коллеги.
Кто то пробовал по snmp реализовать команду bind ip service-port X 10.x.x.x
очень удобная фишка, пользуемся пока через консоль. Можно до 10 ip адресов задавать на клиентском сервис порту и только с этих адресов он может взаимодействовать с сетью, что исключает подмены и пр. ( бывают умники)

Link to post
Share on other sites

к примеру 

 

NMPv2-SMI::enterprises.2011.5.14.3.2.1.3.8.0 = IpAddress: 10.28.0.77
это вывод уже назначенного ip на сервис port (-1) т.е на 7 сервис порт. 0 при этом это просто id записи.
заменить тут не выходит, в принципе и из консоли тоже самое, можно только удалить и создать новый.

 

а по snmpset ошибка при попытке добавления

 

Error in packet.
Reason: Unknown Error
Failed object: iso.3.6.1.4.1.2011.5.14.3.2.1.3.8.0

 

удаление по snmp работает, методом подбора нашел NMPv2-SMI::enterprises.2011.5.14.3.2.1.4.8.0 i 6

Хотел скачать ems, чтобы поснифить команды, но не выйдет, хоть и серийники зарегистрировал) без подтверждения конторы ничего не получится скачать, а железки продавались реселлерами

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

Колеги, вітаю

 

Підкажіть, будь ласка, як можна за допомогою SNMP зареєструвати ONU GEPON (не GPON) на шасі?

 

Через cli формат команд наступний:

interface epon 0/1
ont add 4 2 mac-auth XXXX-XXXX-XXXX oam ont-lineprofile-id 10 ont-srvprofile-id 100 desc "USERLOGIN"

 

За аналогією з реєстрацією GPON пробував наступну команду, але отримую помилку

snmpset -v2c -c private 10.1.1.2 \
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.2.4227867648 i 3 \ #авторизація за MAC(3)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.3.4227867648 x 0xXXXXXXXXXXXX \ #MAC-адреса ONU
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.6.4227867648 i 1 \ #management mode oam(1)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.7.4227867648 s LINEPROFILE_NAME \ #назва лінійного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.8.4227867648 s SERVICEPROFILE_NAME \ #назва сервісного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.4227867648 s USERLOGIN \ #description
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.10.4227867648 i 4   # entry status CreateAndGo(4)

 

Помилка наступна:

Error in packet.
Reason: noCreation (That table does not support row creation or that object can not ever be created)
Failed object: SNMPv2-SMI::enterprises.2011.6.128.1.1.2.53.1.2.4227867648

 

Допоможіть, будь ласка

Дякую

Link to post
Share on other sites

З цим розібрався, забув додати номер 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.1.4.1.2011.6.128.1.1.2.53.1.3.4227867648.2 x 0xXXXXXXXXXXXX \ #MAC-адреса ONU
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.6.4227867648.2 i 1 \ #management mode oam(1)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.7.4227867648.2 s LINEPROFILE_NAME \ #назва лінійного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.8.4227867648.2 s SERVICEPROFILE_NAME \ #назва сервісного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.4227867648.2 s USERLOGIN \ #description
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.10.4227867648.2 i 4   # entry status CreateAndGo(4)

 

Тепер проблема з default native vlan, команда так само не відпрацьовує

 

cli:
ont port native-vlan 4 2 eth 1 vlan 10

snmp:
snmpset -v2c -c vem5jeb9 10.10.240.3 \
1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.4227867648.2.1 i 10

Error in packet.
Reason: noCreation (That table does not support row creation or that object can not ever be created)
Failed object: SNMPv2-SMI::enterprises.2011.6.128.1.1.2.81.1.5.4227867648.2.1

 

 

UPD

Розібрався, дякую. Для зацікавлених - потрібно ставити затримку між створенням ONT та налаштуванням vlan на eth, поставив 5 сек - все запрацювало

Edited by i_destr
  • Like 2
Link to post
Share on other sites
  • 1 month later...

Добрий день. Дякую всім в гілці, дуже дагато цінної інформації!

Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP?

Буду дуже вдячний за допомогу.

 

P.S. Написав і побачив що вище є файлик з інструкцією. Сорі...

Edited by splinter1989
Не помітив відповідь в гілці вище
Link to post
Share on other sites
6 часов назад, splinter1989 сказал:

Добрий день. Дякую всім в гілці, дуже дагато цінної інформації!

Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP?

Буду дуже вдячний за допомогу.

 

P.S. Написав і побачив що вище є файлик з інструкцією. Сорі...

Там есть немного "танцев с бубном".....

Link to post
Share on other sites
16 часов назад, pashaumka сказал:

Там есть немного "танцев с бубном".....

В мене, нажаль, поки не вийшло(((. set проходить а get пусто : пише що нема такого оід. 

Link to post
Share on other sites

I make a request like this:

snmpwalk -v2c -c "user" "IP" 1.3.6.1.4.1.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU

The answer will be like this:

 

SNMPv2-SMI::enterprises.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU = INTEGER: 3

 

Link to post
Share on other sites
4 минуты назад, vlad5503 сказал:

I make a request like this:


snmpwalk -v2c -c "user" "IP" 1.3.6.1.4.1.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU

The answer will be like this:

 


SNMPv2-SMI::enterprises.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU = INTEGER: 3

 

hwGponDeviceOntControlMacCount   Це ви отримуєте кількість маків за ont. А я пробую самі маки вмтягнути...

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ~AsmodeuS~
      PON  панель
       
       
    • By dell
      Продам корзины БУ MA5680Т ETSI. VERSION : MA5600V800R018C00. Конфигурация: Шасси, 1*PRTG, 1*SCUN.
      32т.грн. НДС. Остальное в ЛС.

    • By grapefruit
      Можливо хтось має оіди для BDCOM P3310B 
      LastDeregTime
      LastDeregReason
      Absenttime
      Помітив, що з P3310С не співпадають
    • By Diter_ua
      Продам вот таких оригинальных красавцев. В наличии 8 шт. Светят +5 дб
      Цена 800 грн/шт. Торг


    • By Georgianairlink
      нужен OID, чтобы увидеть это с помощью snmp
      interface TGigaEthernet0/1 description test switchport trunk vlan-allowed 352,362,365,509,514-515,518,528,565-566,590 switchport trunk vlan-allowed add 720-723,1543-1546,2021,2201,2208,2378,2441 switchport trunk vlan-untagged 1 switchport mode trunk  

×
×
  • Create New...