著录项信息
专利名称 | 管理和保护网络的网络操作系统 |
申请号 | CN200880116637.X | 申请日期 | 2008-09-26 |
法律状态 | 授权 | 申报国家 | 暂无 |
公开/公告日 | 2011-10-12 | 公开/公告号 | CN102217228A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/24 | IPC分类号 | H;0;4;L;1;2;/;2;4查看分类表>
|
申请人 | NICIRA网络公司 | 申请人地址 | 美国加利福尼亚
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | NICIRA股份有限公司 | 当前权利人 | NICIRA股份有限公司 |
发明人 | M·卡萨多;S·申科;K·E·阿密顿;P·J·巴尔兰德三世;N·古德;J·皮提特;B·L·帕夫;D·J·温德兰得特 |
代理机构 | 中国国际贸易促进委员会专利商标事务所 | 代理人 | 袁玥 |
摘要
本发明描述管理网络的系统和方法。维护网络的当前状态的概观,其中网络的当前状态表征网络拓扑和网络组成,所述网络组成包括驻留在网络中或网络上的网络实体和网络部件。通告与网络状态的变化对应的事件,并且能够相应地配置一个或多个网络部件。描述了管理网络业务的方法,所述方法确保网络部件采取的转发和其它动作实现全局声明的网络策略,并涉及高级名称,而与网络拓扑和网络组成的位置无关。描述了发现网络组成的方法,从而自动配置网络组成。利用ACL可实现路由,能够截取分组,以允许主机继续保持休眠模式。这些方法适用于虚拟环境。
管理和保护网络的网络操作系统 \n[0001] 交叉引用 \n[0002] 本发明要求2007年9月26日提交的题目为“Flow Based NetworkOperating System”的美国临时专利申请No.60/995435,以及2008年1月14日提交的题目为“Network Operating System for Managing andSecuring Enterprise Networks”的美国临时专利申请No.61/010985的优先权,将这两个申请整体包括在此用于所有目的。 \n技术领域\n[0003] 本发明一般地涉及计算机网络管理和安全,更具体地说,涉及用于控制网络的可缩放和可自动配置的系统和方法。 \n背景技术\n[0004] 许多当前的企业具有大型且复杂的网络,这些网络包含支持各种连接、应用和系统的链路、交换机、集线器、路由器、服务器、工作站和其它联网设备。同时待审的申请No.11/970976(申请日2008年1月8日,该申请的内容在此引为参考)推进了网络管理领域的状态。不过,尽管这些和其它重大的商业和学术努力减轻了网络管理员的负担,不过这些网络仍然难以被管理和保护。 \n[0005] 参考主机操作系统和网络操作系统的开发的差异,能够更好地举例说明这些网络的管理员遇到的一些问题。在早期的计算中,程序是利用不存在对底层物理资源的通用抽象(abstraction)的机器语言编写的。这使得程序难以编写、移植、推理(reason about)和调试。开发了现代操作系统,以通过提供对诸如内存、存储器、通信和文件、目录等中的信息之类资源的高级抽象的受控访问,便利程序开发。这些抽象使程序能够在各种各样的计算硬件上执行复杂的任务。 \n[0006] 相反,网络一般是通过各个组件的低级配置来管理的。网络配置常常取决于底层网络:例如,用访问控制列表(“ACL”)条目阻断用户的访问要求知道用户的当前IP地址。\n更复杂的任务要求更大量的网络知识:强迫访客用户的端口80业务经过HTTP代理服务器则要求知道当前的网络拓扑和每个访客的位置。传统的网络类似无操作系统的计算机,与网络相关的组件配置起与硬件相关的机器语言编程的作用。 \n发明内容\n[0007] 本发明的一些实施例提供控制全局路由和其它转发行为(包括网络地址转换、加密、封装、有状态的隧穿,和各种形式的服务质量)的系统和方法。当流起始时,可实时地对每个流单独做出这些决策,这些决策可基于按照高级名称(主机、用户、服务等的名称)表述的通用策略。这些策略的实现可与网络拓扑无关,并且当用户和主机移动,并且网络变化时,这些策略仍然有效。通过利用在多数商用交换芯片中提供的ACL功能,能够实现本发明的一些实施例。 \n[0008] 本发明的一些实施例提供保持全面网络概观的系统和方法。在这些实施例的一些中,网络概观包括网络部件的拓扑。在这些实施例的一些中,网络概观识别实体的位置,实体包括用户,服务和主机。在这些实施例的一些中,保持网络概观的历史以及网络流的历史。 \n[0009] 本发明的一些实施例提供集中的编程接口,所述编程接口使高级语言可以访问网络概观,通知包括流发起和网络概观的变化的网络事件,和控制网络部件的控制机制。该系统可提供全局路由的实时逐流控制。在这些实施例的一些中,系统控制流通过网络的路径,和网络部件对流的处理。在这些实施例的一些中,通过一致性要求的严格分离,系统是可缩放的,只有网络概观要求全局一致性。在这些实施例的一些中,关于流的决策基于全局网络概观和流状态。在这些实施例的一些中,这允许把一致但是缓慢改变的网络概观和局部但是快速变化的参数分开。在这些实施例的一些中,独立于多个控制器中的每一 个来处理流状态。 \n[0010] 本发明的一些实施例提供自动配置网络的方法。在这些实施例的一些中,自动配置包括自动检测与网络连接的新设备和服务。在这些实施例的一些中,自动配置包括自动更新流条目和其它配置信息。在这些实施例的一些中,流条目和其它配置信息的自动更新允许在面临各种网络变化时,保持全局指示(“策略”)的实现方式。 \n[0011] 本发明的一些实施例支持分组的智能截取,使主机能够保持功率降低模式。 [0012] 本发明的一些实施例支持虚拟环境,包括支持迁移VM。在这些实施例的其中多个VM与某些设备相关联的一些实施例中,系统允许控制这些共同驻留的VM之间的通信。在这些实施例的一些中,使用带内控制来管理设备。在这些实施例的一些中,通过利用ACL功能提供全局功能,来控制交换机。 \n[0013] 本发明的一些实施例支持通过单系统管理和保护多个网络。 \n[0014] 本发明的一些实施例支持使多个管理系统共享单网络基础结构的控制,使不同的管理机构能够分开控制。 \n[0015] 本发明的一些实施例提供管理网络的系统和方法。这些实施例的一些包括维护网络的当前状态的网络概观,网络的当前状态表征网络组件和网络拓扑,网络组成包括网络上目前可寻址的网络实体和网络部件,通告与网络状态的变化对应的事件,和根据网络概观和事件之一配置网络部件之一。在这些实施例的一些中,网络实体包括网络用户。在这些实施例的一些中,一个或多个网络管理应用访问网络概观。在这些实施例的一些中,网络的当前状态包括网络组件的位置。在这些实施例的一些中,网络的当前状态还表征网络中的流。 \n附图说明\n[0016] 图1a和1b是按照本发明的一些方面的网络管理器和网络部件的示意方框图。 [0017] 图2是示出按照本发明的一些方面的网络管理器的组件的示意方 框图。 [0018] 图3描述按照本发明的一些方面的一些NOX核心组件。 \n[0019] 图4描述按照本发明的一些方面的目录管理器和其与系统的集成。 [0020] 图5描述按照本发明的一些方面的与NOX集成的策略控制的例子。 [0021] 图6描述按照本发明的一些方面的NOX内的主机鉴别的例子。 \n[0022] 图7表示按照本发明的一些方面的流条目的例子。 \n具体实施方式\n[0023] 下面参考作为例子提供的,以使本领域的技术人员能够实践本发明的附图,详细说明本发明的实施例。值得注意地,下面的附图和例子并不意图把本发明的范围限制于单一实施例,相反通过相互交换一些或全部说明的或者图示的部件,其它实施例也是可能的。\n在方便的情况下,遍及附图使用相同的附图标记表示相同或相似的部分。在这些实施例的一些部件可部分或完全用已知组件实现的情况下,将只说明这种已知组件的对理解本发明来说必不可少的那些部分,这种已知组件的其它部分的详细说明将被省略,以便不会模糊本发明。在说明书中,表示单个组件的实施例不应被看作是限制性的;相反,本发明意图包含包括多个相同组件的其它实施例,反之亦然,除非另有明确说明。此外,申请人并不打算对说明书或权利要求中的任何术语赋予不常见或者特殊的含义,除非明确地作出说明。此外,本发明包含这里作为例子涉及的组件的目前和未来的已知等同物。 \n[0024] 本发明的一些实施例提供管理和保护数据通信网络的系统和方法。这些系统和方法一般支持对网络部件的可缩放和可自动配置的编程控制,提供网络的全面了解和对网络业务的逐流控制。本发明的各个方面允许常规商用交换机的集成和控制,以及为配置和适合于在本发明的实施例中使用的网络系统提供新的特征和功能。 \n[0025] 数据通信网络可包括互连的交换机、虚拟交换机、集线器、路由 器和配置成当数据通过网络时处理该数据的其它设备。这里,这些设备被称为“网络部件”。通过利用一条或多条通信链路在网络部件之间传送数据分组、信元、帧、片段等,通过数据通信网络传递数据。通信链路可以是分成多段的,并且可以采用有线、无线、光学等等。在一个例子中,当分组通过网络在源和目的地之间传播时,其可由多个网络部件处理,并穿过多条通信链路的多段。 \n[0026] 即使源从不同的源接收数据,或者目的地还把接收的数据转发给网络上的另一目的地,源和目的地仍可被视为网络上的端点。各种端点系统可驻留于网络上,包括客户机、虚拟机(“VM”)、典型利用诸如web服务器之类的服务器提供各种网络服务的服务器和系统、电子邮件服务器、文件服务器等。用户可以登录到包括服务器、工作站、个人计算机和移动通信设备的一个或多个这些端点系统。这里,端点系统连同用户和驻留于其上的服务一起将被称为“网络实体”。 \n[0027] 为了便于讨论,网络实体和网络部件可被共同称为“网络组成部分”,该术语的单数应用可意味一个网络部件或网络实体。要认识到,存在其中某些网络部件可充当网络实体,和某些网络实体可充当网络部件的特殊情况。例如,网络交换机可提供容纳系统管理的终端服务,而用户工作站可充当无线设备的桥接器或网关,转发网络数据。在这些特殊情况中,除了另有说明的之外,将被分开且独立地对待这些设备的不同功能。 [0028] 本发明的一些实施例包含网络的操作系统。操作系统向整个网络提供统一和集中的编程接口。网络操作系统能够实现网络的观察和控制,尽管网络操作系统不需要管理网络本身。网络操作系统一般提供在其上能够建立和/或实现应用,以便执行网络管理任务的编程接口。在本说明中,除非另有说明,否则术语“应用”指的是运行于网络操作系统上的程序。 \n[0029] 按照本发明的一些方面的网络操作系统实施与常规网络管理系统相反的概念。例如,网络操作系统向程序提供集中编程模型,包括逻辑上集中的网络状态的概观,应用可被编写得好像整个网络存在于单 台机器上。从而,应用能够利用Dijkstra方法,而不是Bellman-fore方法计算最短路径。在另一个例子中,可按照高级抽象,例如包括用户名和主机名,而不是低级配置参数,比如IP地址和MAC地址编写应用。这种抽象允许独立于底层网络拓扑而执行管理和安全策略。网络操作系统在抽象和对应的低级配置之间维护当前的、准确的映射或绑定。 \n[0030] 在一些实施例中,网络操作系统允许把管理应用编写为关于高级名称的集中式程序,与关于低级地址的分布式算法相反。更具体地说,本发明的一些实施例包含按照允许操作员使用集中的说明语句(这里称为“指令”)控制网络和执行希望的策略的方式,管理和保护网络的系统和方法。代替配置每个单个的网络组件,通过确保受网络操作系统控制的网络组件实现希望的行为,网络操作员可以仅仅创建系统将执行的一个或多个网络范围的指令。 \n[0031] 本发明的一些实施例提供通用编程接口。这允许网络操作员利用诸如C++和Python之类的高级语言指定指令。在一些实施例中,提供解决与安全、管理、网络控制、缩放和向后兼容、自动配置、虚拟环境、带内控制、历史和争论、路由、分组截取和拒绝服务保护相关的问题的系统和方法。 \n[0032] 本发明的一些实施例定义和包含这里称为“NOX”的网络操作系统。NOX使网络操作员能够观察和控制数据通信网络,包括某些网络部件和网络实体。NOX典型地维护整个网络的当前概观(view),包括当前拓扑、当前提供的服务、和主机、服务及经鉴别的用户的当前位置。提供的服务可包括标准定义的服务,比如HTTP和NFS,还可包括NOX已知或者NOX能够表征的专门服务。通过提供其中管理应用能够访问NOX所维护的网络概观的运行环境,NOX可便利网络的控制。管理应用包括监视和控制至少一部分数据通信网络的组件,这里所述一部分可由一个或多个域、一种或多种网络部件、在特定的管理控制和/或物理区域下的一个或多个组件限定。管理应用可以向NOX注册,以便接收网络事件的通知,和便利网络组件的管理。 \n[0033] 对于下面的例子来说,“网络”可被视为表示由诸如以太网、ATM之类的第2层网络,例如采用网际协议(“IP”)和/或其它适当的连网技术的第3层网络所互连的一组交换机、路由器、防火墙、代理服务器和其它网络部件。网络部件之间的链路本质上可以是局域的或者广域的,和/或它们的任意组合。用户和实体,比如主机、服务器和其它设备可以与该网络连接,并且可被认为驻留于网络上。与具体的网络体系结构,网络实体的同质性、异质性、组件部分和配置无关,可以部署基于NOX的系统来监视和控制网络。 [0034] 对于下面的例子来说,“流”被理解为一系列的分组或者共有公共特性的其它网络传输单元。一般来说,这种公共特性可由网络部件检测,并用于对每个分组应用类似的行为。例如,流可包含具有相同的分组报头,或者共有分组报头的某些指定部分的一系列分组。 \n[0035] 现在参见图1a和1b。图1a描述可控制的网络部件(“CNE”)和网络管理器的存在。图1b描述网络的一个例子,该例子具有用线表示的链路,并且示出各种“CNE”、托管网络控制器的设备的三个实例16a-c、包含网络历史的设备的两个实例18a和18b,和维护网络概观的一个设备17。在一些实施例中,系统包括网络管理器10和一个或多个可控制的网络部件12a-12h和12i-12p,所述一个或多个可控制的网络部件12a-12h和12i-12p包括交换机和/或其它网络部件。特别参考图1a,网络管理器10包括多个逻辑组件,包括网络控制器、网络概观数据库和网络历史数据库。这些逻辑组件可以托管在与网络连接的服务器或者与网络连接的其它设备上。从而,描述成分布式实体的网络管理器10能够驻留在专用处理设备上,或者跨诸如Linux服务器、UNIX服务器、Windows服务器之类的多个处理设备而分布。此外,网络管理器10可聚集由网络部件12a-12h收集和/或处理的信息。不论是驻留在公共服务器上还是驻留在不同的服务器上,一个或多个网络控制器可以各自执行NOX的实例和一组管理应用。NOX典型地提供编程接口,而管理应用提供高级网络管理能力。 \n[0036] 在图1a中,用云的形式描述网络管理器10,表示它的可能的分布特性,其它网络部件(图中未示出)之间的连接可以是任意的。图1b表示网络部件之间的互连,以及网络管理器的各个组件,包括控制器16a-16c、网络概观17和历史18a-18b的布置的更具体例子。如图1b中所示,网络管理器的各个组件可以在不同的地方与网络连接,并且根据网络配置和网络管理器的组件的布置,能够直接与网络部件12i-12p中的一些通信,并且可以与网络部件12i-12p中的一些只进行间接通信。例如,网络管理器可以设置在单一服务器中,或者设置在位于整个网络内的几个服务器中。这些服务器还可支持其它服务、应用,并且用户可登录到它们上。这些服务器还可起网络部件的作用(例如,通过充当交换机)。在控制器功能与其它网络部件存在于相同服务器上的例子中,通过利用例如公共总线、公共存储器、进程间通道和其它通信方案,网络管理器可在没有网络的情况下与网络部件通信。\n从而,图1b中描述的连接应被当作包含任意形式的通信和控制。\n[0037] 另外参见图2,在一些实施例中,网络管理器10维护描述网络的当前状态的网络概观22。网络状态包含描述当前网络拓扑、识别为驻留于网络上的主机、用户和网络服务的当前位置的信息。可按照高级名称,包括用户、主机、服务等的名称,和低级地址,包括主机、网络部件等的地址的低级地址之间的绑定记录当前状态。典型地,可得到单一逻辑版本的网络概观,不过所述概观的副本或其多个部分可被维护和存储在一个或多个与网络连接的服务器或者其它网络设备上。 \n[0038] 在一些实施例中,网络历史24维护过去网络状态的全面记录,包括拓扑、实体的位置等。网络历史24使操作员能够重新创建以前某些指定时刻的网络状态。可利用预定的查询语言查询网络历史24。一般来说,维护单一逻辑版本的网络历史24,不过网络历史\n24可被包含在一个或多个连接网络的服务器或者其它网络设备中。对网络概观和历史的分析可被用于产生网络报警。这些报警可以补充或替代网络部件的事件检测功能。例如,连续网络状态的检查可识别连接的丢失,使网络管理器10和/或利用网络操作系统101的应用能够生成策略驱动的报警。 \n[0039] 在一些实施例中,可控制的交换机和其它网络部件可由网络管理器10控制。在一个例子中,这些交换机实现和支持OpenFlow接口,从而交换机由具有采取下述形式:(报头:计数器,动作)的条目的流表格表示。不过,本发明并不局限于这种OpenFlow例子,根据当前例子的教导,本领域的技术人员会认识到其它备选方案。指定的报头字段可以是完全定义的,并且只选择与完整报头匹配的分组。作为替代地,流条目的报头规范可包含通配符值或者“ANY”以提供与流的TCAM类匹配。这种情况下,根据与报头的子集的匹配,分组可被分配给流。在一些实施例中,报头不必对应于报头的传统概念,而是可被定义为输入分组中的任意一组比特。只有共享指定的一组比特的分组被认为与指定报头匹配。对于所处理的与所识别报头匹配的每个分组,可以更新对应的计数器,并且能够发起一个或多个指定的动作。分组能够与多个流报头匹配,并且可按照预先配置的规则被分配给流。在一个例子中,一种配置可规定:匹配多个流报头条目的分组被分配给优先权最高的流条目。 [0040] 就OpenFlow来说,目前支持的动作可包括默认转发、转发出指定的接口、拒绝、转发给网络控制器,和修改各种分组报头字段,其中待修改的分组报头字段可包括VLAN标记、源和目的地IP地址和端口号。在一个例子中,“默认转发”动作使交换机有效地忽略NOX,因为分组被转发,就好像交换机正在利用其传统软件转发分组。可以支持与OpenFlow规范一致的其它动作和功能(参见可在http://www.openflowswitch.org/获得的OpenFlow文档和源代码)。 \n[0041] 一些实施例可实现交换机行为的其它抽象,并且这些可支持不同的一组动作。\n这些其它动作可包括网络地址转换、加密、封装、有状态的隧穿,和各种形式的服务质量(“QoS”)。另外,计数器和动作可被预先定义和/或由用户和网络管理应用配置。诸如OpenFlow交换机抽象之类的抽象可允许管理应用插入流表格条目、删除流表格条目、管理流表格条目的优先级,和读取流表格计数器。可在应用启动时,或者响应网络事件而设置这些条目。网络部件的OpenFlow和类似抽象还可提供一组消息,该组消息允许控制器和部件之间更宽范围通信。这种消息的例子是:交换机加入、交换机离开、收到分组和交换机统计信息。\n[0042] 下面将讨论NOX控制的数据通信网络的某些操作。下面更详细讨论的图6描述对于输入的分组可发生的处理的一个例子。在一些实施例中,NOX控制的网络部件遇到的分组或者其它数据单元可被分析和归类。分组可由任何与网络连接的设备生成,并且当分组到达NOX控制的网络部件时,检查该分组的分组报头或者其它属性,以确定该分组应被分配给的流。例如,如果输入的分组的报头与交换机的流的条目之一中的指定字段匹配,那么交换机可把该分组分配给该流,并可更新适当的计数器和应用对应的动作。不过,如果该分组不匹配流条目,那么该分组通常被转发给网络控制器,网络控制器可检查该分组,并决定如何处理该分组和/或对应于该分组的流。该决定是根据网络概观中的信息、预先定义的规则和策略指示做出的。例如,流处理决策可导致一个或多个动作,包括使交换机和/或控制器丢弃该分组、通过在沿着到分组目的地的路径的每个交换机中插入流条目来建立路径,和在不设置流条目的情况下把该分组转发给目的地的动作。 \n[0043] 在一些情况下,不与现有流条目匹配的分组是流的第一分组(“流起始分组”),并且后续分组可预期与响应流起始分组而创建的流条目匹配。在一些实施例中,控制器可不响应流起始而插入任何流条目,并且从而,控制器将继续接收该流中的所有分组。在一个例子中,可以进行这种操作,从而控制器能够看到所有DNS业务。在一些实施例中,系统可被配置成根据分组确定流信息,并在收到第一分组的一部分之后,或者在收到多于第一分组的分组之后,插入流条目。在一些实施例中,管理应用决定处理各个流的方法。可通过NOX编程接口传送控制决策。 \n[0044] 继续参考图2,一些实施例包含向应用20提供各种服务的编程接口。编程接口可向应用提供对网络概观22和历史概观24的访问。通常,应用20可查询网络概观22,利用响应中的信息来确定要采取的 动作和/或要采取的动作的程度。编程接口可向应用提供与网络事件相关的报警。在一个例子中,应用可登记通知服务,以便被通知某些网络事件。\n编程接口可使应用20能够控制网络部件。例如,应用可使用诸如OpenFlow之类的控制接口修改网络部件的行为。 \n[0045] 一些实施例监视和报告不同类别的网络事件。所述类别可包括反映网络概观中的变化的事件,比如新主机的插入、新用户的鉴别和网络拓扑的改变、反映流起始和其它分组到达控制器的事件、直接由诸如交换机加入、交换机离开、收到分组和收到交换机统计信息之类OpenFlow消息产生的事件,和作为处理其它低级事件的结果,由NOX应用产生的事件,和/或其它应用产生的事件。例如,当检测了主机时,设计用来检测“扫描主机”的管理应用可产生事件。这种扫描应用又依赖于低级事件(比如流起始)来检测扫描器。 [0046] 在一些实施例中,NOX应用使用一组注册的处理程序,所述一组处理程序被配置成当发生某些识别的事件或者某些类型的事件时被执行。事件处理程序一般是按照在处理程序注册期间指定的优先级的顺序执行的。处理程序可向NOX返回一个值,该值指示与该事件相关的处理程序的执行是否应被暂停,或者事件的处理是否应被传给下一个注册的处理程序。在一些实施例中,处理事件的应用可以采取一个或多个动作,包括更新网络概观22,把流条目插入一个或多个网络部件中,和产生另外的网络事件。 \n[0047] NOX核心最好包括其上建立其它组件的基本软件基础架构。在一个例子中,NOX核心可提供异步通信套件(harness)、事件套件、协作线程库、组件体系架构,和提供网络应用所共有的功能的一组内置系统库。图3提供一个实施例中的一些NOX核心组件的高级示图。\nI/O套件310提供对系统输入和输出(“I/O”)功能300、302和304的异步接口,系统输入和输出(“I/O”)功能300、302和304包括管理与网络交换机的连接的功能、处理与文件系统的通信的功能,和提供支持普通网络服务的套接字接口的功能,比如管理web服务器。 [0048] 事件套件320包括管理系统事件的产生和分发的组件。系统事件 可以包括网络级事件,比如交换机插入网络中,或者新流的到达,以及由应用20创建的事件,比如由检测扫描主机的应用20创建的“检测到扫描”事件。 \n[0049] 协作线程库320为管理执行的并发线程提供便利接口。一般在独立的线程语境中执行每个I/O事件。这允许应用跨通信边界提供线性程序流,同时避免与阻塞I/O相关的性能损失。在该例子中,NOX核心101支持完全异步的通信模式,其中通过登记与特定事件对应的回叫,应用20指定对该事件的兴趣。应用20可使用协作线程和回叫。 [0050] 协作线程320、事件套件322和I/O基础架构组件300、302和304优选地为核心应用编程接口(“API”)330提供基础,所述核心应用编程接口(“API”)330可暴露给应用\n20。这些组件提供揭示和解析应用之间的依从关系的方法,对应用20的动态加载的支持,和与核心API的接口。 \n[0051] 在一些实施例中,NOX核心101还可包含提供网络应用20所共有的功能性的一小组应用。这些功能可包括分组分类350、语言绑定356、定位352、路由354和拓扑发现360。\n分组分类350提供类属的接口,其中应用20可指定它们对哪种分组感兴趣;分类器则确保应用20只接收这些分组。编程语言绑定356允许用不同的编程语言编写应用。在所描述的例子中,当核心NOX 101是用一种不同的语言,比如C++实现时,python编程语言绑定允许用Python语言开发应用。编程语言绑定356允许功能性的快速原型开发,和性能非关键的功能性的高级实现。编程语言绑定356的其它例子包括对Java和Ruby的绑定。 [0052] 定位器应用352包含用于确定何时新的主机加入或离开网络的逻辑和数据。在一些实施例中,定位器应用352向网络概观22提供数据。定位器应用352一般跟踪与主机相关的网络状态,包括主机在网络上的位置,这通常由所述主机连接的物理端口来确定,和分配给主机的地址。该信息可被用于生成主机加入/离开事件,还可被路由应用用于确定将在网络中建立的流的源和目的地的物理位置,以及修改流所经 历的网络部件的转发行为。 [0053] 通过多个网络控制器各自的贡献,可构成网络概观22。定位器应用352、拓扑发现应用360和控制器的其它组件一般可修改网络概观22。在一个例子中,通过由控制器插入它们知道或者“看到”的多件网络概观22来构成复合概观,并且所得到的当前复合网络概观22随后可与所有控制器共享。在一些实施例中,使复合网络概观22保持缓存在每个控制器上,并且当存在复合网络概观22的更新时,更新复合网络概观22。控制器上的缓存可由例如路由应用维护。复合概观22不必被保存在单一服务器上,它可容易地保存在分散在多个服务器的分布式散列表(“DHT”)中,所述多个服务器也可用作一个或多个控制器的主机。 \n[0054] 路由应用354最好计算网络上的可用和/或活动路径。可利用当链路变化时递增地更新的“动态所有点对最短路径”算法计算路径。可酌情使用其它路径计算方法。当控制器收到需要路由的流时,控制器可例如根据由分组和/或流标识的源和目的地媒体访问控制(“MAC”)地址所连接的物理端口,确定或选择路线。路由应用354还可接受对路径的多个约束,例如包括流必须经过的一个或多个中间节点的标识。在一个例子中,可利用多跳Djikstra算法按需计算路径。路由应用354还可利用标准技术计算多路径和组播路径。\n作为约束,多个路径的计算可包括不相交性(disjointness)的改变程度,以致能够控制路径之间的重叠度。在计算了数据流的路径之后,路由应用可产生一个或多个网络部件的转发行为的改变,以便实现计算出的路径。 \n[0055] 拓扑发现应用360能够使用LLDP分组来检测节点和链路级网络拓扑。通过从每个交换机端口发送唯一的LLDP分组,并在收到这种分组时确定所连接的端口,可完成所述检测。该信息一般被存储在控制器内部,并且可被多个NOX组件,包括路由组件使用。拓扑发现可在控制器处进行,或者可在交换机处实现。 \n[0056] 一些实施例支持目录整合。参见图4,NOX可通过目录管理器组件420,提供与一个或多个本地或远程目录服务430、432、434和436 的抽象化接口。诸如LDAP 432或AD 430之类的目录服务包含关于网络资源的信息,包括用户名、主机名、组名和服务名称。另外,目录服务430、432、434和436通常起“鉴别仓库”的作用,维护向网络鉴别用户、主机或交换机所需的凭证。 \n[0057] 在一些实施例中,目录可被用于鉴别用户、交换机和主机,还可用于提供涉及用户、交换机和主机的特性的相关元数据。例如,目录可保存与用户和/或主机所属于的组有关的信息。按照本发明的一些方面,应用400、402、404可被编写成与目录管理器420接口,并且通过构建插入目录管理器基础架构中的目录专用的后端,可以增加新目录。一般来说,新目录的增加不需要对应用的任何改变。可在运行NOX的相同设备上保存和操作目录,并且也可在其它网络设备上保存和操作目录。 \n[0058] 在一些实施例中,NOX目录管理器420能够向多个目录暴露接口。这些接口可包括进行如下操作的接口:访问鉴别时接收的用户/主机/交换机凭证、根据交换机鉴别信息确定交换机名称、根据交换机和端口号确定端口名称、确定与用户相关的主机、交换机和/或位置、确定与主机相关的已知MAC和IP地址、确定主机的功能,例如,主机是充当网关还是路由器、确定用户和主机之间的关联,以及在一个或多个目录中增加/删除/修改条目。 [0059] 在一些实施例中,NOX包含处理准许控制策略和访问控制策略的策略引擎。准许控制策略确定用户、主机或交换机为加入网络而需要的鉴别。访问控制策略确定哪些流被允许使用网络,和这种使用的约束。图5描述与NOX的核心组件集成的策略控制的一个例子。一般来说,策略控制依赖于其它NOX应用以进行拓扑发现、路由、鉴别和流建立。可在可被编译成低级查找树的一个或多个文件中宣布策略。可用专用的策略语言,比如基于流的安全语言(“FSL”)表述策略。编译过程一般检查所有可用的鉴别仓库,以核实在策略文件中使用的主体名称的存在。 \n[0060] 在一些实施例中,首先在502用相关的名称和组标记NOX接收的分组500(包括由不存在已有交换机条目的交换机转发给控制器的分组)。在主体鉴别时能够获得名称和地址之间的绑定信息,并且该绑定信息可被存储在定位器组件中。如果对该分组来说不存在绑定信息,那么认为主机和用户未被鉴别。策略引擎可允许宣布覆盖未经鉴别的主机和用户的规则。\n[0061] 策略查找树可确定网络应如何处理标记的分组。在一些实施例中,策略查找提供可应用于流的约束,并且所述约束可被传给路由组件,以找出符合策略的路径。如果对给定的策略约束不存在任何路径,那么该分组一般被丢弃。约束的一个例子是拒绝整个流,这会产生一个或多个丢弃的分组。 \n[0062] 查找树还允许使用定制的编程函数或Java小程序作为应用于输入分组的动作。\n这样的函数可由程序员或者代码生成器用任何希望的编程语言,例如包括C++和Python创建。这些定制的编程函数可被用于各种用途:例如,可以开发一些函数来扩充鉴别策略。在一个例子中,规则可规定在被允许进入网络之前,要求借助802.1x鉴别来自指定接入点的所有未经鉴别的主机。本发明的一些实施例支持多种不同的鉴别方案,包括基于MAC的主机鉴别、802.1x主机鉴别,和借助重定向到被控制的网络门户的用户鉴别。 [0063] 通过一个例子的应用,可最好地认识在一些实施例中实现的策略控制的使用。在该例子中,单向流(“uniflow”)用八元组表征: \n[0064] ,其中 [0065] usrc、utgt分别是源用户和目标用户, \n[0066] hsrc、htgt分别是源主机和目标主机, \n[0067] asrc、atgt分别是源接入点和目标接入点, \n[0068] prot是协议,并且 \n[0069] request指示一个流是否是对之前的流的响应。 \n[0070] Uniflow构成访问控制决策器的输入。NOX的安全策略使每个可能的uniflow与一组约束相联系,并且对本例的目的来说,可以允许、拒绝uniflow、可以要求uniflow采用通过网络的包括规定主机的路由(使该uniflow“按照所指的路行进”),禁止通过某些规定主机(“路点”)并且速率受到限制。 \n[0071] 可围绕意图使必须按流检查的规则的数目最小化的决策树构建策略评估引擎。决策树可根据八个uniflow字段和一批组划分规则,产生10维空间中的规则集的紧凑表示。\n否定文法(negative literals)可被索引器忽略,并在运行时评估。对于由决策树中的每个节点代表的维度的每个可能值,该节点一般具有一个子节点。例如,对于子树的策略规则中将usrc约束于的每个值,代表usrc的节点能够具有一个子节点。另外,每个节点可包括“ANY”子节点,用于提供其中子树的规则不约束由节点代表的维度的规则。可利用具有链锁的散列表实现决策树中的每个节点,以确保在几乎恒定的时间内能够找到其每个子节点。关于10种属性中的哪一个归因于树中任意点上的分支的决策可以以找出最广泛地分割子树的规则集的维度为基础。例如,可以选择一个维度,以使在每个子节点的规则的平均数加上子树中的ANY规则的数目最小化。 \n[0072] 在一些实施例中,可在鉴别期间计算组成员。G(s)可被用于表示uniflow的源所属于的所有组,并且G(t)可被用于表示uniflow的目标所属于的所有组。为了找出与任意指定uniflow有关的所有规则,可以修改普通的决策树算法,以致在任意指定节点处可以跟随多个分支。在一个例子中,总是沿ANY分支前进,并且对于分离源组和目标组的分支,追踪属于uniflow的G(s)和G(t)的所有子节点。 \n[0073] 图6描述NOX内主机鉴别的控制流程的一个例子,并且图解说明当鉴别主机时,这些结构组件是如何一起工作的。在步骤600,NOX从交换机接收分组和packet-in消息,packet-in消息指示接收该分组的交换机和交换机端口。在步骤602,定位器组件使用输入端口、MAC地址和IP地址来确定该主机是否已被鉴别。在步骤603,如果该主机已被鉴别,那么定位器查找和增加该主机的高级名称和组名称。不过,如果该主机未被鉴别,那么在步骤604,定位器使用主机名“未经鉴别的”。 \n[0074] 在步骤606,定位器组件把流和相关的名称传送给策略查找组件。在步骤608,维护编译的网络策略的策略查找组件根据网络地址和高级名称规定应如何处理该分组。策略规定应使用哪种鉴别机制609,并且来自未经鉴别的主机的分组被传给所指示的子系统。例如,可以传送分组以进行802.1x鉴别,或者检查已登记的MAC。在一些实施例中,鉴别子系统负责进行协议特定的鉴别交换。一旦主机已被成功鉴别,则鉴别子系统就把与主机相关的地址标记为已鉴别。来自该主机的所有后续分组将用与该主机相关的名称和组来标记。\n在步骤610,策略规定应用于来自经鉴别主机的分组的约束。如果允许该流,那么分组被传送给路由组件(步骤611),路由组件将确定符合策略的路线,并在网络中建立该路线。否则在步骤612丢弃该分组。 \n[0075] 当编写和执行策略规则时,用户一般把策略编写为一批规则,并编译该策略。编译器可检查语法,并核实主体名称存在于所配置的目录之一中。编译器把策略规则编译成低级内部格式。编译可包括标准化和规则扩展,由此,例如,“OR”被扩展为多个规则。编译器可把编译的策略保存在永久存储器中,并把整个策略构建成查找树。 \n[0076] 一些实施例提供用于带内控制和控制器发现的系统和方法。通过共享和数据业务一样的传输介质,带内控制系统在交换机和控制器之间传送控制业务。通过消除对独立控制网络的需要,带内控制的使用能够简化物理网络设置和配置。交换机和控制器可被配置和/或修改,以支持带内控制使用的一些功能。一般来说,为交换机提供能力以在无控制器帮助的情况下,找出和建立到控制器的连接。交换机必须能够区分控制业务和数据业务,以便避免通信环路。另外,策略系统必须被配置成允许带内通信操作和通信。 [0077] 在一些实施例中,交换机能够在没有控制器特有状态的先验知识的情况下自动发现控制器。例如,交换机可自动检测控制器,并在与网络的连接上建立与控制器的安全通道。在特别注意安全的应用中,可通过受信任的路径连接交换机,以便保护初始SSL连接。 [0078] 默认地,只有当交换机建立了与控制器的连接时,交换机才转发 发现分组。启动时,交换机可从所有端口发出DHCP请求,以便搜索控制器。交换机假设控制器将在它收到DHCP答复的端口上。DHCP答复将包括交换机的IP地址,和控制器正在侦听的IP地址和端口号。交换机随后可在接收DHCP的端口之外建立与控制器的控制连接。一般来说,交换机不会把来自其它交换机的控制业务转发全控制器。通过确定控制业务正被发送给已知控制器或者发送自已知控制器,检测控制业务。 \n[0079] 在一些实施例中,NOX能够利用基于标准的协议,比如OpenFlow,控制比如交换机的网络部件。在OpenFlow抽象中,交换机由流表表示,其中每个条目包含报头和将对匹配分组执行的动作。在按照本发明的一些方面构成的系统中,可支持和增强OpenFlow和其它这样的协议。 \n[0080] 传统的网络交换机通常采用低功率CPU用于管理任务,和进行线速交换的诸如片上交换机(“SoC”)之类专用硬件。许多SoC具有ACL的内置支持,以便实现防火墙。这些ACL一般支持在层2-4的匹配,并且还可支持通配字段。SoC被设计成支持线速处理,因为管理CPU不能接收经过交换机的每个分组,不过管理CPU通常能够配置远程SoC上的ACL。\nSoC上的ACL一般支持与OpenFlow的接口非常类似的接口。对于每个ACL条目,必须指定所要求的匹配字段和希望的动作集。ACL实现一般还允许严格排序的定义,其中相对于分组执行分组匹配和与第一匹配条目相关的动作。 \n[0081] 大多数SoC支持许多动作,包括丢弃分组、发送给管理CPU,和通过一个或多个物理端口转发。在一些平台上,ACL动作支持递增与条目相关的计数器和修改分组报头。通常,交换机配置有匹配未能与较高优先级规则匹配的任何分组的最低优先级规则。对典型的防火墙来说,动作或者使分组被丢弃(默认拒绝),或者使分组通过(默认允许)。 [0082] 管理CPU可以查阅由NOX配置的本地软件表。如果没有找到任何匹配项,那么分组可被转发给控制器。通过利用诸如OpenFlow之 类的协议,NOX能够发送命令以增加或删除流条目。交换机管理CPU能够被编程,以利用SoC所支持的ACL的功能,并且能够根据SoC \n[0083] ACL的灵活性和功能来配置SoC ACL表。管理CPU可根据需要配置ACL表,以处理NOX请求,只要在流中存在足够的空间。 \n[0084] 管理软件一般被配置成知道可能影响网络工作的多个因素和问题。管理处理器确保在优先级较低的流条目之前,发现和处理具有较高的匹配优先级的流条目,并据此重新配置ACL表中的条目的排列。如果由NOX请求的条目的数目超过ACL表中的可用空间,那么处理器可把过多或额外的条目保存在它自己的软件表中。本地处理器表的使用可要求小心地向ACL分配存储空间,并且在一些情况下,要求调整流条目区分优先级功能。ACL表中的匹配条目将不会被发送给管理CPU,并且从而不会在软件表中找到匹配项。于是,管理软件可被配置有把条目放入处理器软件表中,以避免负面影响这种流的性能的规则。此外,在交换机硬件包含两个或更多的SoC的情况下,管理软件可在交换机中的两个位置中设置ACL,以允许分组在输入芯片和输出芯片之间传播。 \n[0085] 尽管传统的ACL一般没有过期的概念,不过由NOX插入的流条目一般配有过期机制。为了在ACL中支持这种差异,运行于管理CPU上的软件可被配置成跟踪ACL条目是否继续与业务匹配。除了由NOX配置的其它转发和丢弃动作之外,通过配置递增与条目相关的计数器的动作,可完成这种跟踪。软件随后可轮询ACL计数器,并且检查自从最后的轮询间隔以来,任何分组是否匹配了该条目。如果就该条目来说,持续预定一段空闲时间没有观察到任何匹配分组,那么可从ACL表中删除该条目。 \n[0086] 按照本发明的一些方面构成的系统表现出一些性质,所述一些性质可包括全面控制、缩放、向后兼容、自动配置和虚拟环境。 \n[0087] 就全面控制性质来说,图7示出了能够规定分组通过网络的路径的流条目,并且具体描述了具有报头H的分组的路径,其中该路径由一组流条目规定。一些实施例包含完全控制处理网络中的流的方法的 系统。这些系统可通过各种动作行使控制,所述各种动作包括向流拒绝服务、丢弃流中的一些或全部分组、通过在网络部件中插入适当的流条目来选择通过网络的路径、利用流条目实现选择的服务质量(“QoS”),使网络部件进行各种按分组进行的操作,比如加密、封装、地址转换、速率限制和有状态的隧穿,并且通过挑选通向提供所需服务的网络部件,比如能够进行深度分组检查或数据记录的部件的路径,插入属于该路径的服务。后者这种控制选项证明系统不受用于控制或监视网络设备的任何抽象的限制所约束,因为插入服务的能力允许系统进行该抽象中目前不支持的动作。 [0088] 在一些实施例中,管理决策可基于各种因素,包括:源和/或目的地用户身份、角色、位置、组成员资格和其它属性;源/目的地主机身份、角色、位置、组成员资格和其它属性;本地和/或全球网络条件,包括各种网络事件和/或其它管理应用的通知;以及日期和时间。可在流的中间修改管理决策。例如,如果网络条件改变,或者检测到某一其它网络事件,那么流能够被重新路由和/或经历深度分组检查服务的额外详细审查。 [0089] 在一些实施例中,NOX可被放大到极大的系统规模。在这些实施例中,需要严格控制设计中的一些一致性要求。一般来说,由于应用通常只使用来自网络概观的数据,以及指定策略来做出控制决策,因此只需要跨控制器始终如一地使用网络概观。由于在做出这些控制决策时一般不使用和各个分组或流的状态有关的信息,因此将达到与流相关的控制决策方面的一致性,与哪个控制器接收该流无关。 \n[0090] 在一些实施例中,与新流到达的速度相比,网络概观变化非常缓慢。这使网络概观可以提供大量控制器的全局一致的概观,这使系统可以并行利用许多控制器,每个控制器负责网络中的流的子集,从而使系统能够被缩放。系统缩放的限制因素是改变网络概观的速率。就原始计算要求来说,单一服务器能够容易地对付目前的多数企业网络的变化速度。 [0091] 更一般地说,NOX能够对以快速时标发生的事件使用并行操作, 这样的事件包括分组到达和流到达。分组到达一般由各个交换机处理,而不存在全局的按分组协调,并且流的发起可由控制器处理,而不存在全局按流的协调。流可被发送给任何控制器,从而通过增加运行控制器进程的更多服务器,能够增大系统的容量。网络概观全局数据结构一般足够缓慢地改变,以致对于超大型网络能够集中维护它。不过,为了弹性,可在较小的一组副本上维护网络概观。 \n[0092] 本发明的一些实施例包含向后兼容传统系统的组件和部件。按照本发明的一些方面构成的系统不需要对与网络连接的那部分设备的任何特殊动作。例如,连接以太网的设备能够仿佛它们与普通以太网网络连接似的工作,从而不需要任何修改。按照本发明的一些方面构成的系统能够与不支持OpenFlow,或者其它基于标准的具有这里所述类似功能的接口的网络部件共存。这些非OpenFlow网络部件将如常转发分组,并且系统可以仅仅把它们并入整个网络架构中。不过,系统不能对这些未修改的网络部件的行为施加控制,但是可按照这些未修改的网络部件遵守的连网标准(例如,标准以太网等)表征这样的组件。 [0093] 一些实施例支持网络及其组成部分的自动配置。通过利用可捕捉与网络实体相关的必要信息,比如角色,属性和组成员资格的系统目录,可便利配置。通过在一个或多个管理应用或系统文件中链接的一组策略,可捕捉管理目标。进入系统的新的网络实体能够被自动检测,并且能够对与新实体的通信应用适当的策略。类似地,进入系统的新的网络部件能够被自动检测,并且能够按照系统策略向该新部件发送流条目或者其它管理命令。从而,除了当为部件配备安全地与控制器通信所必需的加密密钥时之外,一般不需要各个网络部件的明确配置。 \n[0094] 一些实施例支持具有虚拟机(“VM”)和虚拟交换机的虚拟环境。VM是网络实体的一种形式,并且虚拟交换机是网络部件的一种形式。如果每个服务器或网络部件在其虚拟交换机上支持诸如OpenFlow之类的抽象,那么系统正确地执行策略。当VM移动或者共同位于相同服务器上时同样如此,并且除了OpenFlow实现方式之外,不需要服 务器上的特殊功能。 \n[0095] 一些实施例保存网络状态的历史,网络状态的历史可用于故障检修和取证。除了流的完整列表及除到达时间和离开时间外的流的统计信息,比如分组和字节之外,系统还保存网络概观的历史记录。这使操作员可以查看在任何时间点的网络概观的状态。例如,操作员可以查看在当前时间之前两年或两小时的完整网络概观。根据历史概观,操作员可确定哪个用户和主机发送分组。所有通信的历史使操作员能够进行网络业务的流级分析,这可用于确定在定义的一段时间内发生的网络事件。从而,历史可揭示在目标事件之前和/或之后的电子邮件传输、主机重启和事件。历史概观一般包含高级名称和低级地址之间的绑定的历史,它允许更明确地把过去事件归属于各个用户。从而,能够确定在某一时间,谁传送了文件,以及谁登录到了所选主机。该信息可用于网络故障检修,和检测过去的网络业务中各种形式的异常或可疑行为。NOX能够提供支持这种故障检修和取证分析的附加信息。 \n[0096] 一些实施例提供增强的路由功能,和提供完全控制流通过网络的路径的路由的系统。控制器能够设置一组流条目,所述一组流条目将使来自流的分组采用任意路径通过网络。特别地,不必从单一的“生成树(spanning tree)”中选择路径,在相同始发地和目的地之间行进的不同流可以采用不同的路径。此外,仅仅通过插入一组新的流条目,管理应用就能够在任意时间重新路由流。这使管理应用可以选择实现负载均衡、使用快捷路径和支持快速失效转移等的路线。 \n[0097] 当网络中的一条或多条链路被过度使用时,可以采用负载均衡。应用可为经过过载链路的流选择新的路径,或者可为新到达的流选择避开该链路的路径。特别地,路由可利用多个路径来分散网络负载。 \n[0098] 快捷路径提供不需要遵循分级模式的路线,在分级模式中,流必须通过主聚合交换机。相反,路线可以选择“捷径”,捷径是避免中央分级结构的路径。快速失效转移用于在检测到失效时,仅重新选择经过失效链路的那些路径的路线。这使得在遇到故障时大多数流能工作。在需要的情况下,一旦控制器被告知该失效的链路,就能够实现流的重新路由。\n[0099] 一些实施例支持改进的分级截取和相关特征,比如主机休眠。传统计算机可支持当未处于活动使用期时,休眠或以其它方式省电的能力。但是,分组到达它们的网络接口卡(“NIC”)会干扰功率降低特性,因为这些分组需要由CPU处理。通常在小功率工作状态期间,几乎所有的业务都是不向目的地主机传送有用信息,并且不需要主机采取的非平凡动作的网络啁啾(chatter)。按照本发明的一些方面,控制器能够决定不转发这些分组,并且可代表目的主机处理分组。例如,网络控制器,或者代表它行动的网络部件能够响应试图发现目的地主机是否仍然与网络联系的一些网络请求。这将使主机仍然处于其低功率的模式。不过,控制器能够识别和转发重要的业务,比如安全外壳(“SSH”)业务、报警、查询和其它请求,以允许主机恰当地响应。通过使控制器在转发分组之前检查所述分组,并且可能地建立流条目,网络管理器能够做出转发哪些分组的明智决策。 \n[0100] 一些实施例能够保护控制器和网络概观免受拒绝服务(“DoS”)攻击。为了防止对控制器和网络概观的淹没拒绝服务攻击,系统能够限制各个网络部件和实体可向控制器和系统的其它部件发送分组的速率。这能够保护至关紧要的网络和系统资源。这种保护是可能的,因为控制器能够检测资源过载,并修改适当的流条目,以限制或防止对过载资源的访问。 \n[0101] 本发明的上述说明是例证性的,而不是对本发明的限制。例如,本领域的技术人员会认识到可用上面说明的功能和能力的各种组合实践本发明,本发明可包括比所述更少或更多的组件。下面进一步陈述本发明的一些另外的方面和特征,在受益于本公开内容之后,本领域的技术人员会认识到,利用上面更详细说明的功能和组件能够获得这些另外的方面和特征。 \n[0102] 本发明的一些实施例提供控制全局路由和其它转发行为(包括网络地址转换、加密、封装、有状态的隧穿,和各种形式的服务质量) 的系统和方法。当流开始时,可实时地对每个流单独做出这些决策,并且这些决策可基于按照高级名称(主机、用户、服务等的名称)表述的通用策略。这些策略的实现可独立于网络拓扑,并且当用户和主机移动以及网络变化时,这些策略仍然有效。通过利用在多数商用交换芯片中提供的ACL功能,能够实现本发明的一些实施例。 \n[0103] 本发明的一些实施例提供维护全面网络概观的系统和方法。在这些实施例的一些中,网络概观包括网络部件的拓扑。在这些实施例的一些中,网络概观识别实体的位置,这些实体包括用户、服务和主机。在这些实施例的一些中,维护网络概观的历史,以及网络流的历史。 \n[0104] 本发明的一些实施例提供使高级语言可以访问网络概观的集中的编程接口,提供包括流发起和网络概观的变化的网络事件的通知,和控制网络部件的控制机制。在这些实施例的一些中,系统提供对全局路由的实时逐流控制。在这些实施例的一些中,系统控制流通过网络的路径,和网络部件对流的处理。在这些实施例的一些中,通过一致性要求的严格分离,系统是可缩放的,只有网络概观要求全局一致性。在这些实施例的一些中,关于流的决策基于全局网络概观和流状态。在这些实施例的一些中,这允许把一致但是缓慢改变的网络概观和局部但是快速变化的参数分开。在这些实施例的一些中,与多个控制器中的每一个无关地处理流状态。 \n[0105] 本发明的一些实施例提供自动配置网络的方法。在这些实施例的一些中,自动配置包括自动检测与网络连接的新设备和服务。在这些实施例的一些中,自动配置包括自动更新流条目和其它配置信息。在这些实施例的一些中,流条目和其它配置信息的自动更新允许面对各种网络变化维护全局指示(“策略”)的实现。 \n[0106] 本发明的一些实施例提供对分组的智能截取的支持,使主机能够保持功率降低模式。 \n[0107] 本发明的一些实施例提供对虚拟环境的支持,包括支持迁移VM。在这些实施例的其中多个VM与某些设备相关的一些实施例中,系统允许控制这些共同驻留的VM之间的通信。在这些实施例的一些中, 使用带内控制来管理设备。在这些实施例的一些中,利用ACL功能提供全局功能来控制交换机。 \n[0108] 本发明的一些实施例提供对通过单一系统管理和保护多个网络的支持。 [0109] 本发明的一些实施例提供支持以使多个管理系统共享单一网络基础结构的控制,使不同的管理机构能够将控制分开。 \n[0110] 本发明的一些实施例提供管理网络的系统和方法。这些实施例的一些包括维护网络的当前状态的网络概观,网络的当前状态表征网络组成和网络拓扑,网络组成包括网络上目前可寻址的网络实体和网络部件,通告与网络状态的变化对应的事件,和根据网络概观和事件之一配置网络部件之一。在这些实施例的一些中,网络实体包括网络用户。在这些实施例的一些中,一个或多个网络管理应用访问网络概观。在这些实施例的一些中,网络的当前状态包括网络构成的位置。在这些实施例的一些中,网络的当前状态还表征网络中的数据流。 \n[0111] 在这些实施例的一些中,配置网络部件之一包括改变网络拓扑。在这些实施例的一些中,改变网络拓扑包括向多个网络部件提供路由信息,所述路由信息对应于一个或多个数据流。这些实施例中的一些还包括存储在先网络概观的历史。在这些实施例中的一些中,历史中的每个在先网络概观记录规定时间的网络状态,并且还记录在规定时间之前检测到的事件。在这些实施例的一些中,所述规定时间由时间表定义,并且事件的每次发生只被记录在历史中的一个在先网络概观中。在这些实施例的一些中,规定时间对应于事件的发生。在这些实施例的一些中,每个数据流与一个或多个网络部件的转发行为相关,并且还包括根据网络概观控制某些转发行为。 \n[0112] 在这些实施例的一些中,控制某些转发行为包括响应事件之一,修改至少一个转发行为。在这些实施例的一些中,控制某些转发行为包括在改变网络拓扑之后,修改至少一个转发行为。在这些实施例的一些中,修改至少一个转发行为的步骤由网络控制器进行。在这些实施例的一些中,改变网络拓扑包括自动配置新插入网络中的设备。在 这些实施例的一些中,自动配置设备包括向每个自动配置的设备提供至少一个ACL。在这些实施例的一些中,每个数据流与一个或多个网络部件的转发行为相关,并且其中自动配置设备包括根据网络概观,修改至少一个转发行为。在这些实施例的一些中,配置网络部件之一由网络管理系统进行。在这些实施例的一些中,根据网络的当前状态和网络管理系统所维护的网络状态历史的比较,网络管理系统产生某些事件。 \n[0113] 在这些实施例的一些中,网络管理系统包含描述网络的当前状态的网络概观。在这些实施例的一些中,网络的状态包括当前网络拓扑、网络上多个网络部件的位置、网络组成的位置、网络组成包括网络的至少一个用户和网络管理器。在这些实施例的一些中,网络管理器根据网络状态配置网络部件。在这些实施例的一些中,根据网络组成提供的信息生成网络概观,并且其中某些网络组成可访问网络概观的多个部分。 \n[0114] 在这些实施例的一些中,网络部件包括交换机。在这些实施例的一些中,网络部件包括路由器。在这些实施例的一些中,网络管理器分散在多个网络部件间。在这些实施例的一些中,网络实体包括通过网络提供的服务。在这些实施例的一些中,网络实体包括应用。这些实施例中的一些实施例还包括向应用提供访问网络管理器的所选功能的网络操作系统。在这些实施例的一些中,所选功能包括网络概观。在这些实施例的一些中,所选功能包括事件通知功能。在这些实施例的一些中,事件通知功能提供网络拓扑变化的通知。在这些实施例的一些中,事件通知功能提供用户日志事件的通知,包括登录和退出事件。 [0115] 在这些实施例的一些中,事件通知功能提供流发起的通知。在这些实施例的一些中,网络管理器根据网络状态的变化,重新配置交换机。在这些实施例的一些中,交换机被重新配置,以建立与数据流相关的新的转发行为。在这些实施例的一些中,利用访问控制列表重新配置交换机。在这些实施例的一些中,利用OpenFlow重新配置交换 机。在这些实施例的一些中,利用OpenFlow重新配置交换机。在这些实施例的一些中,网络管理器检测并自动提供配置信息给新增加的网络部件。在这些实施例的一些中,配置信息包括一个或多个网络地址。在这些实施例的一些中,配置信息包括一个或多个路由表。在这些实施例的一些中,配置信息包括一个或多个访问控制列表。在这些实施例的一些中,配置信息包括网络概观的一部分。 \n[0116] 这些实施例的一些实施例还包括在先网络状态的历史,所述历史记录网络状态的变化和导致网络状态的变化的事件。在这些实施例的一些中,网络的状态还包括分组分类、语言绑定、网络实体的位置、数据流的路由信息和拓扑中的一个或多个。在这些实施例的一些中,网络的状态还包括与数据流的状态对应的信息。在这些实施例的一些中,网络组成包括网络部件,并且与每个数据流的状态对应的信息由与每个数据流相关的网络部件维护。 [0117] 本发明的一些实施例提供网络操作系统。这些实施例的一些实施例包含描述网络的当前状态的网络概观,其中网络的状态包括当前网络拓扑、网络上多个网络部件的位置、网络组成的位置、网络组成包括网络的至少一个用户、向安装在网络组成上的应用提供对网络概观的访问的编程接口,和对应用来说可访问,并且提供对与当前网络状态相关的信息的访问的一组网络服务。在这些实施例的一些中,信息包括分组分类、语言绑定、网络实体的位置、数据流的路由信息和拓扑中的一个或多个。 \n[0118] 本发明的一些实施例提供管理网络连接的系统和方法。这些实施例中的一些实施例包括识别网络中的流,流识别数据的源和目的地,配置一个或多个网络部件以把来自源的数据引导到目的地,其中配置至少一个网络部件包括修改一个或多个网络部件中的访问控制列表(“ACL”)。在这些实施例的一些中,配置至少一个网络部件还包括为所述至少一个网络部件之一生成ACL。在这些实施例的一些中,至少一个网络部件包括交换机。在这些实施例的一些中,交换机包括片上交换机(“SoC”),并且其中修改ACL的步骤包括把生成的ACL 增加到SoC中的ACL表中。在这些实施例的一些中,ACL表驻留于SoC中。在这些实施例的一些中,ACL表驻留在与交换机中的处理器相关的存储器中。在这些实施例的一些中,配置至少一个网络部件还包括向生成的ACL提供期满期。在这些实施例的一些中,配置至少一个网络部件还包括向ACL提供期满期。 \n[0119] 在这些实施例的一些中,修改访问控制列表包括重新配置一个或多个网络部件中的ACL表中的条目的排列。在这些实施例的一些中,识别流包括维护网络的当前状态的网络概观,网络的当前状态表征网络组成和网络拓扑,网络组成包括网络上目前可寻址的网络实体和网络部件。 \n[0120] 本发明的一些实施例提供截取网络业务的系统和方法。这些实施例中的一些实施例包括确定与网络连接的主机的休眠状态,配置网络部件以检查指向该主机的数据通信,依据检测到数据通信中需要主机操作的信息,把数据通信的一部分转发给主机,和如果数据通信不需要主机的操作,那么代表主机有选择地应答请求。在这些实施例的一些中,要求主机操作的信息包括一个或多个请求。在这些实施例的一些中,要求主机操作的信息包括一个或多个查询。在这些实施例的一些中,要求主机操作的信息包括一个或多个报警。在这些实施例的一些中,要求主机操作的信息包括SSH业务。 \n[0121] 尽管参考具体的示例性实施例说明了本发明,不过对本领域的普通技术人员来说,显然可对这些实施例做出各种修改和变化,而不脱离本发明的精神和范围。因此,应在说明性的而不是限制性的意义上看待说明书和附图。
法律信息
- 2014-07-16
- 2013-09-18
著录事项变更
申请人由NICIRA网络公司变更为NICIRA股份有限公司
地址由美国加利福尼亚变更为美国加利福尼亚
- 2011-11-30
实质审查的生效
IPC(主分类): H04L 12/24
专利申请号: 200880116637.X
申请日: 2008.09.26
- 2011-10-12
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-04-19
|
2005-04-27
| | |
2
| |
2005-03-09
|
2003-09-02
| | |
3
| | 暂无 |
1991-09-17
| | |
4
| | 暂无 |
2004-12-21
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |