一种南北向流量对称性引流的实现架构及方法与流程

文档序号:23754596发布日期:2021-01-29 15:32阅读:107来源:国知局
[0001]本发明涉及计算机网络和云计算
技术领域
:,特别涉及一种南北向流量对称性引流的实现架构及方法。
背景技术
::[0002]在网络中,用户的一次请求可能需要经过或使用不同的网络功能,一般情况下,该请求需要经过的网络功能的顺序也是特定的,这条由流量所经过的不同的网络功能所形成的路径被称为服务功能链(servicefunctionchain,sfc),换句话说服务功能链就是由不同的网络服务功能通过特定的顺序组合形成的一条串行链,该链的组合顺序一般由某一具体的用户请求来决定。[0003]sdn(软件定义网络)和nfv(networkfunctionvirtualization,网络功能虚拟化)技术的出现,为服务功能链提供了一种高效的、动态的以及扩展性极强的部署方案。首先sdn将网络控制和数据转发功能分开,以实现集中和可编程的网络控制,sdn的特性正是简化和增强网络控制、灵活和高效的网络管理以及提高网络服务性能。sdn使整个网络变得简单和高效,为服务功能链的部署提供了优越的网络环境,sdn控制器对网络的整体控制,可以时刻保持对服务功能链状态的感知。其次nfv利用了虚拟化的技术将服务功能与基础设施分离。使得服务功能不再内嵌到某一个特定硬件中,这样当某一个具体的网络功能损坏时,只需要利用虚拟化技术重新初始化一个vnf,大大缩短了故障恢复时间,节省了人力成本,除此之外nfv也使得vnf的开发更简单和高效以及vnf在后期的维护和扩展也更灵活。[0004]openstack作为当前开源iaas云计算的一款主流产品,实现了sdn与nfv整合的集成环境,但在具体实现技术方面还有待提升的空间。sfc在配置过程中需要指定一个起始的端口,但是考虑到分布式路由等问题,目前的sfc模块不支持将虚拟路由器的端口配置为起始端口,故而不方便拦截来自外网或某一子网的流量。sfc模块在最后一个服务链节点走完后使用默认正常转发的方式处理报文,这与桥接模式的透明防火墙的使用方式冲突。[0005]而且,sfc模块通过修改下一跳的目的mac地址来达到流量引导的目的,在使用透明模式的防护墙时,从防火墙出端口引出的流量其mac地址会是入端口的mac地址,从而无法继续转发。最后,国内目前大部分的透明防火墙产品需要通过来往流量的对称性来判断会话的保持与合法性,这要求往返流量都通过防火墙。[0006]针对现有openstack等云计算平台下的sfc问题以及透明模式的防火墙,本发明提出了一种南北向流量对称性引流的实现架构及方法。技术实现要素:[0007]本发明为了弥补现有技术的缺陷,提供了一种简单高效的南北向流量对称性引流的实现架构及方法。[0008]本发明是通过如下技术方案实现的:[0009]一种南北向流量对称性引流的实现架构及方法,其特征在于:包括虚拟路由器,snat命名空间,中转虚拟机,透明防火墙和ovs(openvswitch)网桥五个组件;[0010]所述虚拟路由器存在于openstack的计算节点当中,表现为openstack环境中的一个网络命名空间qrouter,其实是lunix内核的单独一个namespace(命名空间),其核心组成部分是端口和路由表;通过配置该namespace内的iptables(防火墙)和iprule(路由表),能够实现策略路由功能;[0011]所述snat命名空间存在于openstack的网络节点当中,本质上是一个虚拟路由器,底层为lunix创建出来的一个namespace,负责将网络返回包送出;[0012]所述中转虚拟机是与防火墙处于同一子网的一台虚拟机,操作系统为linux,包含四个端口,其中两个用于接收策略路由的引导流量,另外两个作为服务链的逻辑起点和逻辑终点;[0013]所述透明防火墙是一台具有防火墙程序的虚拟机,具有至少3个端口,其中一个是管理端口,而另外两个作为服务链的入端口和出端口;该虚拟机能够自动过滤进入的流量,由于是透明模式,报文从入端口进入后能够自动从出端口出来并且不修改任何内容;[0014]所述ovs网桥存在于中转虚拟机中,连接有数个端口,其核心内容是流表,交换机根据报文的特征匹配流表,再根据流表的动作指示决定下一步的走向。[0015]该利用服务链进行南北向流量对称性引流的实现方法,先使用策略路由将流量引流至指定中转虚拟机,将中转虚拟机作为服务链的逻辑起点和逻辑终点;[0016]具体包括以下步骤:[0017]s1.在openstack中为安全设备和中转机创建多个独立的网段;[0018]s2.添加中转虚拟机用于接收策略路由的引导流量与服务链节点的流量;[0019]s3.将透明防火墙部署到指定子网中,将防火墙的出端口与入端口放在不同的网络的子网中以避免广播风暴;[0020]s4.配置策略路由;[0021]s5.配置中转虚拟机的转发以及ip转换功能[0022]在中转虚拟机上根据引流规则的变化实时下发ip地址转换规则,使反向流量通过防火墙时源地址为本地ip地址,从而使其通过防火墙验证;[0023]s6.在计算节点上为防火墙添加服务链流表[0024]更改服务链最后一跳的流量规则,从正常转发变为发往逻辑终点,避免透明防火墙的逻辑缺陷。[0025]所述步骤s1中,在openstack中建立neta、netb、netc、netd、nete五个网络,并在五个网络下面分别创建5个子网网段,将五个网段连接到路由器router1上,其中一个网段分配为server网段供外界访问。[0026]所述步骤s2中,创建中转虚拟机sfc-forward,为它分配a、b、c、d四个端口,四个端口依次分别属于neta、netb、netc、netd四个网络,端口a、c用于接收策略路由所引导的流量,端口b、d用于作为服务链的逻辑起点和逻辑终点。[0027]所述步骤s3中,将透明防火墙部署在openstack环境中,入端口配置在netb上,出端口配置在netd上,开启ip转发与交换机模式。[0028]所述步骤s4中,由提供web服务虚机所在的计算节点进入虚拟路由器qrouter的namespace,调整它的iptables(防火墙),添加iprule(路由表)和iproute(路由),关闭流量入端口的反向路由校验,并添加iprule(路由表)和iproute(路由),然后再关闭正反向流量入端口的反向路由校验,由网络节点进入snat命名空间,开启松散的反向路由校验。[0029]所述步骤s5中,在中转虚拟机中构建ovs网桥架构,首先建立两个网桥br-sfc1与br-sfc2,将中转虚拟机sfc-forward的端口a、b添加至网桥br-sfc1上,将中转虚拟机sfc-forward的端口c、d添加至网桥br-sfc2上;[0030]由于将网口添加到网桥上会导致网口的不可用,所以在网桥br-sfc1和br-sfc2上各添加两个vethpeer(对接端口)用以承载原网口的mac地址和ip地址;端口a、b、c、d对应的对接端口依次为veth0、veth1、veth2与veth3;[0031]设置四个对接端口veth0、veth1、veth2与veth3的流量转发规则,采用openvswitch的流表规则设置方法,设置从veth0进的流量从veth1出,从veth1进的流量从veth0出,从veth3进的流量从veth2出,从veth2进的流量从veth3出;[0032]中转虚拟机内部开启ip_forward转发、关闭firewalld.service设置;[0033]通过端口号socket的服务动态设置ovs流表规则,包括floatingip与内网ip的转换规则;[0034]在openstack环境中,外网访问内部服务时,其目的地址为浮动ip,经路由中dnat(destinationnetworkaddresstranslation,目的地址转换)转换规则,发送到中转虚拟机及防火墙时目的地址为openstack内部网络ip,而返回报文途径路由中的snat转换规则,其源地址从内部ip变为了浮动ip,之后防火墙再收到回复报文时会因正反向流量的不对称而将其拦截。为了解决这一难题,在中转虚拟机上根据引流规则的变化实时下发ip地址转换规则,使反向流量通过防火墙时源地址为本地ip地址:[0035]已知反向流量先由策略路由发往中转虚拟机sfc-forward的端口c,经网桥br-sfc2网桥导向端口d,则在网桥br-sfc2上设置流表规则,将本地ip转换成浮动ip;[0036]然后反向流量途径防火墙发往中转虚拟机sfc-forward的端口b,经网桥br-sfc1网桥导向端口a,则在网桥br-sfc1上设置流表规则,将浮动ip转换成本地ip。[0037]所述步骤s6中,首先构建正向服务链,以中转虚拟机sfc-forward的端口b为逻辑起点,透明防火墙为中间节点,以中转虚拟机sfc-forward的端口d为逻辑终点;[0038]配置如下流表规则:[0039]从中转虚拟机sfc-forward的端口b发出的报文,其目的mac地址一律改为透明防火墙入端口mac地址,并送往透明防火墙入端口;从透明防火墙出端口发出的报文,其目的mac地址一律改为中转虚拟机sfc-forward的端口d的mac地址并发送至端口d;[0040]然后构建反向服务链,以中转虚拟机sfc-forward的端口d为逻辑起点,透明防火墙为中间节点,以中转虚拟机sfc-forward的端口b为逻辑终点;[0041]配置如下流表规则:[0042]从中转虚拟机sfc-forward的端口d发出的报文,其目的mac地址一律改为透明防火墙出端口mac地址,并送往透明防火墙出端口;从透明防火墙入端口发出的报文,其目的mac地址一律改为中转虚拟机sfc-forward的端口b的mac地址并发送至端口b。[0043]本发明的有益效果是:该南北向流量对称性引流的实现架构及方法,能够成功地对来自外网的流量进行引导,有效支持透明防火墙在服务链当中的应用,保证网络往返报文的对称性能满足防火墙会话验证的需要。附图说明[0044]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0045]附图1为本发明利用服务链进行南北向流量对称性引流的实现架构示意图。[0046]附图2为本发明ovs网桥架构示意图。具体实施方式[0047]为了使本
技术领域
:的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。[0048]该利用服务链进行南北向流量对称性引流的实现架构,包括虚拟路由器,snat命名空间,中转虚拟机,透明防火墙和ovs(openvswitch)网桥五个组件;[0049]所述虚拟路由器存在于openstack的计算节点当中,表现为openstack环境中的一个网络命名空间qrouter,其实是lunix内核的单独一个namespace(命名空间),其核心组成部分是端口和路由表;通过配置该namespace内的iptables(路由表)和iprule(端口),能够实现策略路由功能;[0050]所述snat命名空间存在于openstack的网络节点当中,本质上是一个虚拟路由器,底层为lunix创建出来的一个namespace,原本负责在openstack中为没有配置浮动ip的虚机提供出网功能,负责将网络返回包送出;[0051]所述中转虚拟机是与防火墙处于同一子网的一台虚拟机,操作系统lunix,文中使用centos7,包含四个端口,其中两个用于接收策略路由的引导流量,另外两个作为服务链的逻辑起点和逻辑终点;[0052]所述透明防火墙是一台具有防火墙程序的虚拟机,具有至少3个端口,其中一个是管理端口,而另外两个作为服务链的入端口和出端口;该虚拟机能够自动过滤进入的流量,由于是透明模式,报文从入端口进入后能够自动从出端口出来并且不修改任何内容;[0053]所述ovs网桥存在于中转虚拟机中,openvswitch是一种软件交换机,支持openflow协议,由openvswitch创建出来的网桥上连接着数个端口,其物理结构如图2所示,其核心内容是流表,交换机根据报文的特征匹配流表,再根据流表的动作指示决定下一步的走向。[0054]该利用服务链进行南北向流量对称性引流的实现方法,先使用策略路由将流量引流至指定中转虚拟机,将中转虚拟机作为服务链的逻辑起点和逻辑终点;[0055]具体包括以下步骤:[0056]s1.在openstack中为安全设备和中转机创建多个独立的网段;[0057]s2.添加中转虚拟机用于接收策略路由的引导流量与服务链节点的流量;[0058]s3.将透明防火墙部署到指定子网中,将防火墙的出端口与入端口放在不同的网络的子网中以避免广播风暴;[0059]s4.配置策略路由;[0060]s5.配置中转虚拟机的转发以及ip转换功能;[0061]在中转虚拟机上根据引流规则的变化实时下发ip地址转换规则,使反向流量通过防火墙时源地址为本地ip地址,从而使其通过防火墙验证;[0062]s6.在计算节点上为防火墙添加服务链流表[0063]更改服务链最后一跳的流量规则,从正常转发变为发往逻辑终点,避免透明防火墙的逻辑缺陷。[0064]所述步骤s1中,在openstack中建立neta、netb、netc、netd、nete五个网络,并在五个网络下面分别创建5个子网网段,为表述方便,现假设其网段ip为别为10.0.1.0/2410.0.2.0/2410.0.3.0/2410.0.4.0/2410.0.5.0/24,将五个网段连接到路由器router1上,其中一个网段10.0.5.0/24拟分配为server网段供外界访问,现假设有一台虚机提供web服务属于此网段,ip为10.0.5.21/24,拥有绑定的浮动ip10.112.30.54/24。[0065]所述步骤s2中,创建中转虚拟机sfc-forward,为它分配a、b、c、d四个端口,四个端口的ip分别为10.0.1.5、10.0.2.5、10.0.3.5、10.0.4.5,端口a、c用于接收策略路由所引导的流量,端口b、d用于作为服务链的逻辑起点和逻辑终点。[0066]所述步骤s3中,将透明防火墙部署在openstack环境中,入端口配置在netb上,ip为10.0.2.8,出端口配置在netd上,ip为10.0.4.8,开启ip转发与交换机模式。[0067]所述步骤s4中,由提供web服务虚机所在的计算节点进入虚拟路由器qrouter的namespace,调整它的iptables(防火墙),添加iprule(路由表)和iproute(路由),关闭流量入端口的反向路由校验,并添加iprule(路由表)和iproute(路由),然后再关闭正反向流量入端口的反向路由校验,由网络节点进入snat命名空间,开启松散的反向路由校验。[0068]调整它的iptables(防火墙):[0069]request包打标记:iptables-tmangle-aneutron-l3-agent-prerouting/[0070]-irfp-086b7c33-63ꢀ–d10.0.5.21ꢀ-jmark--set-mark105/0x0000ffff[0071]reply包打标记iptables-tmangle-aneutron-l3-agent-prerouting/[0072]-iqr-38c21a9d2-72ꢀ–s10.0.5.21ꢀ-jmark--set-mark106/0x0000ffff[0073]添加iprule(路由表):[0074]requet包:ipruleaddfromallfwmark105table105pref105[0075]reply包:ipruleaddfromallfwmark106table106pref106[0076]添加iproute(路由):[0077]request包,导向sfc-forward的a口:iprouteadddefaultvia10.0.1.5table105[0078]reply包,导向sfc-forward的c口:iprouteadddefaultvia10.0.3.5table106[0079]关闭流量入端口的反向路由校验:[0080]echo0>/proc/sys/net/ipv4/conf/qr-38c21a9d2-72/rp_filter[0081]echo0>/proc/sys/net/ipv4/conf/all/rp_filter[0082]由虚拟机sfc-forward所在的计算节点进入qrouter的namespace[0083]添加iprule(端口):[0084]reply包:ipruleaddfrom10.112.30.0/24table100005pref100005[0085]添加iproute(路由):[0086]reply包,导向snat_namespace:iprouteadddefaultvia10.0.1.6table100005[0087]关闭正反向流量入端口的反向路由校验:[0088]echo0>/proc/sys/net/ipv4/conf/qr-73d1ac252-6d/rp_filter[0089]echo0>/proc/sys/net/ipv4/conf/qr-63a4d8921-5a/rp_filter[0090]echo0>/proc/sys/net/ipv4/conf/all/rp_filter[0091]由网络节点进入snatnamespace,开启松散的反向路由校验:[0092]echo2>/proc/sys/net/ipv4/conf/all/rp_filter[0093]所述步骤s5中,在中转虚拟机中构建如附图2所示的ovs网桥架构,首先建立两个网桥br-sfc1与br-sfc2,将中转虚拟机sfc-forward的端口a、b添加至网桥br-sfc1上,将中转虚拟机sfc-forward的端口c、d添加至网桥br-sfc2上。[0094]由于将网口添加到网桥上会导致网口的不可用,所以在网桥br-sfc1和br-sfc2上各添加两个vethpeer(对接端口)用以承载原网口的mac地址和ip地址;端口a、b、c、d对应的对接端口依次为veth0、veth1、veth2与veth3;[0095]以端口a(eth0)举例:[0096]iplinkaddveth0typevethpeernamebr-veth0[0097]ovs-vsctladd-portbr-sfc1br-veth0[0098]ifconfigveth0hwether$mac_eth0[0099]设置四个对接端口veth0、veth1、veth2与veth3的流量转发规则,采用openvswitch的流表规则设置方法,设置从veth0进的流量从veth1出,从veth1进的流量从veth0出,从veth3进的流量从veth2出,从veth2进的流量从veth3出。[0100]中转虚拟机内部开启ip_forward转发、关闭firewalld.service设置。[0101]通过端口号socket的服务动态设置ovs流表规则,包括floatingip与内网ip的转换规则。[0102]在openstack环境中,外网访问内部服务时,其目的地址为浮动ip,经路由中dnat(destinationnetworkaddresstranslation,目的地址转换)转换规则,发送到中转虚拟机及防火墙时目的地址为openstack内部网络ip,而返回报文途径路由中的snat转换规则,其源地址从内部ip变为了浮动ip,之后防火墙再收到回复报文时会因正反向流量的不对称而将其拦截。为了解决这一难题,在中转虚拟机上根据引流规则的变化实时下发ip地址转换规则,使反向流量通过防火墙时源地址为本地ip地址:[0103]已知反向流量先由策略路由发往中转虚拟机sfc-forward的端口c,经网桥br-sfc2网桥导向端口d,则在网桥br-sfc2上设置流表规则,将本地ip转换成浮动ip;[0104]然后反向流量途径防火墙发往中转虚拟机sfc-forward的端口b,经网桥br-sfc1网桥导向端口a,则在网桥br-sfc1上设置流表规则,将浮动ip转换成本地ip。[0105]所述步骤s6中,首先构建正向服务链,以中转虚拟机sfc-forward的端口b为逻辑起点,透明防火墙为中间节点,以中转虚拟机sfc-forward的端口d为逻辑终点;[0106]配置如下流表规则:[0107]从中转虚拟机sfc-forward的端口b发出的报文,其目的mac地址一律改为透明防火墙入端口mac地址,并送往透明防火墙入端口;从透明防火墙出端口发出的报文,其目的mac地址一律改为中转虚拟机sfc-forward的端口d的mac地址并发送至端口d;[0108]然后构建反向服务链,以中转虚拟机sfc-forward的端口d为逻辑起点,透明防火墙为中间节点,以中转虚拟机sfc-forward的端口b为逻辑终点;[0109]配置如下流表规则:[0110]从中转虚拟机sfc-forward的端口d发出的报文,其目的mac地址一律改为透明防火墙出端口mac地址,并送往透明防火墙出端口;从透明防火墙入端口发出的报文,其目的mac地址一律改为中转虚拟机sfc-forward的端口b的mac地址并发送至端口b。[0111]与现有技术相比,具有一下特点:[0112]1)利用策略路由的引流效果,改为使用一个虚拟机的端口作为过渡,解决了源服务链模块不支持将路由器端口设置为起始端口的缺点;[0113]2)通过在openvswitch上修改目的mac的方式,解决了透明状态下的防火墙发出的报文其mac地址不正确的问题,真正让服务链模块支持了透明模式;[0114]3)利用策略路由的引流效果,将reply的网络包反向导入服务链,实现让正反向流量都通过防火墙,同样地使用了一个虚拟机的端口作为过渡;[0115]4)在中转虚拟机上对返回流量做源ip地址转换,解决了正反向流量不对称的问题。[0116]以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1