Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

is it possisble run pimd together with igmp proxy? #52

Open
ruansteve opened this issue Jul 2, 2019 · 3 comments
Open

is it possisble run pimd together with igmp proxy? #52

ruansteve opened this issue Jul 2, 2019 · 3 comments

Comments

@ruansteve
Copy link

ruansteve commented Jul 2, 2019

Dear authors:

I have a problem when deploy pimd router in a vm. Could you please give some advice to fix?

Thanks in advance.

My topo looks link this:

physical router <----> Host (linux bridge <----> vm as router(pimd runing in the vm))

pimd can work well with the physical router, the issue is:

when multicast traffic reach the linux bridge, I need add a mdb entry, just like this: "bridge mdb add dev br_eth0 port vnic1.0 grp 239.1.1.1 permanent"

it's not a good solution. I hope the bridge can learn the multicast group of the vm router.

And I also found the igmp proxy can forward the igmp report from downstream to upstream, to make upstream bridge learn the multicast group.

But I met another issue:

because igmpproxy and pimd both open a IGMP RAW socket, it the same VM, they can not run at same time.

Do you have any suggestion to run pimd router connected by a linux bridge?

@pali
Copy link
Owner

pali commented Apr 26, 2020

Well, if I understand correctly, PIM protocol is used for multicast routing between multicast routers. IGMP protocol is used for "receiving" multicast traffic from multicast router to client device. igmpproxy daemon does something between it. It acts as client device, so can receive multicast traffic from mutlicast router via IGMP protocol (one way), but also acts as (one way) multicast forwarder/router for client devices in another network.

So topology without igmpproxy should look like:

client_1 <-- IGMP <-- +
                      |
            multicast_router_1 <-- PIM --> multicast_router_2 <-- ...
                      |
client_2 <-- IGMP <-- +

And topology with igmpproxy could look like this:

client_1 <-- IGMP <-- +
                      |
            igmpproxy_router <-- IGMP <-- multicast_router_1 <-- PIM --> multicast_router_2 <-- ...
                      |                       |
client_2 <-- IGMP <-- +                       |
                                              |
client_3 <-- IGMP <---------------------------+

But in this case you cannot send multicast trafic from client_1 outside of "local network" of igmpproxy_router. Therefore multicast traffic from client_1 cannot be delivered to client_3. But multicast traffic from client_3 can be delivered to client_1 or client_2.

I think that running both igmproxy and pimd on one router does not make sense. You either want to do whole multicast routing (via PIM protocol with other router and IGMP for clients) or just one-way forwarding/proxying (via igmpproxy).

@pali
Copy link
Owner

pali commented Apr 30, 2020

And IIRC linux kernel still does not allow to run more then one multicast routing application.

@ak503
Copy link

ak503 commented Dec 14, 2023

I don't understand design of network full. IGMP is client specific protocol: get traffic from server. Why we cannot settings pim on clien3 for sending traffic to client1 or 2. For it we mast use only igmpproxy?

 client_1 <-- IGMP <-- +
                       |
             multicast_router_1 <-- PIM --> multicast_router_2 <-- ...
                       |  |
 client_2 <-- IGMP <-- +  |
                       |  |
 client_3 <-- IGMP <-- +  |
 client_3 --> PIM ->----- +

server igmp->client igmp is degenerate case, or im mistakes?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants