前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >networking-sfc deep dive 1

networking-sfc deep dive 1

作者头像
惠伟
发布2021-02-24 11:19:20
5950
发布2021-02-24 11:19:20
举报
文章被收录于专栏:虚拟化笔记虚拟化笔记

介绍

SFC全称service function chain,RFC 7665 Service Function Chaining (SFC) Architecture对SFC的体系做了很详细的介绍。end to end流量中间要有序经过firewall,NAT,IDS等网络功能单元,对这些网络功能的定义和管理,以及指导流量如何有序经过这些网络功能单元就是SFC。为什么现在需要SFC,是因为以前firewall,NAT,IDS等网络功能单元是实体物理设备,它的部署位置是和网络拓扑强相关的,所有流量共享这些设备,而且流量经过这些设备的序列是固定死的,总结是不够灵活,而SFC可以自定义网络功能单元,自定义流量路径,很好给云计算网络提供了支撑。

SFC首先由classifier识别出要经过这条chain的流量,然后再不断地经过这条chain上的service function,从classifier到第一个sf和从上一下sf到下一个sf,报文都被封装SFC头,目前主推的就是RFC 8300 Network Service Header (NSH),封装头一般包含chain id和chain上的位置,就是这个报文走的是哪个chain,现在在chain上走了几步了,这样靠这个头就可以保证报文走正确的chain,而且在chain上依次一个一个地走sf,不会重复走sf,也不会跳过一些sf。有些头可以包含更多字段,携带数据以便sf之间共享信息。

从上一个sf到下一个sf由sf forwarder来转发,sf又分为sfc-aware和sf-unaware,sfc-aware可以正确解析报文携带的SFC头,反之sfc-unaware就不能识别NSH等这样的头,需要sfc proxy把NSH等这头去掉,再发往sf中。

networking-sfc介绍

networking-sfc是openstack中实现sfc功能的一个项目,openstack neutron中port是一个很重要概念,所以networking-sfc就把port连在一起形成一条chain,就是service function chain,在opnestack中叫做port chain,RFC中并没有说SFF和SF怎么传递报文,port chain明确指出用port,而且分为ingress port和egress port,一下好理解多了,。

networking-sfc实现了neutron extension,对外提供api,service plugin负责真正干活,plugin又包含各种条样的driver,其中就有ovs driver,ovs driver和计算节点上opensvswitch agent 中的sfc extension用rpc通信。

networking-sfc中有如下几个重要概念:

port pair就是一个sf节点上一对口,一个port是ingress进sf,另一个port是egress出sf,ingress和egress可以是同一个port,这个port能进能出。

port pair group包含一个或者多个port pair,主要是为了做流量负载均衡,假如一条chain中有两个firewall sf,流量可以走任意一个firewall就可以,port pair group就是干这事的,指导流量在这两个firewall上负载均衡。

classifier识别流量的,定义一些规则,哪些流量走这条chain。

port chain把一些port pair group按顺序指定好,再加一个classifier识别出流量上第一个sf就形成了一个port chain。

service graph把几条chain组合在一起形成一个各复杂的流量多路径,流量经过一条chain后分叉,两个分支分别走不同的chain,理论上这个graph不能形成环路。

networking-sfc安装和配置

yum install python2-networking-sfc.noarch

控制节点: /etc/neutron/neutron.conf service_plugins=..., networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin,networking_sfc.services.sfc.plugin.SfcPlugin [sfc] drivers=ovs [flowclassifier] drivers=ovs 升级neutron db: $ neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-sfc upgrade head systemctl restart neutron-server.service

计算节点: /etc/neutron/plugins/ml2/openvswitch_agent.ini [agent] extensions=sfc systemctl restart neutron-openvswitch-agent.service

总结

提出一些高大上的概念容易,怎样用具体的技术能实现出来才是难点。SFC就是一些高大上的概念,networking-sfc把它实现出来了,而且借助现有neutron的技术,很好地融合在neutron中,真的非常了不起。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • networking-sfc介绍
  • networking-sfc安装和配置
  • 总结
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档