Post Job Free
Sign in

Software Engineer C C++

Location:
San Jose, CA
Posted:
September 29, 2023

Contact this candidate

Resume:

BABU P. ALLURI

**** ***** ***, *** ****, CA ***21 408-***-**** 669-***-**** ********@*****.***

SUMMARY

** ***** ** ********** ** Software and Firmware.

Developing and testing System and Application Software for Linux and Windows Desktops and Servers; Embedded Software and Firmware for Network components and Home/Office devices.

Experience in reverse engineering, implementing and testing Network core and application protocol stacks – IPv4, TCP/UDP, NAT/Iptables, DPI, DHCP, SMTP, SNMP, MPLS, OSPF, BGP and Windows network NAS CIFS/SMB, MS-RPC, DCOM. Experience with host and Network Security - IDS/IPS Intrusion Detect Systems and Intrusion Prevention Systems.

Experience in developing x86 and ARM embedded systems – bringing up BSP (Board Support Package), boot loaders and device drivers; familiar with RISC-V.

Experience with developing high and low speed IO architectures and protocols – PCIe, Ethernet, USB, FireWire, SCSI, I2C, SPI, UART.

Experience and familiarity with Virtualization, Cloud Servers - KVM, QEMU, Virtio, SR-IOV, NFV/SDN, Intel DPDK.

SKILLS

·Operating Systems: Experience in Linux/UNIX, Windows and VxWorks RTOS, Cisco IOS-XE – kernel internals, device drivers, networking, file, memory and process management. Probes to kernel/user APIs for feature enhancement and security.

·Languages: C, C++, Python, Assembly, LISP, familiarity with Java, GOlang.

·Hardware: x86, ARM Cortex, PCIe, Ethernet, USB, FireWire/1394, InfiniBand, GPIO, I2C; and familiarity with Intel VT-x, SR-IOV and RISC-V.

·Development Kits and Tools: GNU tools GDB/KGDB, Windows Visual Studio, SDK/DDK, WDM, NT Native API, WinDbg, WindRiver Tornado, WireShark; and familiarity with Intel DPDK, XDP, eBPF, ns3 network simulator and development boards.

·SCMs: Git, Perforce, CI/CD, Jira, Confluence

EXPERIENCE

Jan 2023 – June 2023

Software Consultant, Grexe, Fremont, CA

RISC-V SBC: Made embedded Linux development environment for RISC-V processor based VisionFive 2 board with IMG-BXE-4-32 GPU and ESWIN6600U WiFi.

Aug 2022 – Sept 2022

Software Consultant, Intelliswift/Micron, San Jose, CA

·Performance Evaluation Network Tool for Server PCIe/CxL memory: CxL (Compute eXpress Link) allows add-in memory/accelerator to the running Linux Server. Our Windows QT/Python application connects to the remote Network Server/Linux, collects server’s CPU and Memory usage and displays graphically on Windows. Added new features to the Windows Python 3.8 application and ioctls to the Linux kernel driver to upgrade memory module firmware. Used Jira, CI/CD.

March 2019 – April 2021

Software Consultant, Grexe, Fremont, CA

·Network Traffic Generator and Protocol Framework: Designed and developed C extension module for Python 3.4, under Linux. The module is a C library, interacts with low level OS and hardware, extends Python Interpreter, provides a framework for development and test. The C library uses Raw sockets to interacts with underlying network OS layers. It generates TCP/IPv4 protocol/data packets and fingerprints connected network hosts/devices in the LAN. Implemented Python API for network application layer protocol development.

·Enhanced C extension module to support multi-threading for asynchronous IO. Used multiprocessing to support multi-core. Developed Python API and automated tests.

·Developed C++ ASIO (Asynchronous IO) Application using traffic generator library. Using Intel e1000 Network Interface Card, bench marked against Intel Linux user mode DPDK (Data Plane Development Kit) and Linux kernel mode XDP (eXpress Data Path) network stacks.

·Brought up BSP (Board Support Package) for a ARM Cortex-M3 embedded system. Customized firmware - drivers, Linux and traffic generator code. Used buildroot.

October 2017 – January 2019

Software Engineer, Infosys, Palo Alto, CA

·SIP/RTP: Maintained C/C++ code base of Session Initiation Protocol (SIP) and Real Time Protocol(RTP) for audio/video under Linux.

·Mobile Test Automation: Developed test automation for Google Android mobile devices using Python and Appium framework.

December 2015 – August 2017

Software Consultant, Grexe, Fremont, CA

·TCP/IPv4 Network Traffic Generator: Developed C extension module for Python, under Linux. Implemented C library using network raw sockets. The library crafts IP protocol packets to finger print remote hosts and devices – Linux, Window, printers, routers, switches, etc. Implemented single thread Python application to provide network protocol development framework.

·Developed a prototype Network Traffic Generator using Go Lang.

Dec 2014 – Oct2015

Software Consultant, Cisco, San Jose, CA

·Network Application Layer Gateway (ALG): The Network Address Translation(NAT/PAT) ALG under Cisco Could Server running IOS-XE (Cisco Linux). The ALG uses shared memory IPC, communicates with the Cisco IOS router running as a Daemon. The ALG supports DPI (Deep Packet Inspection) on RPCs and Data Pay load and communicates with IOS for security (Firewall NAT/PAT/IPtables). Developed parsers to masquerade IP addresses of Windows RPCs and storage protocols. Made C code base as big/little endian neutral – IOS-XE software and IOS demon/hardware router.

·Read Only File System for Cloud Servers: Investigated FreeBSD UNIX file systems, disk layout of OS and Applications. Made root File System as read only for a Cisco Security Appliance. Modified netboot to net install derived OS+Applications images onto the Network Server.

August 2014 – Sept 2014

Software Consultant, Intellipro, Santa Clara, CA

·Network Function Virtualization (NFV) Prototype: Developed a prototype using C and Intel Data Plane Development Kit (DPDK) – network packet accelerator under Linux. Tested/Evaluated performance using Intel 10/40G and proprietary NICs under Linux KVM guest and host environments. Got familiarity with Virtio, Open vSwitch(OVS), Intel VT-x and SR-IOV.

December 2013 - March 2014

Software Consultant,NetApp/MindLance, Sunnyvale, CA

·UNIX Network device drivers: ONTAP is a NetApp’s derived version of FreeBSD UNIX, runs on network storage devices. Customized and added proprietary features to kernel mode PCIe NIC drivers (Intel, BroadCom) and socket layers using C.

November 2012 - October 2013

Software Consultant, Grexe, Fremont, CA

·TCP/IPv4 Traffic Generator for Automation: Developed Python module extensions in ‘C’ under Linux. The ‘C’ extensions use raw sockets, craft TCP/IPv4 packets, Finger Print (detect) remotely connected hosts/device OS and services. Developed Link Layer Discovery Protocol (LLDP) in Python/C under Linux to discover neighbor LLDP capable devices. Developed a prototype Multiprotocol Label Switching (MPLS) sniffer module in Python/C. Developed a prototype C extension module for Python, to provide interface to the underlying NFV modules.

September 2012 - October 2012

Software Consultant, Intel/CompuCom, Santa Clara, CA

·PCIe Performance Evaluation: Performance under Windows (8) and Linux (3.6) prereleases. Developed test matrix for device configurations on PCIe – for display, network and storage devices. Read/write one device at a time and combination of read/writes to exercise the PCIe memory, MSI and legacy interrupts. Tested Network cards using both user and kernel C code. Used software tools – GDB, WinDbg, vTune.

August 2011 - July 2012

Software Consultant, AddiSys, Princeton, NJ

·Python - mySQL: Guided team members remotely to implement Python scripts. The scripts use mySql module.

January 2011 - May 2011

Software Consultant, DigitalPersona, Redwood City, CA

·Security Finger Print UID: The finger print device based on TS-7800 ARM CPU, runs Embedded Linux firmware, connects to Linux/Windows as USB device. Customized ARM Coretex-8 BSP (Board Support Package), Linux kernel and USB drivers in C and Assembly. Developed kernel mode Windows and Linux host drivers for USB.

October 2008 - September 2010

Software Engineer, AddiSys, Princeton, NJ

·Python Scripts/mySQL: Implemented Python scripts with embedded SQL queries for AmEx’s resource database.

April 2008 - July 2008

Software Engineer, QLogic, Mountain View, CA

·InfiniBand: Ported Linux kernel mode driver to Windows kernel. Developed DCOM interface between user mode C/C++ test application and kernel mode InfinBand driver.

August 2007 - February 2008

Software Consultant, Interface Masters, San Jose, CA

·Gigabit Ethernet Card: Gigabit Ethernet (Intel 82546EB chipset) e1000 card supporting dual Gigabit ports with custom bypass/failover capability circuit. Enhanced Linux kernel mode driver in C to support bypass functionality.

·Brought up BroadCom BCM5820 IP Security (SSL/TSL) PCI add-on-card using C under VxWorks. Tested using Linux/Windows applications.

·Network GateWay: Customized BSP and firmware for Intel IXP425 Network Processor (ARMv5TE/XScale) based hardware and brought MontaVista Embedded Linux. Used C and Assembly.

November 2003 - July 2007

Software Engineer, Qualys, Redwood Shores, CA

·Network Security Scanner: Security scanner scans customer’s LAN, identifies connected hosts/devices, Services and provides vulnerability assessments. The scanner is an user mode multi-threaded application implemented in C/C++ and LISP under Linux. Our team responsibilities were to research, reverse engineer network traffic, OS’s (Linux, Windows), remote Services, Authentication protocols (NTLM, Kerberos); implement and maintain under Linux. Some of my responsibilities as follow,

·CIFS/SMB: Windows uses Common Internet File System (CIFS/SMB) as a Network Attached Storage (NAS) protocol to share and access remote Windows Files Systems and remote Services (through MS-RPC). Windows uses Microsoft Remote Procedure Calls (MSRPC) to access remote File Shares and various services such as Registry, ACLs, DCOM.

·TCP/IPv4 fingerprint: Maintained and enhanced TCP/IPv4 fingerprint. The module uses combination of TCP/IP packet fields and other heuristics, crafts network traffic to detect remote machine’s operating system (Windows, Unix like OS’s and other devices such as routers). Gained experience of network protocol TCP/IPv4 and application protocols implementation.

·Windows object ACLs: Windows objects use Access Control Lists (ACLs) for Security - specifies user access permissions such as read, write, delete, etc. Reverse engineered Windows binaries, network MSRPCs and implemented ACLs for Windows Objects.

·PE Parser: Windows uses Portable Executable (PE) file format for Executables and Dynamic Link Libraries (DLLs) - containing BSS, Data, Text and Windows Resource segments/sections. Implemented a run time Parser for the scanner - in C under LINUX - to retrieve version information from the resource segment of remote Windows PE files.

·Windows user hives: Windows uses hives to store user profiles/configurations (registry hives – HKEY_CURRENT_USER, HEKY_LOCAL_MACHINE, HKEY_USERS, etc.) and loads current user hive on login. Implemented RPCs to load all/specified user hives for security checks.

·DCOM: Windows uses Distributed Common Object Model (DCOM) on the network on top MS-RPCs. Some of the registry storage has been moved to DCOM to provide secured remote access network services such as IIS and applications. Reverse engineered Object RPCs on the Wire and implemented under LINUX.

·Windows Vulnerability Detections: Microsoft releases patches for Windows updates and security. Worked with development teams of vulnerability signatures. Developed test tools under Linux using Python, Shell.

·SMTP fingerprint: Designed and developed a Linux module to detect remote SMTP servers such as Sendmail, Microsoft Email, Qmail, etc. The module interacts remotely with the server and detects name and version used for security signatures.

August 2002 - September 2003

Software Consultant, Interface Masters, San Jose, CA

·Windows McAfee IPS (Intrusion Prevention System): Studied and reverse engineered Win32 and NT native APIs. Developed Windows PE (Portable Executable) File parser. The parser parses executable, hooks to the running Windows process, hijacks user and kernel APIs. The user process is checked for user Authentication, Authorization and Access from the server. The calls are monitored to access file, printer and other resources – e.g., using APIs such as LoadLibrary, StartDoc, CreateProcess, SetClipboard, etc.

·Gigabit Ethernet Card: Gigabit Ethernet card based on Intel 82546EB chipset supporting dual Gigabit ports with custom bypass/failover capability circuit. Lead a small team of engineers to bring up hardware and drivers under LINUX and VxWork. Developed device drivers in ‘C’, to handle proprietary bypass circuit.

·Set-top box: Residential Gateway based on Intel IXP425 (Xscale) network processor and runs using embedded Linux. Modified BSP and customized Linux and firware. Developed firmware test modules for USB and IEEE13934/FireWire. Developed Windows test drivers. Used JTAG and Logic Analyzers.

·Network Security Processor: DSLAM based on Intel IXP1200 network processor. Ported BroadCom BCM5820 IP Security (SSL/TSL) processor driver and firmware under VxWorks RTOS.

December 1998 - July 2002

Software Engineer, Minolta Systems Laboratory, San Jose, CA

·Network Printer: Developed firmware in C under VxWorks. Integrated with TCP/IP and SPX/IPX protocol hardware offload engine with the rest of the firmware. The firmware is multi-threaded – manages network, USB, printer laser engine and other devices. Developed SNMP agent, PCL and PJL parsers using C language.

·Developed Windows kernel mode WDM drivers for USB and IEEE1394/FireWire SBP-2/SCSI.

·Modified IDE hard disk firmware driver. The driver receives ATA commands from the FAT file system.

·Network Copier: High end color copier supporting local copy and remote printing. Fixed cache coherency problems of Ethernet driver (END driver) under VxWork/IBM405GP. Modified BSP, firmware interface with FPGA.

·Network/USB Printer: Lead a team of engineers to design and develop a network printer firmware using VxWorks. Printer consists of TCP/IP off load NIC and USB. Developed NIC and USB device drivers using C.

March 1994 – November 1998

Software Consultant, XEROX, Palo Alto, CA

·Multifunction Peripheral: Lead domestic and overseas engineering teams to design and develop a multifunction peripheral - consists of printer, scanner and fax devices in ‘C’ under Microsoft-At-Work (WinCE).

·Designed and developed a multi-function peripheral communication protocol in ‘C’ used between multi-function peripheral and Windows. The protocol supports concurrent operations from PC - printing, faxing and scanning.

·Implemented IEEE1284 kernel mode using C and Windows DDK. Implemented multi-function peripheral communication protocol as a kernel mode driver.

·Ported the above multi-function peripheral protocol to support USB under Windows.

·Microsoft At Work (WinCE): Developed Power on Self Tests (POST) in x86 assembly and customized Windows NT Hardware Abstraction Layer (HAL).

February 1993 – January 1994

Software Consultant, National Semiconductor, Santa Clara, CA

·Software Development Tools: The development tools include C compiler, cross platform debugger and an instruction level simulator for a National Semiconductor RISC CPU. Developed GUI for these tools under Windows and HP-UX using XVT.

February 1992 - December 1992

Software Consultant, XEROX Versatec, San Jose, CA

·Network Spooler: Developed test scripts in Printer Description Languages such as PostScript, HPGL-2, CGM, etc.

August 1989 - January 1992

Software Engineer, Computer Vision Laboratories, Hyderabad, India.

·Multilingual Editor under Windows: Designed and developed a Word Processor to support English and 8 Indian languages.

·Network Desktop Publisher: Multi lingual desktop publisher running under UNIX – Spawns a process for each remote thin client and uses IPC. Used IPC for process communication, used TCP/IP sockets and developed Indian language parsers.

·Participated in the design of proprietary Remote Desktop Protocol (RDP) and diskless DOS based Thin Client. Thin Client sends local key board and mouse events to the remote UNIX server, receives images and displays on the screen. Developed device drivers (keyboard, mouse, serial, VGA) and proprietary RPCs under DOS and UNIX.

·Enhanced VGA and HGA drivers under UNIX: made kernel mode drivers to map buffers to user mode – to reduce system calls.

EDUCATION

1986 - 1989

MS in Computer Science, Central University of Hyderabad, India.



Contact this candidate