2

enter image description here

I am aware of this and this stackoverflow questions which answers known methods to achieve "Reliable Multicast" but off-late I have come across some websites which mentions even routers should also be programmed to handle custom protocols which are designed over UDP, is that true?

Basically I want to use Multicast for my application and I want don't want to impose any restriction of changing router for configuring custom protocol to handle UDP in reliable way , for example I was thinking for implementing/using PGM protocol over UDP to handle multicast but someone said that router should also have support for PGM which restricts me in providing solution since customers should change infrastructure for my solution which is unwarranted.

Please let me know if there is any solution which I can implement to handle UDP packets in reliable way without any changes to network infrastructure.

Thanks in advance.

EDIT:

I don't mean to say that I don't want to enable multicast in router, I would definitely enable multicast routing in router. When I read about PGM implementation some one said even router should be PGM capable which I thought is different router than commercially available routers in stores. Is my understanding wrong?

Community
  • 1
  • 1
RN55
  • 107
  • 1
  • 9
  • There is an entire IETF Working Group on reliable multicast, and several protocols have already been existence for many years: TRAM for one, that aren't router-intrusive I suggest you need to do further research. As it stands this question is off topic. – user207421 Jul 14 '15 at 09:37
  • @EJP I don't think this is off topic question since the question itself ask developers opinions on best reliable multicast protocol which doesn't need change to routers transport layer protocol. I can research but it would not help me until experts give their opinion. – RN55 Jul 14 '15 at 10:31

2 Answers2

0

If you use multicast you need to add multicast support requirement to the networking infrastructure. Unless multicast routing is enabled on networking devices (multicast routers) multicast will be available only within one LAN.

The only reliable way to go through Internet infrastructure is uni-cast.

Update: Multicast routing is performed on Network layer and multicast routers don't need to know anything about transport/application layers. In some situation knowledge about application layer is required on network layer but almost all that situation is related to NAT ALG (Application Level Gateway).

By the way one of possible solution to pass multicast through the Internet is tunneling protocols (GRE, IP over IP and so on).

Dmitry Poroh
  • 3,705
  • 20
  • 34
  • Thanks! please read my updated question. I think my words were not clear earlier. – RN55 Jul 13 '15 at 13:46
  • @RN55 Updated answer as well. – Dmitry Poroh Jul 13 '15 at 15:14
  • Please see picture updated which shows PGM requires transport layer support in routers, this screenshot was captured from one of the slides which explains how PGM works. Does this mean we should buy router which supports PGM ? – RN55 Jul 14 '15 at 06:44
  • As I understand after short reading PGM build its own infrastructure (to optimize multicast paths). If you want to use it you need PGM Router Assist (or its analogue). These elements are required in all networks where PGM is required. – Dmitry Poroh Jul 14 '15 at 14:20
  • Of course it doesn't mean that you need support PGM by all routers between your networks (you can use tunneling features to pass them through). – Dmitry Poroh Jul 14 '15 at 14:25
0

If you can't or don't want to configure routers to forward multicast traffic or otherwise handle a third party protocol, you'll need to tunnel multicast traffic over a unicast link. UFTP is capable of multicast tunneling via the use of a UFTP proxy server.

From the man page:

The proxy can run in one of three modes: a server proxy, a client proxy, or response proxy.

A server proxy is typically local to a server and acts as the upstream end of a multicast tunnel. It listens on the public multicast address (and private multicast address when specified) and forwards downstream packets to a specific address downstream. Upstream packets are forwarded back where the announcement originated from.

A client proxy is typically local to one or more clients and forms the downstream end of a multicast tunnel. It receives unicast data from one or more server proxies and forwards downstream traffic to the multicast address specified in the packet header. Upstream traffic from clients is gathered and forwarded back where the announcement came from as an aggregated response.

Below is a diagram of a typical configuration where a server sends multicast messages to the local network, and one or more server proxies unicast the messages to a corresponding client proxy, which in turn multicasts the messages to its local network.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x                                              Network A   x
x   ----------                                             x
x   | Server |                                             x
x   ----------                                             x
x        |                                                 x
x        |  multicast                                      x
x        |                                                 x
x        |-----------------------------------------        x
x        |                   |                    |        x
x        v                   v                    v        x
x   ----------------    ----------------      ----------   x
x   | Server Proxy |    | Server Proxy |      | Client |   x
x   ----------------    ----------------      ----------   x
x        |                   |                             x
x        |  unicast          |  unicast                    x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
         |                   |
         |                   ------------
         |                              |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx   xxxxxxxxxxxxxxxxxxxxxxxxxxxx
x        |       Network B  x   x       |       Network C  x
x        v                  x   x       v                  x
x  ----------------         x   x  ----------------        x
x  | Client Proxy |         x   x  | Client Proxy |        x
x  ----------------         x   x  ----------------        x
x       |                   x   x       |                  x
x       |  multicast        x   x       |  multicast       x
x       |                   x   x       |                  x
x       |-------------      x   x       |------------      x
x       |            |      x   x       |           |      x
x       v            v      x   x       v           v      x
x  ----------   ----------  x   x  ----------  ----------  x
x  | Client |   | Client |  x   x  | Client |  | Client |  x
x  ----------   ----------  x   x  ----------  ----------  x
x                           x   x                          x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx   xxxxxxxxxxxxxxxxxxxxxxxxxxxx

These proxies are also capable of working in a NATed environment:

If a client proxy is behind a firewall, the proxy can send a heartbeat message to the upstream proxy to make a pinhole in the firewall that the upstream server proxy can connect to. If the client proxy is also NATed, the upstream server proxy may not know the IP/port of the client proxy, so the server proxy can be configured to wait for a heartbeat message, and use the IP/port the heartbeat came from as its downstream address. If the server proxy is also behind a firewall or NAT, a second server proxy on a machine with a publicly accessible IP can be inserted between the first server proxy and the client proxy. In this case, the first server proxy is set up to use the second as its downstream address, and the second server proxy is set up to use the first heartbeat it receives from a client proxy as its downstream address.

I'm the author of this software, so if you need pointers regarding how to set this up, send me an email via the link at the bottom of the UFTP page and we'll see what we can do.

Update:

In the case of PGM, it can be configured to run at either the application layer (i.e. on top of UDP) or at the transport layer (i.e. directly on top of IP). If PGM is run at the transport layer, that's where you might need to worry about the router having special support for it. Conversely, UFTP runs strictly at the application layer.

dbush
  • 205,898
  • 23
  • 218
  • 273