SNMP - Simple Network Management Protocol ========================================== .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is SNMP?** SNMP stands for Simple Network Management Protocol. It is used to monitor, manage, and control network devices such as routers, switches, servers, printers, and more from a centralized management system. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is SNMP useful?** * Allows centralized monitoring of network health and performance * Helps detect and troubleshoot network issues quickly * Supports automated alerts for failures or unusual activity * Enables remote configuration and management of devices .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works** * **Manager sends a request** – A central SNMP manager queries a device (called an agent) * **Agent responds** – The device replies with requested data (e.g., uptime, interface stats) * **Traps and notifications** – Devices can proactively send alerts (called traps) to the manager when events occur * **Data analysis** – The SNMP manager collects and analyzes this data for visualization and reporting .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is SNMP used?** * **Enterprise networks** – Monitor routers, switches, and servers * **Data centers** – Manage large-scale infrastructure * **ISPs and telecoms** – Track performance, uptime, and device health * **IT departments** – Enable proactive maintenance and real-time alerting .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * **Application Layer (Layer 7)** * Provides network management services directly to applications * Defines message types like GET, SET, and TRAP * Operates over UDP (typically ports 161 and 162), but its logic resides in Layer 7 .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`SNMP Version&RFC Details ` * :ref:`SNMP Basic Setup on Ubuntu using IPv4 ` * :ref:`SNMP Basic Setup on Ubuntu using IPv6 ` * :ref:`SNMP Protocol Packet Details ` * :ref:`SNMP Usecases ` * :ref:`SNMP Basic Features ` * :ref:`SNMP Feature : Simple Protocol ` * :ref:`SNMP Feature : Standardized Communication ` * :ref:`SNMP Feature : Agent-Manager Model ` * :ref:`SNMP Feature : MIB (Management Information Base) ` * :ref:`SNMP Feature : Polling and Traps ` * :ref:`SNMP Feature : Scalability ` * :ref:`SNMP Feature : Cross-Platform Support ` * :ref:`SNMP Feature : Security (SNMPv3) ` * :ref:`SNMP Feature : Extensibility ` * :ref:`SNMP Feature : Low Overhead ` * :ref:`Reference links ` .. _SNMP_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _SNMP_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _SNMP_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _SNMP_step5: .. tab-set:: .. tab-item:: SNMP Version&RFC Details .. csv-table:: :file: ./SNMP/snmp_rfc_details.csv :widths: 10,10,10,30 :header-rows: 1 .. _SNMP_step20: .. tab-set:: .. tab-item:: SNMP Basic Setup on Ubuntu using IPv4 **SNMP GetRequest Test Case** * To verify that the SNMP manager can succesfully retrieve data from the SNMP agent using an SNMP GET request for a known OID (sysName.0) * Step-1: Install SNMP tools and agent on the device. .. code-block:: shell test:~$sudo apt update test:~$sudo apt install snmp snmpd -y * Step-2: Configure the SNMP agent. .. code-block:: shell test:~$sudo nano /etc/snmp/snmpd.conf agentAddress udp:161,udp:[::]:161 #Add or ensure the following line is present, Save and exit the file. * Step-3: Restart and enable the SNMP service. .. code-block:: shell test:~$sudo systemctl restart snmpd test:~$sudo systemctl enable snmpd * Step-4: Send an SNMP GET request to retrieve the system name (sysName.0) .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "ubuntu" * Step-5: Capture the SNMP traffic using Wireshark during the request. * Expected result: * The SNMP agent responds with the correct value for the queried OID. * Wireshark captures: * An SNMP get-request packet from the manager to the agent. * An SNMP get-response packet from the agent containing the system name. * Step-6: Wireshark Capture. :download:`Download wireshark capture ` **SNMP SetRequest Test Case** * To verify that the SNMP manager can succesfully update the value of a specific OID on the SNMP agent using an SNMP SET request, and confirm the change using a GET request. * Step-1: Configure SNMP agent for write access.Open the SNMP configuration file .. code-block:: shell test:~$sudo nano /etc/snmp/snmpd.conf rwcommunity private #Add the following line to allow write access. Save and exit the file. * Step-3: Restart and enable the SNMP service. .. code-block:: shell test:~$sudo systemctl restart snmpd * Step-4: Perform SNMP SET Request. .. code-block:: shell test:~$snmpset -v2c -c private localhost 1.3.6.1.2.1.1.5.0 s "NewsystemName" iso.3.6.1.2.1.1.5.0 = STRING: "NewsystemName" * Step-5: Verify the change with SNMP GET Request .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "NewsystemName" * Step-6: Capture and Analyze Packets in Wireshark. * Expected result: * SNMP SET request should succesfully update the system name to "NewsystemName". * SNMP GET request should retrun the updated value. * Step-6: Wireshark Capture :download:`Download wireshark capture ` **SNMP WALK Request Test Case** * To verify that the SNMP WALK operation retrieves a sequence of OIDs and their corresponding values from the SNMP agent, starting from a specified base OID. Also, confirm that the SNMP communication is correctly captured using wireshark. * Step-1: Run SNMP WALK command. .. code-block:: shell test:~$snmpwalk -v2c -c public localhost 1.3.6.1.2.1.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux kiran 6.11.0-26-generic #26~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 17 19:20:47 UTC 2 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (15606841) 1 day, 19:21:08.41 iso.3.6.1.2.1.1.4.0 = STRING: "Me " iso.3.6.1.2.1.1.5.0 = STRING: "kiran" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1 iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1 iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1 iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1 iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49 iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50 iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.4 iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3 iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92 iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB." iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB for Message Processing and Dispatching." iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The management information definitions for the SNMP User-based Security Model." iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities" iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP." iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations" iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing UDP implementations" iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing IP and ICMP implementations" iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering." iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications." iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (0) 0:00:00.00 * Step-2: Capture and Analyze in wireshark * Expected result: * A sequence of OIDs and their values should be returned, starting from the base OID and traversing through the MIB hierarchy in lexicographical order. * Step-3: Wireshark capture. :download:`Download wireshark capture ` **SNMP GetBulk Request Test Case** * To verify that the SNMP GETBULK operation retrieves multiple OIDs and their corresponding values in a single request from the SNMP agent. * Step-1: Run SNMP GETBULK command. .. code-block:: shell test:~$snmpbulkget -v2c -c public public -Cn0 -Cr10 localhost 1.3.6.1.2.1.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux kiran 6.11.0-26-generic #26~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 17 19:20:47 UTC 2 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (15715777) 1 day, 19:39:17.77 iso.3.6.1.2.1.1.4.0 = STRING: "Me " iso.3.6.1.2.1.1.5.0 = STRING: "kiran" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1 * Step-2: Capture and Analyze in wireshark * Expected result: * The response should contain multiple OIDs and their values in a single response, as specified by the max-repetitions parameter. * Step-3: Wireshark capture. :download:`Download wireshark capture ` **SNMP Community String Validation Test Case** * To verify that the SNMP agent requests with valid community strings and rejects those with valid those with invalid community strings. * Step-1: Send SNMP GET request with valid community string. .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "ubuntu" * Step-2: Send SNMP GET request with invalid community string. .. code-block:: shell test:~$snmpget -v2c -c wrong localhost 1.3.6.1.2.1.1.5.0 Timeout: No Response from localhost. * Step-2: Capture and Analyze in wireshark * Expected result: * For Valid Community string, SNMP GET request should succeed. * For invalid Community string, SNMP GET request should be sent, but no response should be received from the agent. * Step-3: Wireshark capture. :download:`Download wireshark capture ` **SNMP Verison Compatibility Test Case** * To verify that the SNMP agent supports and correctly responds to SNMP GET requests using different SNMP protocol versions:v1, v2c, v3. * Step-1: Run SNMPv1 GET Request command. .. code-block:: shell test:~$snmpget -v1 -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "kiran" * Step-2: Run SNMPv2c GET Request command. .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "kiran" * Step-3: Configure SNMPv3 User: Edit the SNMP configuration .. code-block:: shell test:~$sudo nano /etc/snmp/snmpd.conf # Add the following lines createUser myuser SHA myauthpass AES myprivpass rouser myuser authPriv * Step-4: Save and exit the file and restart SNMP service. .. code-block:: shell test:~$sudo systemctl restart snmpd * Step-5: Run SNMPv3 GET Request Command. .. code-block:: shell test:~$snmpget -v3 -u myuser -l authPriv -a SHA -A myauthpass -x AES -X myprivpass localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "kiran" * Step-6: Capture and Analyze in wireshark * Expected result: * SNMPv1 get request and response should be visible. * SNMPv2c get request and response should be visible. * SNMPv3 get request and response should be visible but encrypted. * Step-7: Wireshark Capture :download:`Download wireshark capture ` **SNMP Response Time Test Case** * To measure the response time of the SNMP agent for different SNMP operations (GET,WALK,GETBULK) and ensure that the agent responds within acceptable time limits. * Step-1: Measure SNMP GET Response Time. .. code-block:: shell test:~$time snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "kiran" real 0m0.014s user 0m0.006s sys 0m0.007s * Step-2: Measure SNMP WALK Response Time. .. code-block:: shell test:~$time snmpwalk -v2c -c public localhost 1.3.6.1.2.1.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux kiran 6.11.0-26-generic #26~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 17 19:20:47 UTC 2 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (16036207) 1 day, 20:32:42.07 iso.3.6.1.2.1.1.4.0 = STRING: "Me " iso.3.6.1.2.1.1.5.0 = STRING: "kiran" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1 iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1 iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1 iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1 iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49 iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50 iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.4 iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3 iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92 iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB." iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB for Message Processing and Dispatching." iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The management information definitions for the SNMP User-based Security Model." iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities" iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP." iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations" iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing UDP implementations" iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing IP and ICMP implementations" iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering." iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications." iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (0) 0:00:00.00 real 0m0.016s user 0m0.006s sys 0m0.007s * Step-3: Measure SNMP GETBULK Response Time. .. code-block:: shell test:~$time snmpbulkget -v2c -c public -Cn0 -Cr10 localhost 1.3.6.1.2.1.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux kiran 6.11.0-26-generic #26~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 17 19:20:47 UTC 2 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (16037504) 1 day, 20:32:55.04 iso.3.6.1.2.1.1.4.0 = STRING: "Me " iso.3.6.1.2.1.1.5.0 = STRING: "kiran" iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1 real 0m0.016s user 0m0.006s sys 0m0.010s * Step-4: Capture and Analyze in wireshark * Expected result: * Each SNMP Operation should complete within acceptable limits (typically < 50ms in a LAN environment) * Step-5: Wireshark Capture :download:`Download wireshark capture ` **SNMP Authentication and Security Test Case(SNMPv3)** * To verify that SNMPv3 security features, authentication and encryption are functioning correctly. This includes validating successful communication with correct credentials and rejection of requests with incorrect credentials. * Step-1: Configure SNMPv3 User: Edit the SNMP configuration .. code-block:: shell test:~$sudo nano /etc/snmp/snmpd.conf # Add the following lines createUser myuser SHA myauthpass AES myprivpass rouser myuser authPriv * Step-2: Save and exit the file and restart SNMP service. .. code-block:: shell test:~$sudo systemctl restart snmpd * Step-3: Send SNMPv3 GET Request with Correct Credentials. .. code-block:: shell test:~$snmpget -v3 -u myuser -l authPriv -a SHA -A myauthpass -x AES -X myprivpass localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "kiran" * Step-4: Send SNMPv3 GET Request with incorrect Credentials. .. code-block:: shell test:~$snmpget -v3 -u myuser -l authPriv -a SHA -A myauthpass -x AES -X myprivpass12 localhost 1.3.6.1.2.1.1.5.0 Timeout: No Response from localhost. * Step-4: Capture and Analyze in wireshark * Expected result: * Correct Credentials request and response should succeed. * Incorrect credentials request and response should not succeed. * Step-5: Wireshark Capture :download:`Download wireshark capture ` **SNMP Invalid Request Test Case** * To verify that the SNMP agent correctly handles invalid or malformed SNMP requests (e.g., requests with non-existent OIDs), and responds with appropriate error messages without crashing or becoming unresponsive. * Step-1: Send SNMP GET Request with invalid OID. .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.10.0 iso.3.6.1.2.1.1.10.0 = No Such Object available on this agent at this OID * Step-2: Capture and Analyze in wireshark * Expected result: * The SNMP agent should not crash or become unresponsive. * It should return a valid SNMP error response indicating the OID is invalid. * Step-3: Wireshark Capture :download:`Download wireshark capture ` **MIB Object Value Change Verification** * To verify that changes made to a MIB object using an SNMP SET request are correctly reflected in subsequent SNMP GET responses. * Step-1: Perform SNMP SET Request. .. code-block:: shell test:~$snmpset -v2c -c private localhost 1.3.6.1.2.1.1.5.0 s "vysh" iso.3.6.1.2.1.1.5.0 = STRING: "vysh" * Step-2: Verify the change with SNMP GET Request .. code-block:: shell test:~$snmpget -v2c -c public localhost 1.3.6.1.2.1.1.5.0 iso.3.6.1.2.1.1.5.0 = STRING: "vysh" * Step-3: Capture and Analyze Packets in Wireshark. * Expected result: * SNMP SET request should succesfully update the system name to "vysh". * SNMP GET request should retrun the updated value. * Step-4: Wireshark Capture :download:`Download wireshark capture ` **SNMP Trap Test Case** * To verify that SNMP traps are succesfully send from the SNMP agent abd received by the SNMP manager, including confirmation via logs and packet capture. SNMP traps are asynchronous notifications used to alert the manager about events such as errors or status changes. * Step-1: Configure SNMP Trap Daemon .. code-block:: shell test:~$sudo nano /etc/snmp/snmptrapd.conf #Add the following line, save and exit authCommunity log,execute,net public * Step-2: Start SNMP Trap Daemon and run this in one terminal to listen for incoming traps. .. code-block:: shell test:~$sudo snmptrapd -f -Lo * Step-3: Send SNMP Trap from Agent. .. code-block:: shell test:~$snmptrap -v 2c -c public localhost '' .1.3.6.1.6.3.1.1.5.1 .1.3.6.1.2.1.1.0 s "Hello SNMP Trap" * Step-4: Expected ouput: .. code-block:: shell test:~$sudo snmptrapd -f -Lo NET-SNMP version 5.9.4.pre2 AgentX subagent connected NET-SNMP version 5.9.4.pre2 2025-07-25 10:22:02 localhost [UDP: [127.0.0.1]:42201->[127.0.0.1]:162]: .iso.3.6.1.2.1.1.3.0 = Timeticks: (144729284) 16 days, 18:01:32.84 .iso.3.6.1.6.3.1.1.4.1.0 = OID: .iso.3.6.1.6.3.1.1.5.1 .iso.3.6.1.2.1.1.0 = STRING: "Hello SNMP Trap" * Step-5: Verify Trap Reception. * Check the ouput of snmptrapd for the received trap. * Confirm that the trap includes: * Uptime, Trap OID, Custom message. * Step-6: Capture and Analyze Packets in Wireshark. * Expected result: * SNMP manager (snmptrapd) should log received vtrap with all expected fields. * Step-7: Wireshark Capture :download:`Download wireshark capture ` .. _SNMP_step21: .. tab-set:: .. tab-item:: SNMP Basic Setup on Ubuntu using IPv6 * Setup .. _SNMP_step6: .. tab-set:: .. tab-item:: SNMP Protocol Packet Details **GetRequest Packet** .. csv-table:: :file: ./SNMP/snmp_packet1_details.csv :widths: 10,20,30,10 :header-rows: 1 **GetNextRequest Packet** .. csv-table:: :file: ./SNMP/snmp_packet2_details.csv :widths: 10,20,30,10 :header-rows: 1 **GetBulkRequest Packet** .. csv-table:: :file: ./SNMP/snmp_packet3_details.csv :widths: 10,20,30,10 :header-rows: 1 **SetRequest Packet** .. csv-table:: :file: ./SNMP/snmp_packet4_details.csv :widths: 10,20,30,10 :header-rows: 1 **GetResponse Packet** .. csv-table:: :file: ./SNMP/snmp_packet5_details.csv :widths: 10,20,30,10 :header-rows: 1 **Trap Packet(SNMPv1)** .. csv-table:: :file: ./SNMP/snmp_packet6_details.csv :widths: 10,20,30,10 :header-rows: 1 **InformRequest Packet** .. csv-table:: :file: ./SNMP/snmp_packet7_details.csv :widths: 10,20,30,10 :header-rows: 1 **SNMPv2-Trap Packet** .. csv-table:: :file: ./SNMP/snmp_packet8_details.csv :widths: 10,20,30,10 :header-rows: 1 .. _SNMP_step7: .. tab-set:: .. tab-item:: SNMP Usecases .. csv-table:: :file: ./SNMP/snmp_usecases.csv :widths: 10,20,30 :header-rows: 1 .. _SNMP_step8: .. tab-set:: .. tab-item:: SNMP Basic Features .. csv-table:: :file: ./SNMP/snmp_features.csv :widths: 10,10,30 :header-rows: 1 .. _SNMP_step9: .. tab-set:: .. tab-item:: SNMP Feature : Simple Protocol **Simple Protocol - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature1_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step10: .. tab-set:: .. tab-item:: SNMP Feature : Standardized Communication **Standardized Communication - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature2_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step11: .. tab-set:: .. tab-item:: SNMP Feature : Agent-Manager Model **Agent-Manager Model - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature3_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step12: .. tab-set:: .. tab-item:: SNMP Feature : MIB (Management Information Base) **MIB (Management Information Base) - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature4_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step13: .. tab-set:: .. tab-item:: SNMP Feature : Polling and Traps **Polling and Traps - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature5_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step14: .. tab-set:: .. tab-item:: SNMP Feature : Scalability **Scalability - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature6_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step15: .. tab-set:: .. tab-item:: SNMP Feature : Cross-Platform Support **Cross-Platform Support - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature7_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step16: .. tab-set:: .. tab-item:: SNMP Feature : Security (SNMPv3) **Security (SNMPv3) - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature8_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step17: .. tab-set:: .. tab-item:: SNMP Feature : Extensibility **Extensibility - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature9_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step18: .. tab-set:: .. tab-item:: SNMP Feature : Low Overhead **Low Overhead - Testcases** .. csv-table:: :file: ./SNMP/snmp_feature10_test_cases.csv :widths: 10,10,30,20 :header-rows: 1 .. _SNMP_step19: .. tab-set:: .. tab-item:: Reference links * Reference links