The next thing that I want to talk about is data center traffic engineering. In the case of a data center, the scale is huge. Hundreds of thousands of nodes. Which means that we're going to have a plethora of switches in the loading fabric and change is the order of the day. With so many components, it's not a question of if a failure will happen, it's a question of when is it going to happen. That's the reason I mention that these network fabric have to have redundancy so that you can [inaudible] with its failures. In addition to that, even if you don't have any failures, one of the things that happens all the time in data centers is migration of VM, that is applications are migrated among the servers in order to do load balancing or maybe do meet SLAs or failure tolerance and things like that. Remember that in spite of all of this, we want to have layer two semantics in terms of how the applications perceive the network performance to be happening. So congestion of word is a supercritical in a data center network. The application characteristics are important to consider and what the traffic patterns are. It has serious implications on performance lost. If there is a performance loss there's serious implications in a data center. So we will focus on these two points. If you look at the flow in a data center there are certain characteristics that you can see. One of the common workflow pattern in a data center is something called partition aggregate workflow. That is if you think about doing a search, for instance, of some index term in a corpus of documents, well you have a huge corpus of documents. You can share it into datasets and give it to these workers that can simultaneously work on portions of that dataset. The results of this is going to be aggregated by an intermediate level, aggregated again at another level and finally, the client request is going to be serviced. So this is a very popular application pattern called partition aggregate. A lot of internet applications, large data intensive applications tend to have this kind of a workflow. There are very stringent latency constraints in such workloads. I mean, this is common. If doing an airline reservation, I want a response back in a certain amount of time otherwise, I'm going to just go to a different site. Typically, at the top level of this partition aggregate tree, the latency constraint, maybe 250 millisecond at this level, 50 millisecond at this level, and 10 milliseconds at these levels. So there is a need for low latency for these what are called short flows because we're giving very simple queries and asking some results back. These are what are called short flows coming from the partition aggregate data baton. Another thing that is coming at the high burstiness of these requests. A request comes in and you have a burst of requests that are going out to all of these guys and the results are also going to come back in a bursty manner. Because all of them are working with similar time constraints and so there is going to be burstiness in the network traffic. Both of these properties are coming from this partition aggregate nature of the application. The application in addition to this high-level picture, many of these applications have internal state that is being maintained in order to cater to the freshness of data. So for instance, new corpus of documents come in and Internet is constantly evolving and therefore, state maintenance has to happen. Some of these state maintenance may require high-throughput because of either the long flows that might happen and they may require high throughputs. So low latency, high burstiness and high throughput, these are some of the requirements in data center networks. Now, implications of these requirements is that congestion, if you have congestion, that can lead to severe performance penalty. Performance penalty is not just saying, okay, somebody is not able to watch the video happily. It's going to result in revenue loss because somebody will say, well, I don't want to use this data center because it is not giving me the response that I want. So the serious performance loss of revenue implications when there are congestions leading to performance penalty. But on the bright side, compared to wide-area network, the good news in the data centers that round-trip times can more accurately estimated. The reason is because the network fabric is all constructed load of commodity parts which are the same capabilities. As opposed to wide-area network where we have no control over what the switching fabric is. Therefore, the congestion avoidance schemes can be tailored to take advantage of the data center ecosystem. So that's the good news in data center networks.