一种基于软件定义网络的主机网卡ip地址获取方法

xiaoxiao2021-2-23  112

一种基于软件定义网络的主机网卡ip地址获取方法
【技术领域】
[0001]本发明涉及一种基于软件定义网络的主机网卡ip地址获取方法,属于信息技术领域,特别是属于软件定义网络技术领域。
【背景技术】
[0002]软件定义网络(Software Defined Networking,SDN)是一个集中控制网络,SDN控制器将多个网络节点统一控制起来,可以较容易地获取网络设备信息、控制网络设备,对应用/客户呈现一个统一的网络视图,其中有交换机,路由器,虚拟机、存储、虚拟子网以及用于虚拟子网之间通信的虚拟网关,用户可以按照自己的网络规划去配置虚拟机的IP地址、配置子网以及子网间的路由规则。SDN的开放定制和集中控制特性,在一定程度上解决了因特网僵化的问题,赋予了用户自定制网络体系和网络协议的能力,用户在一定程度上可以根据自己的需求开发、控制自己的应用和硬件平台,可以自主灵活构建私有网络。
[0003]MPTCP是IETF的MPTCP工作组对传统TCP的扩展,添加了 MPTCP层,原有的TCP层变为多个subflow层,而每个subflow层又都对应一个IP层,也就是每个subflow可以视为一个TCP连接。MPTCP使得用户能够在不相关的路径上建立对应连接,并在这些路径上以单独的子流的方式进行数据传输。
[0004]把软件定义网络和MPTCP两者的优势相结合,为用户在SDN上提供多路径数据传输成为目前网络技术领域的一个重要研究方向,但是要实现SDN上多路径的数据传输,主机多网卡的IP地址就需要告知SDN控制器和通信对端,如何有效实现这一点成为软件定义网络领域急需解决的一个技术难题。

【发明内容】

[0005]有鉴于此,本发明的目的是发明一种方法,实现对软件定义网络SDN中的主机的多网卡IP地址的有效获取,为实现主机之间的多路径数据传输提供基础。为了达到上述目的,本发明提出了一种基于软件定义网络的主机网卡IP地址获取方法,所述方法包括下列操作步骤:
[0006](1)发送方主机A通过软件定义网络SDN与接收方主机B建立第一次连接,该连接是在所述软件定义网络SDN的控制器控制下进行的,该连接使用MPTCP协议的三次握手方式完成;所述的主机A与主机B第一次连接建立后,所述的SDN控制器记录该连接的四元组,8卩:源端口地址,目的端口地址,源IP地址,目的IP地址;
[0007](2)主机A向主机B发送重复应答Dupack报文,该报文中包含添加地址选项MP_Addaddress,同时将目的端口地址加上一个预先设定的固定偏移值;该Dupack报文与主机A的接入侧openf low协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的Dupack报文发送给所述的软件定义网络SDN的控制器;所述的添加地址选项MP_Addaddress中包含了主机A的其它网卡的IP地址;
[0008](3)所述的SDN控制器收到该Packet_in消息,解析出所述的Dupack报文,所述的SDN控制器识别出所述的Dupack报文中目的端口地址的特定修改,于是所述的SDN控制器对所述的Dupack报文进行解析,获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址;
[0009](4)所述的SDN控制器对所述的Dupack报文中的目的端口地址进行修改,恢复成主机A原有的目的端口地址,然后SDN控制器通过Packet_out消息将该修改后的Dupack报文发送给主机B的接入侧openflow协议交换机B,这个消息命令该openflow协议交换机B将收到的所述的Dupack报文转发给主机B ;
[0010](5)所述的主机B接收到所述的包含添加地址选项MP_Addaddress的Dupack报文后,对该Dupack报文是否包含添加地址选项MP_Addaddress进行判定,如果包含则解析出添加地址选项MP_Addaddress,这样主机B就获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址。
[0011 ]所述步骤(1)的内容具体包括如下操作子步骤:
[0012](11)所述的发送方主机A向所述的接收方主机B发送带有MP_CAPABLE选项的SYN报文,请求建立主机A与主机B之间的第一次连接;
[0013](12)该SYN报文与主机A的接入侧openf low协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的SYN报文发送给所述的软件定义网络SDN的控制器;
[0014](13)所述的SDN控制器为所述的主机A与主机B之间的第一次连接建立路径,并向该路径上相关的op enf 1 ow协议交换机下发双向流表;
[0015](14)所述的SDN控制器通过Packet_out消息将所述的SYN报文发送给所述的主机A的接入侧openflow协议交换机A,于是该SYN报文按照下发好的流表到达所述的主机B;
[0016](15)之后主机A和主机B之间的两次握手的报文(S卩SYN+ACK报文和ACK报文)和数据传输都将在该路径上完成;
[0017](16)所述的SDN控制器记录所述的主机A与主机B之间的第一次连接的四元组,SP:源端口地址,目的端口地址,源IP地址,目的IP地址。
[0018]本发明的有益效果在于克服了现有的SDN网络控制器不能获取到网络边缘侧与openf low协议交换机相连的主机网卡信息,S卩SDN控制器不能获取到哪些IP地址是属于同一台主机的,而本专利使得位于网络中心的SDN控制器可以动态获取到网络边缘侧的主机与主机网卡IP地址的对应关系,SDN获取到这些信息后可以更全面的了解到网络整体拓扑情况,从而计算出主机之间的合理通信路径。
【附图说明】
[0019]图1是本发明提出的一种基于软件定义网络的主机网卡IP地址获取方法的流程图。
【具体实施方式】
[0020]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0021]参见图1,介绍本发明提出的一种基于软件定义网络的主机网卡IP地址获取方法,所述方法包括下列操作步骤:
[0022](1)发送方主机A通过软件定义网络SDN与接收方主机B建立第一次连接,该连接是在所述软件定义网络SDN的控制器控制下进行的,该连接使用MPTCP协议的三次握手方式完成;所述的主机A与主机B第一次连接建立后,所述的SDN控制器记录该连接的四元组,8卩:源端口地址,目的端口地址,源IP地址,目的IP地址;
[0023](2)主机A向主机B发送重复应答Dupack报文,该报文中包含添加地址选项MP_Addaddress,同时将目的端口地址加上一个预先设定的固定偏移值,(例如:固定偏移值为900);该0卯3。1^报文与主机A的接入侧openf low协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的Dupack报文发送给所述的软件定义网络SDN的控制器;所述的添加地址选项MP_Addaddress中包含了主机A的其它网卡的IP地址(例如:在我们在实验中, 主机A还包含其他两张网卡,网卡地址分别为10.108.127.234和10.108.127.245);
[0024](3)所述的SDN控制器收到该Packet_in消息,解析出所述的Dupack报文,所述的SDN控制器识别出所述的Dupack报文中目的端口地址的特定修改,于是所述的SDN控制器对所述的Dupack报文进行解析,获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址;
[0025](4)所述的SDN控制器对所述的Dupack报文中的目的端口地址减去前面预先设定的固定偏差值(例如:固定偏移值为900),恢复成主机A原有的目的端口地址,然后SDN控制器通过Packet_out消息将该修改后的Dupack报文发送给主机B的接入侧openf low协议交换机B,这个消息命令该openf low协议交换机B将收到的所述的Dupack报文转发给主机B;
[0026](5)所述的主机B接收到所述的包含添加地址选项MP_Addaddress的Dupack报文后,对该Dupack报文是否包含添加地址选项MP_Addaddress进行判定,如果包含则解析出添加地址选项MP_Addaddress,这样主机B就获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址。
[0027]所述步骤(1)的内容具体包括如下操作子步骤:
[0028](11)所述的发送方主机A向所述的接收方主机B发送带有MP_CAPABLE选项的SYN报文,请求建立主机A与主机B之间的第一次连接;
[0029](12)该SYN报文与主机A的接入侧openf low协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的SYN报文发送给所述的软件定义网络SDN的控制器;
[0030](13)所述的SDN控制器为所述的主机A与主机B之间的第一次连接建立路径(第一次连接通过tcp的三次握手方式建立,即A向B发送syn,B收到该信息后回复syn+ack,A最后发送ack),并向该路径上相关的openf low协议交换机下发双向流表;
[0031 ] (14)所述的SDN控制器通过Packet_out消息将所述的SYN报文发送给所述的主机A的接入侧openflow协议交换机A,于是该SYN报文按照下发好的流表到达所述的主机B;
[0032](15)之后主机A和主机B之间的两次握手的报文(S卩SYN+ACK报文和ACK报文)和数据传输都将在该路径上完成;
[0033](16)所述的SDN控制器记录所述的主机A与主机B之间的第一次连接的四元组,SP:源端口地址,目的端口地址,源IP地址,目的IP地址。
[0034]发明人对本发明的方法在试验网上进行了测试,经过大量的实验和仿真,获得了满意的实验结果,证实本发明方法是可行且非常有效的。
【主权项】
1.一种基于软件定义网络的主机网卡IP地址获取方法,其特征在于:所述方法包括下列操作步骤: (1)发送方主机A通过软件定义网络SDN与接收方主机B建立第一次连接,该连接是在所述软件定义网络SDN的控制器控制下进行的,该连接使用MPTCP协议的三次握手方式完成;所述的主机A与主机B第一次连接建立后,所述的SDN控制器记录该连接的四元组,S卩:源端口地址,目的端口地址,源IP地址,目的IP地址; (2)主机A向主机B发送重复应答Dupack报文,该报文中包含添加地址选项MP_Addaddress,同时将目的端口地址加上一个预先设定的固定偏移值;该Dupack报文与主机A的接入侧openflow协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的Dupack报文发送给所述的软件定义网络SDN的控制器;所述的添加地址选项MP_Addaddress中包含了主机A的其它网卡的IP地址; (3)所述的SDN控制器收到该Packet_in消息,解析出所述的Dupack报文,所述的SDN控制器识别出所述的Dupack报文中目的端口地址的特定修改,于是所述的SDN控制器对所述的Dupack报文进行解析,获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址; (4)所述的SDN控制器对所述的Dupack报文中的目的端口地址进行修改,恢复成主机A原有的目的端口地址,然后SDN控制器通过Packet_out消息将该修改后的Dupack报文发送给主机B的接入侧openf low协议交换机B,这个消息命令该openf low协议交换机B将收到的所述的Dupack报文转发给主机B ; (5)所述的主机B接收到所述的包含添加地址选项MP_Addaddress的Dupack报文后,对该Dupack报文是否包含添加地址选项MP_Addaddress进行判定,如果包含则解析出添加地址选项MP_Addaddress,这样主机B就获取到所述的添加地址选项MP_Addaddress中所包含的主机A的其它网卡的IP地址。2.根据权利要求1所述的一种基于软件定义网络的主机网卡IP地址获取方法,其特征在于:所述步骤(1)的内容具体包括如下操作子步骤: (11)所述的发送方主机A向所述的接收方主机B发送带有MP_CAPABLE选项的SYN报文,请求建立主机A与主机B之间的第一次连接; (12)该SYN报文与主机A的接入侧openflow协议交换机A的流表失配,于是该openf low协议交换机A通过Packet_in消息,将所述的SYN报文发送给所述的软件定义网络SDN的控制器; (13)所述的SDN控制器为所述的主机A与主机B之间的第一次连接建立路径,并向该路径上相关的op enf 1 ow协议交换机下发双向流表; (14)所述的SDN控制器通过Packet_out消息将所述的SYN报文发送给所述的主机A的接入侧openflow协议交换机A,于是该SYN报文按照下发好的流表到达所述的主机B; (15)之后主机A和主机B之间的两次握手的报文(S卩SYN+ACK报文和ACK报文)和数据传输都将在该路径上完成; (16)所述的SDN控制器记录所述的主机A与主机B之间的第一次连接的四元组,S卩:源端口地址,目的端口地址,源IP地址,目的IP地址。
【专利摘要】一种基于软件定义网络的主机网卡IP地址获取方法,包括下列操作步骤:(1)发送方主机A与接收方主机B建立第一次连接;(2)主机A向主机B发送重复应答Dupack报文,该报文中包含添加地址选项MP_Addaddress;(3)SDN控制器获取到MP_Addaddress中所包含的主机A的其它网卡IP地址;(4)主机B侧的openflow协议交换机将收到的Dupack报文转发给主机B;(5)主机B获取到MP_Addaddress中所包含的主机A的其它网卡IP地址。
【IPC分类】H04L12/741, H04L29/12
【公开号】CN105491178
【申请号】CN201510817368
【发明人】廖建新, 王纯, 陆中豪, 包剑楠, 张乐剑, 徐童
【申请人】北京邮电大学
【公开日】2016年4月13日
【申请日】2015年11月23日

最新回复(0)