Sunday, 19 December 2010

VOIP QoS on Dual-WAN ADSL Cisco 1841

Just now I'm messing about with a Cisco 1841 router with two ADSL cards in it (as outlined in an earlier post to this blog). I'll write in more detail about the IOS settings later, but meanwhile I'd appreciate some pointers if anyone has a suitable IOS config to share...

My ISP's control panel makes it easy for me adjust routing and QoS on the downlink, so I'd like to optimize the uplink using IOS commands, so that the VOIP egress traffic goes out through one pipe, and all other egress traffic uses the other, but with failover so that all traffic can egress through a single pipe if either ADSL line should drop.  So far everything works except the failover bit.  So my VOIP uplink quality isn't compromised when rapid bursts of upload traffic occur, and since it all goes up one pipe, there are no issues with out-of-order packet delivery due to asymmetrical routing.

The key part of the setup is currently as follows:
access-list 110 permit ip      host x.x.x.x any
access-list 110 permit icmp host x.x.x.x any

route-map voip permit 10
    match ip address 110
    set interface dialer0

route-map voip permit 20
    set interface dialer1
   
interface fa0/0
    ip policy route-map voip 
HINT: this initially had the side-effect of blocking some or all inbound TCP connections, even if the ingress ACL was removed.
SOLUTION: Try rebooting the router. Or turn CEF and fast switching off and on again on all the interfaces:
no IP cef
interface fa0/0
    no ip route-cache
interface dialer0
    no ip route-cache   
interface dialer1
    no ip route-cache
^Z
write
ip cef
interface fa0/0
    no ip route-cache
interface dialer0
    no ip route-cache   
interface dialer1
    no ip route-cache
Cutting back to the chase.  The failover part can't simply be done with weighted "ip route" static routes, as the only thing that's predictable about the VOIP system is my source IP address: the destination IP ranges are unpredictable.

Current suggestion I've had is to use the IP SLA facility in IOS, probably combined with two VRFs.  I do like the sound of that: the idea of IP SLA is that you can ping a machine at the ISP (say, pong.aaisp.net.uk) via both dialer routes.  Then if one route fails (due to dropped ADSL line or problems in the BT network) you can switch all traffic to the other line within a few seconds.  This would probably involve sticking the VOIP server on the second Ethernet interface, which is spare at the moment anyway.  That would also place the VOIP server in front of the firewall, which is no problem if I get the ACLs right, and would remove one more potential cause of jitter etc.

UPDATE: Cisco IOS doesn't appear to support per-source-interface or per-source-VLAN default routes, so it isn't possible to simply assign two weighted static routes per source interface.  So IP SLAs may be the way to go.

No comments:

Post a comment

Spammers: please stop wasting my time. All comments are moderated before publication.