题 单播,任播,广播和多播流量有什么区别?


我从未有过在需要复杂路由的环境中工作的特权,或者如果确实需要它,它就是在我的上游处理的。我总是使用非常简单的静态路由配置,从不需要做任何多路径路由 - 因此我对这个主题的一般困惑。我想更好地理解多播和任播。

  • 单播,任播,广播和多播流量有什么区别?
  • 它们通常用于什么情况以及为什么(例如,哪些应用程序使用哪种方法)?
  • 如何计算给定网段或广播域的广播流量量是多少?
  • 允许广播和多播流量有哪些安全隐患?

103
2018-06-11 19:17




这可能会帮助您进行多播。 ixiacom.com/library/white_papers/display?skey=multicast - SpacemanSpiff


答案:


简单的说:

------------------------------------------------------------
| TYPE      | ASSOCIATIONS     | SCOPE           | EXAMPLE |
------------------------------------------------------------
| Unicast   | 1 to 1           | Whole network   | HTTP    | 
------------------------------------------------------------
| Broadcast | 1 to Many        | Subnet          | ARP     |
------------------------------------------------------------
| Multicast | One/Many to Many | Defined horizon | SLP     |
------------------------------------------------------------
| Anycast   | Many to Few      | Whole network   | 6to4    |
------------------------------------------------------------

当两个网络节点需要相互通信时使用单播。这很简单,所以我不会花很多时间在上面。根据定义,TCP是一种单播协议,除非涉及Anycast(更多内容见下文)。

当您需要有两个以上的节点查看流量时,您可以选择。

如果所有节点都在同一子网上,那么 广播 成为可行的解决方案。子网上的所有节点都将看到所有流量。没有维持类似TCP的连接状态。广播是以太网协议中的第2层功能,也是IPv4中的第3层功能。

组播 就像一个可以跨子网的广播,但与广播不同,它不会触及所有节点。节点必须订阅多播组才能接收信息。多播协议通常是UDP协议,因为根据定义,不能保持连接状态。将数据发送到多播组的节点不知道哪些节点正在接收。默认情况下,Internet路由器不会传递多播流量。但是,对于内部使用,它是完全允许的;因此,上图中的“定义范围”。组播是IPv4和IPv6的第3层功能。

使用 任播 您在互联网的多个位置宣传同一网络,并依靠最短路径计算将客户端汇集到您的多个位置。就网络节点本身而言,他们正在使用 单播 与您的任何节点通信的连接。有关Anycast的更多信息,请尝试: 什么是“任播”,它有什么用?。 Anycast也是第3层功能,但它是路由合并发生的函数。


例子

有关如何在真实Internet中使用非单播方法的一些示例。

广播
ARP是一种广播协议,TCP / IP堆栈使用它来确定如何将流量发送到网络上的其他节点。如果目标位于同一子网上,则使用ARP来确定转到所述IP地址的MAC地址。这是2级(以太网)广播,保留FF:FF:FF:FF:FF:FF MAC地址。

此外,微软的机器浏览协议是以广播为基础的。创建了诸如WINS之类的解决方案以允许跨子网浏览。这涉及3级(IP)广播,它是一个IP数据包,其目标地址列为子网的广播地址(在192.168.101.0/24中,广播地址为192.168.101.255)。

NTP协议允许广播方法来通知时间源。

组播
在企业网络内部,多播可以将实时视频传送到多个节点,而无需在提供视频馈送的服务器上提供大量带宽。通过这种方式,您可以让视频服务器仅在100Mb连接上提供720p流,但仍然可以为3000个客户端提供该流。

当Novell从IPX转向IP时,他们不得不选择服务广告协议来取代IPX中的SAP协议。在IPX中,服务广告协议做了一个 网络公告 每当它宣布提供服务时。由于TCP / IP缺乏这样的全球通告协议,Novell选择使用基于多播的协议:服务位置协议。新服务器在SLP多播组上公布其服务。寻找特定类型服务的客户端宣布他们需要多播组并监听单播回复。

默认情况下,HP打印机会在多播组中宣布它们的存在。使用合适的工具,您可以轻松了解网络上可用的打印机。

NTP协议  允许多播方法(IP 224.0.1.1)向超出一个子网的区域通知时间源。

任播
由于Unicast层叠在它之上,Anycast有点特殊。 Anycast宣布同一网络不同 部分 网络,以减少到达该网络所需的网络跃点。

6to4 IPv6转换协议使用Anycast。 6to4网关宣布他们在特定IP,192.88.99.1上的存在。希望使用6to4网关的客户端将流量发送到192.88.99.1,并信任网络将连接请求发送到6to4路由器。

特别受欢迎的NTP主机的NTP服务可能很好,但我没有这方面的证据。协议中没有任何东西可以阻止它。

其他服务使用Anycast来改善最终用户的数据位置。谷歌在某些地方使用其搜索页面进行任播(以及其他地方使用地理IP)。由于类似的原因,根DNS服务器使用Anycast。 ServerFault本身可能会去那里,他们在纽约和俄勒冈州都有数据中心,但还没有去过那里。


网络问题

过多的广播流量可能会抢夺该子网带宽中的所有节点。目前使用全双工GigE端口的问题不那么令人担忧,但在10Mb的半双工中,广播风暴可能会使网络快速停止。那些在所有节点上都有一个大的冲突域的半双工网络特别容易受到广播风暴的影响,这就是为什么网络书籍,特别是旧网络,要注意广播流量。交换/全双工网络很难在广播风暴中停止,但它仍然可能发生。广播是 需要 为了正确运行IP网络。

多播具有相同的滥用可能性。如果多播组上的一个节点开始向该组发送大量流量,则所有订阅的节点都将看到所有该流量。与广播一样,过多的Mcast流量可能会增加此类连接上发生冲突的可能性。

组播是一种 可选的 功能与IPv4,但 需要 对于IPv6。 IPv6中的多播取代了IPv4广播(参见: 为什么IPv6不能发送广播?)。它经常在IPv4网络上关闭。并非巧合的是,启用多播是网络工程师在迁移到IPv6之前所抱有的众多原因之一  去做吧。

计算流量过多的流量取决于一些事情

  • 半对全双工: 半双工网络对bcast / mcast流量的容忍度要低得多。
  • 网口速度: 您的网络越快,问题就越少。在10Mb的以太网天中,端口上5-10%的流量可能是bcast流量,如果不是更多,但GigE小于1%(可能更少)的可能性更大。
  • 网络上的节点数: 您拥有的节点越多,您发出的广告流量就越不可避免(ARP)。如果您正在使用广播特定协议,Windows浏览或其他诸如群集心跳之类的问题将会发生变化。
  • 网络技术: 有线以太网足够快,只要你有现代装备驱动它,bcast / mcast不太可能导致你的问题。另一方面,无线可能遭受过多的广播流量,因为它是所有节点之间的共享介质,因此在单个冲突域中。

最终,Bcast和Mcast的流量抢占了顶部的带宽端口。当您开始担心时,高度依赖于您的个人网络和对可变性能的容忍度。通常,网络节点计数的扩展速度不如网络速度快,因此总体广播百分比 - 流量数量随着时间的推移而下降。

某些网络由于特定原因而不允许多播,而其他网络从未花时间设置它。有些多播协议可以向任何正在聆听正确事物的人透露有趣的信息(SLP就是这样)。 亲身我不介意轻微的多播流量,因为当我进行一些网络分析时,我看到的最大烦恼是污染的网络捕获;为此有过滤器。


160
2018-06-11 20:51



+1。广播可以并且确实发生在第2层和第3层.ARP请求是第2层广播,而NetBIOS名称查询是第3层广播。 - joeqwerty
一个非常好的答案。如果可以,我会+10。我特别喜欢你对SLP的讨论,因为我已经讨论了与之相关的问题。 - kce


这是一些基本信息:

单播: 单播流量是针对单个主机的流量。所有其他主机将忽略不适合自己的单播流量。在交换环境中,除了流量所针对的主机之外的任何主机通常不会“听到”单播流量。在使用集线器(颤抖)的环境中,所有主机都将“听到”针对其他所有主机的单播流量,但是它们将忽略所有不适合自己的流量。

广播: 广播流量是为了被特定网段上的所有主机“听到”而发送的流量。广播流量的示例是ARP请求,它是物理层的广播(MAC地址FF-FF-FF-FF-FF-FF)或NetBIOS名称查询,它是网络层的广播(无论发生什么)是该特定网络的广播地址,例如64.28.42.63,用于网络64.28.42.0/26)。

多播: 多播流量是为了被网段上的特定主机组“听到”而发送的流量。某些多播流量可以被视为广播流量,例如到多播地址224.0.0.1的流量,这是针对同一网段上的所有主机的多播流量。组播流量的另一个例子是发送到组播地址224.0.0.9的流量,这是RIP路由器用来将路由信息发送到同一网段上的其他RIP路由器的流量。

我会把Anycast留给其他人,因为我真的不太了解它。


11
2018-06-11 20:21



我真的很高兴它也被回答了。我不知道任播是什么。 - KCotreau


任播不是IPv4中广泛接受的通信类型,但它存在于IPv6中。

IPv4中的三种通信方式是1)单播,2)组播3)广播。

1)IPv4单播 一对一的沟通方式。网络设备与另一网络设备通信。用于单播的第3层地址是IPv4 A类,B类,C类地址。第2层地址是单播MAC地址。

示例:浏览网站,使用FTP下载文件,使用SSH(Secure Shell)等连接到其他设备。

2)IPv4组播 一对多类型的通信。网络设备发送IPv4数据包,并将其传送给对该流量感兴趣的设备。用于IPv4多播的第3层地址是D类IPv4地址(从224到239开始)IPv4多播的第2层地址以“01:00:5e”开头。

示例:IPTV,OSPF Hello消息,EIGRP Hello消息,RIPv2路由更新。

3)IPv4广播 一对一的通信类型。网络设备发送IPv4数据包,并将传送该LAN段中的所有设备。广播流量的问题是,广播干扰局域网中的所有设备并导致带宽浪费。

示例:DHCPv4发现消息

在IPv6中,我们有单播,多播和任播。除了用于广播和多播的IPv6第3层地址和用于多播的第2层地址的变化之外,IPv4和IPv6中的单播和多播概念相同。用于IPv6多播流量的第2层地址从“33:33:”开始(在Ipv4中,它是“01:00:5e”)。

IPv6 Anycast IPv6 Anycast类型的通信用于从一组接口中识别接口,这些接口提供相同的服务,但在路由距离附近的客户端(我们可以比较类似于地理距离的路由距离)。只有在路由协议的帮助下才能进行任播。

有关IPv6 Anycast的更详细说明,请查看以下链接。

http://www.omnisecu.com/tcpip/ipv6/unicast-multicast-anycast-types-of-network-communication-in-ipv6.php

例如,我的家位于印度,我想解析FQDN“www.serverfault.com“到IP地址。考虑我有三台DNS服务器,一台位于美国,另一台位于加拿大,另一台位于印度,都提供相同的服务。更好的选择是来自印度的DNS服务器,因为它位于我的家附近如果我使用我附近的服务,我会得到更快的回复并减少网络流量。任播可以找到我家附近的服务器并从该服务器获取服务。


6
2018-02-10 14:39