IOS QOS service policy pass-through on a tunnel interface

I have some SIP phones on one network that go through an IPIP tunnel to get to the server.

I've setup QOS rules to watch for appropriate VOIP traffic as follows:

class-map match-any class-voice
  description Voice
  match  dscp af11
  match  dscp cs4 
  match  dscp cs3 
!
policy-map qos-out
  class class-voice
   priority 100
!
interface Tunnel1
 description Tunnel to VOIP Server
 ip address 10.10.0.2 255.255.255.252
 tunnel source FastEthernet0/1
 tunnel destination 172.16.100.100
 tunnel mode ipip
!
interface FastEthernet0/1
 description Internet
 bandwidth 1000
 ip address dhcp
 service-policy output qos-out

My trouble is that the class-map isn't getting matched because I can't assign the policy to the Tunnel1, only FastEthernet0/1.

Surely there must be something to make this work... what should I do?


I am in very doubt that priority queues can be applied to tunnel interfaces in so way. QoS functions are applicable to the objects where actual competition for bandwidth occurs - physical interfaces.

If your tunnel is used only for SIP or other high priority traffic you can match it whole and add to your class-map as follow:

ip access-list extended sip-tunnel
 permit ipinip any host 172.16.100.100
!
class-map match-any class-voice
  description Voice
  match  dscp af11
  match  dscp cs4 
  match  dscp cs3
  match  access-group name sip-tunnel
!

UPD: In some cases DSCP field from original packet is copied to tunnel header. You can check this option for your particular case (Cisco + IOS + ipinip). In success you do not need the last match and initial config should work fine.