基于OpenFlow的地址解析协议代理技术的实现方法与流程

文档序号:13237251阅读:221来源:国知局
技术领域本发明属于计算机网络技术领域。

背景技术:
传统IT架构中的网络,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机、防火墙)上的配置是一件非常繁琐的事情。在互联网/移动互联网瞬息万变的业务环境下,网络的高稳定与高性能还不足以满足业务需求,灵活性和敏捷性反而更为关键。SDN所做的事是将网络设备上的控制权分离出来,由集中的控制器管理,无须依赖底层网络设备(路由器、交换机、防火墙),屏蔽了来自底层网络设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的网络路由和传输规则策略,从而更加灵活和智能。进行SDN改造后,无需对网络中每个节点的路由器反复进行配置,网络中的设备本身就是自动化连通的。只需要在使用时定义好简单的网络规则即可。如果你不喜欢路由器自身内置的协议,可以通过编程的方式对其进行修改,以实现更好的数据交换性能。在香港、美国已经非常流行的云主机概念在我国也慢慢开始崭露头角,云主机是云计算在基础设施应用上的重要组成部分,位于云计算产业链金字塔底层,产品源自云计算平台。该平台整合了互联网应用三大核心要素:计算、存储、网络,面向用户提供公用化的互联网基础设施服务。云主机是一种类似VPS主机的虚拟化技术,VPS是采用虚拟软件,VZ或VM在一台主机上虚拟出多个类似独立主机的部分,能够实现单机多用户,每个部分都可以做单独的操作系统,管理方法同主机一样。而云主机是在一组集群主机上虚拟出多个类似独立主机的部分,集群中每个主机上都有云主机的一个镜像,从而大大提高了虚拟主机的安全稳定性,除非所有的集群内主机全部出现问题,云主机才会无法访问。值得一提的是企业在租用云主机的时候,其租用的所有主机可能并不在一个数据中心,甚至不在一个城市。那么企业租用的云主机的物理网络可能并不在相同网段,虽然在企业内部所有租用的云主机都是在相同网段之下。那么在物理网络中不同网段的云主机在企业网络中如何进行通信,就成了一件十分复杂的事情。我们已经知道要进行主机间通信,则必须先发出ARP请求获取到目的主机的MAC地址。那么企业租用的各个云主机之间可能跨越多个不同的网络,要想将ARP请求转发到目的主机,在传统网络中就必须利用网络隧道技术在两台主机之间所连接的网络中传输消息。因为我们并不清楚云服务提供商所分配给企业的云主机都存放在什么位置,跨越了多少网络。简单来说就是将源主机发出的ARP请求封装在一个特定的数据包中,利用网络隧道协议将此数据包转发到连接目的主机的网络当中去,然后再对数据包进行解封装,最后达到目的主机。这样做的成本比较高,效率比较低,实现起来工作量也是巨大的。因此,随着云服务的发展,传统网络在这方面的劣势就显现出来,而我们通过SDN的方式进行ARP代理则能够很好的解决这个问题。众所周知,在SDN架构中,控制器是整个网络中的大脑,网络中所有主机必须与控制器相连接,而控制器则掌握了所有主机的信息。因此,如果在不同网络下的主机间要进行通信,则可以把ARP请求先发送到控制器,因为控制器知道网络内所有主机的信息,则控制器可以直接将目的主机的MAC地址回复给源主机。这样就方便高效的解决两主机之间的通信的问题。DHCPSnooping技术是DHCP安全特性,通过建立和维护DHCPSnooping绑定表过滤不可信任的DHCP信息,这些信息是指来自不信任区域的DHCP信息。DHCPSnooping绑定表包含不信任区域的用户IP地址、MAC地址、租用期、VLAN-ID接口等信息。当交换机开启了DHCP-Snooping后,会对DHCP报文进行侦听,并可以从接收到的DHCPRequest或DHCPAck报文中提取并记录IP地址和MAC地址信息。另外,DHCP-Snooping允许将某个物理端口设置为信任端口或不信任端口。信任端口可以正常接收并转发DHCPOffer报文,而不信任端口会将接收到的DHCPOffer报文丢弃。这样,可以完成交换机对假冒DHCPServer的屏蔽作用,确保客户端从合法的DHCPServer获取IP地址。DHCPSnooping的作用(1).DHCPSnooping的主要作用就是隔绝非法的DHCPServer,通过配置非信任端口。(2).与交换机DAI的配合,防止ARP病毒的传播。(3).建立和维护一张DHCPSnooping的绑定表,这张表一是通过DHCPAck包中的IP和MAC地址生成的,二是可以手工指定。这张表是后续DAI(dynamicarpinspect)和IPSourceGuard基础。这两种类似的技术,是通过这张表来判定IP或者MAC地址是否合法,来限制用户连接到网络的。在本方案中,通过对上传到控制器的DHCP数据包进行操作与分析,将需要得到的数据自动提取出来建立一张绑定表,不需要手工添加,IP、MAC、PORT等信息一一对应,绑定关系建立后,从相应的端口收到的数据报文,根据其源地址是否在端口绑定关系表中有匹配来确定报文是否合法,从而对合法报文正常转发,非法报文则丢弃,这大大提升了系统的安全性。在大型数据中心,有着成千上万的主机,通过利用SDN的优势,将接入到网络中的所有主机信息进行整合,建立和维护一张绑定表,这样不仅获得了所有主机的详细信息,为ARP代理及主机通信提供必要的数据,而且对于日常主机的集中管理有着非常大的帮助。这是传统网络所无法比拟的优势,也是我研究此项工作的意义。

技术实现要素:
在SDN环境下的ARP代理在研究意义中已经详细列出,SDN网络本身就是一项十分具有创新意义的技术。我们以SDN为大背景,利用其自身特点开发出一种比传统网络更高效更安全的ARP代理方案。与传统网络相比,我们的ARP代理方案有许多创新之处,详细介绍如下:控制器在SDN网络环境当中至关重要,我们的方案是在控制器当中创建一张存有主机相关信息的dhcp_lease表,其中包括主机IP地址,主机MAC地址,主机端口号,IP地址获得时间,IP租约时间。然而这些数据我们都能够自动获得,不需要人工干预,并且保证所获得数据的安全性。因此我们的ARP代理方案采用DHCP代理的方法同时获得主机IP地址,主机MAC地址,主机端口号,IP地址获得时间,IP租约时间。我们通过模拟DHCP协议的工作流程自动获取我们想要的数据,并且写入dhcp_lease表中。这也是我们这个方案的另一个创新点。其中主机IP地址与主机MAC为对应关系,如果主机IP地址租约到期,则表中此条表项会被删除,主机MAC地址不再与此IP地址对应。程序启动则自动下发匹配ARP,DHCP数据包的流表,将匹配流表的数据包上传到控制器并同时启动扫描dhcp_lease表中过期主机IP表项的定时器scan_expire。与此同时如果收到主机客户端发出的DHCPDISCOVER或者DHCPREQUEST报文时,提取报文中的event.port即端口号信息写入dhcp_lease表中。收到DHCPACK报文时,提取报文中DHCP服务器分配给该主机的IP地址同该主机的MAC地址,IP获取的时间以及IP的生存周期一起写入dhcp_lease表中。至此,控制器就完成了操作匹配上来的DHCP数据包,将我们所需要的数据自动构建为一张dhcp_lease表,为之后的ARP代理提供必要的数据。接下来详细介绍一下我们的ARP代理方案的实现方法。当主机发出ARPREQUEST时,此时该ARPREQUEST报文将不会转发到目的主机处,而是由控制器提取ARPREQUEST数据包中的目的IP地址,将其与dhcp_lease表中的第一列即主机IP信息进行比较,如果发现匹配项,则按照ARPREPLY的格式构造包含目的MAC地址的ARPREPLY应答包,将其代理回复给发出ARPREQUEST的主机。当发出ARPREQUEST的主机得到目的主机的MAC地址后,继续发送ICMPREQUEST报文,因为根据下发的流表规则,匹配的数据包都会先上传到控制器,所以当控制器收到此ICMPREQUEST报文后,则会提取出该数据包中包含的目的IP地址,继续与dhcp_lease表中的第一列进行比较,发现匹配项,则把相应主机的端口号提取出来封装在Packet_out消息中,将ICMPREQUEST报文通过Packet_out消息转发到目的主机中,目的主机收到此报文后则会回复ICMPREPLY报文。至此,两台主机成功通过控制器代理ARP的方式实现了相互通信。在整个程序运行当中,定时器也在不停的运转,每隔一段时间扫描一次dhcp_lease表。scan_expire()顾名思义为扫描过期项。它的功能就是将dhcp_lease表中过期的IP条目信息删除,因为DHCP服务器分配给每个主机的IP地址都是有租约的,租约到期则自动释放掉此IP地址。结合实际情况,如果我们构造的dhcp_lease表中的IP地址过期,即主机MAC不再与IP地址所对应,那么之后的ARP代理过程中将会出现问题。本程序将定时器设定为每30秒扫描一次dhcp_lease表,用当前系统时间减去表中此IP地址的写入时间,差值如果大于表中所定义的生存周期,即表明此IP地址租约到期,被DHCP服务器收回待分配,则将此条IP信息从dhcp_lease表中删除。附图说明图1是开发实验环境示意图。具体实施方式本程序是以POX作为控制器,基于Openflow1.0协议下开发。POX提供了几个基本组件完成常见包的解析,通过下发匹配数据包的流表将数据包上传到控制器,对数据包的操作则在Packet_in事件中完成。处理完之后POX控制器则向Openflow交换机发送Packet_out消息。开发实验环境:控制器:POX控制器Openvswitch版本:2.3.0PC1系统版本:Ubuntu14.04.2LTSPC2系统版本:Windows7PC3系统版本:Windows7控制器POX及Openvswitch交换机运行在一台装有Ubuntu14.04.2LTS系统版本的PC机上,称为PC1。此PC1配备3个网卡接口。加上两台装有Windows7系统的PC2,PC3组成了本实验的模拟环境。装有控制器POX,OVS的PC机称为控制主机PC1,两台Window7系统的PC称为PC2与PC3,PC2与PC3分别连接在PC1的2个网卡上,通过OVS搭建的桥br0将两台PC连接在一起,PC1的另外一个网卡与DHCP服务器相连,这样,PC2,PC3通过桥接都可以与DHCP服务器通信,获得DHCP服务。实验效果:本程序用2台PC模拟网络中任意2台不同的主机,它们分别从DHCP服务器获取自己的IP地址与此同时控制器POX也获得了两台PC的相关信息并建立成表。之后PC2可通过利用本方案提出的ARP代理技术与PC3建立通信。本发明在计算机中是依次按以下步骤实现的:步骤(1):下发匹配ARP,DHCP数据包的流表在PC1上启动程序,下发匹配ARP,DHCP数据包的流表,然后将与流表匹配的数据包上传到控制器POX步骤(2):启动定时器扫描过期IP条目启动扫描dhcp_lease表中过期主机IP表项的定时器scan_expire,在整个程序运行期间按照程序定义的内容不间断的运行,定时器的设置的功能如下:步骤(2.1):打印出系统时间便于观察与分析。步骤(2.2):遍历list_all列表,將过期的IP条目信息删除,將未过期的条目重新写入磁盘文档。步骤(2.3):把时间格式化,转化为系统能够处理的格式。步骤(2.4):將IP条目写入的时间与当前的时间换算成秒。步骤(2.5):用当前的时间减去IP条目信息写入到磁盘的时间得出这条信息已经存在的时间。步骤(2.6):如果IP条目信息存在的时间大于规定的租约时间则删除这条信息。步骤(2.7):定时器每隔30秒钟扫描一次。步骤(3):PC2,PC3获取通过DHCP服务申请IP地址在PC2,PC3上输入ipconfig/renew命令,向DHCP服务器申请IP地址,此命令触发arp_dhcp_handler.py中DHCP模块的相关操作,即把PC2,PC3的相关信息写入dhcp_lease表中。控制器通过对上传的DHCP数据包进行解析,将其主要信息提取出来写入表中,表中内容从头到尾一次为,PC2,PC3获得的IP地址、PC2,PC3的MAC地址、PC2,PC3与PC1连接的端口号、IP获取时间、IP生存周期。步骤(4):实现控制器代理ARP功能。程序启动时已经下发了匹配DHCP,ARP数据包的流表使其上传到控制器。要想实现网络内的主机PC2与PC3之间的相互通信,首先PC2需发出ARP请求,ARP请求数据包被上传到控制器POX,控制器POX提取PC2发出的ARP请求包中的目的IP地址信息,使其与dhcp_lease表中的第一列即主机IP信息进行匹配,发现与PC3的信息匹配,则将第二列中的PC3的MAC地址代理回复给发出ARP请求的主机PC2。当发出ARP请求的主机PC2学习到目的主机PC3的MAC地址后,则会继续发送ICMPREQUEST报文,当控制器获取到此报文后,则会提取出数据包中包含的目的IP地址,继续与dhcp_lease表中的第一列进行比较,发现匹配项,则把相应主机PC3的OpenFlow端口号提取出来封装在Packet_out消息中,然后转发到目的主机PC3中,之后目的主机PC3发送ICMPREPLY报文至PC2。至此,两台主机满足通信所具备的的条件因此实现相互通信。步骤(5):下发匹配目的主机IP,目的主机端口号到流表下发匹配目的主机PC3的IP,端口号的流表。使之后类似的数据包直接按流表规则从交换机直接转发,不再上传到控制器。这样既能够保证通信效率也能够减轻控制器的负载,从而保证整个网络正常运转。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1