UDP Multicast через Интернет?
Я не уверен, как лучше подойти к моей проблеме. У меня есть служба с запусками на удаленной машине с получением и обработкой пакетов UDP. Я хочу, чтобы служба могла повторно отправлять эти пакеты всем, кто хочет их получить (это может быть никто, обычно это одна машина, но может быть и больше).
Я полагал, что многоадресная рассылка UDP была бы идеальной - служба может отправлять в группу многоадресной рассылки, и не имеет значения, сколько получателей зарегистрировалось, или даже если их нет.
Тем не менее, я хочу иметь возможность получить доступ к этому через Интернет, и, насколько я понимаю, это почти невозможно с UDP Multicasting. Есть ли другой метод, который я мог бы использовать для достижения этой цели?
Если уместно, мой клиент и сервис написаны на C#.
2 ответа
В общем случае это невозможно, поскольку многоадресные пакеты не маршрутизируются.
Есть несколько методов, чтобы обойти это (DVMRP, MOSPF и другие), но все они требуют, чтобы вы могли настроить все маршрутизаторы между вашим сервером и клиентами (или создать туннель). Существуют магистральные сети (Abilene, Mbone) с поддержкой многоадресной рассылки, но они представляют наибольший интерес для университетов и тому подобное. Интернет обычного потребителя не имеет многоадресной рассылки.
К сожалению, вам нужно двухточечное общение. Но вы находитесь в хорошей компании, интернет, радио и телевидение - все делают точка-точка, передавая одни и те же данные много раз. Довольно трата пропускной способности.
Предпочтительным методом является использование наложения многоадресной рассылки, то есть использование TCP-соединений между одноранговыми узлами и реализация семантики многоадресной рассылки над этим.
Многие маршрутизаторы IPv4 не поддерживают многоадресную рассылку или отключили ее, IPv6 обязан поддерживать многоадресную рассылку, а семантика широковещательной передачи была удалена.