Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I would like to use PC2 as multicast router and client.
PC2 has Quagga Zebra daemon and Quagga pimd daemon running on.
What have I done so far?
Configured pimd (PC2):
Code:
quagga-pimd-router# show running-config
Current configuration:
!
hostname quagga-pimd-router
password zebra
enable password zebra
log stdout
!
interface eth0
ip pim ssm
ip igmp
!
interface eth2
ip pim ssm
ip igmp
!
interface lo
!
interface virbr0
!
!
ip multicast-routing
!
line vty
exec-timeout 60 0
!
end
Configured zebra (PC2):
Code:
Router# show running-config
Current configuration:
!
hostname Router
password zebra
enable password zebra
!
interface eth0
no link-detect
multicast
ipv6 nd suppress-ra
!
interface eth2
no link-detect
multicast
ipv6 nd suppress-ra
!
interface lo
no link-detect
!
interface virbr0
no link-detect
ipv6 nd suppress-ra
!
ip forwarding
!
!
line vty
!
end
Routing table (PC2):
Code:
>route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.64.48.1 0.0.0.0 UG 0 0 0 eth0
10.64.48.0 * 255.255.255.0 U 1 0 0 eth0
10.64.50.0 * 255.255.255.0 U 1 0 0 eth2
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
224.0.0.0 * 240.0.0.0 U 0 0 0 eth2
224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
I have been trying a similar configuration. In your case kernel routing table is atleast getting updated. In my case, I dont see kernel multicast entry at all.
Can you please post these results.
show ip igmp queriers
show ip mroute
show ip igmp groups
I have been trying a similar configuration. In your case kernel routing table is atleast getting updated. In my case, I dont see kernel multicast entry at all.
Can you please post these results.
show ip igmp queriers
show ip mroute
show ip igmp groups
what is the quagga version you are using?
I will let you know on Monday. Today I have free day. I got it work so will post how to make diagnosis.
Did you add this entry in PC2 kernel routing table?
224.0.0.0 * 240.0.0.0 U 0 0 0 eth0
I believe PIMD should internally update the PC2 kernel routing table (which is not happening in my testing)
Yes, I added the route. But I think that PIMD should do the job without route. Pimd is communicating with kernel.
I dropped Quagga PIMD and focused on PIMD (v2.2.0).
Steps to do:
Check KERNEL options connected with multicast
Turn on IP Forwarding
Start PIM Daemon
Start sending from PC1 multicast packets (some group)
Start receiving packets in PC3
I don't remeber details about steps above but will let You know about them on Monday.
I cannot use Quagga PIMD because it is not released for production so I came back to PIMD 2.2.0.
I don't have much experience with Quagga specifically, but maybe I can help with some multicast issues.
Which version of IGMP are you using?
For PIM SSM to actually work, the host has to specify the source of the multicast stream which is supported only by IGMPv3.
Additionally I think you may have to activate some sort of IGP ( maybe OSPF ) , so that you can reach the source of the multicast stream - so it won't get dropped by RPF.
Do you have some log info regarding dropped multicast traffic?
# This is the configuration file for "pimd", an IP multicast router.
# pimd looks for it in "/etc/pimd.conf".
#
# $Id: pimd.conf,v 1.17 2001/09/10 20:31:37 pavlin Exp $
#
# Command formats:
##########
#phyint br0:0 disable
#phyint br0:1 disable
# default_source_preference <preference>
# default_source_metric <metric>
#
# phyint <local-addr | ifname> [disable|enable] [threshold <t>] [preference <p>]
# [metric <m>]
# [altnet <net-addr> masklen <masklen>]
# [scoped <net-addr> masklen <masklen>]
#
# cand_rp [<local-addr>] [priority <number> ] [time <number>]
# cand_bootstrap_router [<local-addr>] [priority <number>]
# rp_address <rp-addr> [<group-addr> [masklen <masklen>] [priority <number>]]
#
# group_prefix <group-addr> [masklen <masklen>]
# group_prefix <group-addr> [masklen <masklen>]
# .
# .
# group_prefix <group-addr> [masklen <masklen>]
#
#
# switch_data_threshold [rate <number> interval <number>]
#
# switch_register_threshold [rate <number> interval <number>]
##########
# By default PIM will be activated on all interfaces. Use phyint to
# disable on interfaces where PIM should not be run.
#
# Preferences are used by assert elections to determine upstream routers.
# Currently pimd cannot reliably obtain preferences and metrics from the
# unicast routing protocols, so a default preference may be configured.
# In an assert election, the router advertising the lowest assert preference
# will be selected as the forwarder and upstream router for the LAN.
# 101 should be sufficiently high so that asserts from Cisco or GateD
# routers are prefered over poor-little pimd.
#
# It is reccommended that preferences be set such that metrics are never
# consulted. However, default metrics may also be set and will default to
# 1024.
#
#
# A "phyint" can be specified by either its IP address or interface name.
#
# `preference` and `metric` after "phyint" are used to configure manually
# the default preference and metric for the Assert messages sent on that
# interface. Usually you don't need this, but if you do, think of them
# like `preference` and `metric` defined per iif, but used by the
# Asserts on the oifs.
#
# If you want to add "alternative (sub)net" to a physical interface,
# e.g., if you want to make incoming traffic with a non-local source address
# to appear as it is coming from a local subnet, then use the command:
# phyint <local-addr | ifname> altnet <net-addr> masklen <len>
# XXX: if you use this command, make sure you know what you are doing!!
#
# If you want administrative scoped multicast filtering, use the
# following command:
# phyint <local-addr | ifname> scoped <net-addr> masklen <masklen>
# This allows interfaces to be configured as an administrative boundary
# for the specified scoped address. Packets belonging to the scoped
# address will not be forwarded. To use this compile with -DSCOPED_ACL
# option (in Makefile).
#
# `local-addr` after "cand_rp" and "cand_bootstrap_router" specifies
# the local address to be used in the Cand-RP and Cand-BSR messages.
# If not specified, the largest local IP address will be used (excluding
# the disabled interfaces)
#
# `time` after `cand_rp` specifies how often to send the Cand-RP messages.
# Its default value should be 60 seconds. Use smaller value for faster
# convergence.
#
# `group_prefix` is/are the prefix(es) advertised if cand_rp
#
# It is possible to set a static Rendez-Vous Point using the "rp_address"
# setting. The argument can be either a unicast or a multicast address
# followed by an optional group address and optional masklen to that.
#
# `rate` specifies the minimum rate in bits/s before the last hop
# router or the RP switch to the shortest path (`switch_data_threshold`
# and `switch_register_threshold` respectively)
# `interval` specifies the interval for periodical testing of the rate
# Currently, `interval` must be at least 5 (seconds)
# XXX: Both intervals should be the same
#
#
#default_source_preference 101 # smaller is better
#default_source_metric 1024 # smaller is better
# The phyint setting MUST BE AFTER default_source_*,
# BUT MUST BE BEFORE everything else
# By default, all non-loopback multicast capable interfaces are enabled.
#phyint de1 disable
# Smaller value means "higher" priority
cand_rp time 30 priority 20
# Bigger value means "higher" priority
cand_bootstrap_router priority 5
# Static rendez-vous point
#rp_address 192.168.10.1 224.0.0.0 masklen 8 priority 5
# All multicast groups
group_prefix 224.0.0.0 masklen 4
#
spt_threshold rate 50000 interval 20 # 50kbps (approx.)
Make sure that You start sender/listener on machines with one interface - the programs run with default interfaces. If You want to use multi interface You have to modify sender/listener according to 6.3 point in this document.
It You do steps above and still have problems then You can check:
In example above router (PC2) ip_mr_cache says that kernel receives packets from group 250000E1 = 225.0.0.37 (sender.c) and drops them (Iif = -1). If listener [that is connected to other interface in PC2 than sender] joins to 225.0.0.37 group then PC2 should receives IGMP with the information. After that Iif in ip_mr_cache should change to non negative value (ex 0). In my case there is some gap between sender join and receive IGMP and process it - gap is from 10 to 15 secs).
I hope You will get it work.
# This is the configuration file for "pimd", an IP multicast router.
# pimd looks for it in "/etc/pimd.conf".
#
# $Id: pimd.conf,v 1.17 2001/09/10 20:31:37 pavlin Exp $
#
# Command formats:
##########
#phyint br0:0 disable
#phyint br0:1 disable
# default_source_preference <preference>
# default_source_metric <metric>
#
# phyint <local-addr | ifname> [disable|enable] [threshold <t>] [preference <p>]
# [metric <m>]
# [altnet <net-addr> masklen <masklen>]
# [scoped <net-addr> masklen <masklen>]
#
# cand_rp [<local-addr>] [priority <number> ] [time <number>]
# cand_bootstrap_router [<local-addr>] [priority <number>]
# rp_address <rp-addr> [<group-addr> [masklen <masklen>] [priority <number>]]
#
# group_prefix <group-addr> [masklen <masklen>]
# group_prefix <group-addr> [masklen <masklen>]
# .
# .
# group_prefix <group-addr> [masklen <masklen>]
#
#
# switch_data_threshold [rate <number> interval <number>]
#
# switch_register_threshold [rate <number> interval <number>]
##########
# By default PIM will be activated on all interfaces. Use phyint to
# disable on interfaces where PIM should not be run.
#
# Preferences are used by assert elections to determine upstream routers.
# Currently pimd cannot reliably obtain preferences and metrics from the
# unicast routing protocols, so a default preference may be configured.
# In an assert election, the router advertising the lowest assert preference
# will be selected as the forwarder and upstream router for the LAN.
# 101 should be sufficiently high so that asserts from Cisco or GateD
# routers are prefered over poor-little pimd.
#
# It is reccommended that preferences be set such that metrics are never
# consulted. However, default metrics may also be set and will default to
# 1024.
#
#
# A "phyint" can be specified by either its IP address or interface name.
#
# `preference` and `metric` after "phyint" are used to configure manually
# the default preference and metric for the Assert messages sent on that
# interface. Usually you don't need this, but if you do, think of them
# like `preference` and `metric` defined per iif, but used by the
# Asserts on the oifs.
#
# If you want to add "alternative (sub)net" to a physical interface,
# e.g., if you want to make incoming traffic with a non-local source address
# to appear as it is coming from a local subnet, then use the command:
# phyint <local-addr | ifname> altnet <net-addr> masklen <len>
# XXX: if you use this command, make sure you know what you are doing!!
#
# If you want administrative scoped multicast filtering, use the
# following command:
# phyint <local-addr | ifname> scoped <net-addr> masklen <masklen>
# This allows interfaces to be configured as an administrative boundary
# for the specified scoped address. Packets belonging to the scoped
# address will not be forwarded. To use this compile with -DSCOPED_ACL
# option (in Makefile).
#
# `local-addr` after "cand_rp" and "cand_bootstrap_router" specifies
# the local address to be used in the Cand-RP and Cand-BSR messages.
# If not specified, the largest local IP address will be used (excluding
# the disabled interfaces)
#
# `time` after `cand_rp` specifies how often to send the Cand-RP messages.
# Its default value should be 60 seconds. Use smaller value for faster
# convergence.
#
# `group_prefix` is/are the prefix(es) advertised if cand_rp
#
# It is possible to set a static Rendez-Vous Point using the "rp_address"
# setting. The argument can be either a unicast or a multicast address
# followed by an optional group address and optional masklen to that.
#
# `rate` specifies the minimum rate in bits/s before the last hop
# router or the RP switch to the shortest path (`switch_data_threshold`
# and `switch_register_threshold` respectively)
# `interval` specifies the interval for periodical testing of the rate
# Currently, `interval` must be at least 5 (seconds)
# XXX: Both intervals should be the same
#
#
#default_source_preference 101 # smaller is better
#default_source_metric 1024 # smaller is better
# The phyint setting MUST BE AFTER default_source_*,
# BUT MUST BE BEFORE everything else
# By default, all non-loopback multicast capable interfaces are enabled.
#phyint de1 disable
# Smaller value means "higher" priority
cand_rp time 30 priority 20
# Bigger value means "higher" priority
cand_bootstrap_router priority 5
# Static rendez-vous point
#rp_address 192.168.10.1 224.0.0.0 masklen 8 priority 5
# All multicast groups
group_prefix 224.0.0.0 masklen 4
#
spt_threshold rate 50000 interval 20 # 50kbps (approx.)
Make sure that You start sender/listener on machines with one interface - the programs run with default interfaces. If You want to use multi interface You have to modify sender/listener according to 6.3 point in this document.
It You do steps above and still have problems then You can check:
In example above router (PC2) ip_mr_cache says that kernel receives packets from group 250000E1 = 225.0.0.37 (sender.c) and drops them (Iif = -1). If listener [that is connected to other interface in PC2 than sender] joins to 225.0.0.37 group then PC2 should receives IGMP with the information. After that Iif in ip_mr_cache should change to non negative value (ex 0). In my case there is some gap between sender join and receive IGMP and process it - gap is from 10 to 15 secs).
I hope You will get it work.
Thanks a ton!!!. I got it working using PIMD v2.3.2.
Quagga PIMD supports only source specific multicast, infact I tried and Quagga PIM daemon got hanged.
Thanks a ton!!!. I got it working using PIMD v2.3.2.
Quagga PIMD supports only source specific multicast, infact I tried and Quagga PIM daemon got hanged.
My friend discovered that it is good to add all interfaces to pimd.conf - phyinit interface.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.