17411 >> Ranveer Chandra: It's my pleasure to introduce Peter Steenkiste, who is a professor at CMU, professor of computer science and, electrical and computer engineering. He's been at CMU for more than 20 years. And this is your second visit to Microsoft, which is quite less for someone that senior. So he's worked on lots of stuff, including Nectar, which is high profile, had a bunch of [inaudible] papers. And very recently on wireless networks. Today he'll be talking about some of the innovations he and his group have done in this space. Peter Steenkiste: Thank you. Okay. So the motivation for the work I'll talk about is basically something that we call chaotic wireless networking. So the project started about five years ago, and when we made the observation that a lot of the wireless networking research was looking at what you can call wireless in challenging environments, which roughly speaking ad hoc networks with nodes having difficulty reaching each other, very low battery types of devices. A lot of random mobility and so on. In reality a lot of people were using wireless but they were using wireless in what were effectively looked to us very dense environments. They were using wireless at home, in hot spots, in office buildings. And so the challenges in these very dense environments are really very different from the challenges in these very sparse environments. So we basically decided to start a research project in that space. Since the name ad hoc was taken we figured we'd call it chaotic. So some of the characteristics of these networks are that if you look at home networks and all of the hot spots, they're largely unplanned. People put the access point where it's convenient. People who set up these networks don't know anything about wireless networking. And then also a lot of them are unmanaged, right? And there's also a lot of them that are unsecured. So these are very different environments from, let's say, a campus environment where there are tools available and knowledgeable people available. So that's kind of the motivation and the background for this research. This is data from '05 and earlier. It basically shows there are indeed very high densities in a lot of cities. And I think many of you have experienced this yourself. If you're in a hotel somewhere, you pull up your window and you can see a lot of access points. So here's kind of the road map that we put up roughly five years ago. There was kind of a three-stage plan. The first one was to say: Look, today we have a lot of WIFI hardware available. There's a lot of parameters that are in fact exposed, so you do have some control over how these networks operate. Let's see whether we can optimate or automatically optimize, have the network being self-optimizing using today's hardware. So there's things like channel selection, transmit rate selection, transmit power, CCA threshold and so on. So that was kind of the first step. Even at the time there were some emerging technologies that looked very exciting. So MIMO would be one. Directional antennas is be another. Software radio was another. These were technologies that were really not commercially available or at least not at reasonable prices but that open to potential of giving us more control than what we have here. So that's kind of the next phase. And then, finally, a lot of these technologies have very limited control over the spectrum, because they have to operate in the unlicensed spectrum. So then we at the time already we kind of say: Look, eventually we want to get to more dynamic spectrum sharing type of access, right? Now, we haven't really done too much here yet. We've been in this space I'm going to be super conservative today. And I'm going to talk about these topics. So I'm going to talk about results. So it's not this, but these yellow topics here. So I'm going to specifically elaborate on four projects, Charm, Pro. Transmit Power Control and Directional Antennas. I'll be at a very high level on each of these. The reason is when I'm through this I'd like to get back through some common themes that cut across these four classes of optimization, because ultimately these things are not completely independent. They are interrelated. So I have a bunch of slides where I kind of look at what the differences and similarities are between these different techniques. Before I do that, I will actually briefly talk about another project, which is the wireless network emulator, in part because I'll present a lot of results that were collected on that platform. So Eyor [phonetic] is involved in the wireless network emulator. She was also part of the Charm effort. So let me start with an anecdote. The wireless network emulator was motivated by kind of the chaotic wireless optimization. A lot of people have looked at this particular problem. Suppose I have an infrastructure network. I have two APs in red. I have a bunch of nodes and I have a severe unbalance, imbalance in the load, right. We all know what you can do. You can basically move some of the clients from the busy AP to the under -- to the AP that does not have a lot of load and hopefully everybody will be happy. This means that some of these clients will connect not to the high P that has the strongest signal but the next strongest or something like that. So the student who is looking at that at the time, worked on this, came up with this algorithm. Then the question came up: How do we evaluate this? And so, well, we can deploy it. But it turned out it's pretty hard on campus, but we need to modify the campus infrastructure and people are kind of protective about this. And we could also deploy our own infrastructure, but then we'd be competing with the campus infrastructure. We could manage -- we could do simulation, which the student in fact ended up doing. But this was a very honest student, and he said: Look, if we do simulation, I can make my results look at good as you want them. If you want a factor of thousand improvement I can probably make it work. And so there's a problem with simulation, which is that if you give the person running the experiments complete control over everything, including the model of the physical world, really it becomes very hard to justify your results. So that kind of got us going on the wireless emulator project. Where we basically observed that there's kind of this trade-off between test beds and simulators, and I don't think I have to elaborate too much on this. I think you know this. Test beds are more realistic but repeatability and control are very difficult. Also, test beds tend to be tied to a specific location. So you can only collect experiments in that location. Simulation has a lot more flexibility. Repeatability, easy control, but you have a question of realism that you need to address. And so what we basically came up with was this design for something called an emulator, which would try to achieve kind of the good parts of both of these worlds. So here's kind of how this works. Some of you are familiar with this project. So the idea is that I use real hardware because I am building a test bed. So I use commercial wireless devices or custom built wireless devices. It doesn't matter. I take this device. I take off the antenna, and then I plug a coax cable in the antenna port and I capture the signal that's transmitted by the device. Then I would have what looks roughly like a software radio front end which basically takes the signal, brings it to an intermediate frequency and samples it at a high rate. So I get a digital representation of the basement signal. And then I basically do that for a bunch of devices. And I inject all these signals into an FBGA which models the effect of signal propagation. So it models attenuation, fading, interference, noise, multi-path. And anything you can program you can do. In fact, a physical word isn't really constrained here either. And then basically for each of the target devices you kind of regenerate an input signal that you pump back into the device. So that's roughly speaking what this looks like. There's a bunch of red stuff here which is very important. It's very important that you isolate your test bed at the signal propagation level from the environment. The other thing, it's very important that these laptops can only talk to each other through your FBGA. They cannot talk to each other over the air. Or these are two additional constraints. So it turns out that building this, it's actually quite difficult. You need to really deal about the issues such as fidelity of the signal, as it propagates through the test bed. One of the things is you need a lot of flexibility because that's the whole point of the test bed. You want to be more flexible than something that's in a specific location. And you want to have this control and repeatability element. Then for a bunch of computer science people doing things like system building and packaging and so on turns out to be quite a challenge. However, the student who actually did all this initial design and also it was the main architect here is Glen Judd. And he made this happen. Now we have both Eyor and Kevin Boris another student continuing with the project. This is what we ended up with, here's the devices this is what you look at an RF brings the signal into intermediate signal. This is the digital domain this is our FPGA now we have a controller used to control the experiments. That's the system that we built. The system we have has 15 nodes rather than four. >>: You mentioned a couple of slides ago like wouldn't it be nice to actually be feeding the background interference into the emulator, like instead of all the signals coming from the controlled experiment you're doing, if you wanted to study, is there a way to do that. Peter Steenkiste: Yes. Can I get back to this in a minute? Actually, I think I took out that slide. But there's a bunch of things that would be nice to have. And I'd like to talk about them altogether. So this is kind of what it looks like. This is what the RF front end and conversion card looks like. You can see it. Real cards. They're both custom cards. Then basically these are combined with a laptop, which is one way of doing it. The blue stuff is the RF isolation foam that you need to isolate the device or isolate all of the analog parts. Then this is the central FPGA, which is the Zylik [phonetic] FPGA. We have a lot of connectors to connect to the end points. This is rack mounted and looks as follows. That's what this all looks like. The question I often get is: Well, okay, this is all good. But how does this really differ from a real test bed and a simulation? So this is kind of a visual representation of this. It shows the protocol stack going all the way from the signal propagation to the applications at the top. If you're running in the real world obviously everything is real. So that's easy. Simulation, everything is simulated. There are some efforts where you take things like real protocol stacks and embed them in simulation. So that's why these blue wiggly lines are here. Then in our system this is all real. And then this is basically emulated. And this gives us the control over the signal propagation environment here. This is the antennas and the signal propagation itself. So of course one of our things we need to be consciously aware of this needs to be realistic for our results to be valid. There's some related work which I've mostly touched on. And then this is actually being operated as part of the GENI project right now. And we can talk about it off line. Off line. But let me use the slide to briefly elaborate on two extensions that we really would like to get to. The first one is that in the current environment that we have, the FPGA basically is controlled at the channel level. People basically need to specify the behavior of the different channels. It's clear from a lot of our users they don't have the background to do this properly. So what we really need to do is raise the level of abstraction. And so what I'd like to do is build a layer on top of that basically says: Look, a user can say I give you an office environment and give me a vehicular environment which we were talking about before. Or give me whatever, a mountain, whatever. Right? So that would be one thing. The other thing is that 50 nodes is kind of very little or a lot, depending on how you look at it. But it would in fact be nice to say: Look I have a 50-node experiment but I'd actually like to model the interference of let's say 15 or 100 other nodes. So this is something that can be done. The most likely way of doing this is probably to use one of the nodes attach a software radio on it and have some software on it that plays back traces or does something to model the interference. The more tricky thing here is that the interference observed by the 15 nodes is not going to be the same everywhere. There's a little bit more complicated than it looks, I think. So these are kind of the two major extensions that we'd like to look at. >> Ranveer Chandra: So what's the scalability of this? Sorry 15 nodes. Peter Steenkiste: Up to 15 nodes. Limited by the card. >>: Why is it 15? Peter Steenkiste: It's just simply what we had funding for. It's simply what we felt we could build in a university. Also, the bandwidth of the system is very wide. It's full ISM band. It's 80 megahertz. If we would build a emulator that operates on 20 megahertz then we probably could do a lot more. >>: Using a vertex, better VGA, would that be [inaudible]. Peter Steenkiste: Obviously it would. But it's not the only thing. The packaging is quite tricky. If a company built it that has experience with analog systems, I think that would be an entirely different matter. They could build bigger systems, easily. Okay. So let's talk a little bit about the four projects and then I can try to kind of give a more global perspective here. So this is some work that was done by Glen Judd and Eyor. So I think we all know the problem. If you look at WIFI, for example, and many, many technologies, they have transmit rate adaptation where they dynamically pick the best transmit rate that they can use. So if you have an SI and R graph here at the bottom and you have a packet reception rate, you end up getting these curves. If you pick a certain -- if you observe a certain SI and R at the receiver you can say which transmit rate would be the best one. You want to be as much to the right as possible because those are the higher transmit rates. But you obviously want to have a high packet success rate. So you may pick 5.5. I think we know how this works. So the visual representation here is that your received signal strength at the receiver will change over time. This is a static pair of nodes here. This is a trace that we replay. So you can now kind of say: Okay, over time I need to jump between these different rates here to get the best out of my channel. This is the easy case. This is for a mobile node. You also get attenuation in here that changes as the node moves around. And then the G rates, there are many more of them. So you need to do this type of a mapping. Okay. Realizing, of course, that predicting the future is always a little bit hard. So it turns out there's been a lot of work on this. And so most of this work relies on something that's called trial and error probing. You basically look at the success you had at certain transmit rates in the first last five to ten packets and try to use this to predict the future. And so this kind of works but it tends to be slow in environments that change like the mobile environment. Right? Because you need to see enough errors and then it's trial and error. There's some work that has been done in the past where people use the SI and R as a way of getting an idea on the quality of the channel. The most notable problem you run into in that case is that the SI and R, let's assume for a second that this is dominated by the received signal strength, the transmit rate is the transmitter is the one that picks the rate but the receiver is the one that measures the received signal strength. So the wrong node has the information. So there's one I thought very good project which basically observed if you use RTCTS, the CTS that can be used by the receiver to inform the sender what rate to use based on the R received signal strength that it observes. The problem now is, of course, RTCTS is very expensive. It's really not something that you want to use. That's where we come from. So what we basically developed is this algorithm called Charm, where a transmitter can learn about the rate to use or get an estimate of the received signal strength at the receiver in a passive way without actively RTCTS. And the way it does that is by using -- okay. This is going to be interesting. Okay. We're going to see how this talk goes, because I modified this and it's not here. So there's probably some stuff that was lost. Anyway, the receiver basically uses channel reciprocity. Oh, there it is. Channel reciprocity to do this. I'll explain in a second how it works. We can basically get an estimate of the received signal strength without the RTCTS and then the transmitter can then basically dynamically pick the best rate. It's not quite as simple, but that's kind of the high level idea. So the way to look at this, this is our equation. SI and R. It's the received signal strength divided by node plus interference. What we want on the receiver is the SI and R. So we can now just -- some simple equations to figure out how you do that. The received signal strength has to be measured by the receiver, but using channel reciprocity you can actually estimate it on the transmitter. I have the next slide shows this. Noise is largely constant. Something that can be measured by the receiver and it can tell the sender what it is. Interference, we basically ignore. Because we have carrier sense which should limit the effect of interference. So this is not a perfect solution, but it actually works well most of the time. So then the question becomes how can I estimate the received signal strength on the transmitter that the receiver observed on the transmitter. And so it turns out this is actually pretty easy. So the received signal strength is basically the transmit power minus the path loss and then you have the antenna gains. So that's the top equation. The path loss is the one that you can get to using channel reciprocity. So basically if transmitter A hears a packet from receiver B and it knows these parameters and it can measure the received signal strength, it can estimate the path loss of the channel. That will also apply to the forward path which is what it is interested in and it can plug it into that equation. So it actually turns out that you can measure everything, if you know the transmit power by the receiver, which again the receiver can tell the transmitter. Turns out the antenna gains don't matter because again that's symmetric. That folds out. So it turns out that there are three parameters that are important. The path loss, which the transmitter can estimate based on reciprocity. The noise and the transmit power and both of these can basically be provided by the receiver. So here's how kind of these pieces fit together. I have a transmitter and a receiver and a bunch of other nodes. The transmitter and all the other nodes are sending packets. And the transmitter overhears all these packets and for each of the nodes it will basically create a history of the received signal strength that it observed by all these nodes. Okay. So, for example, this would be the received signal strength history for the blue receiver as it is overheard on the transmitter. Then using the transmit power and the noise figures, it can actually translate that into an RSSI estimation at the receiver. Okay. And then when it needs to transmit a packet at a certain point in time, it can basically use this history here to kind of extrapolate what the received signal strength may be or the RSS -- the SI and R maybe, I'm sorry. So obviously this is a prediction in the future. This is not always going to be accurate. But it's kind of an informed estimate. And then it can basically pick the transmit rate based on this, based on a table. Yes? >>: Why don't you pick S and IR back on the X? Peter Steenkiste: Well, you need the SI and R for the original packet, right? You need to pick ->>: Prediction rate. Obviously one packet -Peter Steenkiste: Yeah, you can. It turns out you don't need to conclude that. But because you can use the AC to -- the AC is going to give you another data point here automatically. You don't need to include it. You can use channel reciprocity to get it from the received signal strength of the AC. >>: But my point is like you only -- otherwise that would also work. Peter Steenkiste: Yes, that would also work. That would work fine, too, yes. >>: What we found in San Francisco, the estimates, the noise floor is pretty much the same everywhere. But there was an ambient noise floor due to microwave ovens and other things far away. You could represent sort of a noise floor, and that was different in each location. And that won't show up in the path reciprocity condition. Peter Steenkiste: So the path loss, the noise floor that you need here, each node in the system periodically broadcasts the transmit power it uses and the noise floor that it observes. We do not assume that the noise floor is the same every where for exactly the reason you mentioned. So there's a lot more details here that I will not get into, because then this becomes a Charm talk and that's not the idea. Eyor can tell you all the details. How about that? She'll probably do a better job than I do. So we took a lot of measurements, which means Eyor and Glen took a lot of measurements in a lot of different environments. There's listed here. This is in homes, office buildings, library, different environments. We compared it with the three algorithms that are deployed with the mad WiFi driver and this shows you the performance. So purplish Charm does pretty well. Turns out sample rate does pretty well too. It's a pretty good algorithm. And then the other two don't always do well. Actually ONA looks pretty good here but has some problems. We don't always do the best. So this is a case here where actually sample rate is better than we do. So nobody is ever going to be the best also. Right? That's not how this works. But generally speaking we actually do pretty well. We also ran experiments in the mobile environment. So sample rate is really good. But it is a little bit slow in adapting, because it needs a lot of samples to decide what rate to use. And so here's Charm really does this very well. So you see sample does really well, too. But it's very slow in going to the higher rates. So that's something that many people have observed. This is not something that we observed. And a final point I want to make we also ran a lot of experiments on the wireless emulator, most of which I'm not showing. But one of the interesting things we can do on the wireless emulator we can create artificial hard traces. And one very difficult case for any rate adaptation algorithm is hidden terminals. Because the channel is good, right? But because of collisions that you can't avoid, you basically end up losing packets anyway, right? And so I'm not going to go through the details here. But we can artificially create hidden terminal situations on the wireless emulator and go and compare our algorithms. And we do pretty well here. In part because we rely on the quality of the channel directly. And we don't rely on the collisions. This is not entirely true, and I will get back to that point later. So it is 99 percent true, one percent not true. So I'll get to that one percent later. So that's kind of a very quick high level overview of Charm. And so let's now talk about a different project, and which is work that was done by Amy Lu who is actually defending her thesis on Monday. This is something called Pro. And actually some people are here at Microsoft are familiar with this. So the idea is very simple. Suppose I have a sender forwarding, sending a packet to a destination. Node here. The packet transmission fails. The traditional WIFI approach is to say: Look, we will -- the source will retransmit the packet okay that we know of course. But, however, there can be a bunch of nodes in the environment that are, in fact, closer to the destination and have a specific better channel to the destination. They may have actually overheard the packet. Now, those nodes may be in a better position to retransmit this packet rather than original source. It may be for many reasons. One of them they have a better channel, so the packet success rate is better. The other possibility is they may be able to use a higher transmit rate. So the efficiency of the retransmission is better. So that's kind of the idea. So we kind of have a source, send a packet. If the packet transmission fails, one of these relays will notice that the packet was lost. Will realize that it has a copy. And it will basically retransmit on behalf of the source. Now, the obvious problem here is, of course, well how does the source know this is going to happen? Also there may be five relays that overhear this packet. How do you make sure they don't retransmit at the same time and have massive collisions. These are the type of problems you have to deal with. One of the things why this actually turns out to be a very potentially very interesting is that things like channel fading and shadowing are very channel-specific. Right? So over time who has the best channel to the source, which of the relays has the best channel to the source and has the best channel to the destination is going to change. And it's going to move around. The best one's going to move around over time and you really want for every packet pick the best one, that's the whole idea. Okay. So here's the idea. So we use -- this is really meant for infrastructure mode networks. And you only use multi-hop if there's a transmission failure. The whole goal is that the retransmission success rate goes up. And then the challenges here are marked in red. So you need to efficiently identify and prioritize relays. You need to avoid increases in collision rates, because now more people can be retransmitting these packets. And there's kind of an interesting question of how you deal with fairness. I'll explain how that works in a minute. So the way -- there's been some work in this area which, related work in this area that I'm largely not going to talk about. But there's been work that has done similar things. And the way they resolve some of these issues here is by explicitly coordinating between the relays. So they say, somebody will say oh I have a copy of the packet I can forward it. And then they kind of coordinate and then they do the retransmission. Pro-on the other hand relies on the existing random access techniques that WIFI has. So there's already a mechanism in WIFI where you have a back of window and nodes independently pick a value in back of window to minimize collisions. There's also a notion of exponential of where this back of window grows over time. So the way we basically do it is we basically rely on the existing multiple access mechanism that WIFI has and the carrier sense mechanism to basically avoid that we get too many collisions. The second thing that we do is we actually rely on signal strength to prioritize the relays. And so I'll explain how that works in a second. But all else being equal, we would really like to have the relay that has the best signal strength to the destination, but the packet is the one that does the forwarding. We don't want to have some random relay that may have a very poor destination due to the forwarding. Finally, turns out we can actually control fairness. I will explain that later. So here's how this works. We basically have a background process on the left and then we have the process that is used on after the packet failure on the right. The way the background process works is that every node kind of listens in on traffic and basically uses RSSI as an estimate of the channel quality to both sources and destination. So potential sources and destinations. And so they create the spur node RSSI history which is not all that different from what Charm does in fact. Then what they can basically use this RSSI history for, after some tuning which I will largely ignore for now, they basically decide whether which source destination pairs they're good relays for which means they have a pretty good channel to both the source and the destination. For those source destination pairs they will periodically like once a second broadcast the channel quality they have to the source and the destination. So other relays can overhear this. So that's the background process. So then when a packet transmission fails, a node will observe this because a relay will observe this because it hears the packet but not the AC. So then it says, okay, there's a packet loss. And then it says: Look, am I basically -- then it goes through its database and where it has information about all the eligible relays and channel quality to the source and destination. And then everybody goes independently in a distributed fashion through a process where they figure out whether they're kind of one of the better relays. And then when they do that, then they will also go through some kind of prioritization, where they say: Look do I have the best channel to the destination. Then it would be a high priority relay or do I have the second or third or fourth best channel. Then they're lower priority. Then they basically decide whether they participate in the retransmission process. So that's at a very high level how this works. >>: How does this interact with Charm? Peter Steenkiste: That's a question for later. This is a very good question. It's actually a hard question. So that's roughly how this works. So I'm actually going to use the picture to explain this in a little bit more detail. So the process would be here I have four relays. Assume they both have a reasonable channel to both the source and the destination. So they are qualified. And then based on the periodic broadcasts, they may all observe that these three relays are actually in pretty good position to do forwarding and this one isn't. So this one withdraw, would not participate in retransmissions. These three would actually do, consider themselves as good candidates for retransmission. One of the problems you now have is that three may be too large a number because your collision probability goes up as you have more relays. And so now how do you trim down the set? Well, that depends on the likelihood that these nodes receive the packets, overhear the packet. So depending on the quality of these channels, the nodes are going to decide independently what is the best subset of people to actually participate. So you want to keep it small but large enough that you have a good chance to get a good path to the destination. So that's kind of the balance that we're looking at. Then the other aspect is the prioritization. Okay. So the way the prioritization works is actually also just by leveraging the behavior of the WIFI in the sense that every node can basically rely on 80.211E which I'm sure some are familiar with, but basically have different nodes, pick initial back of windows. Some nodes can pick a back of window of, let's say, 16 slots. Others can pick one of 32 or 64 slots. Obviously if you pick a smaller window, your chances of retransmitting first go up, right? Again, it's statistical. It's random. So that's how Pro does that. It assigns different back of windows to different nodes. This is an experiment that I think will maybe bring some of this together. So I have a setup. This was done on the emulator, a source and a destination. The relays are spaced 20 meters along the line. And I'll show experiments where the source is fixed but the destination is placed near different relays. So here's kind of the -- this is how it works. Very nice. And this is kind of the results we get on the emulator. There are four graphs here. There are graphs that only have attenuation. No fading, and then there's graphs with fading, which are the red ones. So what we're seeing is behavior that actually matches our intuition pretty well. If you have only attenuation but no fading, it's a very static environment. And it turns out that Pro really doesn't work except in the case when the source and the destination are almost out of range. Right? Because in this case you're almost creating a mesh topology here. So what you're seeing is that for nearby situations, Pro makes no difference. And here Pro effectively becomes a mesh node that forwards the packet. But the picture is different for fading, because what's now happening is we're getting a more dynamic aspect where some relays overhear some packets and other relays overhear other packets. Now you're seeing that even for nearby situations, which is still pretty far, what you're seeing is Pro can still help because there are packets that just because of the fading, the destination doesn't hear but intermediate nodes do hear. So it kind of matches I think the intuition we have. It uses real hardware and emulated in this environment. Some more results here the first two bars, the blue bars are Pro, let's ignore the Pro optimal for now and then we have Charm at a rate adaptation, that was in part your question. Sample rate has a different rate algorithm and then plain WIFI with fixed transmission rates. This kind of confirms this. If you only have attenuation and Pro doesn't make much of a difference. If you start to have fading then Pro actually does help and it does better than the rate adaptation algorithms. And as the fading goes up, you really, relatively speaking, the gap also increases. So it matches your intuition. I'm actually going to skip the other results. We can talk about fairness off line. And what I want to get to is we also ran experiments or Amy ran experiments in two buildings on campus. This is one building which was Porter Hall. And so what she did was she basically put up 10 laptops. Now what she did is for each pair of laptops, she used that as a source as a destination, ran an experiment, and then the other eight nodes are relays. Then she picks another source destination pair and the other nodes are relays. She went through all the combinations. And so the results you get for this particular environment are shown here. It's basically the cumulative probability distribution of the fraction of the nodes that observe a certain through-put. So through-put goes up left-to-right here. So there's a certain group of nodes here, a third of the nodes have very good connectivity. Third of the nodes very lousy connectivity and a bunch of them are in the middle. These are nodes that are effectively out of range because of the environment. These are probably have more or less reasonable line of sight path and these are in between. So what we're seeing here is kind of three things. The first one is that for the good nodes Pro is in blue. It overlaps with sample rate in this case. And so this is very good. It means that Pro doesn't hurt performance, which is not necessarily a given. Then what we're seeing here is that for the very poorly connected nodes it turns out that Pro actually helps. This was never our intention, but it turns out that Pro can function as a range extender. Right? Extends the range of the radio. You can achieve better effects using or similar effects using mesh forwarding. This gap we can talk about off line. This is a detail of the implementation. And then in the intermediate range where you have an okay channel but not a great channel, that's kind of where Pro also helps, right? By the way, these experiments were done in this building which has hard walls. It's traditional office building. Also this was done at nighttime. So she also ran experiments in a different building and this is the graph she got. So the thing that's interesting is that graph looks completely different. Turns out that Pro almost always works. We never ever have the out of range situation there. These results were actually taken during the daytime. There's a lot more mobility in the building. In fact, this is in a very busy area of the campus. There's a lot more fading here. So what we're seeing is as fading goes up, Pro basically helps. There's also issues of line of sight that are different. But we kind of just want to give you a high level picture here. So this works pretty well. Interaction with rate adaptation is something you might want to make part of the conclusion discussion. Okay. So the next two sections are actually shorter. So that will go hopefully work. So this is actually fun. Let's do this. So what we want to do is use transmit power control to reduce interference. This is the next thing. This is work that was done by Chew Lu another student in our group. This is together with [inaudible]. Okay. Here's kind of the NS view of the world. I have a transmitter. Suppose I have two other nodes. This is my intended destination and this is the poor node that suffers interference from me. What should we do? I think this is obvious, right? If I reduce my transmit power then I can still reach my destination, but this node no longer suffers interference. So the intuition here is that reducing transmit power is a good thing, right? Okay. Very good. Now, when I talk to people in E department or E he EC department they have a different story. They have this SI and R equation which I already put up. When I look at that and reduce my signal power, all else being equal, that's really not such a good thing because I'm moving to the left on this axis. Right? And reducing my transmit power is a bad thing, right? So now the research community is using both of these models. And so clearly somebody has to be wrong here. Okay? So the question was: Who? Right? Well it's the hardware that decides this. It's not us. So we actually ran some experiments on the emulator. Very simple experiment. We have two node pairs. I have a source and a destination and then I have an interfering source that I've created a hidden terminal here. So they can't hear each other. These guys send out a certain transmit rate that we change over time to create a curve like this. And then I change the transmit power of the interferer to basically create multiple curves. So this is basically the colorful picture at the bottom is what we end up with. Again, this is under highly controlled conditions. There's no multi-path here. It's very clear channels. But the thing that's very interesting is that changing the signal power at the interferer basically moves that -- means that I shift graph by a fixed amount which turns out to be the same amount that I change the transmit power of the interferer with. In other words, when I move from this graph to this graph, I can basically do that in two ways. Or from this point to this point. I can do it in two ways. I can increase the transmit power or I can reduce the power of the interferer, right? So if I go back to my two models, this is the winner. Because this effectively corresponds to this picture here. There's some details about this graph that are interesting to talk about, but I will actually skip. There are some issues here on why do we have this and so on. But those can be explained but are somewhat orthogonal to this talk. So basically what she did was -- actually, how long is the talk? Five more minutes, 10 more minutes. >>: Another 10. Peter Steenkiste: 10, 15 minutes. So she basically then wanted to do transmit power control. Again, there's been a lot of work in this area, fair bit of work in this area but most doing access point transmit power control. So you're assuming you have no control over the clients and access points control the power, which is a perfectly valid thing to do. So she wanted to be more aggressive and wanted to basically say: Look, every link independently adjusts its transmit power and the receive CCA threshold. So basically the starting point for his work was a very simple observation, which is the following. I can take a transmit receive pair where I have, let's say, AP1 talk to node, A P2 talk to a different node. Then there's also interference that's created through the dotted lines there. What I can now do is if I have control over both transmit powers, it turns out that you can try to tune both of the transmit powers so these two transmissions can happen simultaneously, because that's really what I want to be able to do. I don't want these things to defer to each other. I want them to transmit independently. And so using the SI and R equation and by ignoring noise, because most WIFI networks operate way above the noise floor, so noise is not an issue. It turns out that you will be able to tune the transmit power of AP1 and AP2 if this condition holds. Okay? And then obviously the SI and R in both of these cases includes both the signal transmit -- the signal strength at the receivers from both of the APs. So you can go through the math. It's simply based on the SI and R equation. So when you look at this, there's two conclusions. In some cases you can't do it. But in other cases you can. And you calculate what the transmit power is that you need to do this. In fact, there's not just one value that is true. There may be multiple values that work. So then what he did was he basically say okay how can I now use this? >>: Wouldn't it be possible what exactly, when you say possible, is it just that you get reception or is it better than sequencing or -Peter Steenkiste: So the goal here is to have the two transmissions happen at the same time. That's the goal. >>: Better than going one by one -Peter Steenkiste: I'm assuming it's better than doing one by one. >>: Why do you assume that? Peter Steenkiste: Why do I assume that? If I can do two transmissions simultaneously it's going to take less time if I do one after another. >>: But if you have interference. Peter Steenkiste: The whole idea is that you pick these values so the interference doesn't prevent reception. >>: Arbitrary system? Peter Steenkiste: What? >>: Arbitrary system. Peter Steenkiste: Let's keep that out of it. Let's assume it's fixed, small number of values. Turns out this problem is hard enough without [inaudible] rate. But basically what we said is can we basically improve spatial reuse and come up with an algorithm that builds on this to do this. So it turns out you can. The way it basically works is that you -- oops. The way you do it is that you basically build a pair-wise conflict graph for your network. And then you can use the equation that I had before to remove links from this pair-wise interference graph. And obviously the more links you remove, the more transmissions will be able to go on in parallel. Now, it's important to realize that this is kind of a probabilistic optimization in the sense that it may be that you remove a link between two transmitters who are actually transmitting to a specific destination. It may be that they never want to do this, right? But if they do then removing that link will basically enable that. And so there's then also a distributed version of this algorithm that he came up with, which gets quite tricky, because you need to have a fair bit of information sharing going on. It does not create a global interference graph. Each node builds a local interference graph. So there is that going on. And it really is hard to explain in a short amount of time so I will not do that. But it can in fact be done fairly easily. And then again he ran some experiments. So here there's a number of different solutions. There's a manual solution that is shown with this being the individual through-put. The orange bar is what you get if the two go on in parallel. And then manual means manually optimized. You literally did an exhaustive search of all combinations and came up with this. Here there's different combinations that don't use our algorithm and here's our algorithm. And the point is kind of that the yellow line here, there's actually very close to optimal in many circumstances, right? It turns out there's a really big open question here this is for a particular configuration. I can't argue it's typical. I can argue that it works. So we ran a bunch of them or Che ran a bunch of them and they show similar results. This is for an eight node example. As the density goes up it turns out you get improved benefits. So this kind of transmit power control. So very high level. And I encourage you to go read the paper. I can e-mail you the paper if you're interested. A final point which is also work by Che is actually to go look at directional antennas. An interesting variant on what I was just talking about. I think you know how directional antennas work right? Turns out most have been outdoors where they're in direct line of sight environments. Where it's entirely obvious optimization. So it's actually looking at an indoor environment. So our initial observation was that you know this may not work because there's a lot of multi-path going on and the interaction between multi-path and directional antennas is a little fuzzy. In fact, it's still fuzzy for us. We're still learning over time here. But we were actually able to at least artificially create a scenario in our head that said: Gee, maybe indoors is a nice place to use on directional antennas because we can do interesting things here using the multi-path. So this is a scenario. Suppose here on the left I have two senders and I have two receivers. Unfortunately, the receivers are close together. And so we have interference that is created by the other sender. We can't have simultaneous transmission, even with transmit power control. You can now say wait a second because of the multi-path the two senders can be directional senders. They can pull in a different direction, which is not the most obvious direction. And you get something like this. Right? So now this is a cartoon, right. I don't know if it ever works but at least on a cartoon level this is good. If you can't do it at the cartoon level it's never going to work. So that's kind of what we did. So he did some experiments which I will not show where he actually experimentally tried to determine where this was ever the case. And, indeed, there are cases where, if you describe this path as the max SNR path, where the max SNR path was not optimal, if you started to have multiple directional antennas. So he then basically came with up with a solution where said look, if I now assume an environment with directional antennas in the APs, but plain omnidirectional clients, how can I basically use directional antennas. It turns out if I go back to my transmit control approach even though we don't change the transmit power here, the way you do that is by building a conflict graph and by using this conflict graph to determine who can transmit at the same time. And we're relying in our topology here on the fact that these APs are connected through a wired network so we can coordinate them very easily for scheduling purposes. Now, the problem here is that because of the directionality, the nodes in the conflict graphs are not just the links but also the direction in which an antenna is pointing. So the conflict graph size explodes. The number of nodes in the graph goes up by a factor of K, which is the number of directions of the antenna. And so it turns out that building this conflict graph is very expensive. It's an order N times K squared problem. So building the graph is very expensive. Where N is the number of APs and K is the number of directions. There's a lot of experiments to build this graph explicitly. So Che said: Well this SI and R model worked very well for transmit power control. Let's try it here. Now the idea is you're assuming that the SI and R at the receiver is going to be a pair-wise, assuming pair-wise interference assumption can be basically calculated by the difference between the signal strength by the intended transmitter and that of the interfering transmitter. And now if I can basically calculate those, or measure those, I can estimate the quality of the channel this way. And so it turns out that the nice thing about this is that the complexity of doing the measurements becomes NK, rather than NK squared. And so you're basically relying on SI and R model to be able to do this. So he built this. And I will actually not go through the details. But this actually works pretty well. It turns out that there's another challenge here which is that you need to reduce the complexity of the scheduling problem. And so this is not really a networking problem. Okay. So that's kind of how that worked. Now, okay. I've talked about four topics. And so all of them actually relied in some way on RSSI measurements, right? Which is kind of not something that we envision when we started this project. This is something where when I needed to put a talk together I said: Wait a second. There's a lot of mentioning of SI and R in these slides. So how does that work. Most of these techniques seem to work. You can question the value of an RSSI reading or not. But it actually kind of works pretty well. And this is not entirely a surprise. If you talk to people in E departments, they have an unwavering faith in the SI and R model. So they've been working on this much longer than I have so you need to have some faith here. So this is a common theme. The interesting thing if you look at the four projects -- I hope I've given you enough details to appreciate that -- turns out there's some big similarities like the SI and R model and RSSI readings, and also there's big differences between them. This is a list of some of the big differences, and I'll discuss some of them in a little bit more detail. First thing that I want to point out is that all of the four projects were implemented on WIFI hardware. But these are not WIFI tuning projects, because they really sometimes do very weird things, right? These are not standards compliant things. Charm is actually the only one that fits within the WIFI standard. Pro obviously having other nodes retransmit on your behalf, I think as a lot of people in IEEE would be offended by this and possibly justifiably so. Here we're really not making any assumptions about what the network is. This is transmit power control. Doesn't have to be WIFI. Doesn't matter what the protocol is. It's protocol independent. DIRK uses a TDMA protocol with centralized scheduling. So there's no carrier sense used, for example, in this so this is also not WIFI. So these are very different types of projects. But one interesting thing is that first observation here is that these four projects actually use SI and R and RSSI readings for different reasons. Pro and Charm to a large extent use it for agility. Very quick feedback, right? In contrast, these two projects use these readings rather than probing, because it reduces the search space in the optimization. So it's really maybe fundamentally there's all reducing overhead here. But there's kind of a different motivation here. This is an agility argument to be able to very quick, and here it's really reducing the cost of the learning about the environment that's being used. There's a different reason for that. The other thing that is very different between these, which as I think is kind of interesting is they operate on very different scopes and time scales. So Pro to some extent Charm operate on a per wireless link, source destination pair. Charm actually is clearly per source destination pair. Pro needs to include a bunch of relays so the scope is very different. Pro is the most adaptive of the four. It's on a per packet basis that it optimizes. Literally every packet could be relayed by a different node. Charm is kind of on a burst of four or five packets, I would say. Be it hand waving. But short term and very quick optimization. These are slow. These are all adapted at the second level, right? Because -- and the reason is simply that they need to coordinate a fairly large number of nodes in order to be able to optimize this, because of the interference issues that need to be dealt with. So the scope here is roughly, from a node, kind of two hops away, right, roughly speaking. That's the set of nodes that needs to be coordinated. So we have two nodes, two nodes and the nodes in between. A node and up to two hops away. So the scope is very different and also the time scale matches the scope to some degree. You can be much more agile if there's only two nodes involved. The other thing that's very different between them is that the level of precision of the SI and R estimates that you need is very different. Charm needs by far the most precise information. If you're off by Charm you're either going to have a different -- the rate's going to be wrong, right? Pro actually, it doesn't matter very much it turns out. We only use this to select the relays and we typically have several anyway. So if one of them is way off base it doesn't really matter. So we only need very rough estimates. Here turns out to be not particularly sensitive either, because it's one of these things where we opportunistically, you know if your transmit power control doesn't always avoid simultaneous transmission, then that's okay. You're no worse off than you were before, right? It's not very sensitive. Here, DIRK is very sensitive. This turns out to be very tricky because you don't have carrier sense to save your hide effectively. It's a very different usage of that information and sensitivity to the precision. There's very different ways in which they deal with interference. So the Charm and pro-basically rely on the existing mechanisms in WIFI or in whatever algorithm protocol you use. Transmit power control estimates the interference and adjusts the carrier sense for that. I didn't talk about this at all but there's an algorithm to pick the carrier sense once transmit control has been done it accounts for that then still uses carrier sense because using the optimized carrier sense threshold. Here we make sure, we assume that the scheduler has eliminated interference. It's a very different model again. This is really why the accuracy of the information needs to be pretty good or conservative, right? And then there's something that I have not talked about because this is a detail, okay? But the fact of the matter is your estimate of the SI and R will sometimes be wrong. You can be as good as you want but it will sometimes be wrong. And the problem that you have is that sometimes these failures can be very systematic. Right? You can just have a cart that's completely uncalibrated or weird and you don't want to be in a permanent problem corner, right. So it turns out that all of these four algorithms have a way of accounting for this. So there's a way where they will basically, if something goes wrong in the estimates, they kind of have a fail safe behavior where they will fall back to a different mode of operation or will they adjust thresholds so that they automatically get out of that bad spot. Pro and Charm basically do this by having the threshold tables that are used adjusted based on observations. So there's threshold tables that tells you which relays to use or which transmit rates to use, and these are -- there's an initial starting set of tables, but overtime these are adjusted based on the observations. In part to calibrate to the hardware that's used and in part for weird environmental effects. Transmit power control has an entirely different set of problems which is that if you start playing with your carrier sense threshold, and then the receive threshold is often pi to that, you can have nodes that become deaf and so you need to deal with that. So there's a set of different algorithms that periodically relies on periodic high power broadcasts and periodically increasing that threshold to be able to participate in the protocol. And then DIRK relies on this by using feedback. So if a node observes high packet rates, it will report this to the scheduler and the scheduler will adjust the schedule to avoid these bad links. But it turns out that this is a detail, but a lot of the time in developing these protocols actually goes into getting this fail safe behavior, right? Different algorithms need to be used for different protocols. So conclusion. So I talked a little bit about channel emulation. I always love to talk about wireless emulator. I think it's a great project. And so I presented four techniques which just happened to all use RSSI readings to estimate either received signal strength or SI and R. So these optimizations use that information but the optimizations are in fact very different in how they use that information. It's my main point. We also need to account for and deal with inaccuracies in these estimates. That turns out to be actually kind of hard, right? And then there's the issue of how you combine these techniques, right? It's very interesting. We have a little bit of experience in combining Charm and Pro. And it turns out you can actually, we actually have a multi-rate pro that uses Charm for rate optimization. And it actually works pretty well. You can do that. It turns out -- it's easy to prove to you that one does not dominate the other. You need both. So I can be in an environment where there are no relays, right? I better have rate adaptation, right? Or I can be in an environment where I really have very high fading or something like that, and rate adaptation is too slow. The changes in the environment are too fast and then Pro turns out to work because it's very opportunistic on a per packet basis. It turns out it's easy to show that you need both. Our multi-rate Pro combines the two but actually you could call it a lazy combination of the two systems. And lazy in a good way here. Like very little work, right? So the two largely operate independently. The only change that we've made is that we've made rate adaptation on the source a bit more aggressive, because there is a relay there that can back you up if you have a failure. That's kind of the only change we've made. There's one other detail that's actually not that important. But I think there's a big issue here. How do I combine DIRK with transmit power adaptation. That's a great topic to look at. So hopefully we'll be able to do that at some point. So that's the end of the talk. Any questions? >>: Is that available for our use in terms of hardware/software, how part of a service? Peter Steenkiste: It's a service thing you can access over the Internet. >>: Okay. Peter Steenkiste: And so there's a website. There's some documentation that we're always improving and you log into this. So if you've used MLab, very similar model. >>: We use it for ->>: Yeah, I didn't know how you used it. >>: Coordinate it from here. Peter Steenkiste: Right. The biggest hurdle we had with that was you were using Windows. That was the biggest hurdle. Now we support it, actually. Because we used MLab software it supports Windows automatically. Eyor doesn't have to come in the middle of the night and boot manually. Any other questions or are people getting hungry for lunch? >> Ranveer Chandra: Let's thank the speaker. [applause]