2016-11-08 23 views
2

나는 net-snmp 라이브러리 (c/C++)를 사용하여 SNMP 트랩 발신자를 작성하고 있습니다. 기본 오브젝트 유형의 경우,이 트랩에 개체를 추가하는 것은 매우 간단합니다 SNMP Trap에서 테이블을 보낼 수 있습니까?


snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len); 

'MibName'는 OID 인 경우, 'MIBValue'캐릭터와 'MIBType'는 ASN 유형으로 값. 이제 인덱스 된 테이블에 대해이 작업을 수행하는 방법은 무엇입니까? 이것에 대한 지원이 있습니까? 요소가있는 모든 행을 트랩에 추가하는 방법?

또는 이에 대한 간단한 대안이 있습니까?

답변

1

전체 SNMP 테이블을 SNMP 트랩 내에 보내는 것은 좋지 않습니다. 보통 SNMP 테이블은 OID 인스턴스 수 측면에서 꽤 큽니다. 문제는 SNMP가 전송 프로토콜로 UDP를 사용한다는 것입니다. SNMP를 사용하면 네트워크의 MTU까지 크기가 조정 된 PDU를 사용할 수 있습니다. 버퍼는 예상되는 가장 큰 패킷만큼 커야하므로 가능한 경우 MTU에 해당해야합니다. 예를 들어, 이더넷은 최대 1500 바이트 프레임 페이로드를 허용합니다.

따라서 PDU 최대 크기는 일반적으로 최대 10 개의 varbind입니다.

여기서 일반적인 사용 시나리오는 사용자에게 변경 사항이 발생했음을 알리는 SNMP 트랩을 보내는 것입니다. 사용자는 트랩 수신시 Get-Next/Get-Bulk을 사용하여 테이블에서 데이터를 가져 와서이 이벤트의 세부 사항을 가져와야합니다.