Connecting to Multicast in New Zealand (v0.2 Updated 31/01/05)
==============================================================

Please Contact craig@orcon.net.nz if you want to add/change/remove anything.
This is only a start at a Howto on Multicast in NZ. It may be wrong completely/incomplete.

2005/10/09 - Added More ERX Information
2005/02/12 - Added ERX Information
2005/01/05 - Added More Information
2004/03/08 - New Multicast Peer at APE - ConceptNET
2004/01/14 - Added Some Juniper Setup Information

Connecting at APE 
-----------------
You will have to talk to each of your Peers at APE to Peer with you as well.
ISPs who may Multicast peer with you at APE with contact details.

192.203.154.36 AS7657 IHUG 1
192.203.154.37 AS7657 IHUG 2
192.203.154.46 AS9790 Attica
192.203.154.60 AS9325 Xtra
192.203.154.67 AS17746 Orcon Internet      craig@orcon.net.nz
192.203.154.91 AS17474 ConceptNet          craig@concept.net.nz

HOWTO (Cisco/Juniper/ERX/Allied Teleyn)

1) Enable Multicast on Router

	(Cisco)
	ip multicast-routing 
	ip multicast multipath # If you have 2 Peers @ APE this might be usefull

	Or if you are running DCEF (750x or alike)
	ip multicast-routing distributed
	ip multicast multipath # See above

	(Juniper)
	No Setup Needed

        (ERX)
        ip multicast-routing

2) Enabling MBGP

Add in Multicast BGP Sessions with existing neighbors at APE

	(Cisco)
	Older Versions of IOS are slightly different (Note to Add)

	router bgp XXXX
	 network X.X.X.X
	 network Y.Y.Y.Y
	 neighbor Z.Z.Z.Z remote-as AAAA
	 !
	 address-family ipv4 multicast
	  network X.X.X.X
	  network Y.Y.Y.Y
	  neighbor Z.Z.Z.Z activate
        ..
	(repeat with each Peer)

	(Juniper)

	Set family inet any in your BGP Statements

		family inet {
			any;
			}


		ie

		bgp {
		    local-address MY-LOOPBACK-ADDRESS;
		    group APE-PEERING {
			    description "Peering with X";
		    	family inet {
		    		any;
		    	 }
		    	 peer-as XXXX;
		    	 neigbor X.X.X.X;
		}

Make sure also you are running Multicast on your iBGP as well within your network.

      (ERX)

3) Enabling PIM on Interfaces

Enable pim on every interface which is going to be multicast enabled

	(Cisco)
	int fastethernet0/0
	ip address 192.203.154.X 255.255.255.0
	ip pim sparse-mode
	!
	int fastethernet0/1
	ip address J.J.J.J 255.255.255.0
	ip pim sparse-mode
	!
	..
	(repeat with each Interface)

	ip pim rp-address  (usually a loopback on one of your machines)

Add to Interface which goes to APE

        (Cisco)
	ip pim bsr-border
	ip multicast boundary multicast-boundary
	ip access-list standard multicast-boundary
	 deny   224.0.1.39
	 deny   224.0.1.40
	 deny   239.0.0.0 0.255.255.255
	 permit any

	(Juniper)
	protocols pim rp local address X.X.X.X; (X.X.X.X = your RP)  (On RP Only)
        protocols pim rp static address X.X.X.X version 2; (X.X.X.X = your RP) (On all Devices which are not RP)
	protocols pim interface all mode sparse version 2;   (Enables PIM on All Interfaces)
	protocols pim interface fxp0.0 disable;  (Disables PIM On Management Interface)

       routing-options { 
          multicast { 
            scope internal_announce { 
            prefix 224.0.1.39/32; 
            interface so-x/y/z;  (Interface to APE)
        } 
        scope internal_discovery { 
            prefix 224.0.1.40/32; 
            interface so-x/y/z;  (Interface to APE)
        } 
       } 
      } 


        (ERX)
	interface gigabitEthernet 4/0
        ip pim sparse-mode

	(Allied Telesyn)
	enable pim	
	add pim interface=eth0
	add pim interface=eth1
	
4) Enabling MSDP

Enable MSDP Peering with Each Multicast Peer @ APE

	(Cisco)
	ip msdp peer X.X.X.X remote-as YYYY
	ip msdp description X.X.X.X Peer with YYYY
	ip msdp sa-limit X.X.X.X 255
	ip msdp sa-filter out X.X.X.X list 111
	ip msdp sa-filter in X.X.X.X list 111
	ip msdp mesh-group APE X.X.X.X
	...
	(repeat with each Peer)

	access-list 111 remark  MSDP Filters
	access-list 111 deny   ip any host 224.0.2.2
	access-list 111 deny   ip any host 224.0.1.3
	access-list 111 deny   ip any host 224.0.1.24
	access-list 111 deny   ip any host 224.0.1.22
	access-list 111 deny   ip any host 224.0.1.2
	access-list 111 deny   ip any host 224.0.1.35
	access-list 111 deny   ip any host 224.0.1.60
	access-list 111 deny   ip any host 224.0.1.39
	access-list 111 deny   ip any host 224.0.1.40
	access-list 111 deny   ip any 239.0.0.0 0.255.255.255
	access-list 111 deny   ip 10.0.0.0 0.255.255.255 any
	access-list 111 deny   ip 127.0.0.0 0.255.255.255 any
	access-list 111 deny   ip 172.16.0.0 0.15.255.255 any
	access-list 111 deny   ip 192.168.0.0 0.0.255.255 any
	access-list 111 permit ip any any

	(Juniper)

	protocols msdp local-address X.X.X.X;
	protocols msdp group APE peer 192.203.154.X;
	protocols msdp group APE peer 192.203.154.X;
	protocols msdp group APE mode mesh-group;

If you are adding it into a mesh-group everyone you are peering with will have to peer with everyone else.

5) How do I know its working

   (Cisco)
   Router#show ip pin neighbor
   PIM Neighbor Table
   Neighbor Address  Interface                Uptime    Expires   Ver  Mode
   192.203.154.X    FastEthernet2/1              1d04h     00:01:38  v2   
   192.203.154.X    FastEthernet2/1              1d04h     00:01:29  v2   

   Router#show ip mbgp

   Router#show ip mroute

   Router#show ip msdp summary 
   MSDP Peer Status Summary
   Peer Address     AS    State    Uptime/  Reset SA    Peer Name
		  	          Downtime Count Count
   192.203.154.X   YYYY  Up       19:05:01 97    1     XXX.ape.net.nz
   192.203.154.X   YYYY  Up       2w5d     0     0     XXX.ape.net.nz

   (Juniper)

   user@ROUTER> show bgp neighbor 192.203.154.X

   ..
   NLRI advertised by peer: inet-unicast inet-multicast (BGP can do unicast and uniccast BGP)
    NLRI for this session: inet-unicast inet-multicast (BGP session if actually doing unicast and multicast BGP)
    Peer supports Refresh capability (2)
    Table inet.0 Bit: 10002 (this is the unicast BGP)
      RIB State: BGP restart is complete
      Send state: in sync
      Active prefixes:              6
      Received prefixes:            6 (number of unicast BGP recieved)
      Suppressed due to damping:    0
      Advertised prefixes:          6270
    Table inet.2 Bit: 20000 (this is the multicast BGP)
      RIB State: BGP restart is complete
      Send state: in sync
      Active prefixes:              6
      Received prefixes:            6 (number of multicat BGP recieved)
      Suppressed due to damping:    0
      Advertised prefixes:          79
    Last traffic (seconds): Received 2    Sent 2    Checked 14


user@ROUTER> show pim neighbors
Instance: PIM.master

Interface           IP V Mode        Option      Uptime Neighbor addr
g1-1/2/0	     4 2             H         03:10:10 X.X.X.X
ge-1/3/0             4 2             HPB       03:15:27 60.234.154.X
ge-1/3/0             4 2             H         03:12:42 60.234.154.X
ge-1/3/0             4 2             H      1d 08:00:39 60.234.154.X

craig@NCT_M02> show msdp brief

Peer address    Local address   State       Last up/down Peer-Group   SA Count
192.203.154.X   192.203.154.X   Established      3w1d18h APE          1/1

Connecting at WIX
=================
WIX setup should be similar to APE except (in theory), as most people use the route servers to swap routing information
I have not seen any other Multicast routes advertised from the route server so I guess no one else is advertising them to them or the route servers are not set up to use them it. (And Ideas Citylink?). Quagga and other Routing Programs can be set up  quite easily with Multicast BGP as well as unicast. 
Direct Peering with each other so MSDP and BGP (without Citylinks AS in the middle) could be better for multicast between ISP's.

router bgp YYYY
 network X.X.X.0
 neighbor 202.7.0.2 remote-as 9439
 neighbor 202.7.0.2 description Peering with WIX RS 1
 neighbor 202.7.0.2 soft-reconfiguration inbound
 neighbor 202.7.0.2 prefix-list YourNetworks out
 neighbor 202.7.0.3 remote-as 9439
 neighbor 202.7.0.3 description Peering with WIX RS 2
 neighbor 202.7.0.3 soft-reconfiguration inbound
 neighbor 202.7.0.3 prefix-list YourNetworks out
 !
 address-family ipv4 multicast
 neighbor 202.7.0.2 activate
 neighbor 202.7.0.2 soft-reconfiguration inbound
 neighbor 202.7.0.2 prefix-list YourNetworks out
 neighbor 202.7.0.3 activate
 neighbor 202.7.0.3 soft-reconfiguration inbound
 neighbor 202.7.0.3 prefix-list YourNetworks out
 network X.X.X.0
 exit-address-family


Router#show ip bgp ipv4 multicast summary 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
202.7.0.2       4  9439  470828  298730        0    0    0 07:47:15        0
202.7.0.3       4  9439  472853  298801        0    0    0 07:46:43        0

On Wix I can see 2 machines running PIM

cr1.wtn#show ip pim neighbor

PIM Neighbor Table
Neighbor Address  Interface          Uptime    Expires   Ver  Mode
202.7.0.97        FastEthernet1/0    1d08h     00:01:21  v2
202.7.0.241       FastEthernet1/0    1d08h     00:01:24  v2              

202.7.0.97 = sds.wix.net.nz
202.7.0.241 = ihug.wix.net.nz
 	


To Come
-------
Juniper Setup (more information)
Sparse or Dense Modem at APE??
Setup with Other Routers
Auto-RP the best way of doing it?
	ip pim sparse-dense-mode on all interfaces and no ip pim rp-address needed?


What Filtering should be done?? 
A Shared RP Address for all ISP's?
IPV6 Multicast?
dense-mode at Peering points? sparse-dense-mode everywhere?
Client Setup (Programs to use and alike)
Who supports Multicast in NZ?
Enabling Your Entire Network with Multicast
What can I do now? What is there to view?
How can I help?
How to Stream with Multicast?
How do I charge for this? Who pays?
Multicast Tunnels?
Jetstream/Jetstart?
Enabling Dialup?


Adding a Tunnel from Cisco -> Linux
===================================
Linux End

ip tunnel add netb mode gre remote  local  ttl 255
ip link set netb up
ip link set netb multicast on
ip addr add X.X.X.X/30 dev netb
/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev netb
/usr/local/sbin/pimd -c /etc/pimd.conf   (link to get this from??)

Cisco End

interface Tunnel 0
ip address X.X.X.X 255.255.255.252
tunnel source Y.Y.Y.Y
tunnel destination Z.Z.Z.Z
ip pim sparse-mode
ip pim nbma-mode (is this needed??)


Enabling Dialup Equipment for Multicast
=======================================

Max Ascend (4000/6000)
---------------------

	Ethernet->Mod Config->Multicast
		Forwarding = Yes
		Client = No
		Rate Limit = 5
		HeartBeat Addr = 224.1.1.1
		HeartBeat Udp Port = 16387

In Radius Return Back:

	Ascend-Multicast-Client=Multicast-Yes
    
Anyone who has had this working correctly.. please let me know how? 


Max TNT
------
To Add

Juniper/Unisphere ERX (acting as a L2TP termination unit like with UBS)
---------------------
     
     Return via Radius on Accept Packet to Subscribers:
     
     Igmp-Enable = True

     (Need more Information)

Cisco (acting as a L2TP termination unit like UBS)
------
To Come (anyone want to help with this?)

Enabling Linux Router/Client
============================

Compile options in Kernel:

	CONFIG_MULTICAST_IP=y
	CONFIG_IP_MROUTE=y
	CONFIG_IP_PIMSM_V1=y
	CONFIG_IP_PIMSM_V2=y
	CONFIG_NET_IPIP=y

Add for each Interface:

	/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev ethX

If running as Router

	install pimd (need link for other distros)
	(on debian apt-get install pimd)

Change Config to:

phyint eth0 disable 			# On every ethernet you don't want multicast
rp_address 60.234.8.2			# Your RP Address (this is Orcon's)
group_prefix 224.0.0.0 masklen 4        # All multicast groups
switch_data_threshold       	rate 50000 interval 20  # 50kbps (approx.)
switch_register_threshold       rate 50000 interval 20  # 50kbps (approx.)


Alternative: Xorp
                - PIM
                - MSDP
                - MBGP 

Enabling on DSL Routers
=======================

To enable the ability for DSL Routers (running in NAT mode) for Multicast access
You have to enable IGMP/IGMP-Proxy on the DSL router

Working:
-DSE XH1169 ADSL Ethernet Router
 - enable IGMP proxy in the Misc Configuration page
 - enable IGMP in the Advanced WAN settings page

Not Working:


Software
========

Servers:
-------
Real - http://www.real.com
Windows Media Services  - http://www.microsoft.com
Quicktime Server - http://www.apple.com
EMULive - http://www.emulive.com

Clients
-------
Windows Media Player - http://www.microsoft.com
Real Video Player - http://www.real.com
Network Assistant - http://www.mbone.net.nz/software/nassi.exe

Websites
--------
End System Multicast - http://esm.cs.cmu.edu
Multicast Radio - http://www.onthei.com
FreeTV - http://www.americafree.tv/