我从来没有在需要复杂路由的环境中工作的特权,或者如果确实需要,则在我的上游进行处理。我一直使用非常简单的静态路由配置,并且不需要进行任何多路径路由-因此,我对此主题普遍感到困惑。我想更好地了解多播和任意播。


单播,任播,广播和多播流量之间有什么区别?
它们通常在什么情况下使用,为什么使用(例如,哪些应用程序使用哪种方法)?
如何计算给定网段或广播域的广播流量过多?
允许广播和多播流量的安全性意味着什么?


#1 楼

简而言之:当两个网络节点需要互相通信时,使用单播。这很简单,所以我不会花很多时间在上面。从定义上讲,TCP是单播协议,除非涉及到Anycast(有关更多信息,请参见下文)。

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

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

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

要使用任播,您需要在Internet的多个位置上发布同一网络,并依靠最短路径计算将客户端分配到您的多个位置。就网络节点本身而言,它们正在使用单播连接来与您的任播节点通信。有关Anycast的更多信息,请尝试:什么是“ anycast”,它有什么帮助? Anycast还是第3层功能,但它是路由路由发生方式的函数。


示例

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

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

此外,Microsoft的机器浏览协议也是基于广播的。创建了诸如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)将时间源通告到仅一个子网之外的区域。

Anycast
Anycast有点特殊,因为单播层位于其顶部。 Anycast宣布在网络的不同部分发布相同的网络,以减少到达该网络所需的网络跳数。

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

特别流行的NTP主机的NTP服务可能会被任意广播,但是我没有这个的证明。协议中没有阻止它的方法。

其他服务使用Anycast改善最终用户的数据本地性。 Google会在某些地方使用Anycast的搜索页面(在其他地方则使用geo-IP)。根DNS服务器出于类似原因使用Anycast。 ServerFault本身可能就在那儿,它们确实在纽约和俄勒冈州设有数据中心,但是还没有到那儿。


网络问题

广播流量过多可以抢夺该子网中所有带宽的节点。如今,对于全双工GigE端口,这不再是一个问题,但是在半双工10Mb的日子里,广播风暴可能会使网络真正真正停顿下来。那些在所有节点上都有一个大冲突域的半双工网络尤其容易受到广播风暴的影响,这就是为什么网络书籍(尤其是较旧的网络书籍)说要关注广播流量的原因。广播风暴使交换/全双工网络停顿起来要困难得多,但仍然可能发生。广播是IP网络正常运行所必需的。

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

多播是IPv4的可选功能,但IPv6必需。 IPv4广播已被IPv6中的多播替换(另请参见:为什么IPv6无法发送广播?)。它在IPv4网络上经常关闭。并非巧合的是,启用多播是网络工程师在必须要做IPv6之前不愿转向IPv6的众多原因之一。

计算多少流量就是太多流量取决于几件事
/>


半双工与全双工:半双工网络对bcast / mcast流量的容忍度要低得多。

网络端口的速度:网络速度越快,问题就越少。在10Mb以太网中,端口上5%至​​10%的流量可能是bcast流量(如果不是更多的话),但在GigE上,小于1%(可能更少)的可能性更大。

网络上的节点数:节点越多,不可避免的广播流量(ARP)越多。如果您使用的是广播特定协议,Windows浏览或其他问题(例如群集心跳),则开始出现问题的位置将发生变化。

网络技术:有线以太网的速度足够快,只要您拥有现代设备来驱动它,bcast / mcast都不会给您造成问题。另一方面,无线可能会遭受过多的广播流量,因为它是所有节点之间的共享介质,因此在单个冲突域中。

最后,Bcast和Mcast流量抢占了带宽端口。当您开始担心时,高度取决于您的个人网络和可变性能的承受能力。通常,网络节点数的扩展速度没有网络速度快,因此总体广播流量百分比随着时间的推移一直在下降。

某些网络出于特定原因禁止多播,而另一些则从未花费时间进行设置。有一些多播协议可以向听正确内容的任何人透露有趣的信息(SLP就是这样的信息)。就我个人而言,我不介意次要组播流量,因为我进行网络分析时最大的烦恼就是污染了网络捕获。为此,有过滤器。

评论


+1。广播可以而且确实在第2层和第3层都发生。ARP请求是第2层广播,而NetBIOS名称查询是第3层广播。

– joeqwerty
2011年6月11日22:04

绝对完美的答案。如果可以的话,我会加10。我特别喜欢您对SLP的讨论,因为我已经对其进行了mcast相关的问题。

–user62491
2011年6月13日在20:49

#2 楼

以下是一些基本信息:

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

广播:广播流量是指发送此消息的目的是让特定网段上的所有主机都“听到”该消息。广播流量的示例可能是ARP请求,它是在物理层上广播(MAC地址FF-FF-FF-FF-FF-FF)或NetBIOS名称查询,它是在网络层上广播(无论发生什么情况)是该特定网络的广播地址,例如网络64.28.42.0/26的64.28.42.63)。

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

我将Anycast留给其他人,我真的对此并不了解。

评论


我真的很高兴它也得到了答复。我也不知道什么是任播。

– KCotreau
2011年6月11日23:57

#3 楼

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

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

1)IPv4单播一对一通信。一个网络设备与另一个网络设备进行通信。用于单播的第3层地址是IPv4 Class A,Class B,Class C地址。第2层地址是单播MAC地址。

示例:浏览网站,使用FTP下载文件,使用SSH(安全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网段中的所有设备。广播流量的问题是,广播会干扰LAN中的所有设备,并导致带宽浪费。

示例:DHCPv4发现消息

在IPv6中,我们具有单播,多播和Anycast。在IPv4和IPv6中,单播和多播的概念相同,不同之处在于,用于广播和多播的IPv6第3层地址和用于多播的第2层地址有所变化。用于IPv6组播流量的第2层地址从“ 33:33:”开始(在Ipv4中为“ 01:00:5e”)。

IPv6任意广播IPv6任意通信类型的通信用于从一组接口中标识一个接口,这些接口提供相同的服务,但是在路由距离上接近客户端(我们可以比较类似于地理区域的路由距离距离)。只有通过路由协议才能进行任意播。

检查以下链接以获取有关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服务器,因为它位于我家附近。如果我在附近使用该服务,我将得到更快的答复并减少网络流量。 Anycast可以找到我家附近的服务器,并从该服务器获取服务。

#4 楼



Anycast绝对不应与其他* cast分组。但是,由于它是单播的,所以它不在单播之上。该术语仅用于标识同一IP可能存在于多个位置。在这方面,这是对“ cast”的明显误用。有点像“ WiFi”,是基于“ Hi-Fi”一词的引人入胜的术语,即使两者彼此无关。

当路由器从多个来源听到相同的单播前缀时,它不知道(也不关心)它们是否代表不同的目的地(任何广播),或者是否是通过不同路径可到达的相同目的地。