一种邻居发现的方法及装置制造方法

文档序号:8000593阅读:231来源:国知局
一种邻居发现的方法及装置制造方法
【专利摘要】本发明提供了一种邻居发现的方法和装置,应用在物理端口和逻辑端口共存的OpenFlow网络环境中。包括如下步骤:端口识别单元识别出所有OpenFlow交换机上的物理端口,并基于物理端口发送邻居报文给对端OpenFlow交换机;报文处理单元接收OpenFlow交换机物理端口上报的报文,据此计算出网络拓扑结构。通过本发明,可以有效地避免OpenFlow网络环境中的逻辑端口对OpenFlow网络拓扑计算造成影响。
【专利说明】一种邻居发现的方法及装置

【技术领域】
[0001]本发明涉及数据通信领域,尤其涉及一种在OpenFlow网络环境下邻居发现的方法及装置。

【背景技术】
[0002]随着互联网技术的不断发展,客户对于在互联网上部署业务的时间要求越来越短。比如几年前一个业务部署往往需要几个月的时间,而且还需要花费大量的人力;现在一个互联网业务可能会要求在投入少量人力的情况下,几天内完成部署。如何快速部署一个互联网业务,这涉及到一些新的技术,比如SDN (Software Defined Network,软件定义网络),在SDN定义的网络模型下,可以通过软件的方式实现对业务的快速部署,从而减少人力的投入、缩短工期。其中,在众多的SDN技术中,OpenFlow是其中最具代表性的一种技术。
[0003]一个典型的OpenFlow组网网络如图1所不,OpenFlow交换机(OpenFlow Switch)除了彼此之间存在数据通道外,还通过一条独立的管理通道和OpenFlow控制器(OpenflowController)建立连接。当OpenFlow交换机接收到报文后,先查询自身设备内部维护的一个流表(FlowTable),如果命中一条表项,则按照表项中的出接口进行转发;如果没有命中,则会将报文上报给OpenFlow控制器,请求OpenFlow控制器下发一个新的表项来指导其转发,OpenFlow控制器经过一定的计算,会告诉OpenFlow交换机如何处理报文,是丢弃、限流、还是从哪个端口转发出去。
[0004]在上述处理过程中,OpenFlow控制器需要告诉OpenFlow交换机从哪个端口发送报文,这个端口实际上是基于整个网络拓扑结构进行计算后得到的结果,而不是任意端口。例如,在图1所示的组网环境中,如果OpenFlow Switchl收到一个发给Serverl的报文,如果OpenFlow Switchl内部的流表(FlowTable)上没有对应的转发规则,则需要将该报文发送给OpenFlow控制器。OpenFlow控制器收到报文后,如果报文其它安全认证都通过,则基于整个网络拓扑进行计算,可以知道Serverl接在OpenFlow Switch4下,OpenFlowSwitchl通过端口 eth2可以到达OpenFlow Switch4,于是OpenFlow控制器将报文转发送给OpenFlow Switchl,要求该报文从端口 eth2发送出去,并下发相应的报文转发规则(该规则用于告诉OpenFlow Switchl,后继类似报文直接从端口 eth2发送出去),OpenFlowSwitchl收到该报文转发规则后,更新自身内部维护的流表FlowTable。
[0005]从上面的报文转发过程可以看出,OpenFlow控制器知道网络拓扑结构对于整个OpenFlow报文转发体系至关重要。OpenFlow控制器可以通过管理员手工绘制的方式知道网络拓扑,也可以通过处理一些邻居协议(比如LLDP、CDP等)报文来知道网络拓扑。如果整个OpenFlow网络很大的情况下,管理员手工绘制网络拓扑工作量将非常巨大,因此通过邻居协议发现网络拓扑显得很有必要。发现网络拓扑实际上就是发现邻居OpenFlow交换机的过程,即对于任意一台OpenFlow交换机,其邻居都有哪些OpenFlow交换机,相互之间是通过什么端口连接的。


【发明内容】

[0006]有鉴于此,本发明提供一种邻居发现的方法及装置,以解决现有技术中存在的缺失和不足。
[0007]本发明是通过如下技术方案实现的:
[0008]一种邻居发现装置,应用在物理端口和逻辑端口共存的OpenFlow网络环境中,包括有端口识别单元和报文处理单元,其中:
[0009]端口识别单元,用于识别出所有OpenFlow交换机上的物理端口,并基于物理端口发送邻居报文给对端OpenFlow交换机;
[0010]报文处理单元,用于接收OpenFlow交换机物理端口上报的邻居报文,并据此计算出网络拓扑结构。
[0011]本发明还同时提供一种邻居发现的方法,应用在物理端口和逻辑端口共存的OpenFlow网络环境中,其中所述方法包括如下步骤:
[0012]步骤1、识别出所有OpenFlow交换机上的物理端口,并基于物理端口发送邻居报文给对端OpenFlow交换机;
[0013]步骤2、接收OpenFlow交换机物理端口上报的邻居报文,并据此计算出网络拓扑结构。
[0014]与现有的技术相比,本发明在物理端口和逻辑端口共存的OpenFlow网络环境下,可以有效地避免逻辑端口对OpenFlow网络拓扑计算造成影响,进而极大地提高OpenFlow网络环境下邻居发现的准确性。

【专利附图】

【附图说明】
[0015]图1是现有一种典型的OpenFlow组网网络示意图;
[0016]图2是OpenFlow网络环境中基于所有端口发送邻居报文并发现邻居的示意图;
[0017]图3是图2所述网络环境中端口聚合示意图;
[0018]图4是本发明邻居发现装置结构示意图;
[0019]图5是本发明邻居发现方法的处理流程图。

【具体实施方式】
[0020]如【背景技术】所述,在SDN网络中,OpenFlow控制器发现网络拓扑结构,一般是通过基于OpenFlow交换机所有端口构造并发送邻居报文进而发现邻居OpenFlow交换机的。通过该技术发现网络拓扑结构,OpenFlow控制器通常需要进行如下两方面的处理:基于OpenFlow交换机的端口构造并指示该端口给对端OpenFlow交换机的端口发送邻居报文;要求OpenFlow交换机上报对端发送的邻居报文并依此计算OpenFlow交换机间的邻居关系O
[0021]具体的处理过程如下:
[0022]步骤a、遍历所有的OpenFlow交换机,对每台OpenFlow交换机,基于其端口构造并指示该端口给对端OpenFlow交换机对应的端口发送邻居报文。
[0023]对于当前OpenFlow交换机,OpenFlow控制器获取其上所有的端口,对于每个端口,OpenFlow控制器构造一个邻居报文,并指示该OpenFlow交换机端口将该邻居报文发送给对端OpenFlow交换机对应的端口。其中邻居报文包含的字段包括:当前OpenFlow交换机标识(IP、MAC等)、当前端口标识(端口 IP、端口 MAC、端口 ID等)。
[0024]步骤b、接收OpenFlow交换机端口上报的来自对端的邻居报文。
[0025]为了顺利地接收OpenFlow交换机上报的来自对端的邻居报文,OpenFlow控制器还需要在所有OpenFlow交换机端口上创建转发规则,要求将接收到对端发送的邻居报文转发给OpenFlow控制器。这样,OpenFlow控制器接收到OpenFlow交换机端口上报的对端发送的邻居报文(该邻居报文还会附带从哪个端口收到的邻居报文)后,即可知道邻居报文发送者和接受者之间的邻居关系。当OpenFlow控制器收到所有邻居报文后,即可知道所有OpenFlow交换机之间的邻居关系,亦即发现SDN网络中的OpenFlow交换机拓扑结构。
[0026]进一步如图2所示,当OpenFlow控制器基于OFSl的eth2发送邻居报文,该邻居报文最终被0FS2转发给OpenFlow控制器。OpenFlow控制器根据接收的报文,可以提取出OFSl的ID、0FS1的发送端口 eth2的ID以及0FS2的接收端口 ethl,从而可以知道OFSl和0FS2是邻居关系,且OFSl的eth2端口和0FS2的ethl端口直连。当OpenFlow控制器基于所有OpenFlow交换机的所有端口发送邻居报文,并接收完所有邻居报文后,就可以计算出整个网络的拓扑结构。
[0027]然而,根据OpenFlow协议,在上述OpenFlow组网环境中,无法直接区分哪些端口是物理端口,哪些端口是逻辑端口,而逻辑端口往往是承载在物理端口上的,比如图3所示的聚合端口,在该图所示的网络环境中,假设OFSl和0FS2之间存在两条直连链路(OFS1: eth2-0FS2: ethl; OFSl: eth3_0FS2: eth2 ),且这两条直连链路被聚合成一条逻辑链路(0FS1:Aggregat1nl_0FS2:Aggregat1nl)。这样,在这个组网环境中,OFSl 至少存在三个端口:eth2、eth3和Aggregatonl,同样,0FS2也至少存在三个端口:ethl、eth2和Aggregatonl。如果OpenFlow控制器通过OFSl的eth2给0FS2发送邻居报文,0FS2的ethl和Aggregat1nl都会收到邻居报文,且都会上报给OpenFlow控制器。而如前所述,OpenFlow协议无法直接区分哪些端口是物理端口、哪些端口是逻辑端口,这就会导致OpenFlow控制器无法识别其接收的邻居报文哪些是有效的、哪些是无效的,从而导致整个网络拓扑结构的计算失败。
[0028]本发明通过改进SDN网络中OpenFlow控制器邻居发现的方法来解决上述问题。以软件实现为例,本发明提供一种邻居发现的方法及装置,其中该邻居发现装置作为逻辑装置运行在OpenFlow控制器上,OpenFlow交换机与之相配合,协助完成OpenFlow环境下网络拓扑结构的发现。作为该逻辑装置运行的载体,OpenFlow控制器的硬件环境通常至少都包括CPU、内存以及非易失性存储器来支持上述逻辑装置的运行。当然,OpenFlow控制器可能还包括其他本发明控制器网络拓扑结构发现的业务硬件,由于这些并非为实现本发明目的的必需组件,在此不赘述。
[0029]请参考图4,所述邻居发现装置应用在图3所示的物理端口和逻辑端口共存的OpenFlow网络环境中,包括有端口识别单元以及报文处理单元。其中,所述邻居发现装置在运行过程中与OpenFlow交换机间的交互流程如图5所示,包括以下步骤。
[0030]步骤1、端口识别单元识别所有OpenFlow交换机上的物理端口,并基于物理端口发送邻居报文给对端OpenFlow交换机。
[0031]具体的,端口识别单元识别所有OpenFlow交换机上的物理端口的过程如下:
[0032]步骤1-1、遍历所有的OpenFlow交换机,获取每台OpenFlow交换机上的所有的端□。
[0033]步骤1-2、根据获取的OpenFlow交换机上的端口,基于端口构造邻居报文(具体可以为LLDP报文或者CDP报文),并将之发送给OpenFlow交换机,要求该OpenFlow交换机将邻居报文发送给对端OpenFlow交换机的对应端口,其中邻居报文包含的字段包括:当前OpenFlow交换机标识(IP、MAC等)、当前端口标识(端口 IP、端口 MAC、端口 ID等)。
[0034]步骤1-3、接收OpenFlow交换机上报的邻居报文并识别接收邻居报文的端口是否为物理端口。
[0035]为了能够识别OpenFlow交换机上报邻居报文的端口是否为物理端口,在本发明中,还需要事先在所有OpenFlow交换机上创建转发规则,要求OpenFlow交换机将其端口接收的对端发送的邻居报文上报给端口识别单元。
[0036]根据OpenFlow协议规定,对于OpenFlow交换机上报的邻居报文,均需要附带接收报文的端口号(0FPXMT_0FB_IN_P0RT )及其对应的物理端口号(OFPXMT_OFB_IN_PHY_PORT)ο 如果 0FPXMT_0FB_IN_P0RT 等于 0FPXMT_0FB_IN_PHY_P0RT,则说明该接收端口是物理端口,则端口识别单元记录该物理端口信息;如果0FPXMT_0FB_IN_P0RT不等于0FPXMT_0FB_IN_PHY_P0RT,说明接收端口是逻辑端口,则端口识别单元不作任何处理。这样,端口识别单元接收到OpenFlow交换机上报的邻居报文后,就可以识别该OpenFlow接收邻居报文的端口是否为OpenFlow交换机上的物理端口。
[0037]进一步地,端口识别单元通过物理端口发送邻居报文给对端OpenFlow交换机端口的处理过程如下:
[0038]根据识别出的OpenFlow交换机上的物理端口,基于物理端口再次构造邻居报文,并将所述邻居报文发送这些物理端口,然后指示这些物理端口将邻居报文发送给对端OpenFlow交换机对应的端口,其中邻居报文包含的字段与前述步骤I中邻居报文中的字段相同。包括:当前OpenFlow交换机标识(IP、MAC等)、当前端口标识(端口 IP、端口 MAC、端口 ID 等)。
[0039]步骤2、报文处理单元接收OpenFlow交换机物理端口上报的邻居报文,并据此计算出网络拓扑结构。
[0040]在OpenFlow交换机的端口上报对端发送的邻居报文后,报文处理单元只接收物理端口上报的邻居报文,并基于所接收的邻居报文计算拓扑。这样,等所有的邻居报文接收完毕后,OpenFlow的网络拓扑即可正确计算出来。对于OpenFlow交换机上非物理端口上报的邻居报文,则直接作丢弃处理。
[0041]为了使本领域技术人员更加清楚和明白,以下仍结合图3所示的OpenFlow组网应用场景来详细描述本发明实现过程。
[0042]依据本发明方法,端口识别单元首先需要发现所有OpenFlow上的物理端口。具体地,端口识别单元基于OFSl端口 eth2、eth3和Aggregat1nl分别构造邻居报文,并指示这些端口将该邻居报文发送给0FS2的对应端口。0FS2的各端口接收到OFSl端口发送的邻居报文后,将这些报文上报给端口识别单元。对于0FS2上ethl端口收到的报文,上报报文的0FPXMT_0FB_IN_P0RT 字段为 ethl 对应的端口号,0FPXMT_0FB_IN_PHY_P0RT 字段也是 ethl对应的端口号;对于0FS2上eth2收到的报文,上报报文的0FPXMT_0FB_IN_P0RT字段为eth2对应的端口号,OFPXMT_OFB_IN_PHY_PORT字段也是eth2对应的端口号;对于0FS2上的Aggregat1nl端口收到的报文,上报报文的0FPXMT_0FB_IN_P0RT字段为Aggregat1nl对应的端口号,0FPXMT_0FB_IN_PHY_P0RT字段是ethl或eth2对应的端口号;很显然,端口识别单元可以识别出ethl和eth2是0FS2的物理端口,而Aggregat1nl不是。同理,端口识别单元基于0FS2端口 ethl、eth2和Aggregat1nl分别发送邻居报文;在通过OFSl对应端口接收到邻居报文后,可以知道eth2和eth3是OFSl的物理端口。这样,依据本发明邻居发现方法,所述端口识别单元就可以完成获取OFSl和0FS2交换机上所有的物理端口{{0FS2, ethl}, {0FS2, eth2},{0FSl,eth2},{0FS1, eth3}}。
[0043]接着,端口识别单元基于OpenFlow交换机上的物理端口构造邻居报文,并指示这些物理端口向对端OpenFlow交换机的端口发送邻居报文,具体地:所述端口识别单元基于{0FS2,ethl}端口构造并指示发送邻居报文,邻居报文携带0FS2的设备标识(IP、MAC等)、ethl端口标识(端口 IP、端口 MAC、端口 ID等),并通过{0FS2,ethl}发送出去;基于{0FS2, eth2}端口构造并指示发送邻居报文,邻居报文携带0FS2的设备标识(IP、MAC等)、eth2端口标识(端口 IP、端口 MAC、端口 ID等),并通过{0FS2,eth2}发送出去。同理,端口识别单元基于10FS1,eth2}端口构造并指示发送邻居报文,邻居报文携带OFSl的设备标识(1卩、嫩(:等)、6访2端口标识(端口 IP、端口 MAC、端口 ID等),并通过{0FSl,eth2}发送出去;基于{0FSl,eth3}端口构造并指示发送邻居报文,邻居报文携带OFSl的设备标识(IP、MAC等)、eth3端口标识(端口 IP、端口 MAC、端口 ID等),并通过{0FS2,eth3}发送出去。
[0044]最后,所述报文处理单元只处理OpenFlow交换机物理端口上报的来自对端发送的邻居报文,并依据该邻居报文保存的连接关系计算OpenFlow网络拓扑。具体地,所述报文处理单元通过{0FS2, ethl}端口接收到邻居报文{0FSl,eth2},由于{0FS2, ethl}和{0FSl,eth2}都是物理端口,因此上报该报文到报文处理单元以便所述报文处理单元根据该邻居报文来保存OpenFlow交换机间的连接关系(OFS1: eth2-0FS2: ethI);同理,报文处理单元通过{0FS2, eth2}端口接收到邻居报文{0FSl,eth3},由于{0FS2, eth2}和{0FSl,eth3}都是物理端口,因此经报文处理单元处理后保存连接关系(0FSl:eth2-0FS2: ethl; OFSl: eth3_0FS2: eth2);当报文接收单兀通过{0FS2, Aggregat1nl}端 P接收到邻居报文{0FS1, eth2}和{0FS1, eth3},由于{0FS2, Aggregat1nl}不是物理端口,因此直接丢弃相关邻居信息;当报文处理单元通过{0FSl,eth2}接收到邻居报文{0FS2, ethl},由于{0FS2, ethl}和{0FS1, eth2}都是物理端口,需要保存连接关系,但由于(0FSl:eth2-0FS2:ethl)已经存在,因此不再执行保存操作;报文处理单元通过{0FS1, eth3}端口接收到邻居报文{0FS2, eth2},由于{0FS1, eth3}和{0FS2, eth2}都是物理端口,需要保存连接关系,但由于(0FS1: eth3-0FS2:eth2)已经存在,因此不再执行保存操作;当邻居发现装置上的报文处理单元通过{0FS1, Aggregat1nl}端口接收到邻居报文{0FS2, ethl}和{0FS2,eth2},由于{0FS1, Aggregat1nl}不是物理端口,因此丢弃相关邻居信息;最终,根据OpenFlow控制器上保存的连接关系(0FS1: eth2_0FS2: ethl; OFSl: eth3-0FS2:eth2),所述邻居发现装置即可得到正确的OpenFlow网络拓扑。
[0045]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种邻居发现装置,应用在物理端口和逻辑端口共存的OpenFlow网络环境中,包括有端口识别单元和报文处理单元,其特征在于: 端口识别单元,用于识别出所有OpenFlow交换机上的物理端口,并基于物理端口构造并发送邻居报文给对端OpenFlow交换机; 报文处理单元,用于接收OpenFlow交换机物理端口上报的邻居报文,并据此计算出网络拓扑结构。
2.如权利要求1所述的装置,其特征在于,端口识别单元识别OpenFlow交换机上的物理端口的过程如下: 遍历所有的OpenFlow交换机,获取每台OpenFlow交换机上的端口 ; 基于获取的OpenFlow交换机上的端口构造邻居报文,并要求该OpenFlow交换机的端口在接收到邻居报文后将之发送给对端OpenFlow交换机; 接收OpenFlow交换机上报的邻居报文并识别接收邻居报文的端口是否为物理端口。
3.如权利要求2所述的装置,其特征在于,当OpenFlow交换机上报的邻居报文中携带的接收报文的端口号与物理端口号相等,则端口识别单元识别该接收端口是物理端口。
4.如权利要求3所述的装置,其特征在于,报文处理单元用于计算网络拓扑结构的邻居报文,是端口识别单元根据构造的邻居报文识别出所有OpenFlow交换机上的物理端口后,基于物理端口再次构造的邻居报文。
5.如权利要求4所述的装置,其特征在于,报文处理单元在接收到OpenFlow交换机的非物理端口上报的邻居报文后进行丢弃处理。
6.一种邻居发现方法,应用在物理端口和逻辑端口共存的OpenFlow网络环境中,其特征在于,所述方法包括如下步骤: 步骤1、识别出所有OpenFlow交换机上的物理端口,并基于物理端口构造并发送邻居报文给对端OpenFlow交换机; 步骤2、接收OpenFlow交换机物理端口上报的邻居报文,并据此计算出网络拓扑结构。
7.如权利要求6所述的方法,其特征在于,所述步骤I识别OpenFlow交换机上的端口为物理端口的过程如下: 遍历所有的OpenFlow交换机,获取每台OpenFlow交换机上的端口 ; 基于获取的OpenFlow交换机上的端口构造邻居报文,并要求该OpenFlow交换机的端口在接收到邻居报文后将之发送给对端OpenFlow交换机; 接收OpenFlow交换机上报的邻居报文并识别接收邻居报文的端口是否为物理端口。
8.如权利要求7所述的方法,其特征在于,当OpenFlow交换机上报的邻居报文中携带的接收报文的端口号与物理端口号相等,则识别该接收端口是物理端口。
9.如权利要求8所述的方法,其特征在于,所述步骤2用于计算网络拓扑结构的邻居报文,是所述步骤I根据构造的邻居报文识别出所有OpenFlow交换机上的物理端口后,基于物理端口再次构造的邻居报文。
10.如权利要求9所述的方法,其特征在于,所述步骤2在接收到OpenFlow交换机的非物理端口上报的邻居报文后进行丢弃处理。
【文档编号】H04L12/751GK104243319SQ201310227239
【公开日】2014年12月24日 申请日期:2013年6月6日 优先权日:2013年6月6日
【发明者】曾勇刚 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1