一种报文转发方法及设备的制造方法

文档序号:9380169阅读:274来源:国知局
一种报文转发方法及设备的制造方法
【技术领域】
[0001] 本发明涉及网络通信技术,特别是一种报文转发方法及设备。
【背景技术】
[0002] Openflow是一种新型的网络交换模型,主要解决现有网络中部署业务时面临的 种种瓶颈,其核心思想就是软件设计网络(Software Defined Network, SDN)。SDN是指一 个新的网络生态系统,Openflow则是实现SDN的一种开放协议标准,其实现方式就是将现 有的完全由交换机、路由器控制的数据包转发过程,转化为由Openflow交换机和控制器 (Controller)分别完成的独立过程。OpenFlow交换机在本地维护一个与传统交换机上的 转发表不同的流表(Flow Table),如果要转发的数据包在流表中有对应项,则直接进行快 速转发,如果流表中没有此项,数据包就会被发送到控制器进行传输路径的确认,再根据控 制器下发结果进行转发。
[0003] 其中,Flow Table并非是指IP五元组,事实上OpenFlowL 0定义了包括端口号, 虚拟局域网(Virtual Local Area Network,VLAN), L2/L3/L4 信息的 10 个关键字,如图 1 所示,每个字段都可以通配,比如运营商只需要根据目的IP进行路由,那么流表中就可以 只有目的IP字段是有效的,其他全为通配。
[0004] 目前流量根据流表转发的技术有2种:
[0005] (I) Openf low交换机中的流表采用固定长度的Flow Table来记录,对于 OpenFlowL 0而言,Flow Table的匹配长度长达252bit,而一般的Ipv4路由信息库(RIB, Route Information Base)三态内容寻址存储器(TCAM,Ternary Content Addressable Memory)匹配字段长度只有60-80个比特,开销增加了 3倍以上,而对于路由器的线卡而言, TCAM成本占了约20%-30%,功耗也占了很大一部分。
[0006] (2)0penFlowl. 1设计了多级流表来减少Flow Table的开销,将图1中的10个关 键字进行分别提取,分解成多个小表项,然后查询的时候进行关联,如图2所示,Openflow 交换机上存在两级流表,第一级流表匹配的关键字是MAC+VLAN (图1中SA为源MAC,DA为 目的MAC),第二级流表匹配的关键字是IP。
[0007] 从现有技术可以看出来上述2种流表查询技术都存在缺点:
[0008] 第一种流表查询的缺点是TCAM存储成本过高。
[0009] 第二种流表查询的缺点是流水式架构使得匹配的时延增加,存储成本仍旧过高。

【发明内容】

[0010] 有鉴于此,本发明提出了一种报文转发方法及设备,有效解决了现有技术中进行 流表查询时TCAM存储成本过高、流水式架构使得匹配的时延增加的缺陷。本发明提出的技 术方案是:
[0011] 一种报文转发方法,应用于Openflow网络,所述Openflow网络包括控制器 Controller与至少两个节点,各节点为Openflow交换机,该方法包括:
[0012] 首节点接收直连设备发送的原始数据报文;
[0013] 所述首节点根据关键字遍历其上的流表,查询与所述原始数据报文匹配的第一转 发标识流表项,所述第一转发标识流表项记录有关键字与转发标识的映射关系;
[0014] 将所述匹配的第一转发标识流表项中的转发标识嵌套在所述原始数据报文中,生 成嵌套数据报文,并将所述嵌套数据报文发送给所述Openflow网络中的下一跳节点,使所 述下一跳节点在其上的流表中,根据转发标识查询与所述嵌套数据报文匹配的第二转发标 识流表项,对所述嵌套数据报文进行处理,所述第二转发标识流表项记录有转发标识。
[0015] 上述方案中,该方法进一步包括:
[0016] 若所述首节点根据关键字遍历其上的流表,未查询到与所述原始数据报文匹配的 第一转发标识流表项,仅查询到与所述原始数据报文匹配的普通关键字流表,则根据所述 匹配的普通关键字流表项转发所述原始数据报文给所述Openflow网络中的下一跳节点, 并发送所述原始数据报文至控制器;
[0017] 所述首节点接收所述控制器返回的第一转发标识流表项并保存,其中,所述第一 转发标识流表项为所述控制器接收到所述原始数据报文后,为所述原始数据报文的关键字 设定一个转发标识,并将所述转发标识与原始数据报文的关键字关联,生成第一转发标识 流表项下发给所述首节点。
[0018] 上述方案中,该方法进一步包括:
[0019] 若所述首节点根据关键字遍历其上的流表,未查询到与所述原始数据报文匹配的 第一转发标识流表项,且未查询到与所述原始数据报文匹配的普通关键字流表项,则将所 述原始数据发送至控制器;
[0020] 所述首节点接收所述控制器返回的第一转发标识流表项并保存,其中,所述第一 转发标识流表项为所述控制器接收到所述原始数据报文后,为所述原始数据报文的关键字 设定一个转发标识,并将所述转发标识与原始数据报文的关键字关联,生成第一转发标识 流表项下发给所述首节点。
[0021] 上述方案中,所述控制器接收到所述原始数据报文后,为所述原始数据报文的关 键字设定一个转发标识,具体为:所述控制器接收到所述原始数据报文后,在转发标识列表 中为所述数据报文的关键字分配一个空闲的转发标识;
[0022] 所述方法进一步包括:
[0023] 若所述控制器没有空闲转发标识分配给所述原始数据报文的关键字,则所述首节 点接收所述控制器发送的与所述原始数据报文关键字匹配的普通关键字流表项并保存,所 述普通关键字流表项记录有关键字。
[0024] 一种报文转发方法,应用于Openflow网络,所述Openflow网络包括控制器 Controller与至少两个节点,各节点为Openflow交换机,该方法包括:
[0025] 所述控制器接收首节点发送的原始数据报文;
[0026] 所述控制器计算所述原始数据报文的转发路径,并为所述原始数据报文的关键字 设定一个转发标识;
[0027] 根据所述转发路径确定转发所述数据报文经过的各节点,为各节点生成对应的流 表项并下发到对应的各节点,以指导报文的转发,其中,所述首节点的流表项为第一转发标 识流表项,所述第一转发标识流表项记录有关键字与转发标识的映射关系,其它节点的流 表项为第二转发标识流表项,所述第二转发标识流表项记录有转发标识。
[0028] 上述方案中,所述控制器为所述原始数据报文的关键字设定一个转发标识,具体 为:所述控制器在转发标识列表中为所述数据报文的关键字分配一个空闲的转发标识;
[0029] 该方法进一步包括:
[0030] 若所述控制器没有空闲转发标识分配给所述原始数据报文的关键字,则所述控制 器根据转发路径确定转发所述数据报文经过的各节点,为各节点生成对应的普通关键字流 表项并下发到对应的各节点,以指导报文的转发,所述普通关键字流表项记录有关键字。
[0031] 一种Openflow交换机设备,应用于Openflow网络,所述Openflow网络包括控制 器Controller与至少两个节点,各节点为Openflow交换机,该设备包括:
[0032] 报文收发模块,用于接收直连设备发送的原始数据报文;
[0033] 查询模块,用于根据关键字遍历流表,查询与所述原始数据报文匹配的第一转发 标识流表项,所述第一转发标识流表项记录有关键字与转发标识的映射关系;
[0034] 转发标识嵌套模块,用于将所述匹配的第一转发标识流表项中的转发标识嵌套在 所述原始数据报文中,生成嵌套数据报文;
[0035] 所述报文收发模块,还用于将嵌套数据报文发送给所述Openflow网络中的下一 跳交换机,使所述下一跳节点在其上的流表中,根据转发标识查询与所述嵌套数据报文匹 配的第二转发标识流表项,对所述嵌套数据报文进行处理,所述第二转发标识流表项记录 有转发标识。
[0036] 上述方案中,
[0037] 若所述查询模块根据关键字遍历流表,未查询到与所述原始数据报文匹配的第一 转发标识流表项,仅查询到与所述原始数据报文匹配的普通关键字流表,则报文收发模块 还用于,根据所述匹配的普通关键字流表项转发所述原始数据报文给所述Openflow网络 中的下一跳节点,并发送所述原始数据报文至控制器;
[0038] 接收所述控制器返回的第一转发标识流表项,其中,所述第一转发标识流表项为 所述控制器接收到所述原始数据报文后,为所述原始数据报文的关键字设定一个转发标 识,并将所述转发标
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1