From what I heard, we were about 3 months away from winning in Vietnam. That was from documents that were released by the Vietnamese govt in the past 10 years.
The soviets may not have taken over the region, but Communism seems to have a pretty firm hold. North Korea, Vietnam, and China. China's economy may be doing very well, but that's at the cost of govt crackdowns on anyone that doesn't follow the party line.
Even if we had been able to break the NVA/VC, it would still have meant massive casualties on each side, and who knows how long of an occupation. We were able to defeat the Iraqi Republican Guard in a couple of weeks, but we're still fighting years later, and the RG was nothing compared to the NVA/VC networks in Vietnam. Considering the overall outcome, I think the biggest mistake we made there (not counting going in the first place) was not leaving sooner.
China and Korea were already communist long before our intervention in Vietnam, the only thing that made Vietnam strategically important was because we were there. I don't think our defeat or victory in Vietnam would have made much difference in either of those countries. Our withdrawal certainly didn't confirm the domino theory threats that were the major rationalization for action in the first place, and we are still a world superpower today.
We can stop it with military force. Unfortunately, it's not politically correct military force. Israel seems to do a pretty good job with military response, but they're always attacked politically because they respond with 10 or 100x more force than what was used on them.
How can we stop what are essentially criminals with military force? I don't think Israel is so great of an example of this, considering attacks are still going on and with Hamas gaining political power, it seems like military force there is only maintaining the status quo, or worse. We don't launch hellfires from Apaches into houses where we think that suspected murderers are living, or at cars that we think they are driving on the street; I don't know why people are surprised when those tactics make people angry.
According to this
http://www.cnn.com/2008/WORLD/meast/03/31/iraq.main/index.html the Iranians may have had some involvement, but it's not clear beyond that. Either way, I don't see it as a failure. Giving them amnesty would be the worst thing they could do. Giving them amnesty and then seeing them disband will only give them the opportunity to reform into different groups with the same agenda.
Maliki says he will not negotiate with the Mahdi army, but members of his party ended up negotiating a cease fire with al-Sadr, it seems like a no-confidence vote. If the Iraqi forces could oust the militia from their strongholds, then they wouldn't need to ask for anything. In this case, it looks like Iran gets to act as the good guys as well.
I think amnesty is the only option if we want them to integrate into the society we're trying to create. If only we had offered amnesty to the regular Baath party members instead of that idiot Bremer banning them from everything things could have been wholly different. We can't kill all of the insurgents, and we can't expect them to stop fighting if their only alternative is going to be death or prison. If we want to ease the mess as soon as possible, then amnesty seems to be the best solution possible.