After quite a bit of tinkering we managed to get a multicast dial-peer working so that a call into a specific DN is then sent out to a specified multicast group. However there's a few moving parts to be considered, apart from the obvious enabling of multicast end to end between source & destinations. The Cisco Configure Land Mobile Radio (LMR) / Hoot and Holler Over IP on IOS-XE Voice Gateways document is very useful & includes various troubleshooting steps.
Summary of Steps
An analogue port has to be used to source the audio, attempting to use a SIP dial-peer to connect to the multicast dial-peer results in a 404 back from the gateway & a voice IEC syslog messsage about incompatible protocols:
%VOICE_IEC-3-GW: C SCRIPTS: Internal Error (Incompatible protocols): IEC=1.1.47.11.23.0 on callID
To get around this an FXS port was connected back to back with an FXO port, which is configured for PLAR to automatically dial the multicast dial-peer. So the call flow is: DN associated with FXS -> FXO -> multicast.
The multicast dial-peer must be set to a single specific CODEC, because there's no call control to negotiate CODECs.
A Vif interface is required with a /31 or larger mask to source the multicast from. Otherwise the source IP address will end up as nonsense like 0.0.0.1 or 255.255.255.255, resulting in downstream routers dropping the multicast traffic due to it failing the RPF check. The source IP address is actually the Vif interface IP address minus 1, e.g. .2 interface IP = .1 multicast source IP. It does appear to loop around so .1 interface IP = .255 multicast source IP with a /24 subnet mask.
On 4300/4400 series routers ip pim sparse-mode must be enabled on the Service-Engine interface that corresponds to the voice-port, e.g. voice-port 0/1/0 = service-engine0/1/0. Otherwise the audio won't be forwarded over the router's backplane & then out the egress interface.
4300/4400 series routers also have a bug CSCvk02072 that means the multicast RTP stream has DSCP BE (0) instead of EF (46). This can be re-marked via a suitable policy-map applied to the gateway's egress interface.
Lastly at least on IOS XE 16.3.5, for show rtp connection detail & show call active voice brief the transmit packet counters never increment, staying at zero & giving the impression that the audio isn't being sent when it actually is.
Config Snipppets
ip multicast-routing
!
ip access-list extended VOICE-RTP
permit udp any host 239.1.1.1 range 8000 48198
!
class-map match-any VOICE
match access-group name VOICE-RTP
!
policy-map MCAST-QOS
class VOICE
set dscp ef
!
interface Service-Engine0/1/0
description voice-port 0/1/0 backplane
ip pim sparse-mode
!
interface GigabitEthernet0/0/0
description Egress Interface
ip address 192.168.1.1 255.255.255.0
ip pim sparse-mode
service-policy output MCAST-QOS
!
interface Vif1
description Multicast Source Interface
ip address 172.16.0.255 255.255.255.254
ip pim sparse-mode
!
voice-port 0/1/0
connection plar 12345
!
dial-peer voice 100 voip
destination-pattern 12345
session protocol multicast
session target ipv4:239.1.1.1:16384
codec g711ulaw
vad aggressive
!
dial-peer voice 200 pots
incoming called-number .T
direct-inward-dial
port 0/1/0
Wednesday, 27 February 2019
Adventures With Multicast Dial-peers
Monday, 18 February 2019
CEF Forwarding Decisions
Sometimes it's useful to know which interface a packet will be forwarded out of when there's more than one path to the destination, e.g. troubleshooting asymmetric routing when there's firewalls in the path.
The show ip cef exact-route command provides this information - you pass it the source & destination IP address, plus optionally the source & destination port for platforms where CEF hashes using the ports also. Note that not all platforms support this, but most current Cisco devices do such as the 3850, 4331, Sup8E, etc.
The example below is a 3850 switch with 2 equal cost default routes via 2 different SVIs:
ufs1#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is 10.83.240.244 to network 0.0.0.0
O*E2 0.0.0.0/0 [110/1] via 10.83.240.244, 2d14h, Vlan12
[110/1] via 10.83.240.242, 2d14h, Vlan11
ufs1#show ip cef exact-route 10.84.190.1 10.83.232.10
10.84.190.1 -> 10.83.232.10 =>IP adj out of Vlan11, addr 10.83.240.242
ufs1#show ip cef exact-route 10.84.190.1 10.83.251.1
10.84.190.1 -> 10.83.251.1 =>IP adj out of Vlan12, addr 10.83.240.244
The show ip cef exact-route command provides this information - you pass it the source & destination IP address, plus optionally the source & destination port for platforms where CEF hashes using the ports also. Note that not all platforms support this, but most current Cisco devices do such as the 3850, 4331, Sup8E, etc.
The example below is a 3850 switch with 2 equal cost default routes via 2 different SVIs:
ufs1#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is 10.83.240.244 to network 0.0.0.0
O*E2 0.0.0.0/0 [110/1] via 10.83.240.244, 2d14h, Vlan12
[110/1] via 10.83.240.242, 2d14h, Vlan11
ufs1#show ip cef exact-route 10.84.190.1 10.83.232.10
10.84.190.1 -> 10.83.232.10 =>IP adj out of Vlan11, addr 10.83.240.242
ufs1#show ip cef exact-route 10.84.190.1 10.83.251.1
10.84.190.1 -> 10.83.251.1 =>IP adj out of Vlan12, addr 10.83.240.244
Subscribe to:
Posts (Atom)