我从未有幸在需要复杂路由的环境中工作过,即使需要,也由我的上游处理。我一直使用非常简单的静态路由配置,从来不需要进行任何多路径路由——因此我对这个问题感到困惑。我想更好地理解多播和任播。
- 单播、任播、广播和多播流量之间有什么区别?
- 它们通常在什么情况下使用以及为什么使用(例如,哪些应用程序使用哪种方法)?
- 如何计算对于给定的网络段或广播域来说多少广播流量过多?
- 允许广播和多播流量会带来哪些安全隐患?
答案1
简单的说:
------------------------------------------------------------
| 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 从定义上讲是一种单播协议,除非涉及任播(下文将详细介绍)。
当您需要让两个以上的节点查看流量时,您可以选择。
如果所有节点都在同一个子网上,那么播送成为一种可行的解决方案。子网上的所有节点都将看到所有流量。没有维护类似 TCP 的连接状态。广播是以太网协议中的第 2 层功能,也是 IPv4 中的第 3 层功能。
多播类似于可以跨子网的广播,但与广播不同的是,它不会触及所有节点。节点必须订阅多播组才能接收信息。多播协议通常是 UDP 协议,因为根据定义,无法维护任何连接状态。向多播组传输数据的节点不知道节点正在接收什么。默认情况下,Internet 路由器不会传递多播流量。但对于内部使用,这是完全允许的;因此,上图中的“定义范围”。多播是 IPv4 和 IPv6 的第 3 层功能。
使用任播你在互联网的多个地方宣传同一个网络,并依靠最短路径计算将客户引导到你的多个位置。就网络节点本身而言,它们使用单播连接以与您的任播节点进行通信。有关任播的更多信息,请尝试:什么是“任播”以及它有何用处?。任播也是第 3 层功能,但它取决于路由合并方式。
例子
一些关于非单播方法在实际互联网中的使用方式的示例。
播送
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 中,服务广告协议全网通告每次宣布有服务可用时,Novell 都会发送一条消息。由于 TCP/IP 缺乏这样的全局公告协议,Novell 选择使用基于多播的协议:服务定位协议。新服务器在 SLP 多播组上宣布其服务。寻找特定类型服务的客户端向多播组宣布其需求并监听单播回复。
HP 打印机默认在多播组中通告其存在。使用正确的工具,您可以轻松了解网络上有哪些打印机可用。
NTP 协议还允许使用多播方法(IP 224.0.1.1)向一个子网以外的区域通告时间源。
任播
任播有点特殊,因为单播位于其上。任播是在不同的网络中宣布同一个网络部分网络,以减少到达该网络所需的网络跳数。
6to4 IPv6 转换协议使用 Anycast。6to4 网关在特定 IP 192.88.99.1 上宣布其存在。希望使用 6to4 网关的客户端将流量发送到 192.88.99.1,并信任网络将连接请求传递到 6to4 路由器。
特别受欢迎的 NTP 主机的 NTP 服务很可能被任播,但我没有证据证明这一点。协议中没有任何内容可以阻止它。
其他服务使用 Anycast 来改善数据对最终用户的本地性。Google 在某些地方使用其搜索页面进行 Anycast(在其他地方使用地理 IP)。根 DNS 服务器出于类似原因使用 Anycast。ServerFault 本身可能会去那里,他们在纽约和俄勒冈州有数据中心,但还没有去那里。
网络问题
过多的广播流量会抢占该子网中所有节点的带宽。如今,有了全双工 GigE 端口,这个问题就不那么令人担忧了,但在半双工 10Mb 时代,广播风暴可能会很快使网络瘫痪。那些在所有节点上都有一个大冲突域的半双工网络特别容易受到广播风暴的影响,这就是为什么网络书籍(尤其是旧书)建议密切关注广播流量的原因。交换/全双工网络很难因广播风暴而停止,但仍有可能发生。广播是必需的以确保 IP 网络正确运行。
多播同样存在滥用的可能性。如果多播组中的一个节点开始向该组发送大量流量,则所有订阅的节点都将看到所有流量。与广播一样,过多的多播流量会增加此类连接上发生冲突的可能性,而冲突是一个问题。
多播是一种选修的IPv4 的功能必需的用于 IPv6。在 IPv6 中,IPv4 广播被多播取代(另请参阅:为什么 IPv6 不能发送广播?)。IPv4 网络上经常关闭多播。并非巧合的是,启用多播是网络工程师在转向 IPv6 之前持谨慎态度的众多原因之一。有去做吧。
计算多少流量才算过多流量取决于以下几点
- 半双工与全双工:半双工网络对于广播/组播流量的容忍度要低得多。
- 网络端口速度:网络速度越快,这个问题就越小。在 10Mb 以太网时代,端口上 5-10% 的流量可能是广播流量,甚至更多,但在 GigE 上,不到 1%(可能要少得多)的可能性更大。
- 网络节点数:节点越多,不可避免的广播流量 (ARP) 就越多。如果您正在使用广播特定协议、Windows 浏览或集群心跳等其他功能,问题的起始点就会发生变化。
- 网络技术:有线以太网速度足够快,只要您有现代设备驱动它,bcast/mcast 就不太可能给您带来问题。另一方面,无线可能会受到过多广播流量的影响,因为它是所有节点之间的共享介质,因此处于单个冲突域中。
最后,广播和多播流量会抢占端口的带宽。您开始担心的时间高度依赖于您的个人网络和对可变性能的容忍度。一般来说,网络节点数的增长速度不如网络速度快,因此总体广播流量百分比一直在下降。
有些网络出于特定原因不允许多播,而有些网络则从未花时间设置多播。有些多播协议可以向任何收听正确内容的人透露有趣的信息(SLP 就是其中之一)。亲自,我并不介意少量的多播流量,因为我所见过的最大烦恼就是我在进行网络分析时受到污染的网络捕获;为此,有过滤器。
答案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 留给其他人,因为我真的对它了解不多。
答案3
任播在 IPv4 中不是一种被广泛接受的通信类型,但它在 IPv6 中存在。
IPv4 中的三种通信类型是 1) 单播,2) 多播 3) 广播。
1)IPv4单播一对一通信类型。一个网络设备与另一个网络设备通信。单播使用的第三层地址是 IPv4 A 类、B 类、C 类地址。第二层地址是单播 MAC 地址。
例如:浏览网站、使用 FTP 下载文件、使用 SSH(安全外壳)连接到另一台设备等。
2)IPv4 多播一对多类型的通信。网络设备发送 IPv4 数据包,并将其传送给对该流量感兴趣的设备。用于 IPv4 多播的第三层地址是 D 类 IPv4 地址(从 224 到 239 开始)用于 IPv4 多播的第二层地址以“01:00:5e”开头。
示例:IPTV、OSPF Hello 消息、EIGRP Hello 消息、RIPv2 路由更新。
3)IPv4 广播一对多类型的通信。网络设备发送 IPv4 数据包,该数据包将传送到该 LAN 段中的所有设备。广播流量的问题是,广播会干扰 LAN 中的所有设备并导致带宽浪费。
示例:DHCPv4 发现消息
在 IPv6 中,我们有单播、多播和任播。单播和多播的概念在 IPv4 和 IPv6 中是相同的,只是用于广播和多播的 IPv6 第 3 层地址和用于多播的第 2 层地址有所不同。用于 IPv6 多播流量的第 2 层地址从“33:33:”开始(在 Ipv4 中为“01:00:5e”)。
IPv6 任播IPv6 任播类型的通信用于从一组接口中识别一个接口,这些接口提供相同的服务,但在路由距离上靠近客户端(我们可以将路由距离与地理距离进行比较)。只有在路由协议的帮助下,任播才有可能实现。
查看以下链接以获得有关 IPv6 Anycast 的更清晰的解释。
例如,我的家在印度,我想解析 FQDN“www.serverfault.com“到 IP 地址。假设我有三个 DNS 服务器,一个位于美国,另一个位于加拿大,另一个位于印度,它们都提供相同的服务。更好的选择是来自印度的 DNS 服务器,因为它离我家很近。如果我使用离我家较近的服务,我将获得更快的回复并减少网络流量。Anycast 可以找到离我家较近的服务器并从该服务器获取服务。
答案4
只是对任播进行澄清。
任播绝对不应该与其他 *cast 归为一类。但是,它并不位于单播之上,因为它是单播。该术语仅用于标识同一 IP 可能存在于多个位置。从这个方面来看,这是对“cast”的一次引人注目的误用。有点像“WiFi”是基于“Hi-Fi”一词的引人注目的术语,尽管两者彼此无关。
当路由器从多个来源听到相同的单播前缀时,它不知道(也不关心)它们是否代表不同的目的地(任播)或者是否是可通过不同路径到达的同一目的地。