[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SNMP improvements



Hi all,  

Knowing the link btw IRTF nmrg group and IETF ops group, 

Is there any work or paper to fuel SNMP to a more efficient pooling of
big tables (hundreds of rows) , like a new PDU type 'GetBulkTableRows' ?

 
I am aware of AGGREGATE-MIB draft-glenn-mo-aggr-mib-03.txt but I think
this approach needs a setup of fully defined  Varbinds not sure if
applicable to dynamically growing tables. In other words, for well know
object/instances.

Also draft-irtf-nmrg-snmp-compression-01.txt ( I don't know current
status, not in IETF) OID compression, some of the techniques may be very
expensive in computation with no significant savings.  
Also draft-irtf-nmrg-get-subtree-mib-01.txt, I do not believe reduce the
overloaded data and requires trap receiver in sync with the requester  

In summary many attempts to be SMIv2 compatible, but what's wrong with
create another PDU type as SNMPv3 did over  SNMP v1 ?
  
  
My question is related to systems with very long tables where transfer
is very inefficient even with getbulk I may think of 80%+ (arbitrary
figure) of the data (repeated OIDs, indexes) is not real data values,
just OIDs, Also I believe direct memory access to the index and columns
could be cheaper than lexicographical ordered pointers to the running
memory table and little BER encoding.  

Should we wait for SMIv3, or an overall substitute of SNMP?



Graphically: ( not different of Net-SNMP output of snmptable tool )

{[index1][index2][index3].... [VarbindNames1] [VarbindNames2]
[VarbindNames3] [VarbindNames4] ...}
{[idx_a] [value1(idx_a)] [value2(idx_a)] [value2(idx_a)] [value2(idx_a)]
...}
{[idx_b] [value1(idx_b)] [value2(idx_b)] [value2(idx_b)] [value2(idx_b)]
...}
 
VarBinds could be for the whole table columns or a subset within the
table


 I bet the below syntax is incorrect but just in case.... Used some
templates from RFC 3416, or any other ASN.1 representation of a table

BULKRows ::= SEQUENCE {
	SEQUENCE { varBindColumnar } 
	SET OF { varBindValues}
}

VarBindColumnar ::= SEQUENCE (SIZE (0..max-rows)) OF VarBindNames

VarBindNames::= SEQUENCE {
           name ObjectName, -- equivalent to Entry SEQUENCES or a
subset, Indexes MANDATORY always and first
				    
       }


VarBindValues ::= SEQUENCE {
               value          ObjectSyntax -- positionally in sync with
VarBindColumnar
   }
   
Thanks

Eduardo