CN101710864A - 一种多网口Linux服务器的配置方法及装置 - Google Patents

一种多网口Linux服务器的配置方法及装置 Download PDF

Info

Publication number
CN101710864A
CN101710864A CN200910238238A CN200910238238A CN101710864A CN 101710864 A CN101710864 A CN 101710864A CN 200910238238 A CN200910238238 A CN 200910238238A CN 200910238238 A CN200910238238 A CN 200910238238A CN 101710864 A CN101710864 A CN 101710864A
Authority
CN
China
Prior art keywords
network interface
route
address
routing table
gateway
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.)
Granted
Application number
CN200910238238A
Other languages
English (en)
Other versions
CN101710864B (zh
Inventor
梁建适
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lu Mingchang
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2009102382387A priority Critical patent/CN101710864B/zh
Publication of CN101710864A publication Critical patent/CN101710864A/zh
Application granted granted Critical
Publication of CN101710864B publication Critical patent/CN101710864B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种多网口Linux服务器的配置方法,获取Linux服务器各网口的配置信息,根据配置信息对网口进行分类;重新配置各个网口的地址和路由;设置策略路由规则,根据策略路由规则和网口配置构造特定路由表,并刷新路由缓存,使特定路由表路由立即生效。本发明还提供了一种多网口Linux服务器的配置装置,采用本发明,能在保证***灵活性的同时,提高网口的利用率。

Description

一种多网口Linux服务器的配置方法及装置
技术领域
本发明涉及网络通讯的端口配置技术,特别是指一种多网口Linux服务器的配置方法及装置。
背景技术
在Linux***中,与外部通信一般需要三个步骤:
步骤1:发送方按照传输控制协议/网际协议(TCP/IP)生成IP数据包,所述数据包由IP源地址、IP目的地址、IP数据等组成;
步骤2:发送方在Linux***的路由缓存(route cache)中查询可用的路由条目,如果找到准确匹配的路由条目,则按照路由条目发送生成的IP数据包;如果没有找到匹配的路由条目,则在路由表(route table)中根据最长前缀匹配(LPM)算法查找路由条目;
其中,所述匹配的路由条目为:数据包的IP目的地址所对应网络的网络前缀与路由条目中的目的网络前缀相符;
步骤3:发送方根据route cache或route table中匹配的路由条目所指定的网口,发送IP数据包。
在只有一个网络接口的Linux***中,路由条目简单,所有的数据包都从一个网口进出。而对于拥有多个网口的Linux***来说,情况就会比较复杂:假设每一个网口都配置一个IP地址,不同的网口可能对应同一个网络,数据包的IP源地址,只与其中一个网口对应,当Linux***需要发送数据包时,Linux***根据数据包的IP目的地址,在路由表中选择第一个与IP目的地址相符的路由条目,此路由条目对应的网口的IP地址,可能与数据包的IP源地址不一致。在使用其他网口发数据包时,也会出现同样的问题,如此,就可能导致一个网口的带宽利用率很高,而另一个端口的带宽利用率几乎为零,造成不必要的资源浪费。
基于上述问题,现有技术中提出一种解决方案:通过设置套接字(SOCKET)属性的方式,将SOCKET绑定到指定网口上,这样,数据包就可以从指定网口发送出去,但是,这种方法有如下缺点:
第一、需要应用程序修改代码,增加绑定SOCKET到网口的设置,比较麻烦;第二、如果SOCKET绑定到错误的网口,会导致正常数据通信中断;第三、将SOCKET绑定到指定的网口,只能在此网口上接收数据包,其他网口无法被利用,应用不灵活。
现有技术中,还有解决方案提出:通过Linux***的IP ROUTE2来完成负载均衡,对数据包按照时间或者其他规则进行划分,使数据包从不同网口发送,虽然可以利用不同网口的带宽,但是规则制定后,无法控制数据包的出口,降低了***的灵活性。
发明内容
有鉴于此,本发明的主要目的在于提供一种多网口Linux服务器的配置方法及装置,能在保证***灵活性的同时,提高网口的利用率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种多网口Linux服务器的配置方法,包括:
获取Linux服务器各网口的配置信息,根据配置信息对网口进行分类;
重新配置各个网口的地址和路由;
设置策略路由规则,根据策略路由规则和网口配置构造特定路由表,并刷新路由缓存。
其中,所述根据配置信息对网口进行分类包括:以网口的IP地址和子网掩码的与操作为关键字,将关键字相同的网口分为一类,并将分类结果存储在数组中,数组中的元素为网口的配置信息,数组为网口的索引。
上述方案中,所述策略路由规则为:Linux***根据数据包的IP源地址查询与网口对应的特定路由表。所述根据策略路由规则和网口配置构造特定路由表包括:指定路由的网口地址、目的IP地址和子网掩码,并指定将路由存储在与此网口对应的特定路由表中;每个网口唯一对应一个特定路由表。
上述方案中,所述重新配置各个网口的地址和路由包括:通过ioctl_set_ifaddr接口设置网口的IP地址和子网掩码,通过ioctl_set_route接口设置网口的默认路由,指定默认路由的网口地址、网关地址,并将目的IP地址与子网掩码设置为0。
本发明还提供了一种多网口Linux服务器的配置装置,包括:
网口配置获取模块,用于获取Linux服务器中各个网口的配置信息,并发送给网口分类模块;
网口分类模块,用于根据网口配置获取模块获得的网口配置信息,对网口进行分类;
网口配置模块,用于根据分类后的网口配置信息,重新配置各个网口的地址和路由;
策略路由规则生成模块,用于设置策略路由规则;
路由表构造模块,用于根据策略路由规则和网口配置构造特定路由表;
路由缓存刷新模块,用于刷新路由缓存。
由此可见,本发明所提供的多网口Linux服务器的配置方法及装置,根据网口地址发送数据包,如此,不仅不需要修改应用程序的代码,实现简单方便,而且,可以使不同的数据包从不同的网口发送,因此,能更好的增加网口的利用率,提高带宽利用率和***的灵活性。
附图说明
图1为本发明多网口Linux服务器配置方法的实现流程示意图;
图2为本发明中网口分类的实现流程示意图;
图3为本发明多网口Linux服务器配置装置的组成结构示意图。
具体实施方式
本发明的基本思想为:重新配置Linux服务器各网口,并设置Linux服务器的策略路由规则,根据设置的策略路由规则和网口配置构造特定路由表,每个网口对应一个特定路由表,Linux服务器根据数据包的源IP地址查找特定路由表,根据路由表中的路由条目发送数据包。
这里,每个Linux服务器中均装载并执行Linux***。
所述策略路由规则可以是:Linux***根据数据包的IP源地址即网口地址查询与网口对应的特定路由表;也可以是:Linux***根据数据包的IP目的地址查询与网口对应的特定路由表,且实际应用中,不限于上述方法,只要能实现不同数据包从不同网口发送即可。
所述特定路由表为Linux***预设的路由表,通过ip_add_route接口构造,区别于***路由表,特定路由表序号在1到32765之间,每个网口对应一个特定路由表。
下面通过具体实施例结合附图对本发明进一步详细说明。
本发明多网口Linux服务器的配置方法如图1所示,包括以下步骤:
步骤101,获取Linux服务器各网口的配置信息,并根据所获取的网口配置信息对网口进行分类;
这里,所述获取是通过ioctl_get_allifaddrs接口获取各个网口的配置信息;其中,所述配置信息包括IP地址、子网掩码以及当前网口配置的下一跳地址,即网关地址等。所述ioctl_get_allifaddrs接口是对Linux***的ioctl编程接口的封装,主要功能为获取服务器中包含各个网口配置信息的数据块,并从数据块解析出网口配置信息。
所述对网口进行分类为:对所获取的网口配置信息,以网口的IP地址和子网掩码的与操作为关键字(KEY),具有相同关键字的网口为一类。
实际操作中,可设定一个数组NETSEG[SegCnt][count],用于存储网口分类信息;网口分类后,数组的每一行对应同一类网口,每一行的每个元素对应某一类网口中一个网口的配置信息,数组中的元素就是网口的索引。
步骤102,根据分类后的网口配置信息重新配置Linux服务器的各网口;
因为Linux服务器的网口可能存在没有被设置IP地址或者网口损坏的情况,所以需要对可正常使用的网口的IP地址、子网掩码和路由进行重新配置。
一般,通过ioctl_set_ifaddr接口设置网口的IP地址和子网掩码,所述IP地址和子网掩码根据分类后的网口配置信息来设置,所述ioctl_set_ifaddr接口为对Linux***的ioctl编程接口以及通过此接口进行网口IP地址和子网掩码设置进行的封装。
调用ioctl_set_ifaddr接口时,Linux***会自动给网口添加一个直连路由,所以,本步骤中配置路由主要是设置默认路由。由于同类网口配置的默认网关是相同的,所以只需要在其中一个网口上设置默认路由即可。通过ioctl_set_route接口设置默认路由,所述ioctl_set_route接口为对Linux***的ioctl编程接口以及通过此接口进行网口的路由设置进行的封装。
设置网口默认路由时,指定默认路由的网口地址、网关地址,并将目的IP地址与子网掩码设置为0。同类网口中选择设置默认路由的网口的标准是:同类网口中端口连接状态(LINK)为打开(UP),且同类网口中在NETSEG[SegCnt][count]中索引最小,以便用最短的时间查找路由。
步骤103,设置策略路由规则,根据所述策略路由规则和网口配置构造特定路由表。
具体包括:在Linux***中,通过ip_add_rule接口设置策略路由规则,所述策略路由规则为:Linux***根据数据包的IP源地址即网口地址查询与网口对应的特定路由表;也可是:Linux***根据数据包的IP目的地址查询与网口对应的特定路由表;并且,在实际应用中并不限于以上方法,只要能实现不同数据包从不同网口发送即可。
本发明具体实施例中,以Linux***根据数据包的IP源地址查询与网口对应的特定路由表为例,所述特定路由表为Linux***预设的路由表,特定路由表序号在1到32765之间,每个网口唯一对应一个特定路由表,为保证每个网口对应的特定路由表的唯一性,特定路由表的序号按照网口在NETSEG[SegCnt][count]中的索引递增。其中,所述ip_add_rule接口为Linux***对通过rtnetlink编程接口进行路由设置的封装。
通过ip_add_route接口构造特定路由表的路由,所述构造特定路由表的路由包括:指定路由的网口地址、目的IP地址和子网掩码,并指定将路由存储在与此网口对应的特定路由表中。特定路由表的路由设置方法和现有技术中设置路由的方法一致,设置网口路由,都需要指定网口地址、目的IP地址和子网掩码,不同的是:现有技术中不需要指定路由放在哪个路由表中,默认是放在***路由表中,而本发明设置网口路由时,需要指定路由存储在与所设置的网口对应的特定路由表中,所述ip_add_route接口为Linux***对通过rtnetlink编程接口进行路由设置的封装。
步骤104,刷新路由缓存,使特定路由表路由立即生效。
通常,构造特定路由表的路由后,特定路由表的路由并不是立即生效,因为Linux***存在路由缓存机制,Linux***首先通过route cache快速找到数据包到达目的地址的路由信息,然后再查找***路由表。因此,在完成特定路由表的路由设置后,需要使用ip_flush_cache接口对路由cache进行刷新,使特定路由表的路由生效。其中,所述ip_flush_cache接口为Linux***对通过rtnetlink编程接口进行route cache刷新的封装。
如图2所示,步骤101中所述对网口进行分类具体包括以下步骤:
步骤201,获取第一网口的关键字;
假设Linux服务器有N+1个网口,设置一个数组元素NETSEG[SegCnt][count],其中SegCnt表示网口的种类,count表示同类网口的数目;对网口进行顺序比较,假设从网口i开始,则初始的第一网口为网口i。
步骤202,判断第一网口的关键字是否为0,如果为0,则执行步骤207;否则,获取当前第二网口的关键字,执行步骤203;
这里,第二网口从网口i+1开始。
步骤203,比较两个网口的关键字是否相同,如果相同,说明第一网口与第二网口属于同一类网口,则执行步骤204;否则,执行步骤205。
步骤204,将当前第二网口的关键字的值置为0,同时将网口的配置信息存储在数组元素NETSEG[SegCnt][count]中存储第一网口配置信息的行中,count值加1。
步骤205,判断第一网口是否与其他网口依次比较完毕,如果是,则执行步骤207,否则,执行步骤206。
步骤206,第一网口继续依次与下一第二网口进行比较,如网口i与网口i+2进行比较,依此类推,获取当前新的第二网口的关键字,执行步骤203。
步骤207,判断当前第一网口是否为最后一个网口,如果是,则结束当前比较流程,否则,执行步骤208。
步骤208,SegCnt值加1,即:将当前第一网口的下一个网口作为新的第一网口,获取新的第一网口的关键字,执行步骤202,顺序同其他网口进行比较。
为实现上述方法,本发明还提供了一种多网口Linux服务器的配置装置,该装置包括:网口配置获取模块301、网口分类模块302、网口配置模块303、策略路由规则生成模块304、路由表构造模块305和路由缓存刷新模块306;其中,
网口配置获取模块301,用于通过ioctl_get_allifaddrs接口获取Linux服务器中各个网口的配置信息,并发送给网口分类模块302;
网口分类模块302,用于根据网口配置获取模块301获得的网口配置信息,对网口进行分类;
所述分类具体为:以网口的IP地址和子网掩码的与操作为关键字,关键字相同的网口为一类;并将分类结果存储在设定的数组中,数组中的元素是网口的配置信息,数组是网口的索引。
网口配置模块303,根据网口分类模块302分类后的网口配置信息,通过ioctl_set_ifaddr接口配置各个网口的地址,包括IP地址和子网掩码,通过ioctl_set_route接口配置网口的路由;
策略路由规则生成模块304,用于制定策略路由规则;
这里,所述策略路由规则为:根据数据包的IP源地址,查询与网口相对应的特定路由表;
路由表构造模块305,用于根据策略路由规则和网口配置,通过ip_add_route接口构造特定路由表的路由,设置路由时,要将设置的路由放在指定的特定路由表中;
所述特定路由表是Linux***预设的,每个网口唯一对应一个特定路由表,特定路由表的序号按照网口分类模块302分类结果中,网口在数组中的索引递增。
路由缓存刷新模块306,用于通过ip_flush_cache接口对路由cache进行刷新,使特定路由表的路由生效。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种多网口Linux服务器的配置方法,其特征在于,该方法包括:
获取Linux服务器各网口的配置信息,根据配置信息对网口进行分类;
重新配置各个网口的地址和路由;
设置策略路由规则,根据策略路由规则和网口配置构造特定路由表,并刷新路由缓存。
2.根据权利要求1所述的配置方法,其特征在于,所述根据配置信息对网口进行分类包括:
以网口的IP地址和子网掩码的与操作为关键字,将关键字相同的网口分为一类,并将分类结果存储在数组中,数组中的元素为网口的配置信息,数组为网口的索引。
3.根据权利要求1或2所述的配置方法,其特征在于,所述策略路由规则为:Linux***根据数据包的IP源地址查询与网口对应的特定路由表。
4.根据权利要求3所述的配置方法,其特征在于,所述根据策略路由规则和网口配置构造特定路由表包括:
指定路由的网口地址、目的IP地址和子网掩码,并指定将路由存储在与此网口对应的特定路由表中;每个网口唯一对应一个特定路由表。
5.根据权利要求1或2所述的配置方法,其特征在于,所述重新配置各个网口的地址和路由包括:
通过ioctl_set_ifaddr接口设置网口的IP地址和子网掩码,通过ioctl_set_route接口设置网口的默认路由,指定默认路由的网口地址、网关地址,并将目的IP地址与子网掩码设置为0。
6.一种多网口Linux服务器的配置装置,其特征在于,包括:
网口配置获取模块,用于获取Linux服务器中各个网口的配置信息,并发送给网口分类模块;
网口分类模块,用于根据网口配置获取模块获得的网口配置信息,对网口进行分类;
网口配置模块,用于根据分类后的网口配置信息,重新配置各个网口的地址和路由;
策略路由规则生成模块,用于设置策略路由规则;
路由表构造模块,用于根据策略路由规则和网口配置构造特定路由表;
路由缓存刷新模块,用于刷新路由缓存。
7.根据权利要求6所述的配置装置,其特征在于,所述网口配置模块通过ioctl_set_ifaddr接口配置网口的IP地址和子网掩码,通过ioctl_set_route接口配置网口的路由。
8.根据权利要求6或7所述的配置装置,其特征在于,所述策略路由规则为:根据数据包的IP源地址查询与网口相对应的特定路由表;
所述构造特定路由表包括:指定路由的网口地址、目的IP地址和子网掩码,并指定将路由存储在与此网口对应的特定路由表中;每个网口唯一对应一个特定路由表。
9.根据权利要求6或7所述的配置装置,其特征在于,所述网口分类模块,以网口的IP地址和子网掩码的与操作为关键字,将关键字相同的网口分为一类,并将分类结果存储在设定的数组中。
CN2009102382387A 2009-11-23 2009-11-23 一种多网口Linux服务器的配置方法及装置 Expired - Fee Related CN101710864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102382387A CN101710864B (zh) 2009-11-23 2009-11-23 一种多网口Linux服务器的配置方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102382387A CN101710864B (zh) 2009-11-23 2009-11-23 一种多网口Linux服务器的配置方法及装置

Publications (2)

Publication Number Publication Date
CN101710864A true CN101710864A (zh) 2010-05-19
CN101710864B CN101710864B (zh) 2012-01-11

Family

ID=42403625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102382387A Expired - Fee Related CN101710864B (zh) 2009-11-23 2009-11-23 一种多网口Linux服务器的配置方法及装置

Country Status (1)

Country Link
CN (1) CN101710864B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223265A (zh) * 2011-06-15 2011-10-19 北京星网锐捷网络技术有限公司 修改报文的转发方法、报文修改的测试方法、装置及***
CN102938711A (zh) * 2012-11-16 2013-02-20 华为技术有限公司 网口信息配置方法及网络设备
WO2013182166A1 (zh) * 2012-10-31 2013-12-12 中兴通讯股份有限公司 一种网口自动无缝切换的方法及装置
CN106921576A (zh) * 2017-02-28 2017-07-04 郑州云海信息技术有限公司 基于虚拟化***的数据网与管理网的流量分离方法及装置
CN107026795A (zh) * 2016-02-02 2017-08-08 上海格尔软件股份有限公司 一种基于iptables和策略路由的回包至来源网口的方法
CN109635875A (zh) * 2018-12-19 2019-04-16 浙江大学滨海产业技术研究院 一种基于深度学习的端到端网口检测方法
CN112688823A (zh) * 2021-03-17 2021-04-20 深圳市乙辰科技股份有限公司 基于无线网络设备多网口的盲插网口绑定适配方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1118989C (zh) * 1999-09-27 2003-08-20 华为技术有限公司 利用电信网实现局域网互联的方法
US8001245B2 (en) * 2005-06-01 2011-08-16 International Business Machines Corporation System and method for autonomically configurable router

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223265A (zh) * 2011-06-15 2011-10-19 北京星网锐捷网络技术有限公司 修改报文的转发方法、报文修改的测试方法、装置及***
WO2013182166A1 (zh) * 2012-10-31 2013-12-12 中兴通讯股份有限公司 一种网口自动无缝切换的方法及装置
CN102938711A (zh) * 2012-11-16 2013-02-20 华为技术有限公司 网口信息配置方法及网络设备
CN102938711B (zh) * 2012-11-16 2015-08-19 华为技术有限公司 网口信息配置方法及网络设备
CN107026795A (zh) * 2016-02-02 2017-08-08 上海格尔软件股份有限公司 一种基于iptables和策略路由的回包至来源网口的方法
CN106921576A (zh) * 2017-02-28 2017-07-04 郑州云海信息技术有限公司 基于虚拟化***的数据网与管理网的流量分离方法及装置
CN109635875A (zh) * 2018-12-19 2019-04-16 浙江大学滨海产业技术研究院 一种基于深度学习的端到端网口检测方法
CN112688823A (zh) * 2021-03-17 2021-04-20 深圳市乙辰科技股份有限公司 基于无线网络设备多网口的盲插网口绑定适配方法及装置
CN112688823B (zh) * 2021-03-17 2021-08-03 深圳市乙辰科技股份有限公司 基于无线网络设备多网口的盲插网口绑定适配方法及装置

Also Published As

Publication number Publication date
CN101710864B (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
CN111796905B (zh) 一种kubernetes容器云平台VLAN网络的实现方法及***
CN101710864A (zh) 一种多网口Linux服务器的配置方法及装置
CN102792644B (zh) 用于路由分组的***和方法
CN102857491A (zh) 集管理方案
CN107547391B (zh) 一种报文传输方法和装置
US9973400B2 (en) Network flow information collection method and apparatus
CN105262681A (zh) 分布式路由架构
CN102857414A (zh) 一种转发表写入、报文转发方法及装置
CN103931147A (zh) 面向连接的网络中的路径分集
CN108768866A (zh) 组播报文跨卡转发方法、装置、网络设备及可读存储介质
CN112448887A (zh) 分段路由方法及装置
CN102938795A (zh) 通过隧道和地址转换实现IPv6地址访问IPv4资源的方法
CN102946356A (zh) 一种基于cb-pe网络的组播报文传输方法和设备
US20210083977A1 (en) Packet Transmission Method, and Communications Apparatus and System
CN102055641A (zh) 一种虚拟局域网的分配方法以及相关装置
CN105227466A (zh) 通信处理方法和装置
WO2016095142A1 (zh) 软件定义网络sdn中数据转发的方法、设备和***
CN102201996B (zh) 网络地址转换环境中报文转发的方法及设备
CN106453088B (zh) 一种静态路由配置方法及终端
CN102938711B (zh) 网口信息配置方法及网络设备
CN107005464B (zh) 一种业务流数据包的处理方法及装置
CN112600951B (zh) 一种报文转发的方法及装置
CN111464443B (zh) 基于服务功能链的报文转发方法、装置、设备及存储介质
CN109510766B (zh) 一种智能终端多网络连接环境下的动态路由方法及***
CN106254282B (zh) 链路聚合的实现方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Lu Mingchang

Inventor after: Liang Jianshi

Inventor before: Liang Jianshi

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170825

Address after: 201100, Shanghai, Hongqiao Town, Minhang District Road, Lane 335, No. 32, Hongqiao Fu Fu, 2 floor, block D

Patentee after: Lu Mingchang

Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Patentee before: ZTE Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120111

Termination date: 20211123