Through guided, hands-on project work, the SONiC Mentorship Program helps new contributors turn technical challenges into real-world open source impact.
In this spotlight, we speak with Rishik Yalamanchili, an undergraduate student at Dhirubhai Ambani University, about his work introducing a Top-N interface traffic visibility feature in SONiC, giving operators a faster way to identify the busiest interfaces in large-scale network environments.

About the Mentee
Rishik is a final-year undergraduate student majoring in Information and Communication Technology (Honours), with a minor in Robotics and Autonomous Systems, at Dhirubhai Ambani University.
He has been involved in open source for several years and previously participated in Google Summer of Code through Waycrate, where he worked extensively with Linux systems. While he already had a strong interest in open source, he joined the SONiC Mentorship Program to deepen his understanding of networking and learn how an open source network operating system works under the hood.
Q: What project did you work on, and why is it important to SONiC?
I worked on the Top-N Interface Traffic Visibility Feature in SONiC.
In large-scale data center environments with hundreds of ports, operators often need to quickly determine which interfaces are carrying the most traffic. SONiC already exposes per-interface traffic counters through tools such as show interfaces counters rates, but those commands present information across all interfaces.
That means an operator looking for the most congested ports may have to manually scan through hundreds of entries, which can be inefficient and error-prone.
My project addresses that problem by introducing the new:
show interfaces counters top
command.
It allows operators to immediately identify the top N interfaces carrying the highest traffic by using rate values that SONiC already maintains in COUNTERS_DB.
The feature is intentionally lightweight. It acts as a filtering and sorting layer on top of existing data, so it requires no backend changes while providing a much faster way to surface heavily utilized interfaces.
Q: What were your main technical contributions?
My main contribution was implementing the top subcommand within the existing show interfaces counters CLI group in the sonic-utilities repository.
Rather than creating a new daemon or adding database tables, I designed the feature as a lightweight, in-memory filter using SONiC’s existing Portstat infrastructure.
The command reads pre-computed interface rate entries from COUNTERS_DB, which are maintained by the port_rates.lua flex counter plugin registered through orchagent. Because those values are already EWMA-smoothed—using an Exponentially Weighted Moving Average—the command can return results immediately rather than requiring an additional sample-and-diff process.
I extended the scripts/portstat script with new flags and added the core sorting logic, get_top_n(), to utilities_common/portstat.py.
The feature gives operators several options for customizing the output, including:
- Ranking interfaces by total traffic, receive traffic, transmit traffic, or utilization
- Sorting by bytes per second or packets per second
- Generating JSON output for automation workflows
- Selecting the number of interfaces to display, such as the top five
- Using natural sorting as a deterministic tie-breaker when interfaces have identical traffic rates
One technical detail worth noting is that while the CLI uses the label bps, SONiC’s underlying rate fields are derived from hardware octet counters, so the reported metric is byte-based rather than bit-based.
I also added unit tests in tests/portstat_test.py to validate the new command options, sorting behavior, and edge cases before the feature was merged.
Q: What challenges did you face, and what did you learn?
One of the biggest initial challenges was getting the development environment running.
The Docker and virtual machine setup involved a number of dependencies and kernel modules, and some of the available documentation was difficult to follow. It took time to understand the environment and get everything working reliably, but that process ultimately helped me develop a much deeper understanding of SONiC’s architecture.
From the development side, one of the most important lessons came from my mentor: architecture and planning often take more time than implementation itself.
We iterated on the High-Level Design several times before writing the code. That process helped us work through the design decisions early and made the eventual implementation much smoother and more robust.
Q: What impact has this mentorship had, and what are your next steps?
This mentorship gave me the confidence to work with large-scale networking systems and contribute directly to a production open source network operating system.
The Top-N command is designed to be immediately responsive and fully backward-compatible, giving operators a simple quality-of-life improvement when they need to identify heavily loaded interfaces.
Going forward, I plan to continue contributing to open source projects and supporting the broader open source ecosystem.
For this project specifically, I would also like to implement some of the stretch goals outlined in the High-Level Design, including:
- A –threshold option that would display interfaces exceeding a specified traffic watermark
- A –reverse option that would make it possible to identify the least busy interfaces
These additions could make the command even more useful for day-to-day network operations and troubleshooting.
Q: Is there anyone you’d like to acknowledge?
Many thanks to my mentor, Nikhil Moray, who supported me throughout the project—from setting up the environment and refining the high-level design to reviewing the code in detail.
He was always open, supportive, and willing to help whenever I ran into an issue.
I’d also like to thank Madhu Paluru, who helped oversee our progress and supported the mentorship behind the scenes.
Finally, thank you to the LFX team and the broader SONiC community for providing this opportunity and creating an environment where new contributors can learn and participate. BlogPost_RishikYalamanchili
Project Links
You can explore the project artifacts here:
- High-Level Design (HLD): SONiC PR #2491
- Implementation PR: sonic-utilities PR #4416 BlogPost_RishikYalamanchili
Get Involved
Interested in contributing to SONiC? Join the community and get involved through the SONiC wiki, mailing lists, working groups, and mentorship opportunities.