DesignFundamentals

So, you want to play with Multicast?… (part 1)

There. I said it. The big bad ‘M word’. Multicast. If you’re anything like I was, this was that grey area of networking that ‘only those video people’ used. You know it has something to do with some IP addresses you’ve never seen used before and you know it’s a way of sending data to multiple targets at one time. I was there and decided to tackle just how can I get a straightforward multicast setup going on. If you have a touch of networking gear, a few computers and some time, you too can get a basic multicast setup up and running. Even if you don’t have an immediate need to do a deployment anytime soon, I’d encourage you to take an evening and tackle this. It’s fairly straightforward to get a basic setup up and running and you won’t regret the investment in time. First off, let’s get together a list of a few things you’ll need:

1) a router that supports multicast (any reasonable L3 Cisco router for example should do here)

2) one computer to use as a source

3) one computer (or two) to use as targets for receiving our data stream

4) some media to stream

Let’s tackle the media to stream first. For our setup, we’ll be targeting a dense mode Multicast setup with an RTP video stream. Don’t worry about all that at the moment though – head on over to the The Official HD Video Clip Listย and download/extract one of the many sample videos there. Once you’ve done that, note the place you extracted it to –ย we’ll need this later. Now that you have a sample movie, let’s move over to your router or layer 3 switch. The first thing we’re going to do is build out some VLANs and DHCP scopes and turn on inter-VLAN routing. There isn’t anything magical here, we just want to get our source on one VLAN and our target(s) onto another.

First let’s make some VLANs:

#conf t
(config)#vlan 100
(config-vlan)#name VLAN100
(config-vlan)#exit
(config)#vlan 200
(config-vlan)#name VLAN200
(config-vlan)#exit

 

Now let’s give them some IP addresses and bring them up:

(config)#int vlan 100
(config-if)#ip address 192.168.100.1 255.255.255.0
(config-if)#no shut
(config-if)#int vlan 200
(config-if)#ip address 192.168.200.1 255.255.255.0
(config-if)#exit

 

Now let’s make up some DHCP pools so our clients can get reasonable IP addresses:

(config)#ip dhcp pool 100_net
(dhcp-config)#network 192.168.100.0 /24
(dhcp-config)#default-router 192.168.100.1
(dhcp-config)#ip dhcp pool 200_net
(dhcp-config)#network 192.168.200.0 /24
(dhcp-config)#default-router 192.168.200.1
(dhcp-config)#exit
(config)#ip dhcp excluded-address 192.168.100.1 192.168.100.10
(config)#ip dhcp excluded-address 192.168.200.1 192.168.200.10

 

Now let’s assign these VLANs to some switch ports and plug in our clients:

(config)#int gi0/2

(you may have to select whatever interface is on your switch)

(config-if)#switchport mode access
(config-if)#switchport access vlan 100

(plug your source computer into this interface)

(config)#int range gi0/4 - 6

(you may have to select whatever interfaces are available on your switch)

(config-if)#switchport mode access
(config-if)#switchport access vlan 200

(plug your client computers into these interface)

Lastly enable IP routing for basic VLAN to VLAN connectivity and make sure your clients get IP addresses and can ping each other (make sure your client’s don’t have firewalls getting in the way if you’re having troubles here):

(config-if)#exit
(config)#ip routing

 

Now that we have that out of the way, let’s switch back to the computer you’re going to be using as your source for your multicast stream. Now we’re going to use our HD movie source and we’re going to kick off our multicast stream, send it to a multicast address, and loop it. This will give us a stream to join up later on. From a command prompt, use the following command using your path and name of your movie:

“C:\Program Files\VideoLAN\VLaC\vlc.exe” -vvv “C:\Documents and Settings\Administrator\Desktop\T2_1080p.wmv” –sout=#rtp{dst=239.0.0.11,port=5004,mux=ts,ttl=7} –sout-all –sout-keep –loop

Yes, it's a PC. Yes, it's virtual. Yes, it works well.

This command dissected reads something like: start VLC, open this movie file, send it out to this multicast address on this port, and loop it. This should open up VLC and start moving the progress bar across the VLC screen, but it won’t display the actual movie. I do this to reduce on the video refresh of my source PC since most of my home lab stuff is done over RDP. Video over RDP doesn’t look all that great. ๐Ÿ™‚

You may be wondering at this point, where in the heck I got the address of 239.0.0.11. This is a valid Orginizational-Local multicast address from the IANA. The multicast addresses are in the range 224.0.0.0 through 239.255.255.255 where the last class C is basically yours for your organization to use.

At this point, you should have basic IP connectivity up and running with multiple VLANs and IP routing along with a source Multicast RTP stream. Congratulations! Next we’re going to tackle actually enabling multicast on your router/switch:

#conf t
(config)#ip multicast-routing distributed
(config)#int vlan100
(config-if)#ip pim sparse-dense-mode
(config)#int vlan200
(config-if)#ip pim sparse-dense-mode

 

The reason we use sparse-desnse mode is that in reasonable versions of IOS, you will automatically run in dense mode in the absence of an RP (implying sparse mode). This is a good thing. You should now have basic dense-mode multicast routing up and running! Now, let’s go over to our target computers and launch VLC. Once open, goto the File menu and and select Open Network. You should have a box to type an RTP stream into and for our install, this should be:

rtp://@239.0.0.11:5004

Tell it Open and assuming all went well, your multicast streaming movie should start playing! Do this for all of your target computers and you should see the same stream, at the same spot on all of your clients.

Yes, it's a Mac. Don't be hatin'ย ย All copyrights reserved by their respective owners.

If you notice on your switch/router, your VLAN100 source PC should still only be sending a single stream and this is being received and displayed by all of your clients! Now that you’ve made it to the end of the post and you have good ‘wired’ multicast up and running, we’ll tackle what this looks like on a Wireless LAN Controller in a future post. It’s important to have a good fundamental stream up and running to have a successful wireless deployment. We’ll tackle those particulars in a later post. ๐Ÿ™‚ Keep an eye out for those in the near future!

 

Multicast Quick Start Guide:

http://www.cisco.com/en/US/tech/tk828/technologies_tech_note09186a0080094821.shtml

 

IANA IPv4 Multicast Address Space Registry:

http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml

Previous post

Ask the Panel

Next post

E03 - Wireless Field Day & Wi-Fi Mobility Symposium

Sam Clements

Sam Clements

CCENT CCNA CCNA Wireless CCNP Wireless CWTS CWNA CWDP CWSP CWAP CWNE #101

17 Comments

  1. January 16, 2012 at 9:43 am — Reply

    It’s like you read my mind when it comes to Multicast. Thanks for the wonderful post. I might actually have to play with Multicast in the lab sooner rather than later now.

    • January 16, 2012 at 9:45 am — Reply

      Multicast is one of those topics that once you start doing it there isn’t much to it, but the upfront scariness of all that needs to be configured is what freaks out people I think!

  2. January 16, 2012 at 10:47 am — Reply

    Blake has right. Implementation of bidir-PIM is based on two command ๐Ÿ™‚ but implementation of that on few devices it took us a few weeks.
    Great post. I love it.

  3. Gregor Vucajnk
    January 16, 2012 at 12:44 pm — Reply

    Nice article Sam!

    Looking forward to the next one!

    Gregor

  4. Steve B
    January 17, 2012 at 4:48 pm — Reply

    Great stuf, I’ve always wondered how it was possible to generate genuine multicast traffic easily and now I know!

  5. January 18, 2012 at 7:37 am — Reply

    So, did you try this on wireless clients and, if so, what multicast client/app did you use on the wireless device? That’s the hard part… finding something that will play multicast streams on the wireless device that is enterprise grade.

    Joel

    • January 18, 2012 at 6:04 pm — Reply

      Joel,
      Wireless clients will be in Part 2. ๐Ÿ™‚

  6. Stefan
    January 18, 2012 at 8:19 am — Reply

    Looking forward to get the wireless related stuff – got some issues with that topic in the near future.

  7. January 25, 2012 at 4:33 pm — Reply

    When you want to have real fun with Multicast, go through and setup Sparse-mode, and define a router as the RP. Not really needed for a single stream with a single router, but it is one of the more advanced features you can do in a large environment with multiple routers/sites.

  8. kogu
    April 25, 2012 at 12:31 am — Reply

    wow.. great tutorial.. the whole doubt over the multicast will be over now.. im going straight away to configure and let you know the result…

  9. Ram
    July 26, 2012 at 2:37 am — Reply

    Good tutorial…!!!!

    • jc
      August 15, 2013 at 4:13 am — Reply

      what if i will use a router ? vlc — router —pc

      • August 15, 2013 at 3:16 pm — Reply

        This example is using a router. It’s routing packets from Vlan100 to vlan 200.

  10. Amal
    October 22, 2013 at 10:44 am — Reply

    Hi Sam,

    Thanks for explaining the concept and steps in a simple and straight-forward manner.

    The command to stream the video on the source machine didn’t work for me. I had to use the below command to make it work.

    “C:\Program Files\VideoLAN\VLC\vlc.exe” -vvv D:\video.mp4 –sout=#rtp{dst=239.0.0.11,port=5004,mux=ts,ttl=7} –sout-all –sout-keep –loop

    Note the “–” instead of “-” at a few places.

    It took me some time to figure it out. Hope it will help someone.

    Waiting eagerly for part 2!!

  11. Amal
    October 22, 2013 at 10:59 am — Reply

    It seems that the error in command I posted above is related to the formatting of the webpage..
    When I copy-pasted the command on notepad, the double hyphens magically became single hyphen, and that was the cause of my problem.
    So be careful while using the command. The “long” hyphen (with the keywords sout, loop etc) is a double hyphen, and the “short” hyphen (with the keywords vvv, keep etc) is a single hyphen.
    Just a word of caution for copy-pasters and careless eyes (guys) like me ๐Ÿ™‚

  12. February 22, 2016 at 5:52 am — Reply

    Has a Part 2 been posted?

    • March 2, 2016 at 3:59 pm — Reply

      Part 2 wasn’t finished to be honest.

Leave a Reply