P

C++ Engineer

Persistent Systems · Pune City, Maharashtra, India

~₹9L (est.)2–8 yrs experiencefull_timePosted Yesterday
Apply now →

Job description

**About Position:** We are looking for an R&D Engineer to join the team responsible for a multi-protocol network performance monitoring and data collection engine. This engine polls network devices, servers, and infrastructure components using a wide range of industry-standard protocols including SNMP, CLI (SSH/Telnet/NETCONF), ICMP, WBEM, VMware API, and streaming telemetry, and processes the collected metrics through a formula evaluation engine before persisting them to a time-series store for analytics and reporting. The codebase is a mature, high-volume C++ engine with a multi-threaded polling scheduler, a compiled formula language, MIB/OID management, and a pluggable session architecture supporting dozens of polling protocols and device types - **Role: C++ Engineer** - **Location: All Persistent Location** - **Experience: 7 to 15 Years** - **Job Type: Full-Time Employment** **What You'll Do:** - Design, implement, and maintain multi-protocol polling session handlers: SNMP v1/v2/v3, CLI-based (SSH, Telnet, JunoScript, NETCONF, HTTP), ICMP/ping, WBEM, VMware vSphere API, Windows Performance counters, and streaming telemetry receivers. - Maintain and evolve the polling scheduler including request queuing, slot/variable management, session lifecycle, and multi-threaded dispatcher for high-scale concurrent polling. - Maintain the MIB/OID subsystem including MIB loading and parsing, OID-to-variable mapping, SMI protocol type handling, and support for vendor-specific MIB extensions. - Develop and maintain the formula evaluation engine, including compiled expression language, operator definitions, timeseries processing, filter and alarm conditions, and formula caching. - Own the data abstraction layer, including multi-threaded database transactions, checkpointing, event and notification handling, and metric persistence for large-scale device fleets. - Maintain the push/delivery subsystem, including HTTP-based metric forwarding, bulk API delivery, SSL socket handling, and recovery mechanisms. - Develop and maintain NETCONF/YANG polling integration and other model-driven network management protocol adaptors. - Write unit and integration tests covering polling protocol edge cases, formula evaluation correctness, and scheduler behaviour under load. - Maintain Docker packaging and contribute to CI/CD pipelines and Helm chart deployment. - Participate in code reviews, architecture discussions, and technical documentation maintenance. **Expertise You'll Bring:** - C++ (Primary Language) - Data & Formula Processing - Deployment - Nice to Have - Proficiency in C++ (C++14 or later) with familiarity in cross-platform (Linux/Windows) builds. - Experience writing multi-threaded, scheduler-driven systems including thread pools, request queues, timer management, and concurrent session handling. - Solid understanding of socket programming, non-blocking I/O, and connection lifecycle management. - Experience working with CMake build systems and large, modular legacy codebases. - Familiarity with RAII, smart pointers, and STL algorithms. - In-depth knowledge of SNMP (v1, v2c, v3) including GetRequest, GetNext, GetBulk, SNMPv3 authentication/privacy (USM), engine ID management, INFORM and TRAP handling. - Working knowledge of MIBs and OIDs, including MIB parsing, OID tree navigation, RMON MIBs, and vendor-specific MIB extensions. - Hands-on experience with SSH/Telnet-based CLI polling, command scripting, output parsing, and session negotiation across vendor CLIs (Cisco IOS, Junos, etc.). - Familiarity with NETCONF (RFC 6241) and YANG data modelling for model-driven network management. - Working knowledge of ICMP (ping, RTT, packet loss measurement) and active probing techniques (Cisco SAA/IP SLA, DISMAN-PING). - Familiarity with WBEM / CIM for Windows and Linux server metric collection. - Experience with expression/formula compiler design, including lexer/parser (lex/yacc or ANTLR), operator precedence, and compiled evaluation trees. - Understanding of time-series data processing, including delta calculations, rate computation, aggregations, baseline comparisons, and threshold/alarm evaluation. - Working knowledge of SQL and relational database schemas for metric storage, including transaction management, bulk inserts, and query optimisation for time-series workloads. - Familiarity with VMware vSphere API for virtual infrastructure metric collection. - Basic understanding of JMX (Java Management Extensions) for Java application monitoring. - Familiarity with HTTP/REST for metric push delivery and device API polling. - Experience with Docker for containerising applications and managing multi-stage builds (mandatory). - Experience with Git and CI/CD pipelines for version control and automated build, test, and release workflows (mandatory). - Knowledge of Kubernetes and Helm for workload deployment (nice to have). - Experience with build systems including CMake (primary) and Make. - Experience with streaming telemetry protocols (gNMI/gRPC, OpenConfig) as alternatives to SNMP-based polling. - Knowledge of NETCONF/RESTCONF combined with OpenConfig or vendor YANG models. - Familiarity with CORBA or other legacy RPC mechanisms in network management systems. - Background in network topology discovery and device inventory management. - Experience with WMI / Windows Performance counters for Windows server monitoring. - Familiarity with Prometheus and Grafana for metrics collection and operational monitoring. - Basic Java development experience, including JVM-based monitoring and JMX integration. - Experience with SIPp, Ixia, Spirent, or similar traffic generation/probing tools for active network measurement. **Benefits:** - Competitive salary and benefits package - Culture focused on talent development with quarterly growth opportunities and company-sponsored higher education and certifications - Opportunity to work with cutting-edge technologies - Employee engagement initiatives such as project parties, flexibl