I know I'm late to the party on this, but I couldn't find an acceptable answer to the question elsewhere. I recently solved this for the SSDP implementation that Sonos uses. It does leave a couple of ports open between the networks, but I was able to use a nat rule to blackhole the rest.
The Sonos controllers send a UDP multicast message to 239.255.255.250:1900 to discover Sonos devices. The Sonos devices reply to the message. Then the controller issues http requests on port 1400/tcp to the devices to issue commands. The devices send http notifies directly to the controller on port 3400/tcp.
You'll need to customize to your specific situation, so your mileage may vary.
-solder000
The Configuration:
Enable multicast routing
multicast-routing
Interface References
interface GigabitEthernet1/1
nameif wan
security-level 0
no pim
# sonos are here
interface GigabitEthernet1/2
nameif insecure_lan
security-level 33
# rest of net here
interface GigabitEthernet1/8
nameif secure_lan
security-level 100
Various Objects Used by the rules
# network objects
object network net_secure
subnet 192.168.2.0 255.255.255.0
object network net_insecure
subnet 192.168.20.0 255.255.255.0
# blackhole ip, this should be an unused IP
object network obj_secure_blackhole
host 192.168.2.7
# SSDP related objects
object service SSDP
service udp destination range 1900 1901
description Simple Service Discovery Protocol
object service bidir-ephemeral
service udp source range 32768 65535 destination range 32768 65535
description bidir ephemeral port range
object network obj_ssdp
host 239.255.255.250
object network net_multicast
range 224.0.0.0 239.255.255.255
# sonos service objects
object service sonos-3400-tcp
service tcp destination range 3400 3401
description Sonos App Control TCP/3400-3401
object-group service sonos-control
service-object object sonos-3400-tcp
service-object object bidir-ephemeral
# sonos network objects
object network obj_sonos_arc
host 192.168.20.131
description Sonos Arc
object network obj_sonos_move
host 192.168.20.199
description Sonos Move
object-group network sonos
network-object object obj_sonos_arc
network-object object obj_sonos_move
ACLs (order matters)
# interface group definitions
access-group insecure_lan_access_in in interface insecure_lan
access-group secure_lan_access_in in interface secure_lan
# allow Sonos devices to communicate back to secure networks
access-list insecure_lan_access_in extended deny ip object-group sonos object obj_secure_blackhole
access-list insecure_lan_access_in extended permit object-group sonos-control object-group sonos object net_secure
# block the rest of the traffic from insecure to secure
access-list insecure_lan_access_in extended deny ip any object net_secure
# block insecure multicast traffic
access-list insecure_lan_access_in extended deny ip any object net_multicast
# allow ssdp traffic in from the secure net
access-list secure_lan_access_in extended permit object SSDP any object obj_ssdp
# block the rest of the multicast nets
access-list secure_lan_access_in extended deny ip any object net_multicast
Multicast route
# route the multicast outbound from secure to insecure
mroute 192.168.2.0 255.255.255.0 secure_lan dense insecure_lan
NATs
# secure lan dynamic nat'd to insecure (allows multicast to function correctly)
# this can be limited to just the SSDP service, if desired
nat (secure_lan,insecure_lan) source dynamic any interface
# allow sonos devices on insecure network to send to port 3400 on secure network
nat (insecure_lan,secure_lan) source static sonos sonos destination static
net_secure net_secure service sonos-3400-tcp sonos-3400-tcp no-proxy-arp
# any other traffic that the sonos might send to secure network is sent to the blackhole
nat (insecure_lan,secure_lan) source static sonos sonos destination static net_secure obj_secure_blackhole unidirectional no-proxy-arp