Archive for May, 2002

Embodied Intelligence

Posted on the May 13th, 2002 under Artificial Intelligence,Classwork by

This was a class by Rod Brooks that dealt with programming artificial intelligence for computing agents existing in a larger environment, and equipped with sensors and actuators. It was a class full of fascinating lectures and interesting homeworks. For the final project, I have foregone the default choice of making a dumb little robot, and instead did something I always wanted to try: I tried evolving a genetic algorithm-based artificial intelligence for a multiplayer game bot.  I did this within a framework of one of the most popular online games of all time:  Valve Software’s Counter-Strike.  To simulate artificial living organisms, I augmented a bunch of Counter-Strike player clients with “vision” and “control” interfaces, and spent a week in the lab breeding increasingly more sophisticated bots by pitting them in matches against one another. In the end, of course, the open-endedness and the complexity of the game made it hard to create a truly intelligent bot, but the evolutionary system did make a lot of progress towards achieving the goals of the game.

Considerable difficulty in the implementation of this class project stemmed from the fact that the architecture of Counter-Strike 1.6, the game, was never designed to allow anything remotely like bot AI programming.  I had to learn and use the Half-Life SDK and some third-party tools, and integrate it with my genetic algorithm breeding system.   I think the total development time was about two weeks, and I really felt like I accomplished a lot in that time.

Counter-Strike AI Project Report

View Fullscreen

Guavus, the start-up

Posted on the May 10th, 2002 under Business,Software,Startups by

In 2002 or 2003, my friend, Anukool Lakhina, was heading off to an internship at Sprint Labs for the summer for the first time. “I don’t know what I’ll do,” he said, “but I’m sure it will be a stimulating place, full of ideas and data.” We discussed possible problems to consider, and our minds wandered. I mentioned my earlier work on face detection using eigenfaces that I’ve done a few years earlier.  I suggested that the technique if Principal Component Analysis (PCA), that  was used on a database of images of people’s faces to distill the most statistically significant facial features, could be applied to network flows in a similar fashion.  Just like you can represent any person’s face by a linear combination of such basis facial features, maybe it was possible to figure out what constitutes the basic network flow patterns.

Turns out it was a good idea, after all.  Working with Cristophe Diot, Mark Crovella and other talented researchers, over the next few years Anukool did a ton of work and took it to new and exciting places.  Turns out that the PCA technique can be used to define patterns of “normal” traffic activity, to define the variability bounds for what “normal” traffic should look like, and, most important, to detect anything that falls outside the bounds of “normal” as a “network anomaly.”  Examples of such anomalies include DDoS attacks, traffic spikes, network disconnections and many others.  Moreover, once an anomaly was detected, distributions of features such as IP addresses and ports to which the packets in an anomaly were destined, allow one to classify the type of the anomaly.  The applications are immediately obvious:  ISPs could use this to monitor the state of their internal networks, in real-time, and to quickly react to them.

After graduation, Anukool approached me with the noble intention of turning his thesis into a product, and I agreed to help him in this endeavor.   He founded Guavus, the network traffic analysis startup.  As Dr. Nuke explained it, the name “Guavus” comes from the guava fruit.  Guava is exceptionally rich in vitamin A and beta-carotene, which are great for your vision.  It is also obscenely rich in vitamin C, which is great for immunity.  Therefore, Guavus offered both clarity of vision and quick reaction to threats within your networks.  See?

During 2005-2006, I devoted intermittent but sustained effort to being a “VP of Engineering,” designing the initial architecture of the NetReflex platform, including requirements, technical specification, and some UI mockups.  The platform had a fast multi-threaded C++ packet processing and analysis “core,” that interfaced with a Java application server and talked to a fat-client front-end written in Adobe Flex.  The core would receive NetFlow report feeds from an ISP’s routers and visualize the status of the network in the users’  web browsers in graphically exciting and interactive ways. I implemented chunks of the scalable packet processing and storage engine, and the interface to multiple database backends.

I also helped with the more logistical aspects, such as interviewing dozens of prospective hires.  I managed the initial team in the push towards a project alpha over Skype, and even traveled to India to make progress on site.  When Anukool got a capable technical manager to direct the team on site in India, I realized the startup was finally sea-worthy, and detached myself from the project.

I am happy to see that, today, the start-up is flourishing and has expanded its scope.  It has also become a platform for the application of research by wide-area networking researchers like Nick Feamster, and I am sure by now it is an invaluable tool for ISP operators, big and small.