背景技术
数据通信网络可以包括各种计算机、服务器、节点、路由器、交换机、桥接器、集线器、代理服务器、以及耦合到彼此并配置为彼此传递数据的其他网络装置。这些装置在本文中将被称为“网络元件”。通过利用网络元件之间的一条或多条通信链路在网络元件之间传递协议数据单元(如互联网协议数据包、以太网帧、数据单元、段、或数据的位/字节的其他逻辑关联)经由数据通信网络传送数据。当特定协议数据单元在网络上在其源和其目的地之间行进时,可以通过多个网络元件并横跨多条通信链路来处理该特定协议数据单元。
通信网络上的各种网络元件利用预定的规则集合(在本文中称为协议)相互通信。不同的协议用于管理通信的不同方面,例如,应当如何形成用于在网络元件之间传输的信号,以及以下各个方面:协议数据单元应当看上去什么样子、应当如何通过网络元件处理协议数据单元或者将协议数据单元路由通过网络、以及应当如何在网络元件之间交换信息如路由信息。
以太网是一种已知的联网协议,该协议已被电气和电子工程师协会(IEEE)定义为标准802.1和802.3。传统上,以太网被用于在企业中(如商业和大学)中实现网络,而其他技术已被用于在更长的距离上传输网络业务(traffic)。因为以太网标准随着时间不断演进,所以以太网作为长距离传输技术也变得更加可行。
图6示出了随着时间已添加到以太网标准的几个字段。如图6所示,由IEEE 802.1规定的原始以太网帧格式包括源地址(C-SA)和目的地地址(C-DA)。IEEE 802.1Q添加了客户VLAN标签(C-标签),该标签包括以太网类型(Ethertype)、标签控制信息(TCI)信息、和客户VLAN ID(C-VID)。IEEE 802.1ad添加了提供商VLAN标签(S-标签),该标签也包括以太网类型、TCI信息和订户VLAN ID。C-标签允许客户指定VLAN,而S-标签允许服务提供商在用于该帧的服务提供商的网络上指定VLAN。
以太网标准已经演进成还允许进行第二封装处理,如在IEEE 802.1ah中规定的。具体地,通向服务提供商的网络的入口网络元件可以用外部MAC报头封装原始以太网帧,该外部MAC报头包括服务提供商的网络上的目的地地址(B-DA)、服务提供商的网络上的源地址(B-SA)、VLAN ID(B-VID)和服务实例标签(I-SID)。客户MAC地址(C-SA和C-DA)与I-SID的组合通常称为I-标签。
以太网媒体访问控制(MAC)地址形成了以太网报头的一部分。在给定的广播域(如以太网LAN)中,要求每个MAC地址是唯一的并且每个MAC地址标识一个特定联网实体,使得帧可以被明确地转发给该特定实体。
MAC寻址方案被设计为使得MAC地址能够是全球唯一的。具体地,IEEE规定以下编号方案,在该方案中,在生产特定装置时由制造商向该特定装置分配全球管理地址。在IEEE编号方案中,最初两位被留出用于本地/多播帧指示,而MAC地址的最初三个八位字节的其余部分称作组织唯一标识符(OUI),并标识制造商。如果需要,则IEEE将OUI码点分配给制造商。制造商将最后三个字节分配给他们生产的装置并且最后三个字节被烧到装置中使得制造商生产的每台装置将具有唯一的MAC地址。
一般而言,制造商遵照该编号方案来生产具有全球唯一永久MAC地址的装置。然而,不幸地,不是每个制造商都遵照该传统。因此,具有重复MAC地址的装置正开始出现。对于正常的桥接来说是有问题的,正常的桥接通过桥接器来“学习”通向给定MAC地址的转发路径,该桥接器在每次观察和存储来自该MAC地址的业务的到达的端口时接收帧,并且因此如果在所桥接的域上出现多个完全相同的地址,则针对给定MAC地址转发的帧将总是前进到带有作为源的该MAC地址的最近的帧源。
典型地,重复MAC地址对于低成本家电来说比对于服务提供商网络内采用的非常昂贵的网络路由器等来说更是个问题。当经由保存以太网帧内容的宽带接入网络对这种低成本家电联网时,重复地址可能成为问题并且干扰网络的正确操作。因此,已经提出的用于处理广播域上出现的重复MAC地址的可能性的一种方式,是在以下接入节点中执行MAC网络地址翻译(NAT),即在该节点处,客户装置连接到服务提供商的网络。该处理使得任意重复MAC地址都能够被翻译为运营商管理的全球唯一值,使得在服务提供商的网络内不出现重复地址。
不幸的是,MAC NAT不是小事。尤其在IPv6中,其中MAC地址变为IP地址的一部分,执行MAC NAT是复杂的。此外,保持接入节点中的MAC NAT功能性是最新的(这包括知晓新的协议)可能需要非常大的维护和持续的软件开发。因此,将期望提供另一种方式,该方式能够在通信网络中适应重复MAC网络。
具体实施方式
要求MAC地址在子网内是唯一的,使得在子网内传输的业务可以被明确地传输到特定节点。在一个实施例中,在客户端节点连接到通信网络时,客户端节点将进行注册以获得在通信网络上使用的IP地址。作为该过程的一部分,将检查客户端节点的MAC地址以确保该MAC地址不是与另一客户端节点相关联的另一MAC地址的重复,其中该另一客户端节点已被分配有用于特定子网的IP地址。当检测到重复MAC地址时,具有该重复MAC地址的装置将被分配有来自不同子网的IP地址,使得具有同一MAC地址的多于一个的客户端装置不与同一子网相关联。在一个实施例中,集中式地址服务器(典型地是DHCP服务器)可以实现检查重复MAC地址的过程。在以太网的背景中,不同的IP子网前缀可以映射到不同的S-VID值(IEEE 802.1ad)或I-SID值(IEEE 802.1ah),使得不同子网被实现为以太网络内的不同VLAN。
尽管将参照其中重复MAC地址出现在客户端节点上的示例来描述本发明的实施例,但是本发明不限于该方式,这是因为重复MAC地址可以在网络上的其他位置处出现。因此,本文描述的技术也可以扩展为应用在网络的其他区域中。
图1示出了示例通信网络10,该通信网络10包括接入节点12、客户端节点14以及网关宽带远程接入服务器(BRAS)(在业内也称作宽带网络网关(BNG)16)。网络10可以包括中间节点,中间节点将接入节点12和BRAS 16互连起来。为了简明,没有示出在物理上连接这些装置的具体方式,而仅是示出了这些装置之间的逻辑连接18。
在接入网络中常见的是,接入提供商通过让多个客户共享公共的S-VID和子网前缀并在客户和BRAS之间采用桥接技术来对业务进行复用/解复用而调节该解决方案。这分别使得S-VID消耗和IP地址分段最小化。还要求客户在S-VID的范围内不具有彼此的第2层可达性,使得BNG可以是用于连通性的主要政策代理。这要求接入节点以及潜在的聚集节点实现水平拆分转发。
尽管“表现良好的”客户端在他们可以看到相邻业务时可能观察到他们不是唯一的,并且可能进行校正动作,但是我们需要考虑到客户端不能彼此看到,并且我们需要假设存在潜在的恶意客户端。因此,需要一种解决方案,该方案不要求任意的网络附接的客户设备的协作。
如果将接入节点和BRAS互连起来的网络是以太网络,则可以通过利用不同的S-VID(针对利用802.1ad实现的以太网络)或不同的I-SID(针对利用802.1ah实现的以太网络)可以将以太网络上的业务分离到单独的VLAN中。这意味着在以太网层虚拟了第3层子网。惯例是将该虚拟化绑定到特定设施(例如,每个单个接入节点的S-VID),但这不是必需的。结果是在BRAS和接入节点之间的中心辐射型连通性(Hub-and-Spoke)。
每个子网将形成特定广播域。因此,重要的是,给定子网内的每个客户端装置14都具有唯一的MAC地址。在图1所示的示例中,连接到接入节点2和接入节点3的客户端装置满足该准则,并因此连接到接入节点2的所有客户端节点都可以被分配给子网2,并且类似地,连接到接入节点3的所有客户端都可以被包括在子网3中。
然而,接入节点1拥有具有同一MAC地址的两个客户端节点。具体地,在图1所示的示例中,连接到接入节点1的两个客户端节点具有同一MAC地址=A。并非对客户端节点之一执行MAC NAT或简单地拒绝服务,根据本发明的实施例,这些节点之一被分配给不同的子网(子网4)。这使得每个子网都具有唯一MAC地址的离散集合。通过将具有重复MAC地址的客户端节点分配给单独的子网,每个子网将具有特定MAC地址的至多一个实例。通过针对每个子网使用一个不同的VLAN,以太网层处的业务可以被明确地转发,使得重复MAC地址在通信网络内不是个问题。
图2-4示出了多个附加示例,如何可以将具有重复MAC地址的客户端节点分配给除了与其相应接入节点相关联的主要子网之外的子网。具体地,在图2中,所示的所有三个接入节点都包括一对具有重复MAC地址的客户端节点。具体地,接入节点1拥有一对具有MAC地址=A的客户端节点,接入节点2拥有一对具有MAC地址=B的客户端节点,并且接入节点3拥有一对具有MAC地址=C的客户端节点。并非针对每个重复对来分配单个子网,具有重复MAC地址的客户端装置可以被分配有来自公共子网的IP地址,使得具有重复MAC地址的全部客户端节点都可以被分配给该重复子网(子网4)。
图3示出了另一示例,其中每个接入节点都拥有一对具有重复MAC地址的客户端节点。然而,在该实例中,接入节点2具有三个全部具有同一重复MAC地址的客户端节点。因此,需要两个附加子网——子网4和子网5——来适应这三个节点。具有重复MAC地址的其他客户端节点可以被分配给这些子网中的一个,如图3中所示。
图4示出了具有重复MAC地址的客户端节点如何可以出现在网络上的又一示例。在该示例中,这些接入节点中的多于一个的接入节点拥有一对具有同一重复MAC地址的客户端节点。具体地,接入节点1和接入节点2二者都拥有一对具有MAC地址=A的客户端节点。分配给这些接入节点中的每个接入节点的子网都可以适应具有MAC地址=A的一个客户端节点。类似地,每个重复地址子网可以适应具有MAC地址=A的至多一个客户端节点。因此,多个重复地址子网(例如,子网4和子网5)应当用于适应这些多个客户端节点。
为了使得能够在以太网域内广播不同子网上的业务,不同的S-VID或其他VLAN标识符可以被分配给每个子网。BRAS和接入节点可以被编程为使来自不同子网的前缀与这些VLAN标签关联,使得寻址到特定子网的业务被正确地标记以用于在以太网上传输。
在图1-4中的每幅图中,通信网络包括动态主机配置协议(DHCP)服务器20。DHCP服务器通常用于在通信网络上分配互联网协议地址。根据本发明的实施例,DHCP服务器维护跟踪当前具有给定子网上的地址租赁(lease)连同相关联的设施ID的MAC地址的表格。当请求新的租赁时,作为IP地址分配过程的一部分,DHCP服务器检查与IP地址请求相关联的MAC地址在当前与该设施(例如,DSL环路)关联的IP子网中是否是个重复。如果DHCP服务器检测到用于接入设施的当前子网上的重复MAC地址,则不会将MAC地址分配给来自该子网的客户端装置,而是将IP地址分配给来自不同子网池的具有重复MAC地址的客户端节点,这将具有改变与该设施关联的当前子网的效果。由于以下事实这是可能的:这是个惯例,对于接入节点将标识单个客户端的接入设施信息添加到DHCP地址请求以使得可以将真正的重复(在多于一个设施上同时出现的重复)与客户端和DHCP服务器之间的状态机的同步的缺失区分开。
尽管传统上可以在DHCP服务器中执行重复MAC地址检查的实现,但是本发明不限于在DHCP服务器中实现该过程的实施例。例如,在获得来自DHCP服务器的IP地址之前,接入节点可以被提供有一定范围的S-VID并且客户端装置可以被分配给子网(S-VID)。在该实施例中,接入节点可以检查重复MAC地址并且根据需要将客户端装置分配给不同的子网以防止具有同一MAC地址的两个客户端装置被分配给同一子网。或者,存在可能类似地执行所需功能的许多其他集中式地址管理系统(例如,基于RADIUS)。
在一个实施例中,DHCP服务器优选地基于以下两者而针对给定请求执行子网分配:位置,以及MAC地址是否已在默认子网络上存在。利用DHCP服务器是有利的,这是因为它是中央设施并因此可以调整跨越多个接入节点的子网。在该实施例中,DHCP服务器将具有以下默认子网,该默认子网与每个接入设施关联,从该默认子网分配IP地址。当与DHCP请求相关联的MAC地址在接入节点内是唯一的时,这允许DHCP服务器在正常的事件过程期间分配来自分配给接入节点或客户端端口的子网的IP地址。DHCP服务器还分配来自用于重复MAC地址的其他子网的IP地址以防止特定MAC地址的多于一个的实例被分配至给定子网。
在一个实施例中,接入节点不跟踪MAC地址或知道其附接的客户端节点中的多于一个的客户端节点具有重复MAC地址。接入节点确实实现DHCP中继代理,使得它将有机会在DHCP业务在客户端和服务器之间流动时检查(inspect)/修改DHCP业务。当接入节点接收所提供的IP地址时,接入节点将基于DHCP服务器提供的子网前缀推断正确的VLAN标签(或IEEE 802.1ah I-SID标签)以用于订户客户端节点。
图5示出了可以用于使得DHCP服务器能够在通信网络内适应重复MAC地址的示例过程。具体地,在图5所示的过程中,当客户端节点连接到接入节点时,它将向DHCP服务器发送DHCP请求以请求分配IP地址以在网络上使用(100)。在优选的实施例中,要求接入节点实现DHCP中继功能,并且接入节点接收DHCP请求,它将DHCP中继代理信息(选项82)插入到DHCP数据包(102)中以向DHCP服务器提供关于DHCP客户端所连接到的设施的信息,典型地为端口ID或DSL环路标识符。当在接入节点处使能DHCP选项82时,接入节点在该信息经过它们的通向DHCP服务器的路上的交换机时将该信息插入到DHCP数据包中。
当DHCP服务器接收到DHCP请求时,它将确定与该设施相关联的当前子网并执行搜索以在已存在的用于该子网的租赁集合中查找重复MAC地址。具体地,DHCP服务器将进行查找以确定客户端节点的MAC地址在分配给接入节点的子网内是否是唯一的(106)。如果MAC地址是唯一的,则DHCP服务器将给该装置分配来自用于子网的未使用地址的池中的IP地址租赁并相应地更新其表格(108)。如果MAC地址不是唯一的,则DHCP服务器将该设施分配给另一子网(在该另一子网中,该MAC地址为唯一的)并将来自用于该子网的未使用地址的池中的IP地址租赁分派给该客户端节点。
DHCP服务器具有默认子网,该默认子网与每个接入节点上的所有设施相关联,使得当附接到网络的客户端节点不具有重复MAC地址时,DHCP服务器将一般性地分配来自用于该接入节点的子网的IP地址。图7中示出了一个示例DHCP服务器。如图7所示,DHCP服务器包含被配置为分配网络上的IP地址的DHCP处理70的一个或多个实例。DHCP服务器20包括表格72,该表格72包含接入节点和所分配的子网之间的关联。当DHCP服务器20接收到DHCP请求时,它将读取该请求中由接入节点提供的选项82信息以根据表格72确定相关联的子网。
如图7所示,DHCP服务器还具有一个或多个表格74,DHCP服务器可以利用该表格74来存储与每个接入节点和子网关联的MAC地址。表格74可以被实现为针对每个子网、针对每个接入节点的单个表格,或者可以被实现为使得给定表格覆盖多于一个的子网或接入节点。DHCP服务器还可以包括另一表格,该另一表格将IP前缀映射到特定接入节点,可选地按照优先顺序,使得DHCP服务器可以分派来自用于被服务的接入节点的正确子网的IP地址。MAC表格使得DHCP服务器能够在什么子网中跟踪什么MAC地址。在检测到重复之前,子网分派策略可以最初基于设施ID,并且保留的设施ID/MAC绑定有助于确保实际上存在真正的重复MAC地址并且该DHCP服务器不是简单地查看来自同一接入节点的重复DHCP请求。保留的设施ID/MAC绑定允许识别并滤出来自同一设施的重复DHCP请求。在该实施例中,DHCP服务器将利用选项82信息来确定子网,并且然后执行查找以确定请求装置的MAC地址是否为已经从子网分配的IP地址的任意其他MAC地址的重复。基于每个子网执行查找使得子网能够跨越多个接入节点。
当DHCP服务器接收到来自接入节点的请求时,它将利用表格74来确定对于与该设施相关联的当前子网来说该关联的MAC地址是否为唯一的。如果MAC地址是唯一的,则DHCP服务器将分派来自用于该设施的当前子网的地址并将IP地址发送回到客户端节点。如果MAC地址不是唯一的,则DHCP服务器将找到MAC地址在其中为唯一的子网,并且分派来自MAC地址在其中为唯一的该不同子网的地址。如果没有可用的子网,则将使用传送服务的否认的装置。这可能是个预留的地址,该预留的地址指示接入节点阻止该端口。一个示例将是IPv4 127./8非可路由前缀。
为了使得与MAC地址关联的业务能够被映射到正确的子网,接入节点和网关BRAS二者被预先编程有以下表格,该表格使IP前缀与VLAN ID关联。在利用IEEE 802.1ad实现的以太网络中,可以利用S-VID来实现VLAN ID。在利用IEEE 802.1ah实现以太网络的情况下,也可以使用其他VLAN ID,如I-SID。因此,特定VLAN ID可以依赖于用于承载BRAS和接入节点之间的业务的以太网络的特定实现方式。
假设利用IEEE 802.1ad来实现以太网络,接入节点中的DHCP中继功能将从DHCP响应中读取前缀并利用该前缀根据VLAN ID/前缀表格推断S-VID。然后,该S-VID将与客户端端口相关联,使得从客户端接收到的业务可以被正确地标记以用于在网络上传输。
当在接入节点处接收到的下游业务被标记有S-VID或I-SID时,接入节点可以在与该S-VID/I-SID相关联的任何端口上广播该业务,或者接入节点可以执行MAC查找以确定使用哪个输出端口将业务转发到正确的客户端节点。由于每个客户端装置均由子网内的唯一MAC表示,因而用不同的VLAN ID(例如,S-VID)标记每个子网使得接入节点能够执行MAC查找并且明确地确定正确的输出端口,甚至在具有同一MAC地址的多于一个的客户端节点已附接到同一接入节点的情况下也这样。
如果接入节点没有参与(interest)与该设施相关联的S-VID或I-SID而注册,或者没有先验的预先规定的连通性,则它可能不得不利用注册技术,如通用属性注册协议(GARP)或者多注册协议(MRP),以将接入节点添加到子网。在IEEE 802.1ak-2007中规定了MRP。也可以实现参与S-VID进行注册的其他方式。
当与标识有给定选项82的设施(例如,面向客户端的端口)相关联的所有租赁过期时,IP地址的后续分配可以恢复回与该设施相关联的默认子网。这使得通过将MAC地址收集回被分配给选项82设施的默认子网能够减少子网分段,在其中不再有重复MAC地址的问题。目标不是使修正重复永久化,这是因为客户端所采用的装备可能随着时间而改变。
如果重复MAC出现并请求在已经由早前注册所发起的默认子网上租赁的设施上租赁时,要求DHCP服务器在确定分配哪个子网时考虑与该设施相关联的MAC地址的集合,该集合要求在所分配的子网内的唯一性。此外,DHCP服务器将针对存在的租赁发出DHCP强制复原(DHCP-FORCE-RENEW),以强制当前的租赁人再次应用,使得在接收到新的注册业务时,与该设施相关联的当前子网可以被重新选择为其中与该设施相关联的MAC地址的集合将为唯一的子网。
尽管期望避免具有重复MAC的设施到非默认子网的永久绑定,但DHCP强制复原的使用向租赁人呈现了服务打断。其影响可以通过使绑定“粘性的”并且使设施在可编程时段内与非默认子网相关联来最小化,每次检测到默认子网上的具有MAC的重复时复位,之后,关联过期。
上述功能可以被实现为存储在计算机可读存储器中并在计算机平台上的一个或多个处理器上执行的程序指令的集合。然而,对于本领域技术人员来说明显的是,本文描述的所有逻辑可以利用离散的部分、集成电路(如特定应用集成电路(ASIC))、与可编程逻辑装置结合使用的可编程逻辑(如现场可编程门阵列(FPGA)或微处理器)、状态机、或包括其任意组合的任意其他装置来实现。可编程逻辑可以是在有形介质中临时或永久固定的,有形介质如只读存储器芯片、计算机存储器、盘或其他存储介质。所有这样的实施例意在落入本发明的范围内。
应当理解,可以在本发明的精神和范围内进行附图中示出的和说明书中描述的实施例的各种改变和修改。因此,意在上述描述中包含的和附图中示出的所有内容应当被解释为说明性的而非限制性的意义。本发明仅受到所附权利要求及其等同物的限定。