SNMP вне или в октетах (сетевой трафик)

Я пишу программное обеспечение на C# для измерения или использования или в октетах (байтах) через SNMP. Мне нужно сделать, сколько байтов проходит в 1000 секунд?

Согласно моим исследованиям, его значение иногда истекает или сбрасывается, потому что некоторые результаты дают отрицательное значение.

.1.3.6.1.2.1.2.2.1.10 для входного потока в .139

За 1024 секунды это дает результат -2,1 МБ.

Как я могу получить точное измерение трафика (вход или выход)?

РЕДАКТИРОВАТЬ: этот код я использую для расчетов. Он принимает значение в каждую секунду и получает результат.

private void timer1_Tick(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            SnmpObject objSnmpObject, objSnmpIfSpeed;

            objSnmpObject = (SnmpObject)objSnmpManager.Get(".1.3.6.1.2.1.2.2.1.16.139");
            objSnmpIfSpeed = (SnmpObject)objSnmpManager.Get(".1.3.6.1.2.1.2.2.1.5.139");

            if (GetResult() == 0)
            {
                float value = Int64.Parse(objSnmpObject.Value);
                float ifSpeed = Int64.Parse(objSnmpIfSpeed.Value);

                float Bytes = (value * 8 * 100 / ifSpeed);
               // float megaBytes = Bytes / 1024;
                sum += Bytes;
                tb_calc.Text = (sum.ToString() + " Bytes");
            }
            _gv_timeSec++;
            lb_timer.Text = _gv_timeSec.ToString();

            Cursor.Current = Cursors.Default;

        }

2 ответа

Решение

1.3.6.1.2.1.2.2.1.10 OID для IF-MIB::ifInOctets который описывается MIB как Counter32 с верхним пределом 2^32-1 (десятичное число 4294967295).

"Общее количество октетов, полученных на интерфейсе, включая символы кадрирования.

Разрывы в значении этого счетчика могут возникать при повторной инициализации системы управления, а в другое время, как указано значением ifCounterDiscontinuityTime."

Цитирую этот так ответ:

Counter32 не имеет определенного начального значения, поэтому одно чтение Counter32 не имеет информационного содержания. Вот почему вы должны взять два (или более) чтения, чтобы понять это. Примером этого может быть количество пакетов, полученных по интерфейсу Ethernet. Если вы прочитаете и вернете 4 миллиона пакетов, вы ничего не узнаете: возможно, провод был выведен из интерфейса в течение прошлого года или он может пропускать миллионы пакетов в секунду. Вы должны сделать несколько чтений, чтобы узнать что-нибудь.

Я бы порекомендовал ifHCInOctets .1.3.6.1.2.1.31.1.1.1.6 и если HCOutOctets .1.3.6.1.2.1.31.1.1.1.10 которые представляют собой 64-битные версии OID, упомянутых @k1eran

Эти счетчики не вращаются так быстро при работе с более высокими скоростями.

Другие вопросы по тегам