About

Brief overview: Currently, I'm a Ph.D. student at the University of Colorado Boulder. I major in Computer Science and I'm happy with that! ^__^. My research area is around Networked Systems and I'm doing RA under supervision of Prof. Eric Keller and glad to work with people in the Network and Security Research Group in Computer Systems Lab. More specifically, my research focus is on Cloud Computing, Virtualization technologies, Orchestration, Computer Networking, and Linux Kernel. Currently, I am working on a project called Distributed Containers in which I hope to end up with a centralized orchestration system that will improve resource utilization and resource efficiency, while it pretty much preserves Microservice applications thoughput and latency compare to running it using famous orchestration tools like K8s.

Experiences

Software Engineer

May 2020 - Aug 2020
Salesforce, Louisville, CO, USA

Implemented a proxy server for both REST and gRPC calls, intercepting REST and gRPC request/responses to generatestubs for Mocking purpose
Software Engineer Intern at Data Manager Setup team, C360 product

Research Assistant

Aug 2018 - Present
Computer Systems Lab, University of Colorado Boulder, CO, USA

As a research assistant, I started working on a project called Toccoa. Generally speaking, this project is about cloud-scale packet-Level network analytics in software.

Another project which I have been working on roughly for a year, is called Distributed Container. Essentially, this is a manager implemented alongside with K8s which monitors containers deployed on physical hosts, gathers info about them and make decisions like setting some knobs/resource limits/etc dynamically in runtime to achieve higher resource utilization while preserving throughput

Teaching Assistant

2016 - 2018
University of Tehran, Tehran, Iran

Teaching Assistant of the following courses:

Computer Networking

Operating Systems & Operating Systems Lab

Computer Architecture

Introduction to Computing Systems and C Programming

Artificial Intelligence

Publication

Resource Management in Cloud Computing Using Machine Learning:
A Survey

Dec 2020
19TH IEEE International Conference on Machine Learning and Applications, 2020

Efficient resource management in cloud computing research is a crucial problem because over-provisioning resources increases costs for cloud providers and cloud customers; under-provisioning resources increases the application latency, and it may violate service level agreement, which eventually makes cloud providers lose their customers and income. As a result, researchers have been striving to develop optimal resource management in the cloud computing environments in different ways, such as container placement, job scheduling and multi-resource scheduling. Machine learning techniques are extensively used in this area. In this paper, we present a comprehensive survey on the projects which leveraged machine learning techniques for resource management solutions in the cloud computing environment. At the end, we provide a comparison between these works. Furthermore, we propose some future directions that willguide researchers to advance this field

(Poster) Efficient Microservices with Elastic Containers

Dec 2019
Proceedings of the 15th International Conference on emerging Networking EXperiments and Technologies (CoNEXT)

Containers are a popular mechanism used among application developers when deploying their systems on cloud platforms. Both developers and cloud providers are constantly looking to simplify container management, provisioning, and monitoring. In this paper, we present a container management layer that sits beside a container orchestrator that runs, what we call, Elastic Containers. Each elastic container contains multiple subcontainers that are connected to a centralized Global Cloud Manager (GCM). The GCM gathers subcontainer resource utilization information directly from inside each kernel running the subcontainers. The GCM then tries to efficiently and optimally distribute resources between the application subcontainers residing on a distributed environment.

Elastic Containers Paper

Shimmy: Shared Memory Channels for High Performance Inter-Container Communication

July 2019
USENIX Workshop on Hot Topics in Edge Computing (HotEdge 19), USENIX Association, 2019

Abstract: With the increasing need for more reactive services, and theneed to process large amounts of IoT data, edge clouds are emerging to enable applications to be run close to the users and/or devices. Following the trend in hyperscale clouds, applications are trending toward a microservices architecture where the application is decomposed into smaller pieces that can each run in its own container and communicate with each other over a network through well defined APIs. This improves the development effort and deployability, but also introduces inefficiencies in communication. In this paper, we rethink the communication model, and introduce the ability tocreate shared memory channels between containers supporting both a pub/sub model and streaming model. Our approachis not only applicable to the edge clouds but also beneficial incore cloud environments. Local communication is made more efficient, and remote communication is efficiently supported through synchronizing shared memory regions via RDMA.

Shimmy Paper

Projects

Here are some more recent and notable projects:

Toccoa: Cloud-Scale Packet-Level Network Analytics in Software - In submission to a top tier venue
Design a general and flexible, packet-level, network analytics system on top of programmable switch
Mini Internet - Design and configure a backbone network running OSPF as IGP and BGP
having different customers, transit service and peers
applying routing policies based on the relashionships
using route reflection, redistribution for statically routed customers and BGP attributes for traffic manipulation
Tools: Cisco Router (IOS), GNS3
IP Routing course project
Prediction and characterization of application power use in a high performance computing environment - Machine Learning course project, Department of Computer Science, University of Colorado Boulder
Re-implementing the paper and improving the results by using feature engineering techniques and adding LSTM
Rootkit Module in Linux - Develop an LKM to intercept Linux kernel predefined syscall in order to change the ”ls” command functionality and a utility function which checks whether a syscall is changed in syscall table (Kernel version: 4.x)
Advanced Operating Systems course project
Service Discovery & Version Updating - Build and run a simple Flask app, using Vagrant, Docker, Ansible, Etcd, Registrator, Confd, Nginx, Bash script and automate the version update
DevOps in the Cloud course project
Web Proxy - A web proxy written in Python, working with HTTP protocol, with URL caching, and an admin interface
Computer Networking course project
Module in Floodlight - Adding a module to floodlight controller to exchange key with each new host and register it as a valid host in the network
Computer Networking Lab course project
Kernel Programming (Kernel version 2.6.x) - add a new semaphore to the kernel, having Priority Inheritance Protocol to avoid Priority Inversion
Operating Systems Lab course project
Airplane Reservation Web App - An airplane reservation web application, using MVC, Object Oriented Patterns, HTML, CSS, JS, Bootstrap, AngularJs, JSP, JavaEE, Socket Programming in Java, Tomcat, Log4J, JUnit, Git, Maven, Docker, Kubernetes, Minikube, HSQL DB, Session State, and handling SQL Injection, CSRF issues, and Access Control
Internet Engineering course project
Web-Dota - Web-Dota-like game completely implemented in database, using EERD Design, SQL Server, SQL Server Management Studio, Stored Procedures, Function & Views, Agent, and basic Windows Form Application
Database Lab course project
Customs House Software - An application related to Customs house procedures, Design (having prototype, Domain Modeling, System Sequence Diagram, Class Diagram, etc), implementation(C#, SQL Server database), Test(Unit Test, Integration Test)
System Analysis & Design course project
Genetic Algorithm - Artificial Intelligence course project, Department of Electrical & Computer Engineering, University of Tehran
An algorithm using Genetic approach to solve a minimization problem

Skills & Proficiency

Programming Languages (C/C++, Python, Java, Bash Script)

Linux Kernel

Software Defined Networking

DevOps

Web Programming

Project Management/Version Control

Awards & Honors

USENIX ATC 2019 Grant Sponsored by NSF and VMWare

July 2019
2019 USENIX Annual Technical Conference, Renton, WA, USA

Best Prize in Entrepreneurship Track

Feb 2019
T9Hacks Hackathon, University of Colorado Boulder

Early Career Professional Development Fellowship

Aug 2018
Department of Computer Science, University of Colorado Boulder

Best Undergraduate Project Award

Feb 2018
Department of Electrical and Computer Engineering, University of Tehran

Build and deploy virtual machine live migration in cloud environment, using OpenStack, NFS, VSphere

Ranked 4th among All Information Technology Students

2015 - 2016 Academic Year
Department of Electrical and Computer Engineering, University of Tehran