What are the advantages of 301 redirects over rel=”canonical”?

Matt's answer:
MALE SPEAKER: Today’s question comes from San Francisco, California. Dan asks, in the 2009 rel=canonical video, you suggest using rel=canonical when we can’t use a 301 redirect. But 301s hurt performance. They require browsers to make an extra round-trip to my server. Shouldn’t I use rel=canonical everywhere instead of 301s? Well, you are the master of your domain. So you can choose whether you use a 301 or whether you use rel=canonical. That’s your call. Most of the time, though, I would recommend using a 301. That’s because everybody knows how to deal with it. Browsers know how to deal with it. All search engines pretty much know how to deal with it. If there’s some new little start-up, they might not know how to deal with rel=canonical– what they’re doing in their own search engine, for example. And another thing to sort of keep in mind is usually when you’re doing a 301, it’s because you’re going to some new place on your site. But you’re typically not doing a 301 on every single interaction that your browser has. Normally, it’ll be your browser landing somewhere. You do a 301 to the new location. And then that functionality just continues just fine. So it’s usually a one-time hop. It’s not like it’s a huge amount of extra work. The other thing is if you’re moving to a new location, your users will look at the address bar. And they’ll notice where they are. And so they want to have good mental model of where they are on their site. So there’s a lot of good cognitive kind of reasons and reasons why it might make sense to use a 301. It’s just well supported. Everybody knows how that works. So, all other things being equal, I sort of recommend a 301, unless you really can’t get around to– maybe you don’t have access to the web server or something like that. And then it’s totally fine. Use a rel=canonical. It doesn’t hurt if you prefer to really go with rel=canonical. It’s just 301s are little more supported. People understand them. And so that’s what I would recommend as the first pass. But if you’re a power user, and you really want to do things the way that you understand on your own site, you absolutely can use rel=canonical instead.
by Matt Cutts - Google's Head of Search Quality Team