【星海随笔】SDN neutron (三) Service-plugin

Neutron L3

L3的实现只负责路由的功能,传统路由器中的其他功能(如Firewalls、LB、VPN)都被独立出来实现了,因此ML3的实际需求比较少。

neutron-server 接到请求 –> 将请求发送到MQ –> neotron-plugins 得到请求 –> 发送请求到MQ –> neotron-agent 建立网络设备。
在这里插入图片描述

neutron-plugin : 处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。每个厂商基于Openstack开发了模拟自己硬件的软件,这个软件就是plugin。 在早期,每个厂商开发各自的plugin,功能也是各自实现,有大量的代码是重复的;另外,不同的厂商有不同的开发标准,导致程序的兼容性很差。针对这种情况neutron-plugin 被分为了两部分:Core-plugin 和 Service-plugin 。

Service-plugin : 即为除core-plugin以外其它的plugin,包括l3 router、firewall、loadbalancer、VPN、metering等等,主要实现L3-L7的网络服务。这些plugin要操作的资源比较丰富,对这些资源进行操作的REST API被neutron-server看作Extension API,需要厂家自行进行扩展。

Router

提供虚拟三层服务,包括租户网络(Tenant Network)之间、租户网络与外部网络(External Network)之间的路由和网络地址转换,原生模式下路由器管理功能以Service Plugin的形式集成在Neutron Server中,路由器实体以Linux网络命名空间的形式存在,由Neutron L3 Agent管理。

在这里插入图片描述
由上图可以看出,Neutron L3模块的功能主要由Server端的L3RouterPlugin和Agent端的L3NATAgentWithStateReport配合实现:

Client通过HTTP向Server发起L3资源Router、Floating IP的管理命令,Server负责处理资源在数据库的增删改查,并通过RPC将资源的更新事件通知到Agent,Agent最终通过Linux下的网络工具栈来实现具体的L3功能。

L3的核心资源是Router,大部分L3 API都是围绕着Router的基础属性、扩展属性或附属资源的增删改查,Router也是L3 Plugin与L3 Agent进行同步的数据单元。

neutron-agent : 处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。和 plugin 是一一对应的关系。

iproute2

如何查看网络接口、地址、路由
iproute2 工具包最基础的功能就是管理本机的网络接口。

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever

你也可以输入如下的命令来修改 MTU 和分组队列的长度:

ip link set eth1 mtu 1500
ip link set eth1 txqueuelen 1000

一般来说,本机的网络接口通常会被命名成像是eth0,eth1,lo这样的名称。在过去,常常使用net-tools包提供的ifconfig命令来配置网络接口。而使用iproute2时,通常可以使用子命令ip addr和ip link来完成相同的功能。

IP 路由规则(rule)

ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

这三条路由规则是内核配置的默认规则。第一行可以匹配任何流量,用于路由高优先级的流量。第二行是处理常规路由的主要规则。最后一行是空规则,如果上面的规则与数据包不匹配,则使用该行进行后处理(post-processing)。

OpenStack FWaaS功能
在架构设计上, Neutron沿用了OpenStack完全分布式的思想,各组件之间通过消息机制进行通信,使得Neutron中各个组件甚至各个进程都可以运行在任意的节点上。

SWaas

Neutron是OpenStack网络即服务项目,包括一个防火墙即服务(FWaaS)插件,该插件在OpenStack对象(如项目、路由器端口和路由器)上实施防火墙。

防火墙规则:指定当流量与一组属性(如端口范围、协议或IP地址)匹配时,防火墙应采取的操作(允许或拒绝)。
防火墙策略:一组有序的规则。你可以发布策略以在项目间共享。

防火墙可以根据你使用的驱动程序以各种方式实现。
例如:
——iptables驱动程序使用iptable规则来实现防火墙;
——OpenVSwitch驱动程序使用流表中的流条目来实现防火墙规则;
——Cisco防火墙驱动程序可用于NSX设备。

FWaaS v2的新增功能如下:

FWaaS v1已被弃用,取而代之的是v2。在v2中,防火墙的概念已被防火墙组所取代,这表明防火墙需要两个策略:出口策略和入口策略。防火墙组应用于端口级别,而不是路由器级别,你可以指定要保护的路由器端口。

FWaaS 2中的新功能概括如下:

——默认情况下不支持路由器的3级防火墙,但你可以通过将防火墙组应用于某个路由器中的所有端口来启用它。
——支持路由器端口的3级防火墙。
——支持2级防火墙(即VM端口)。
——提供命令行界面(CLI)。
——支持OpenStack Horizon仪表板。

启用FWaaS v2
要在OpenStack中启用FWaaS v2插件,需要执行以下步骤:

——安装必要的软件依赖关系。你需要安装neutron-fwaas和neutron-fwaas-dashboard包以及特定OpenStack部署所需的任何其他依赖关系。
——在OpenStack配置文件中启用FWaaS v2插件。这通常涉及将以下行添加到neutron.conf文件中:
[fwaas]
driver = neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver
——重新启动OpenStack Neutron服务。你需要重新启动Neutron服务才能使更改生效。

iptables和firewalld都不是真正的防火墙,他们都是用来定义防火墙策略的防火墙管理工具而已,他们只是一种服务,iptables服务会把配置好的防火墙策略交给内核层面的netfilter网络过滤器来处理。而firewalld服务则是把配置好的防火墙策略交给内核层面的nftables包过滤框架来处理。

VPN

在这里插入图片描述

sudo apt-get install neutron-vpnaas-agent
sudo service neutron-vpn-agent restart

编辑/etc/neutron/neutron.conf文件并添加以下行:

service_plugins = router,vpnaas

sudo service neutron-server restart
sudo neutron-db-manage --subproject neutron-vpnaas upgrade head

创建VPNaaS服务提供者:

neutron vpn-service-provider-create --name <provider-name> \
--vpn-service-provider <vpn-service-provider>

此命令将创建一个名为<provider-name>的VPNaaS服务提供者,并将其配置为<vpn-service-provider>

neutron vpn-service-list

创建VPN连接:

neutron ipsec-site-connection-create --name <ipsec-connection-name> \
--vpnservice-id <vpn-service-id> \
--ikepolicy-id <ikepolicy-id> \
--ipsecpolicy-id <ipsecpolicy-id> \
--peer-address <peer-address> \
--peer-cidr <peer-cidr> \
--peer-id <peer-id> --psk <psk> \
--mtu <mtu> --dpd <dpd> --initiator <initiator>

此命令将创建一个名为<ipsec-connection-name>的VPN连接,并配置其所属的VPN服务、IKE策略、IPsec策略、对等地址、对等CIDR、对等ID、预共享密钥、MTU、DPD和发起方。

neutron ipsec-site-connection-list

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值