CN108696503A - 基于数据包转发验证的软件定义网络(sdn) - Google Patents
基于数据包转发验证的软件定义网络(sdn) Download PDFInfo
- Publication number
- CN108696503A CN108696503A CN201810280676.9A CN201810280676A CN108696503A CN 108696503 A CN108696503 A CN 108696503A CN 201810280676 A CN201810280676 A CN 201810280676A CN 108696503 A CN108696503 A CN 108696503A
- Authority
- CN
- China
- Prior art keywords
- data packet
- label
- interchanger
- switch
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种用于验证在具有SDN控制器和多个交换机的软件定义网络(SDN)中转发的数据包的准确性的系统和方法。所述方法包括:生成并向第一交换机和第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;接收该第一检测数据和该第二检测数据,该第一检测数据是来自该网络流的由该第一和第二交换机上报的具有第一标签的数据包的数量,且该第二检测数据是与来自该网络流的由该第一和第二交换机上报的具有该第一标签的所述数据包相关的内容;对该第一和第二检测数据执行分析;以及如果对该第一和第二检测数据的分析失败,提出动作标签。
Description
技术领域
本公开涉及一种用于验证在网络中转发的数据包的准确性的方法和系统。更具体地,本公开涉及一种用于验证在网络中的数据包的转发路径不一致性或恶意篡改的方法和系统。
背景技术
软件定义网络(SDN)是一种新的网络系统。与传统网络系统相比,SDN物理隔离网络的控制层和数据层。控制层负责为数据包计算路由,而数据层负责转发数据包。在传统网络中,采用分布式算法计算路由,且路由器或交换机同时包括控制层和数据层。这使得网络配置和管理非常复杂。与此相反,SDN将这两层物理隔离。更具体地,控制层在名为SDN控制器的集中式服务器中实现,而数据层保留在交换机上(术语路由器不再用于SDN)。SDN使网络配置变得简单。网络管理员只需要配置SDN控制器,以管理网络。
图1示出了SDN 100的架构。实质上,SDN具有三层,即数据层130、控制层120和应用层110。数据层130包括用于转发数据包的设备,即交换机。控制层120为控制数据层提供接口。应用层110负责高层逻辑。控制层和数据层之间的接口称为南向接口150,而控制层和应用层之间的接口称为北向接口140。
通过SDN的南向接口150,控制层120控制数据层130中的转发,且数据层130将其状态上报给控制层120。有几种南向接口150协议,如OpenFlow、ForCES、PCE-P等。其中,OpenFlow是最成熟和最常用的。
图2示出了基于OpenFlow协议的流程。OpenFlow标准控制交换机应该有一个或多个流表以及一个组表。每个流表可以有多个流表项。一个项定义一个特定的网络流,且描述该流上的动作。网络流是一组共享一个或多个数据包字段或共享一些比特的数据包。例如,项可以将具有给定目的地IP(如10.0.1.2)的数据包定义为流。这些动作可能包括以下任意项:将数据包输出到给定的输出端口,将数据包输出到流表,将数据包输出到组表,将数据包发送到控制器,修改该流中每个数据包的包头,以及记录该流中处理的数据包的数量。组表包括多个动作桶。与流表项相同,一个桶定义一个或多个对数据包的动作。有多种类型的组表:所有(all)、选择(select)和快速故障切换(fast failover)。间接类型与流表项非常相似,但其可以应用于多个流表项。所有类型将执行所有桶内动作。基于所有桶的配置权重,选择类型将随机选择要执行的桶的动作。选择桶的概率优先于桶的权重。快速故障切换类型将执行第一个可执行的桶的动作。每个组表甚至组表中的每个桶都可以统计由组表或桶转发的数据包或字节的数量。每个流项可以附于组表。在数据包进入交换机后,该数据包与第一个流表中的流项相匹配。在执行相应动作后,该流项可以直接将该数据包输出到组表、交换机端口或后续的流表。如果该数据包被输出到该组表,则按照该组表的逻辑转发该数据包。如果该数据包被输出到该输出端口,交换机直接输出该数据包。如果该数据包被输出到后续的流表,则按照原始转发逻辑继续转发该数据包。
在当前网络中,误路由攻击和数据篡改攻击是网络管理员面临的两种攻击。这些攻击都与数据路由的可信度有关。误路由攻击会导致路由器/交换机将数据包转发到不正确的端口。换而言之,当发生误路由攻击时,数据包没有在期望路径中转发。数据篡改攻击可能导致路由器/交换机篡改其转发的数据。换而言之,当数据包在期望路径中转发时,原始数据包可能被篡改。这些攻击会给用户带来严重的安全风险,例如隐私数据泄露。攻击者可以将网络流转发到该攻击者控制的机器上,以窃听用户流量,或直接篡改用户的数据包,以注入恶意代码。
因此,本领域技术人员正在努力提供一种用于定期验证在网络中转发的数据包流的准确性的方法和系统。
发明内容
根据本公开的实施例提供的系统和方法解决了上述和其它问题,并且对现有技术作出了改进。根据本公开的系统和方法的实施例的第一优点是数据包的转发路径或完整性被周期性地验证。这可以有效地减少性能问题,例如由网络故障导致的网络不可达性和网络时延增加。根据本公开的系统和方法的实施例的第二优点是通过检测数据包是否沿着正确的转发路径被转发,根据本公开的系统和方法有效地降低了用户流量被窃听和被窃取的风险,从而保护了用户的隐私。另外,通过检测网络中的数据包是否被恶意篡改,根据本公开的系统和方法可以有效地防止一些中间人攻击和一些病毒的传播,这可以为网络提供更好的安全保证。根据本公开的系统和方法的实施例的第三优点是该系统和方法对网络几乎没有影响。这是因为根据本公开的系统和方法仅依赖于轻量级操作,例如向数据包添加流标签、去除流标签、统计数据包的数量、以及将数据包发送到控制平面/层。不需要加密和解密操作。
本公开的第一方面描述了一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的系统,包括SDN控制器、第一交换机、第二交换机和第三交换机。所述SDN控制器用于:生成并向所述第一交换机和所述第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;对所述第一和第二检测数据执行分析;以及如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
根据第一方面的实施例,所述第一交换机和所述第二交换机是在所述网络流的期望转发路径中的两个交换机,且所述第二交换机是相对于所述第一交换机的下游交换机。根据本实施例的实施例,所述第一交换机是入口交换机,且所述第二交换机是出口交换机。
根据第一方面的实施例,所述SDN控制器具体用于:确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及确定与从所述第一和第二交换机接收的所述数据包相关的所述内容是否相同。
根据第一方面的实施例,所述SDN控制器用于:生成并向所述第三交换机发送命令,所述第三交换机是在所述网络流的所述转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
根据第一方面的实施例,所述SDN控制器用于:比较从所述第一、第二和第三交换机中的每一个接收的数据包的数量相同;以及比较与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容相同。
根据第一方面的实施例,所述第一交换机用于:根据从所述SDN控制器接收的所述命令,更新流表和组表;从所述所选的网络流中接收和采样数据包;用所述第一标签标记所采样的数据包;以及将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
根据第一方面的实施例,所述第一交换机还用于:用所述第二标签标记未采样的数据包。
根据第一方面的实施例,所述第一交换机还用于:计算所有所述采样的数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
根据第一方面的实施例,所述第二交换机用于:根据从所述SDN控制器接收的所述命令,更新流表和组表;从所述所选的网络流中接收数据包;确定所述数据包是否已经被标记了所述第一标签;响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
根据第一方面的实施例,所述第二交换机还用于:响应于确定所述数据包未被标记所述第一标签,从所述数据包中去除所述第二标签。
根据第一方面的实施例,所述第二交换机还用于:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
根据第一方面的实施例,所述第三交换机用于:根据从所述SDN控制器接收的所述命令,更新流表和组表;从所述所选的网络流中接收数据包;统计具有所述第一标签的数据包的数量;以及将具有所述第一标签的数据包的数量转发到所述SDN控制器。
根据第一方面的实施例,所述第三交换机用于:将与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
根据第一方面的实施例,所述第三交换机还用于:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第二方面描述了一种用于验证在具有软件定义网络(SDN)控制器和多个交换机的SDN中转发的数据包的准确性的方法,所述方法包括:生成并向第一交换机和第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;对所述第一和第二检测数据执行分析;以及如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
根据第二方面的实施例,对所述第一和第二检测数据执行分析的步骤包括:确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及确定与从所述第一和第二交换机接收的数据包相关的所述内容是否相同。
根据第二方面的实施例,所述的方法还包括:生成并向第三交换机发送命令,所述第三交换机是在所述网络流的所述转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
根据第二方面的实施例,对所述第一和第二检测数据执行分析的步骤包括:确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一和第二交换机中的每一个接收的所述数据包相关的所述内容是否相同。
根据第二方面的实施例,对所述第一和第二检测数据执行分析的步骤包括:确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容是否相同。
本公开的第三方面描述了一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的控制器,所述SDN控制器具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:生成并向第一交换机和第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;对所述第一和第二检测数据执行分析;以及如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
根据第三方面的实施例,对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及确定与从所述第一和第二交换机接收的数据包相关的所述内容是否相同。
根据第三方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:生成并向第三交换机发送命令,所述第三交换机是在所述网络流的所述转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
根据第三方面的实施例,对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一和第二交换机中的每一个接收的所述数据包相关的所述内容是否相同。
根据第三方面的实施例,对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容是否相同。
本公开的第四方面描述了一种用于交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器和所述交换机。所述方法包括:根据从所述SDN控制器接收的命令,更新流表和组表;从所述所选的网络流中接收和采样数据包;用所述第一标签标记所采样的数据包;以及将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
根据第四方面的实施例,所述交换机处于所述网络流的期望转发路径中。
根据第四方面的实施例,所述方法还包括:用所述第二标签标记未采样的数据包。
根据第四方面的实施例,所述方法还包括:计算所有所述采样的数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第五方面描述了一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的交换机,所述SDN包括SDN控制器和所述交换机,所述交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:根据从所述SDN控制器接收的命令,更新流表和组表;从所述所选的网络流中接收和采样数据包;用所述第一标签标记所采样的数据包;以及将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
根据第五方面的实施例,所述交换机处于所述网络流的期望转发路径中。
根据第五方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:用所述第二标签标记未采样的数据包。
根据第五方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:计算所有所述采样的数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第六方面描述了一种用于第一交换机和第二交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器、所述第一交换机和所述第二交换机。所述方法包括:根据从所述SDN控制器接收的所述命令,更新流表和组表;从所述所选的网络流中接收数据包;确定所述数据包是否已经被标记了第一标签;响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
根据第六方面的实施例,所述第一交换机和所述第二交换机是在所述网络流的期望转发路径中的两个交换机,且所述第二交换机是相对于所述第一交换机的下游交换机。
根据第六方面的实施例,所述方法还包括:响应于确定所述数据包未被标记所述第一标签,所述第二交换机从所述数据包中去除第二标签,其中所述第二标签由所述第一交换机标示。
根据第六方面的实施例,所述方法还包括:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第七方面描述了一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的第二交换机,所述SDN包括SDN控制器、第一交换机和所述第二交换机,所述第二交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:根据从所述SDN控制器接收的所述命令,更新流表和组表;从所述所选的网络流中接收数据包;确定所述数据包是否已经被标记了第一标签;响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
根据第七方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:响应于确定所述数据包未被标记所述第一标签,从所述数据包中去除第二标签,其中所述第二标签由所述第一交换机标示。
根据第七方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第八方面描述了一种用于第三交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器、第一交换机、第二交换机和所述第三交换机。所述方法包括:从所选的网络流中接收数据包;统计具有第一标签的数据包的数量;以及将具有所述第一标签的数据包的数量转发到所述SDN控制器。
根据第八方面的实施例,所述方法还包括:将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器。
根据第八方面的实施例,所述方法还包括:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
本公开的第九方面描述了一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的第三交换机,所述SDN包括SDN控制器、第一交换机、第二交换机和所述第三交换机,其中所述第一和所述第二交换机是在所述网络流的期望转发路径中的两个交换机,所述第一交换机是入口交换机,且所述第二交换机是出口交换机;所述第三交换机位于所述第一交换机和所述第二交换机之间;所述第三交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:根据从所述SDN控制器接收的命令,更新流表和组表;从所述所选的网络流中接收和采样数据包;用所述第一标签标记所采样的数据包;以及将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
根据第九方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器。
根据第九方面的实施例,所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
附图说明
根据本公开的上述优点和特征通过下文详细说明描述并在下列附图中示出:
图1示出了软件定义网络(SDN)的构架;
图2示出了基于OpenFlow协议的流程的示例;
图3示出了根据本公开的实施例的用于验证在软件定义网络中转发的数据包的准确性的系统;
图4示出了根据本公开的实施例的示例性处理系统,该示例性处理系统代表在SDN控制器中实施指令以执行流程的处理系统;
图5示出了根据本公开的实施例的由SDN控制器执行以验证在软件定义网络设备中转发的数据包的准确性的流程;
图6示出了根据本公开的实施例的在从SDN控制器接收到命令之后由第一交换机执行的流程;
图7示出了根据本公开的实施例的在从SDN控制器接收到命令之后由第二交换机执行的流程;
图8示出了根据本公开的实施例的在从SDN控制器接收到命令之后由第三交换机执行的流程;
图9示出了根据本公开的实施例的核心设备的内部结构图;
图10示出了根据本公开的实施例的在入口交换机上生成的流项和组表;
图11示出了根据本公开的实施例的在中间交换机上生成的流项和组表;
图12示出了根据本公开的实施例的在出口交换机上生成的流项和组表;
图13进一步示出了根据本公开的实施例的在出口交换机上生成的流项和组表;
图14示出了根据本公开的实施例的入口交换机、出口交换机和中间交换机的选择;
图15示出了根据本公开的实施例的在控制层和数据层中的模块之间的交互流程;
图16示出了根据本公开的实施例的由入口交换机转发数据包的流程;
图17示出了根据本公开的实施例的由出口交换机转发数据包的流程;
图18示出了根据本公开的实施例的由入口交换机分批地转发数据包的流程;
图19示出了根据本公开的实施例的由出口交换机分批地转发数据包的流程;
图20示出了根据本公开的实施例的由检测模块执行的流程;
图21示出了根据本公开的实施例的由检测流程控制模块执行的流程;以及
图22示出了根据本公开的实施例的由表项生成模块执行的流程。
具体实施方式
本公开涉及一种用于验证在网络中转发的数据包的准确性的方法和系统。更具体地,本公开涉及一种用于验证在网络中的数据包的转发路径不一致性或恶意篡改的方法和系统。
在当前的网络中,网络管理员面临的两个问题是设备故障和网络攻击。设备故障导致设备将数据包转发到不正确的端口。这增加了网络时延并给用户带来了严重的安全风险。网络攻击甚至直接窃取了用户的隐私数据。攻击者可以将网络流转发到攻击者控制的机器上,以窃听用户流量,或直接篡改用户的数据包,以注入恶意代码。
在这些故障或攻击场景中,数据包通常被转发到不正确的路径或被直接篡改。在本公开中,数据包转发验证包括两个方面:(1)路径不一致性检测和(2)数据包防篡改。路径不一致性意味着数据包被转发到不正确的路径,而防篡改是为了防止数据包在转发过程中被恶意攻击者篡改。基于此,针对这两种异常行为,本公开的系统和方法提出了一种存在于控制层的新的检测模块。具体而言,本公开的系统和方法的关键要素如下:
1.参照OpenFlow组表和流标签,本公开提出了一种执行流采样,然后在所采样的流收集流量统计数据,以检测数据包的转发路径不一致性的方案。
2.基于与“1”中的采样方式相同的采样方式,本发明还提出了一种数据包防篡改机制。
当前的网络架构提供了所谓的“端到端”服务。该服务仅仅确保了数据包可以从一个主机转发到另一个主机,但不能确保转发路径的正确性或数据包的完整性。然而,确保数据包转发路径的正确性和数据包的完整性在网络中起着至关重要的作用,特别是从安全角度考虑。
本公开的系统和方法的主要目的是检测网络中的可能的转发路径不一致性或数据包的恶意篡改。转发路径不一致性意味着数据包没有按照“正确的”路径转发,而是被转发到不正确的节点,然后被转发到目的地;或者被直接丢弃在转发图中。数据包的恶意篡改意味着恶意攻击者在转发过程中向数据包注入恶意代码、添加其它数据或删除数据内容。
通过检测这些问题,本公开的系统和方法可以有效地减少性能问题,例如由网络故障导致的网络不可达性和网络时延增加。更重要的是,通过检测数据包是否沿着正确的转发路径被转发,本公开的系统和方法有效地降低了用户流量被窃听和被窃取的风险,从而保护了用户的隐私和财产安全。另外,通过检测网络中的数据包是否被恶意篡改,本公开的系统和方法可以有效地防止一些中间人攻击和一些病毒的传播,从而可以为网络提供更好的安全保证。
从实用性的角度考虑,本公开的系统和方法对网络几乎没有影响。首先,本公开的系统和方法仅依赖于轻量级操作,例如向数据包添加流标签、去除流标签、统计数据包的数量、以及将数据包发送到控制平面/层。本公开的系统和方法不涉及大量的加密和解密操作。因此,本公开的系统和方法对交换机的性能几乎没有影响。其次,本公开的系统和方法可以通过使用交换机的一些现有硬件来实现,例如计算数据包的ID值。这可以提高本公开的性能,并且还有助于本公开的系统和方法的广泛部署和实施。最后,通过参数调整,可以控制本公开的系统和方法对网络的影响。因此,本公开的系统和方法基本上可以适用于任何流量的网络。
本公开的系统和方法通过收集对网络流的流量数据的统计来检测数据包的转发路径一致性,并且通过使用数据包或数据包的独特ID值来验证数据包的完整性。在这里,数据包的独特ID值可以是数据包的哈希值,例如MD5或SHA1值。为了确保在本公开的系统和方法中的检测不会对网络性能造成严重影响,可以使用OpenFlow中的组表机制对网络流进行采样,并向所采样的部分添加独特的流项,然后只检测所采样的数据包。简而言之,根据本公开的系统和方法包括如下四个关键要素:
1、根据本公开的系统和方法使用组表机制对每个网络流进行采样,然后将独特的可区分的标签添加到所采样的数据包,并将不同于独特的可区分的标签的随机标签添加到另一个数据包。在根据本公开的系统和方法中,只检测添加有独特的可区分的标签的数据包。
2、对于流中添加有独特的可区分的标签的数据包,在流的第一跳交换机、随机选择的中间交换机和最后一跳交换机上分别统计具有独特的可区分的标签的数据包的数量。然后,通过在OpenFlow中使用流项流量统计消息(流统计)将这些数量发送到控制平面。控制平面比较这三组统计数据。如果这三组统计数据不一致或差异很大,则认为发生了网络流的转发路径不一致性。也就是说,网络流沿着不正确的路径转发。或者,只实现第一跳交换机和最后一跳交换机,且控制平面比较这两组统计数据。
3、对于流中添加有独特的可区分的标签的数据包,该数据包在流的第一跳交换机和最后一跳交换机上被同时转发到正确的输出端口以及控制平面。检测后,控制平面比较这些数据包。根据出现在第一跳交换机上的所有数据包是否也出现在最后一跳交换机上来确定数据包是否被恶意篡改。如果出现在第一跳交换机上的数据包没有出现在最后一跳交换机上,则认为该流在转发过程中被恶意篡改。或者,随机选择的中间交换机也在流中转发具有独特的可区分的标签的数据包,并且控制平面比较来自第一跳,中间跳和最后一跳的数据包。
4、许多可选的机制可用于根据本公开的系统和方法中。这些机制可以帮助根据本公开的系统和方法发挥其作用并提高工作效率。
系统架构图
本公开的应用取决于SDN系统。从网络规模的角度考虑,根据本公开的系统和方法不受网络规模的限制。根据本公开的系统和方法的目标网络可以是局域网络、企业网络或者甚至是大规模ISP网络。在这些网络中,运营商可以在控制平面/层上部署根据本公开的系统和方法。然后可以检测到网络中的数据包转发路径不一致性和恶意数据包防篡改的事件。
图3示出了用于验证在具有SDN控制器305和多个交换机310的软件定义网络中转发的数据包的准确性的系统300。
该交换机310是典型的SDN系统中的网元。在本公开中,SDN控制器正命令三个交换机执行特定流程,以验证在转发路径中转发的数据包的准确性。简而言之,转发路径表示从一个交换机到另一个交换机所需的路径。因此,为了确保数据包在正确的转发路径中传输,该SDN控制器通过更新三个交换机的流表和组表,指示该三个交换机执行所需的流程。该三个交换机是入口交换机、出口交换机和中间交换机,而该中间交换机是该入口和出口交换机之间的交换机之一。在一实施例中,仅需要入口和出口交换机进行验证。在另一实施例中,除了该入口和出口交换机之外,还实现了第三交换机,即中间交换机。实质上,所选择的交换机并不是相邻的交换机,且通常彼此分开。下文将描述关于这三个交换机的指令的更多细节。
SDN控制器310可以是计算系统,例如服务器计算机或在服务器计算机上运行的虚拟机。
图4示出了根据本公开的实施例的服务器计算机中的处理系统400的示例,该处理系统400表示在SDN控制器310中实施指令以执行下述流程的处理系统。处理系统400还可以适用于表示根据本公开的网元(例如,交换机)中的处理系统。本领域技术人员将认识到,在不脱离本发明的情况下,这些指令可以作为硬件、固件或软件来存储和/或执行。此外,本领域技术人员将认识到,每个处理系统的确切配置可以不同,且根据本发明实施流程的处理系统的确切配置可以改变,并且图4中所示的处理系统400只是以示例的方式提供的。
处理系统400包括处理器410、显示器420、键盘430、存储器440、网络设备450和I/O设备460。
显示器420、键盘430、存储器440、网络设备450和I/O设备460以及任何数量的其它外围设备连接到处理器410,以与处理器410交换数据,供在由处理器410执行的应用中使用。
显示器420从处理器410接收显示数据,且在屏幕上显示图像以供用户观看。显示器420可以是液晶显示器(LCD)或有机发光二极管(OLED)显示器。键盘430接收用户输入并将该输入发送到处理器410。在一些实施例中,显示器420可以是起到键盘的功能的触敏表面以接收用户输入。
存储器440是向处理器410发送数据并从处理器410接收数据以将数据存储到存储器的设备。所存储的数据包括用于执行如下所述的流程的指令以及流表和组表。该存储器可以包括诸如只读存储器(ROM)的非易失性存储器,或诸如随机存取存储器(RAM)的易失性存储器。非易失性存储器存储操作处理系统400的各个子系统所需的指令和数据。易失性存储器存储处理器410所需的指令和数据,以执行用于提供根据本发明的系统的流程。本领域技术人员将认识到,可以使用任何非暂时性存储器,并且所使用的确切类型将留作本领域技术人员的设计选择。
网络设备450将处理器410连接到SDN系统,用于向和从SDN系统内的其它网元传输数据。
处理器410是根据本公开的实施指令以执行流程的处理器、微处理器或处理器和微处理器的任何组合。该处理器具有实施存储在存储器440中的各种应用程序的能力。这些应用程序可以通过键盘430接收来自用户的输入。
图5示出了由SDN控制器执行的流程500,以验证在软件定义网络中转发的数据包的准确性。流程500从步骤505开始,通过确定和选择需要检测的网络流来验证在SDN系统中的网络流的准确性。
在步骤510中,流程500生成用于第一交换机和第二交换机的命令或指令。该第一和第二交换机是网络流的期望转发路径中的两个交换机。更具体地,该第一交换机是上游交换机,而该第二交换机是相对于该第一交换机的下游交换机。例如,该第一交换机可以是入口交换机,而该第二交换机可以是出口交换机。在一实施例中,除了该第一和第二交换机之外,流程500还生成用于第一和第二交换机之间的交换机之一的第三交换机的命令或指令。更具体地,流程500基于OpenFlow标准,生成用于这些交换机的命令以更新相关交换机的流表和组表。下面将简要讨论用于这些交换机的命令和指令:
用于该第一交换机的命令包括:1)以预定的采样率对所选的网络流接收的数据包进行采样,2)用第一标签标记所采样的数据包,3)统计所采样的数据包的数量,以及4)将数据包转发到下一跳和该SDN控制器,并且将所采样的数据包的数量上报给该SDN控制器。第一标签是独特的标签。下文将描述该独特的标签的更多细节。在另一实施例中,在步骤2中引入第二标签。更具体地,用第二标签标记未采样的数据包。本质上,第二标签充当混淆标签。在又一实施例中,在预定时间段之后(例如,在硬超时之后),可以将所采样的数据包的数量上报给该SDN控制器。或者,当所采样的数据包的数量达到预定阈值时,可以将所采样的数据包的数量上报给该SDN控制器。
用于该第二交换机的命令包括:1)统计接收到的具有第一标签的数据包的数量;2)去除该第一标签;3)将数据包转发到下一跳和该SDN控制器,并且将具有该第一标签的数据包的数量上报给该SDN控制器。在引入混淆标签的另一实施例中,修改步骤3,使得第二标签也被去除。在又一实施例中,在预定时间段之后(例如,在硬超时之后),可以将所采样的数据包的数量上报给该SDN控制器。或者,当所采样的数据包的数量达到预定阈值时,可以将所采样的数据包的数量上报给该SDN控制器。
用于该第三交换机的命令包括:1)统计接收到的具有该第一标签的数据包的数量;2)将数据包转发到下一跳;以及3)将具有该第一标签的数据包的数量上报给该SDN控制器。在另一实施例中,当将具有该第一标签的数据包的数量上报给该SDN控制器时,可以需要第三交换机在步骤3中一起将具有该第一标签的数据包转发到该SDN控制器。在又一实施例中,通过SDN控制器305使用FlowRemoved消息,可以将具有该第一标签的数据包的数量上报给SDN控制器。
在步骤515中,流程500向交换机发送命令。更具体地,流程500通过将OpenFlow消息发送到相关交换机以更新各自的流表和组表,向交换机发送命令。步骤505-515是设置交换机,以验证在软件定义网络中的特定网络流中转发的数据包的准确性。
在步骤520中,流程500从两个交换机接收检测数据。更具体地,从交换机接收两种类型的检测数据,即由该第一和第二交换机转发的数据包的数量,以及由该第一和第二交换机转发的数据包。在实现第三交换机的实施例中,流程500还从该第三交换机接收数据包的数量和数据包。
在步骤525中,流程500对两种类型的检测数据执行分析。更具体地,流程500对每个网络流的检测数据进行如下比较:
1、由该第一交换机转发的数据包的数量是否等于由该第二交换机转发的数据包的数量;以及
2、由该第一和第二交换机转发的数据包是否相同。
在步骤530中,如果由该第一交换机转发的数据包的数量等于由该第二交换机转发的数据包的数量,并且由该第一和第二交换机中的每一个转发的数据包相同,则表示网络流被正确地转发且不需要进一步的动作,流程500就此结束。如果由该第一交换机转发的数据包的数量不等于由该第二交换机转发的数据包的数量,并且由该第一和第二交换机中的每一个转发的数据包不相同,则表示网络流被错误地转发且需要进一步的动作,流程500继而进入步骤535,以提出动作标签。该动作标签可能是提醒用户检查所选的网络流。
在实现该第三交换机的实施例中,修改步骤525,使得第一比较确定从该第一、第二和第三交换机中的每一个接收的数据包的数量是否相同。此外,在当将具有该第一标签的数据包的数量上报给该SDN控制器时,需要该第三交换机将具有该第一标签的数据包转发到SDN控制器的实施例中,修改步骤525,使得第二比较确定从该第一、第二和第三交换机中的每一个接收的数据包是否相同。
在另一实施例中,该SDN控制器可以接收消息摘要而非数据包。因此,可以修改步骤525,使得第二比较确定从该第一、第二和第三交换机中的每一个接收的消息摘要是否相同。
流程500在步骤530或535之后结束。
在一实施例中,基于预定参数,周期性地启动流程500。该参数可以是在一段时间后执行一次检测周期,或者在检测周期完成后采用一段睡眠时间。每个检测周期都可以在固定或随机时间执行。本领域技术人员将认识到,在不脱离本公开的情况下,周期性地启动流程500的其它方法也可以实现。
图6示出了在从SDN控制器接收到命令之后,由该第一交换机执行的流程600。流程600开始于步骤605,即更新流表和组表。
在步骤610中,流程600从所选的网络流中接收和采样数据包。在步骤615中,用该第一标签标记所采样的数据包。在引入第二标签的另一实施例中,在步骤620中,用该第二标签标记未采样数据包。
在步骤630中,流程600将所采样的数据包的数量和至少一个所采样的数据包转发到该SDN控制器。转发到该SDN控制器的所采样的数据包可以是第一采样的数据包。
在一实施例中,不是将第一采样的数据包发送到SDN控制器,而是流程600计算每个采样的数据包的消息摘要、在必要时缓存这些消息摘要、并且仅当高速缓存满或者检测结束时将这些消息摘要发送到SDN控制器。更具体地,对步骤630作了如下修改:1)为所采样的数据包计算消息摘要;2)将该消息摘要存储在高速缓存中;3)如果该高速缓存中缓存的消息摘要的数量达到预定阈值,将高速缓存中的所有消息摘要发送到该SDN控制器;以及4)在进入步骤635之前清除高速缓存。或者,如果交换机没有使用高速缓存,则可以修改步骤630,使得流程600在步骤1中生成其之后立即将每个消息摘要发送到SDN控制器。或者,可以进一步修改步骤630,使得在步骤3中,不是将每个采样的数据包的消息摘要发送到该SDN控制器,而是该流程计算所有采样的多个数据包的组合消息摘要,并将该组合消息摘要发送到该SDN控制器。计算组合消息摘要的方法有很多。例如,让D1是一个函数,用于计算本文档中来自二进制串的消息摘要,而D2是另一个函数,用于计算来自二进制串的消息摘要。该组合消息摘要可以按照D2(D1(数据包1)XOR D1(数据包2)XOR...)计算。或者,该组合消息摘要按照D1(数据包1XOR数据包2XOR…)计算。众所周知的Merkle树也可以用来计算该组合消息摘要,并且Merkle树的根就是该组合消息摘要。
在步骤635中,流程600将该数据包转发到下一跳,即该网络流中的下一个交换机。
流程600在步骤635之后结束。
图7示出了在从该SDN控制器接收到命令之后,由该第二交换机执行的流程700。流程700开始于步骤705,即更新流表和组表。
在步骤710中,流程700从所选的网络流中接收数据包。在步骤715中,流程700确定数据包是否已经被标记了该第一标签。对于具有该第一标签的数据包,流程700进入步骤720。对于没有该第一标签的数据包,流程700进入步骤730。
在步骤720中,流程700将具有该第一标签的数据包的数量和具有该第一标签的至少一个数据包转发到该SDN控制器,并且从该数据包中去除该第一标签。转发到该SDN控制器的具有该第一标签的数据包可以是具有该第一标签的第一确定数据包。在步骤720之后,流程700进入步骤730。
在一实施例中,不是将具有该第一标签的第一数据包发送到该SDN控制器,而是流程700计算所有具有该第一标签的数据包的消息摘要、在必要时缓存这些消息摘要、并且仅当高速缓存满或者检测结束时将这些消息摘要发送到SDN控制器。更具体地,对步骤720作了如下修改:1)为具有该第一标签的每个数据包计算消息摘要;2)将该消息摘要存储在高速缓存中;3a)如果该高速缓存中缓存的消息摘要的数量达到预定阈值,将该高速缓存中的所有的消息摘要转发到该SDN控制器,在执行步骤730前清除高速缓存并去除该第一标签;3b)如果该高速缓存中缓存的消息摘要的数量未达到该预定阈值,则进入步骤730。或者,如果该第二交换机没有使用高速缓存,则可以修改步骤720,使得流程700在步骤1中生成其之后立即将每个消息摘要发送到该SDN控制器。或者,可以进一步修改步骤720,使得在步骤3a中,不是将该高速缓存中的所有的消息摘要转发到该SDN控制器,而是该流程基于该高速缓存中的所有的消息摘要计算组合消息摘要,并将该组合消息摘要转发到该SDN控制器。
在步骤730中,流程700将该数据包转发到该下一跳。在引入第二标签的另一实施例中,数据包中的该第二标签在转发到该下一跳之前被去除。
图8示出了在从该SDN控制器接收到命令之后,由该第三交换机执行的流程800。该流程适用于实现第三交换机的情况。流程800开始于步骤805,即更新流表和组表。
在步骤810中,流程800从所选的网络流中接收数据包。在步骤815中,流程800确定该数据包是否已经被标记了该第一标签。
对于具有该第一标签的数据包,流程800进入步骤820。对于没有该第一标签的数据包,流程800进入步骤830。
在步骤820中,流程800在预定时间段(例如,硬超时)之后将具有该第一标签的数据包的数量转发到该SDN控制器。步骤820实质上是统计具有该第一标签的数据报的数量,并在预定时间段之后转发最终数量。在步骤820之后,流程800进入步骤830。在步骤830中,流程800将数据包转发到该下一跳。流程800在步骤830之后结束。
在当将具有该第一标签的数据包的数量上报给该SDN控制器时,需要该第三交换机将具有该第一标签的数据包转发到该SDN控制器的实施例中,修改步骤820,使得除了将具有该第一标签的数据包的数量转发到SDN控制器之外,步骤820还进一步转发具有该第一标签的至少一个数据包转发到SDN控制器。转发到该SDN控制器的具有该第一标签的数据包可以是具有该第一标签的该第一确定数据包。或者,不是将具有该第一标签的第一数据包发送到该SDN控制器,而是流程800计算所有具有该第一标签的数据包的消息摘要、在必要时缓存这些消息摘要、并且仅当高速缓存满或者检测结束时将这些消息摘要发送到该SDN控制器。更具体地,对步骤820作了如下修改:1)为具有该第一标签的每个数据包计算消息摘要;2)将该消息摘要存储在高速缓存中;3a)如该果高速缓存中缓存的消息摘要的数量达到预定阈值,将该高速缓存中的所有的消息摘要转发到SDN控制器,在进入步骤830前清除高速缓存;3b)如果该高速缓存中缓存的消息摘要的数量未达到该预定阈值,则进入步骤830。或者,如果该第三交换机没有使用高速缓存,则可以修改步骤820,使得流程800在步骤1中生成其之后立即将每个消息摘要发送到SDN控制器。或者,可以进一步修改步骤820,使得在步骤3a中,不是将高速缓存中的所有的消息摘要转发到SDN控制器,而是该流程基于高速缓存中的所有的消息摘要计算组合消息摘要,并将该组合消息摘要转发到SDN控制器。
流程800在步骤830之后结束。
以上参照图5-8所示的流程可以由SDN控制器305使用存储在存储器440上能够由处理器410执行的软件模块来执行。图9示出了根据本公开的用于执行这些流程所涉及的内部结构图900的各个模块。如图9所示,基本上有两个部分,即控制平面301和数据平面302。存储器440中的检测模块905包括八个模块:(1)转发图模块910、(2)检测流程控制模块920、(3)表项生成模块930、(4)交换机选择策略940、(5)标签池950、(6)检测数据存储模块960、(7)数据分析模块970、以及(8)异常处理模块980。在数据平面302上,交换机的流项和组表与该控制平面中的这些模块交互。在描述所涉及的流程之前,我们将首先描述这八个模块。
转发图模块910
转发图模块910维护网络中的所有的网络流及其转发路径。转发图是有向图。转发图模块910使用流项或组表作为节点,使用流项之间和组表之间的转发依赖性作为边,并且进一步提取网络流在网络中转发的流项和组表。在本公开中,转发图模块910用于维护流转发路径,以及转发流的流项和组表。如果从检测流程控制模块920接收到用于转发路径的流项和组表的请求,转发图模块910检索用于所请求的转发路径的该流项和组表,并将其发送到检测流程控制模块920。转发图模块910可以通过分析流项之间的依赖性来构建。例如,交换机s1和交换机s2连接,交换机s1上的流项r1转发的数据包随后由交换机s2上的流项r2处理。在该转发图中,该流项r1和r2之间存在边缘。这表明网络流依次由{r1,r2}连续处理。该转发图是一个可变有向图,并随着流项或组表的更新而更新。当更新流项或组表时,只需要重新计算该流项或该组表和在该流项或该组表的前一跳交换机中的流项或组表之间的依赖关系。也就是说,可以以递增的方式有效地维护该转发图,而不需要大量的开销。
转发图在本领域中是众所周知的。由于在本公开中,转发图模块仅用于维护网络流转发路径,因此为简洁起见,省略了对该转发图的详细描述。
检测流程控制模块920
检测流程控制模块920协调整个检测流程。首先,检测流程控制模块920选择需要检测的网络流。更具体地,需要检测的该网络流可以是根据预定的一组策略随机选择的。例如,设置采样比或所选的流的数量。或者,需要检测的该网络流可以是基于预先选择的一组过滤规则选择的。例如,目的地是IP或IP前缀的所有流。本领域技术人员将认识到,在不脱离本公开的情况下,也可以实现其它类型的选择。在选择需要检测的该网络流之后,检测流程控制模块920从转发图模块获得所选的网络流的转发路径。该转发路径包含所选的网络流的流项和组表。之后,检测流程控制模块920将需要检测的该所选的网络流发送到表项生成模块930。响应于接收到需要检测的该所选的网络流,表项生成模块930为这些待检测的网络流生成检测用流项和组表并将其转发回检测流程控制模块920。响应于接收到用于需要检测的该所选的网络流的流项和组表,检测流程控制模块920然后将相同的流项和组表发送到数据平面302。最后,检测流程控制模块920通知数据分析模块970分析当前检测完成后的所有检测数据。
为确保整个网络的正常运行,必须定期地实施检测流程。一种可能的方式是在一段时间后执行一次检测,或者在检测完成后采用一段睡眠时间。每个检测可以在固定或随机时间执行。下表1列出了与检测流程控制有关的参数。
参数名称 | 参数描述 |
t | 检测时间,即从检测用流项和组表的递送到检测数据的收集的时间间隔。 |
d | 检测间隔,即从检测完成到下一次检测开始的时间。 |
表1
表项生成模块930
基于来自该交换机选择策略模块和该标签池模块的信息,表项生成模块930根据从检测流程控制模块920接收的所选的网络流中的网络流和该网络流的转发路径生成相应的检测用流项和组表。更具体地,表项生成模块930从检测流程控制模块920接收包含需要检测的网络流的请求。表项生成模块930然后从标签池模块950请求用于该网络流的独特标签和混淆标签,并且从交换机选择策略模块940获得被选择用于检测的交换机。
在待检测的网络流的采样过程中,仅对采样部分的数据包进行处理,因此表项生成模块930需要确定采样比(s)。基于该信息,即标签(即,独特标签和混淆标签)、检测交换机和采样比,表项生成模块930为每个检测到的网络流生成检测用流项和组表。为这些流项设置硬超时(Hard Timeout)。在该硬超时后,这些流项将被自动删除,并且检测完成。
本领域技术人员将认识到,在不脱离本公开的情况下,可以实现各种网络流的采样方案。更具体地,虽然本发明描述了如何使用组表与SDN控制器305协作进行周期性采样,但是实际的实现方式只需要将检测到的流转发到流的转发路径上的至少两个交换机用于采样,其中第一交换机是转发路径上游的交换机,而第二交换机是转发路径下游的交换机。在一实施例中,除了第一和第二交换机之外,还可能需要第三交换机。第三交换机是第一和第二交换机之间的交换机之一。例如,这三个交换机可以是入口交换机、随机选择的中间交换机、和出口交换机。
可选地,根据本公开可实现的一些可能的网络流的采样方案如下所示:
周期性采样-即,每次检测开始时根据规则检测一些流,且在预定时间段后对每个流检测一次。
随机检测-即,在每次检测中随机选择检测到的流。检测时间和检测时段可以是固定的或随机的。
每个交换机可以使用不同的采样函数,但是需要预先进行计算,以确保每个检测到的流中的一些数据包由该流的转发路径上的至少三个交换机进行采样。
下面将参照图10-13对生成流项和组表的表项生成模块930的逻辑进行描述。在这里,假定流项的原始匹配字段是m且输出端口是p。相关符号如下表2所示。
参数名称 | 参数描述 |
m | 未执行检测时流的匹配字段 |
p | 未执行检测时网络流的输出端口 |
s | 采样比,即对检测到的网络流中用于检测的数据包进行采样的概率。 |
表2
图10示出了在入口交换机上生成的流项和组表。该表项生成模块修改转发流的原始流项,并添加两个组表。修改该流项旨在将网络流1005转发到该组表。第一组表1010用于执行流采样。对未采样的流添加从R中随机选择的标签,然后将其转发到下一跳1050。对采样的流添加标签lf,然后将其转发到下一组表1020以进行处理。在下一组表1020中,这些数据包同时被转发到SDN控制器305和下一跳1050。这些数据包被检测数据存储模块1060存储为检测数据。在检测结束时,将这些数据包与从最后一跳接收的数据包进行比较。将数据包转发到该控制器旨在将该数据包与从出口交换机转发到控制器的数据包进行比较,以发现数据包篡改行为。在检测结束时,该控制器将该流项改回到该检测之前的状态。每个组表都有与其关联的超时,且入口交换机将在超时后删除该组表。
图11示出了在中间交换机上生成的流项和组表。检测模块905预先传送与原始匹配字段和标签lf都匹配的流项1105,使得被采样并添加有标签lf的数据包与该流项匹配。该流项仅用于统计具有标签lf的数据包的数量,即所采样的数据包的数量。在硬超时后,这些流项被自动删除,并且该检测结束。SDN控制器305可以通过使用FlowRemoved消息,获取由这些流项转发的数据包的数量。
在另一实施例中,当将具有独特标签lf的数据包的数量上报给该SDN控制器时,可能需要该中间交换机将具有独特标签lf的数据包转发到该SDN控制器。在这种情况下,修改流项1105,使得动作包括“输出:控制器”。
图12示出了在出口交换机上生成的流项和组表。检测模块905还预先传送与原始匹配字段和标签lf都匹配的流项1205。流表项1205将所采样的数据包转发到组表1210。组表1210将数据发送到SDN控制器305,并且在去除标签之后将数据发送到网络出口(其是下一跳1250)。另外,在该出口交换机上,检测模块905还修改转发该流的原始流项,使得可以如图13所示去除未采样的数据包上随机生成的标签。更具体地,流项1305将与原始匹配字段和标签R都匹配的数据包转发到组表1310。反过来,组表1310去除标签R并将数据包发送到网络出口1250。
交换机选择策略940
交换机选择策略940为网络流和转发路径选择交换机组。在本公开中,流项和组表在交换机组上传送,然后用于完成检测。在本公开中,需要为每个网络流选择三个交换机:入口交换机1410、出口交换机1430、和在入口交换机和出口交换机之间随机选择的中间交换机1420,如图14所示。在一实施例中,仅需要入口交换机1410和出口交换机1420。
在本公开中,不需要修改OpenFlow交换机。这样,当OpenFlow未被修改时,本公开可以正常工作。但是,如果交换机可以提供一些扩展功能,本公开的性能将得到改善。提供以下两个选项:
1.该交换机将整个数据包转发到控制层。实际上,该交换机只需要将该数据包的ID值转发到控制器。该ID值可以是该数据包的哈希值,例如MD5值或SHA1值。使用数据包的ID值将有效减少该控制层和该数据层之间的通信开销。
2.该交换机将数据包的ID值成批转发到该控制层。该交换机首先在本地计算所采样的数据包的ID值,然后缓存该ID值。当给定数量的ID值被缓存或检测结束时,该交换机将所缓存的ID值成批地转发到该控制层。
交换机选择策略940在接收到来自表项生成模块930的请求时从网络流和转发路径中选择交换机组。该请求包括所选的网络流和所选的网络流的转发路径。基于该请求,交换机选择策略940根据所选的网络流选择交换机组,以执行数据包的传送。该交换机组包括入口交换机1410、出口交换机1430、和在入口交换机和出口交换机之间随机选择的中间交换机1420。然后将所选的交换机组发送回表项生成模块930。
标签池950
标签池维护两组标签。第一组中的标签用于独特地标识正在检测的网络流,并且该网络流中采样的数据包添加有独特标签。第二组中的标签用于混淆攻击者,并将其添加到未检测的网络流中的数据包以及在检测的网络流中未采样的数据包。在检测中,第一组标签中的任何标签只能使用一次,而混淆标签可以使用多次。
为了方便起见,在后续描述中,将第一标签集表示为L,第二标签集表示为R,与检测的网络流f相关联的独特标签表示为lf。相关符号如下表2所示。
参数名称 | 参数描述 |
lf | 为流f生成的且在所有流标签中都是独特的独特的可识别的标签。 |
L | 在检测中为所有检测的流生成的独特的可识别的标签集(lf∈L)。 |
R | 不独特且随机生成的可标识的标签集(R∩L=φ)。 |
在本公开中,标签主要用于实现以下两个目的:使用每个标签以独特地标识检测的流中的一些采样的数据包;并且向未检测的流和在检测的流中未采样的一些数据包添加标签,以混淆攻击者。这样,每个检测的流都需要独特的标签。而混淆标签可能会重复使用,因此混淆标签的数量可能是固定的。假设在网络中有|F|个流,并且在本公开中,一次检测N个流,并且C个标签用于混淆攻击者。因此,总共需要N+C个标签。
只要标签能够区分网络流,例如区分服务(TOS)标签、VLAN标签或MPLS标签,本公开就不对标签施加要求。如果存在少量可用标签,则可以通过多次检测完成整个网络上的检测,并且在每次检测中仅检测一些网络流。为了描述标签选择方法,下面将比较TOS、VLAN和MPLS标签。
TOS标签:该TOS标签的长度是1比特。可以使用256种不同的TOS标签。该TOS标签只能支持小型网络。给定数量的标签(例如,240个标签)可用于识别检测的网络流,而其它标签可用作混淆标签。
VLAN标签:该VLAN标签的长度是32比特。总共可以使用4096个VLAN标签,这对于通用网络来说已经足够了。
MPLS标签:该MPLS标签的长度是32比特。可以支持1048576个MPLS标签,这对任何网络都是足够的。
简而言之,该MPLS标签是最佳选择,因为该MPLS标签的长度在可接受的范围内,并且有足够的标签可供支持。
虽然前面描述了向检测的数据包分配独特标签且为另一数据包随机选择另一标签的方式,本领域技术人员将认识到,在不脱离本公开的情况下,也可以实现多样化的标签分配方案。重要的是,标签用于标记检测的数据包及相应的流。如果不需要混淆检测的流量和未检测的流量,为每个检测的流只需要选择一个独特标签,然后将相应的标签添加到采样的数据包中。可能实现的一些可能的标签分配方案如下:
1.将独特标签分配到每个流。在每次检测中,所采样的数据包都添加有相应流的独特标签,而另一数据包添加有与任何独特标签不同的另一随机标签。
2.为每个流生成两个独特标签。其一独特标签用于指示所采样地数据包,而另一独特标签用于指示未采样的数据包。仅在某些流中所采样的数据包上执行检测。
检测数据存储模块960
检测数据存储模块960存储来自该数据层的检测数据,主要包括两种类型的数据:检测用流项转发的数据包的数量,以及第一跳(入口)和最后一跳(出口)交换机上检测用流项转发的数据包。当检测用流项自动过期时,通过使用FlowRemoved消息,可以获得出口交换机上检测用流项转发的数据包。入口交换机上的检测用流项转发的数据包被显示在组表中并被转发到控制层301,即在生成的组表中的输出:控制器。
检测数据分析模块970
检测数据分析模块970分析检测结果。在成功传送检测用流项和组表后,检测流程控制模块920向检测数据分析模块970通知当前检测的完成时间。当达到该完成时间时,检测数据分析模块970首先从检测数据存储模块960获得每个检测的流的检测数据,包括检测用流项转发的数据包的数量,以及第一跳和最后一跳交换机上检测用流项转发的数据包。然后,检测数据分析模块970通知标签池模块不再使用与这些检测的流相对应的独特标签。最后,检测数据分析模块970对每个网络流的检测数据进行如下比较:
1、第一跳(即,入口交换机)上报的检测用流项转发的数据包的数量是否与最后一跳上报的相等;以及
2、第一跳(即,入口交换机)和最后一跳(即,出口交换机)交换机上检测用流项转发的数据包是否相等相同。
如果第一跳(即,入口交换机)上报的检测用流项转发的数据包的数量等于最后一跳(即,出口交换机)上报的,且第一跳(即,入口交换机)和最后一跳(即,出口交换机)交换机上检测用流项转发的数据包相同,则表明网络流被正确转发。否则,网络流被异常转发。
在实现中间交换机的实施例中,修改第一比较,使得检测数据分析模块970确定从第一跳、最后一跳和中间跳中的每一跳接收的数据包的数量是否相同。此外,在需要该第三交换机将具有该第一标签的数据包转发到该SDN控制器的实施例中,修改第二比较,使得检测数据分析模块970确定从第一跳、最后一跳和中间跳中的每一跳接收的数据包是否相同。
异常处理模块980
该异常处理模块负责特定的异常处理。当检测数据分析模块970检测到网络流的转发异常时,异常处理模块980向管理员发出告警,并计算新的转发路径。新的转发路径远离原始转发路径上的所有节点。
检测模块905周期性地启动检测。更具体地,检测流程控制模块920周期性地启动检测。图15示出了存储器440中的八个模块和数据平面302之间的交互流程1500。这些模块是基于软件实现的。
检测流程控制模块920控制整个检测过程,且负责调度周期性的检测,包括选择待检测的流,为该待检测的流生成流项和组表,传送该流项和组表,并且指示数据分析模块970完成数据分析。
首先,检测流程控制模块920决定并选择需要检测的网络流。然后,在步骤1505中,检测流程控制模块920从转发图模块910获得需要检测的网络流的转发路径。随后,在步骤1510中,检测流程控制模块920将该转发路径传送到表项生成模块930。该转发路径包括流表项和组表以进行检测。
在步骤1515,响应于从检测流程控制模块920接收到该转发路径,表项生成模块930通知交换机选择策略模块940为该网络流选择检测交换机,并从标签池950中请求独特标签和混淆标签。根据设定的采样比,表项生成模块930最终生成用于该网络流的多个流项和组表,并且将生成的用于网络流的流项和组表传送到检测流程控制模块920。在步骤1520中,响应于从表项生成模块930接收到生成的用于该网络流的流项和组表,检测流程控制模块920将该流项和组表发送到数据平面302,然后通知数据分析模块970在完成检测之后分析检测数据。
针对检测用流项,设置“硬超时”(hard timeout)。在硬超时后,这些流项被自动删除,并且终止检测。在步骤1530中,通过使用FlowRemoved消息,SDN控制器305可以获得这些流项转发的数据包的数量。在该检测被终止后,数据分析模块970在步骤1535中分析由SDN控制器305接收的检测数据,并且在步骤1540中释放与检测的网络流相关联的独特标签。如果该检测数据分析模块在该转发路径中发现异常,则将转发异常发送到异常处理模块980以供进一步处理。
下面将描述两个实施例,它们分别描述了交换机不能被成批地发送到控制器(通过使用“将MD5值发送到控制器”的功能)以及交换机可以被成批地发送到SDN控制器的场景。
现在我们将描述如何在数据平面上,即交换机上,转发数据包。在第一实施例中,该交换机不具有任何特殊的处理行为。为了详细说明数据包转发流程,仅以一个流为例,描述该流的入口交换机、随机选择的中间交换机和出口交换机是如何转发数据包的。
图16示出了入口交换机转发数据包的流程1600。流程1600从步骤1605开始,其中该网络流的数据包到达该入口交换机,并且该数据包首先与流项匹配。在步骤1610中,该流项将该数据包转发到组表1,以进行采样。该数据包根据所确定的采样比s被采样并被用作检测包。在步骤1615中,如果数据包被采样,则在步骤1630中,为该数据包添加独特的可识别的标签lf,然后将其继续传送到组表2,以进行处理。如果数据包未进行采样,则为该数据包添加从集合R中随机选择的标签,并将其直接转发到下一跳。在组表2中,在步骤1635中,将该数据包同时转发到控制器和下一跳。将该数据包转发到该SDN控制器旨在将该数据包与由该出口交换机转发到该SDN控制器的数据包进行比较,以发现数据包篡改行为。在检测结束时(即,硬超时),控制器将该流项改回到该检测之前的状态,并删除该两个组表。本领域技术人员将认识到,为了发现数据包篡改行为和所采样的数据包的确切数量,需要将至少一个所采样的数据包传输到该SDN控制器,且本领域技术人员可以选择要传输到该SDN控制器的所采样的数据包。
该控制器将流项发送到随机选择的中间交换机。该流项统计该流中标签为lf的数据包的数量。当检测完成时,删除该流项。通过使用FlowRemoved消息,SDN控制器305可以获得这些流项转发的数据包的数量。在需要中间交换机将具有独特标签lf的数据包转发到该SDN控制器的另一实施例中,修改该流项,使得将具有标签lf的数据包传输到该SDN控制器。本领域技术人员将认识到,为了发现数据包篡改行为和具有标签lf的数据包的确切数量,需要将具有标签lf的至少一个数据包传输到该SDN控制器,且本领域技术人员可以选择要传输到该SDN控制器的具有标签lf的数据包。
图17示出了出口交换机转发数据包的流程1700。流程1700从步骤1705开始,其中该网络流的数据包到达该出口交换机,并且流程1700确定该数据包是否包含该独特标签lf。如果该数据包包含该标签lf,流程1700进行到步骤1715,其中将该数据包转发到该组表。如果数据包不包含该独特标签lf,流程1700进行到步骤1710,其中去除该随机标签并且将其随后转发到该下一跳。
在步骤1720中,将包含该独特标签lf的该数据包转发到该控制器,从该数据包中去除该标签lf并且将其随后转发到该下一跳。
本公开中的实施例2强调了如何使用交换机减少开销。在本实施例中,交换机的机制用于为初始转发到控制器的数据包计算消息摘要,然后缓存该消息摘要,并在适当的时候将该消息摘要发送到控制器。可以使用消息摘要算法(例如MD5、SHA-1、SHA-2和SHA-3)计算该消息摘要。
在本实施例中,模块之间的交互与图15中所示的相同。转发图模块910仍以前述方式工作。该检测模块大致以前述方式工作,而唯一的区别在于本实施例中的检测模块905仅知道由入口交换机和出口交换机转发到该SDN控制器的数据包的消息摘要。检测模块905通过比较两组消息摘要是否相同来发现可能的恶意数据包篡改。
在第一实施例中,该入口交换机和该出口交换机将所采样的数据包直接转发到控制器。然而,在本实施例中,交换机本地计算这些数据包的消息摘要,必要时缓存这些消息摘要,并且仅当高速缓存满或检测结束时才将这些消息摘要发送到控制器。
图18示出了该入口交换机转发数据包的流程1800。步骤1805-1830对应于步骤1605-1630。而流程1800和流程1600之间的区别在于流程1600的步骤1635被改变为步骤1835-1850,其中实现了批量的交换机。更具体地,在步骤1835中,组表2为所采样的数据包计算消息摘要,然后将该消息摘要存储到高速缓存中。在步骤1840中,如果该高速缓存中缓存的消息摘要的数量达到预定阈值,流程1800进入步骤1845,并且该入口交换机将该高速缓存中的所有消息摘要转发到该控制器,将该数据包转发至该下一跳并且清除高速缓存。或者,流程1800基于该高速缓存中的所有消息摘要计算组合消息摘要,将该组合消息摘要转发到该控制器并且清除高速缓存。如果该高速缓存未满,在步骤1850,流程1800将该数据包转发到该下一跳。流程1800在步骤1820、1845或1850之后结束。
图19示出了该出口交换机转发数据包的流程1900。流程1900从步骤1905开始,其中数据包到达该出口交换机。如果该数据包的标签不是lf,流程1900进入步骤1910,以从该数据包中去除该标签,并且将该数据包直接转发到该网络的出口。如果该数据包的标签是lf,流程1900进入步骤1915,并且将该数据包转发到组表1。在步骤1920中,组表1为该数据包计算消息摘要,然后将该消息摘要存储到高速缓存中。在步骤1925中,如果缓存的消息摘要的数量达到预定阈值,流程1900进入步骤1930,并且该出口交换机将该高速缓存中的消息摘要转发到该控制器。在步骤1930之后或者如果该高速缓存未满,则在步骤1935中去除该数据包的该标签并将其转发到该下一跳(通常是该网络的出口)。在检测结束时,该出口交换机应该将该高速缓存中的所有消息摘要发送到SDN控制器305,并清除该高速缓存。
在另一实施例中,仍需要该中间交换机将要转发的数据包的该消息摘要转发到该SDN控制器,以通过比较来自三个交换机的消息摘要验证任何可能的恶意数据包篡改。
图20示出了根据本公开的由检测模块905执行的流程2000。流程2000从步骤2005开始,即确定和选择需要检测的网络流来验证在该SDN系统中的网络流的准确性。该步骤由检测流程控制模块920执行,并且下面将参照图21对更多细节进行描述。
在步骤2010中,流程2000从转发图模块910中获得所选的网络流的转发路径,并为这些待检测的网络流生成检测用流项和组表。这些待检测的网络流的检测用流项和组表由表项生成模块930生成。而生成检测用流项和组表的步骤由表项生成模块930执行,并且下面将参照图22对更多细节进行描述。
在步骤2015中,流程2000将所选的网络流的该检测用流项和组表发送到数据平面302;并且通知数据分析模块970分析当前检测完成后的所有检测数据。
在步骤2020中,流程2000在检测数据存储模块960上存储两种类型的检测数据,即检测用流项转发的数据包的数量,以及第一跳和最后一跳交换机上检测用流项转发的数据包。
在步骤2025中,流程2000对两种类型的检测数据执行分析且释放该标签。更具体地,流程2000对每个网络流的检测数据进行如下比较:
1、入口交换机上报的检测用流项转发的数据包的数量是否与出口交换机上报的相等;以及
2、入口交换机和出口交换机上检测用流项转发的数据包是否相同。
在步骤2030中,如果入口交换机上报的检测用流项转发的数据包的数量等于出口交换机上报的,并且在入口交换机和出口交换机上检测用流项转发的数据包相同,则表示网络流被正确地转发且不需要进一步的动作,流程2000就此结束。如果入口交换机上报的检测用流项转发的数据包的数量不等于出口交换机上报的,并且在入口交换机和出口交换机上检测用流项转发的数据包不相同,则表示网络流被错误地转发并且需要进一步的动作,并且流程2000进入步骤2035并且向异常处理模块980提出动作标签。
在实现该中间交换机的实施例中,修改该第一比较,使得流程2000的步骤2025确定从该入口交换机、出口交换机和中间交换机中的每一个接收的数据包的数量是否相同。此外,在需要该第三交换机将具有该第一标签的该数据包转发到该SDN控制器的实施例中,修改步骤2025,使得该第二比较确定从该入口交换机、出口交换机和中间交换机中的每一个接收的该数据包是否相同。
在从该入口交换机、中间交换机和出口交换机中的每一个接收消息摘要的另一实施例中,修改步骤2025,使得该第二比较确定从该入口交换机、中间交换机和出口交换机接收的该消息摘要是否相等。在又一实施例中,通过为该入口交换机、中间交换机和出口交换机中的每一个计算组合消息摘要,组合入口交换机、中间交换机和出口交换机中的每一个的多个消息摘要。
流程2000在步骤2030或2035之后结束。
图21示出了由检测流程控制模块920执行的流程2100。基于预定参数,周期性地启动流程2100。该参数可以是在一段时间后执行一次检测周期,或者在检测周期完成后采用一段睡眠时间。每个检测周期可以在固定或随机时间执行。
流程2100从步骤2105开始,即确定并选择需要检测的网络流。更具体地,根据预定的策略集,可以随机选择需要检测的网络流。例如,预定的策略集可以是设置采样比或所选的网络流的数量。或者,基于预先选择的过滤规则集,选择需要检测的网络流。例如,目的地到是IP或IP前缀的所有网络流。本领域技术人员将认识到,在不脱离本公开的情况下,可以实现其它类型的选择。预定的策略集、预先选择的过滤规则集或其它确定用于验证的网络流的预定方法可以作为数据结构被存储在该SDN系统中的存储器中。需要步骤2105来检索包含该信息的数据结构,以确定用于验证的网络流。
在步骤2110中,流程2100从转发图模块910获得所选的网络流的该转发路径。该转发路径包含所选的网络流的流项和组表。
在步骤2115中,流程2100将需要检测的所选的网络流的流项和组表发送到表项生成模块930。
在步骤2120中,流程2100从表项生成模块930接收用于所选的网络流的检测用流项和组表。
在步骤2125中,流程2100将所选的网络流的检测用流项和组表发送到数据平面302;以及通知数据分析模块970分析当前检测完成后的所有检测数据。对数据分析模块970的通知包含完成时间。
流程2100在步骤2125之后结束。
图22示出了根据本公开的由表项生成模块930执行的流程2200。流程2200从步骤2205开始,即从检测流程控制模块920接收包含需要检测的网络流的请求。
在步骤2210中,响应于从该检测流程控制模块接收该请求,流程2200从标签池模块950请求独特标签(lf)和混淆标签(R),并且从交换机选择策略模块940获得被选择用于检测的检测交换机(即,入口交换机、随机选择的中间交换机和出口交换机)。
在步骤2215中,流程2200确定采样比(s)。需要说明的是,在待检测网络流的采样过程中,只对采样部分的一个数据包进行处理。因此,需要确定采样比。
在步骤2220中,基于该信息,即标签(即,独特标签和混淆标签)、检测交换机和采样比,流程2200根据在步骤2205中从检测流程控制模块920接收的请求中包含的所选的网络流中的网络流和该网络流的转发路径生成相应的检测用流项和组表。
更具体地,对于该入口交换机,流程2200修改转发该流的该原始流项,并添加两个组表。第一组表1010用于执行流采样。未采样的数据包被添加有从R中随机选择的标签,然后被转发到下一跳1050。采样的数据包被添加有标签lf,然后被转发到下一组表1020以进行处理。在第二组表1020中,该数据包同时被转发到该SDN控制器和下一跳1050。
对于该出口交换机,流程2200修改转发该流的该原始流项,并添加一组表1210。修改转发该流的该原始流项,使得在与该原始匹配字段和该独特标签lf都匹配的流项1205中所采样的数据包被转发到组表1210。组表1210将该数据发送到控制平面301,并且在去除该标签之后将该数据发送到网络出口(其是下一跳1250)。另外,在该出口交换机上,流程2200还修改转发该流的该原始流项,使得未采样的数据包上的该随机标签R从该数据包中被去除。
对于该中间交换机,流程2200修改转发该流的该原始流项,使得在与该原始匹配字段和该独特标签lf都匹配的流项中所采样的数据包的数量被确定,然后将这些数据包转发到该下一跳。在需要该中间交换机将具有该独特标签的该数据包转发到该SDN控制器的另一实施例中,流程2200还修改该原始流项,使得在与该原始匹配字段和该独特标签lf都匹配的流项中所采样的数据包被发送到该SDN控制器。
为这些流项设置硬超时(Hard Timeout)。在硬超时后,这些检测用流项和组表被自动删除,并且检测完成。上述参照图10-13描述了用于生成流项和组表的表项生成模块930的逻辑。
在步骤2225中,流程2200将检测用流项和组表发送到检测流程控制模块920。
流程2200在步骤2225之后结束。
虽然参照图15-22描述的流程提到了使用两个交换机,即入口交换机和出口交换机,但是本领域技术人员将认识到,入口交换机可以是网络流的转发路径的上游的交换机之一,而出口交换机可以是网络流的转发路径的下游的交换机之一。此外,在实现第三交换机,即中间交换机的情况下,本领域技术人员将认识到,第三交换机是第一和第二交换机之间的任何一个交换机。
以上是对基于SDN系统的方法和系统的实施例的描述,以验证在网络中转发的数据包的准确性。可以预见的是,本领域技术人员可以并将设计出基于本公开的替代方法和系统,基于这种本公开其侵犯如以下权利要求。
Claims (31)
1.一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的系统,包括SDN控制器、第一交换机、第二交换机和第三交换机;
所述SDN控制器用于:
生成并向所述第一交换机和所述第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;
接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;
对所述第一和第二检测数据执行分析;以及
如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
2.根据权利要求1所述的系统,其中所述第一交换机和所述第二交换机是在所述网络流的期望转发路径中的两个交换机,且所述第二交换机是相对于所述第一交换机的下游交换机。
3.根据权利要求1或2所述的系统,其中所述第一交换机是入口交换机,且所述第二交换机是出口交换机。
4.根据权利要求1-3中任一项所述的系统,其中所述SDN控制器具体用于:
确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及
确定与从所述第一和第二交换机接收的所述数据包相关的所述内容是否相同。
5.根据权利要求1-4中任一项所述的系统,其中所述SDN控制器用于:
生成并向所述第三交换机发送命令,所述第三交换机是在所述网络流的转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
6.根据权利要求5所述的系统,其中所述SDN控制器用于:
比较从所述第一、第二和第三交换机中的每一个接收的数据包的数量相同;以及
比较与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容相同。
7.根据权利要求1-6中任一项所述的系统,其中所述第一交换机用于:
根据从所述SDN控制器接收的所述命令,更新流表和组表;
从所述所选的网络流中接收和采样数据包;
用所述第一标签标记所采样的数据包;以及
将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
8.根据权利要求1-7中任一项所述的系统,其中所述第二交换机用于:
根据从所述SDN控制器接收的所述命令,更新流表和组表;
从所述所选的网络流中接收数据包;
确定所述数据包是否已经被标记了所述第一标签;
响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及
将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
9.根据权利要求5或6所述的系统,其中所述第三交换机用于:
根据从所述SDN控制器接收的所述命令,更新流表和组表;
从所述所选的网络流中接收数据包;
统计具有所述第一标签的数据包的数量;以及
将具有所述第一标签的数据包的数量转发到所述SDN控制器。
10.一种用于验证在具有软件定义网络(SDN)控制器和多个交换机的SDN中转发的数据包的准确性的方法,所述方法包括:
生成并向第一交换机和第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;
接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;
对所述第一和第二检测数据执行分析;以及
如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
11.根据权利要求10所述的方法,其中对所述第一和第二检测数据执行分析的步骤包括:
确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及
确定与从所述第一和第二交换机接收的数据包相关的所述内容是否相同。
12.根据权利要求10或11所述的方法还包括:
生成并向第三交换机发送命令,所述第三交换机是在所述网络流的所述转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
13.根据权利要求12所述的方法,其中对所述第一和第二检测数据执行分析的步骤包括:
确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一和第二交换机中的每一个接收的所述数据包相关的所述内容是否相同。
14.根据权利要求12所述的方法,其中对所述第一和第二检测数据执行分析的步骤包括:
确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容是否相同。
15.一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的控制器,所述SDN控制器具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:
生成并向第一交换机和第二交换机发送命令,以返回网络流的第一检测数据和第二检测数据;
接收所述第一检测数据和所述第二检测数据,所述第一检测数据是来自所述网络流的由所述第一和第二交换机上报的具有第一标签的数据包的数量,且所述第二检测数据是与来自所述网络流的由所述第一和第二交换机上报的具有所述第一标签的所述数据包相关的内容;
对所述第一和第二检测数据执行分析;以及
如果对所述第一和第二检测数据的所述分析失败,提出动作标签。
16.根据权利要求15所述的控制器,其中对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
确定从所述第一交换机接收的数据包的数量是否等于从所述第二交换机接收的数据包的数量;以及
确定与从所述第一和第二交换机接收的数据包相关的所述内容是否相同。
17.根据权利要求15或16所述的控制器,其中所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
生成并向第三交换机发送命令,所述第三交换机是在所述网络流的所述转发路径中的所述第一和第二交换机之间随机选择的中间交换机。
18.根据权利要求17所述的控制器,其中对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一和第二交换机中的每一个接收的所述数据包相关的所述内容是否相同。
19.根据权利要求17所述的控制器,其中对所述第一和第二检测数据执行分析的所述指令包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
确定从所述第一、第二和第三交换机中的每一个接收的数据包的数量是否相同;以及确定与从所述第一、第二和第三交换机中的每一个接收的所述数据包相关的所述内容是否相同。
20.一种用于交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器和所述交换机,所述方法包括:
根据从所述SDN控制器接收的命令,更新流表和组表;
从所选的网络流中接收和采样数据包;
用所述第一标签标记所采样的数据包;以及
将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
21.根据权利要求20所述的方法,其中所述方法还包括:
计算所有所述采样的数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
22.一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的交换机,所述SDN包括SDN控制器和所述交换机,所述交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:
根据从所述SDN控制器接收的命令,更新流表和组表;
从所述所选的网络流中接收和采样数据包;
用所述第一标签标记所采样的数据包;以及
将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
23.根据权利要求22所述的交换机,其中所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
计算所有所述采样的数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
24.一种用于第一交换机和第二交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器、所述第一交换机和所述第二交换机,所述方法包括:
根据从所述SDN控制器接收的命令,更新流表和组表;
从所选的网络流中接收数据包;
确定所述数据包是否已经被标记了第一标签;
响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及
将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
25.根据权利要求24所述的方法,其中所述方法还包括:
计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
26.一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的第二交换机,所述SDN包括SDN控制器、第一交换机和所述第二交换机,所述第二交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:
根据从所述SDN控制器接收的所述命令,更新流表和组表;
从所述所选的网络流中接收数据包;
确定所述数据包是否已经被标记了第一标签;
响应于确定所述数据包已经被标记了所述第一标签,从所述数据包中去除所述第一标签;以及
将具有所述第一标签的数据包的数量和与具有所述第一标签的所述数据包相关的所述内容转发到所述SDN控制器。
27.根据权利要求26所述的第二交换机,其中所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
计算所有具有所述第一标签的所述数据包的消息摘要,以确定与具有所述第一标签的所述数据包相关的所述内容。
28.一种用于第三交换机验证在软件定义网络(SDN)中转发的数据包的准确性的方法,所述SDN包括SDN控制器、第一交换机、第二交换机和所述第三交换机,所述方法包括:
从所选的网络流中接收数据包;
统计具有第一标签的数据包的数量;以及
将具有所述第一标签的数据包的数量转发到所述SDN控制器。
29.根据权利要求28所述的方法,其中所述方法还包括:
将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器。
30.一种用于验证在软件定义网络(SDN)中转发的数据包的准确性的第三交换机,所述SDN包括SDN控制器、第一交换机、第二交换机和所述第三交换机,其中所述第一和所述第二交换机是在网络流的期望转发路径中的两个交换机,所述第一交换机是入口交换机,且所述第二交换机是出口交换机;所述第三交换机位于所述第一交换机和所述第二交换机之间;
所述第三交换机具有非暂时性存储器、处理器和存储在所述存储器上能够由所述处理器执行的指令,以用于:
根据从所述SDN控制器接收的命令,更新流表和组表;
从所述所选的网络流中接收和采样数据包;
用所述第一标签标记所采样的数据包;以及
将所述数据包转发到下一跳,将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器,且将所采样的数据包的数量上报给所述SDN控制器。
31.根据权利要求30所述的第三交换机,其中所述指令还包括存储在所述存储器上能够由所述处理器执行的指令,以用于:
将与具有所述第一标签的所述数据包相关的内容转发到所述SDN控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SG10201702697QA SG10201702697QA (en) | 2017-03-31 | 2017-03-31 | Software defined network (sdn) based packet forwarding verification |
SG10201702697Q | 2017-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108696503A true CN108696503A (zh) | 2018-10-23 |
Family
ID=63844773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810280676.9A Pending CN108696503A (zh) | 2017-03-31 | 2018-03-27 | 基于数据包转发验证的软件定义网络(sdn) |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108696503A (zh) |
SG (1) | SG10201702697QA (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109327465A (zh) * | 2018-11-15 | 2019-02-12 | 珠海莲鸿科技有限公司 | 一种安全抵御网络劫持的方法 |
CN111541696A (zh) * | 2020-04-24 | 2020-08-14 | 清华大学 | 随机认证嵌入的快速源和路径验证方法 |
CN114866313A (zh) * | 2022-04-29 | 2022-08-05 | 中移(杭州)信息技术有限公司 | 路径转发验证方法、系统、设备及存储介质 |
WO2024103288A1 (zh) * | 2022-11-16 | 2024-05-23 | 哲库科技(上海)有限公司 | 通信方法、装置、设备、存储介质、芯片及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401726A (zh) * | 2013-07-19 | 2013-11-20 | 华为技术有限公司 | 网络路径探测方法及装置、系统 |
CN105429822A (zh) * | 2015-11-30 | 2016-03-23 | 东南大学 | 基于软件定义网络的端到端路径上逐跳链路丢包测量方法 |
US20160285729A1 (en) * | 2015-03-23 | 2016-09-29 | Brocade Communications Systems, Inc. | Flow-specific failure detection in sdn networks |
-
2017
- 2017-03-31 SG SG10201702697QA patent/SG10201702697QA/en unknown
-
2018
- 2018-03-27 CN CN201810280676.9A patent/CN108696503A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401726A (zh) * | 2013-07-19 | 2013-11-20 | 华为技术有限公司 | 网络路径探测方法及装置、系统 |
US20160285729A1 (en) * | 2015-03-23 | 2016-09-29 | Brocade Communications Systems, Inc. | Flow-specific failure detection in sdn networks |
CN105429822A (zh) * | 2015-11-30 | 2016-03-23 | 东南大学 | 基于软件定义网络的端到端路径上逐跳链路丢包测量方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109327465A (zh) * | 2018-11-15 | 2019-02-12 | 珠海莲鸿科技有限公司 | 一种安全抵御网络劫持的方法 |
CN109327465B (zh) * | 2018-11-15 | 2021-11-05 | 珠海莲鸿科技有限公司 | 一种安全抵御网络劫持的方法 |
CN111541696A (zh) * | 2020-04-24 | 2020-08-14 | 清华大学 | 随机认证嵌入的快速源和路径验证方法 |
CN111541696B (zh) * | 2020-04-24 | 2021-10-01 | 清华大学 | 随机认证嵌入的快速源和路径验证方法 |
CN114866313A (zh) * | 2022-04-29 | 2022-08-05 | 中移(杭州)信息技术有限公司 | 路径转发验证方法、系统、设备及存储介质 |
CN114866313B (zh) * | 2022-04-29 | 2024-04-09 | 中移(杭州)信息技术有限公司 | 路径转发验证方法、系统、设备及存储介质 |
WO2024103288A1 (zh) * | 2022-11-16 | 2024-05-23 | 哲库科技(上海)有限公司 | 通信方法、装置、设备、存储介质、芯片及系统 |
Also Published As
Publication number | Publication date |
---|---|
SG10201702697QA (en) | 2018-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696503A (zh) | 基于数据包转发验证的软件定义网络(sdn) | |
CN111787073B (zh) | 一种统一服务的限流熔断平台及其方法 | |
CN105493450B (zh) | 动态检测网络中的业务异常的方法和系统 | |
US9973520B2 (en) | Explaining causes of network anomalies | |
US9578046B2 (en) | Analysis of time series data | |
Li et al. | Dynamic packet forwarding verification in SDN | |
CN108701187A (zh) | 混合硬件软件分布式威胁分析 | |
JP4020912B2 (ja) | 不正アクセス検知装置、不正アクセス検知プログラムおよび不正アクセス検知方法 | |
Zhou et al. | Exploiting the Vulnerability of Flow Table Overflow in Software‐Defined Network: Attack Model, Evaluation, and Defense | |
US20200287788A1 (en) | Registering collaborative configuration changes of a network element in a blockchain ledger | |
CN110225008A (zh) | 一种云环境下sdn网络状态一致性验证方法 | |
US11108816B2 (en) | Constructible automata for internet routes | |
KR100997182B1 (ko) | 플로우 정보 제한장치 및 방법 | |
CN107078921A (zh) | 用于基于商业意图驱动策略的网络业务表征、监视和控制的方法和系统 | |
CN107026835A (zh) | 具有规则优化的集成安全系统 | |
CN106605392A (zh) | 用于使用控制器在网络上进行操作的系统和方法 | |
CN107683597A (zh) | 用于异常检测的网络行为数据收集和分析 | |
CN102801738B (zh) | 基于概要矩阵的分布式拒绝服务攻击检测方法及系统 | |
Leng et al. | An inference attack model for flow table capacity and usage: Exploiting the vulnerability of flow table overflow in software-defined network | |
CN104115463A (zh) | 用于处理网络元数据的流式传输方法和系统 | |
US20190007292A1 (en) | Apparatus and method for monitoring network performance of virtualized resources | |
US10708155B2 (en) | Systems and methods for managing network operations | |
US20200021490A1 (en) | Systems and methods for advanced core network controls | |
CN108011894A (zh) | 一种软件定义网络下僵尸网络检测系统及方法 | |
CN107426007A (zh) | 用于跟踪网络交换机中的网络装置信息的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181023 |