首页 > 其他分享 >1.3OpenDaylight SFC项目基础

1.3OpenDaylight SFC项目基础

时间:2023-06-08 09:14:12浏览次数:40  
标签:Function 单击 Service 1.3 步骤 所示 SFC OpenDaylight

OpenDaylight SFC项目基础

任务目的

1、了解OpenDaylight SFC项目。
2、掌握手动配置SFC的基本操作。

任务环境
设备名称 软件环境(镜像) 硬件环境
主机 Ubuntu 14.04桌面版 OpenDaylight Carbon CPU:2核 内存:4G 磁盘:20G

注:系统默认的账户为:
管理员权限用户名:root,密码:root@openlab;
普通用户用户名:openlab,密码:user@openlab。
可查看当前实验环境右侧“钥匙”img 按钮获取对应的密码。

任务内容

1、学习SFC项目的安装方法。
2、手动配置SFC的基本操作。

实验原理

在网络通信过程中,包含各式各样的网络服务功能。既可以包含传统的像防火墙,NAT等功能,也有包含特定的网络应用功能(Service Function)。将特定的网络应用功能有序地组合起来,让流量通过这些服务功能就构成了网络服务链(Network Service Chain)。一般在数据中心环境下,往往会有网络服务链(Network Service Chaining)的部署需求,使得报文在数据中心传递的时候,能够经过各种各样的服务节点,保证安全、快速、稳定的网络服务。

一、SDN服务链基本概述

由于Overlay网络的发展,使得虚拟网络和物理网络分离,让数据中心的网络控制变得更加灵活,更具有扩展性。然而,在数据中心中,还存在很多介于虚拟网络和物理网络之间的中间件,如防火墙,QoS,负载均衡器等。这些中间件提供了必要的业务处理功能,即Service Function。灵活、便捷、高效、安全地调配流量到Service Function上处理,形成服务链(Service Function Chaining),这就是SFC项目要解决的问题。服务链可以理解为一种业务形式。
过去也有服务链的概念,但传统的网络服务链往往和网络拓扑紧密耦合、部署复杂,在服务链变更、扩容时,都需要改动网络拓扑,重新进行网络设备的配置。而云计算环境广泛使用虚拟化技术,具有动态性、高流动性、规模易变化、多租户等特点,传统网络的服务链无法满足这些需求,SDN的出现让服务链又焕发了生机。因此,当前再谈及服务链时,默认指的是SDN服务链。
与传统DC中配置的网络服务链相比,基于SDN的SFC具有如下的优势:

  • 传统的网络服务链往往基于手工配置,很大程度上依赖于具体的网络拓扑,以至于网络设备之间的耦合性很大。而基于SDN的配置,可以动态的添加或者删除链表上的服务节点,不仅方便使用,而且解耦了网络设备之间的关联。
  • 在数据流量经过链表的过程中,SFC还支持分类器与服务,服务与服务之间的上下文信息共享。
  • 在传统的数据服务链中,数据包往往要经过过次分类,即多次解包、封包的过程。而在SFC中,这个过程大大缩减,一般只需在分类一次即可,使得整个过程更便捷、更高效。
    blob_1z9cFVt

二、基于OpenDaylight的服务链项目

OpenDaylight的SFC项目是整个控制器平台内部的一个功能模块。用户可以通过控制器提供的北向API来使用的SFC的功能,例如创建、更新或者删除Service Chain,还可以通过配置非透明的metadata数据段用来在Service Function的节点间实现数据共享。同时,项目可以向Controller的DataStore中注册、配置服务节点,并获取拓扑。南向也支持Netconf,Openflow12等协议。Service Function Chaining 的架构如下图所示:
image-20230524154808256
SFC核心组件如下:

  • Classification:根据初始化的(配置好的)policy匹配数据流进行封装,然后转入到Service Function Chain中。
    image-20230524154821927
  • Service Function(SF):负责对收到的数据包进行特定功能的处理。作为一个逻辑上的组件,SF在具体实现的上可以是一个虚拟的元素,或者是嵌入在具体网络设备上的某种功能。常见的SF有:防火墙(firewall),WAN设备加速器,深层报文检测(Deep Packet Inspection,DPI),NAT等等。
  • Service Function Forwarder(SFF):主要负责Service Function Chaining上的流量转发控制。
  • Service Function Chain(SFC):SFC定义了一个抽象的Service Function有序集合。经过分类后的包要依次去遍历集合中的Service Function。比如:用户可以配置firewall->qos->dpi三种服务来构建一条SFC。
  • Rendered Service Path(RSP):数据包实际行走的路径。
  • Service Function Path(Service Function Path):SFP是一个逻辑概念,它是介于SFC和RSP之间的一层抽象,有时候会将SFP与SFC等同。

三、ODL的SFC项目工作流原理

image-20230524154832900
一种基于NSH封装头的机制是,使用ODL配置并下发一条Service Function Chain,每条Chain都有自己的标识。当host1发送数据包给host2,数据包首先会到分类器中进行筛选。分类出需要经过Service Function Chaining的数据包会进行封装,并打上NSH头。头中包含了很多信息,包括走哪一条服务链,服务链有几跳等。接着数据包会依次经过SFF,由SFF将数据包传递给SF或者下一跳的SFF,直到链的最后。
SFC南向REST插件的主要功能是通过REST接口向网络设备下发流表命令。当SFC数据库中的配置信息改变时,将触发流表更新操作,如下图所示。
image-20230524154847666
SFC-OVS插件是针对OVS设备设计的一个控制插件,插件实现了SFC对象(例如SFF)到OVS对象(例如bridge)的映射,这个映射关系是相互的,例如当一个SFC对象被创建的时候,SFC-OVS插件也会创建一个对应的OVS的bridge,反之亦然。在SFC中,用户将OVS作为底层网络交换机时,可以使用该插件来实现SFC的部署。SFC-OVS插件架构如下图所示:
image-20230524154859129

实验步骤

一、实验环境检查

登录主机,查看IP地址,如下图所示。

image-20230524154912247

二、安装SFC项目

步骤1 由于本次实验使用已经安装好的OpenDaylight镜像,在实验之前需要把后台启动的进程切换为前台启动。执行以下命令:

$ su
Password:
# cd /home/openlab/openlab/distribution-karaf-0.6.0-Carbon
# ./bin/stop
# ./bin/karaf

image-20230524154933503

步骤2 安装SFC-UI插件,执行以下命令:

> feature:install odl-sfc-ui

步骤3 打开浏览器,在地址栏中输入http://127.0.0.1:8181/index.html ,使用账户admin/admin登录ODL WEB UI。

如下图所示界面显示了当前的物理资源状况,可以通过其他二级菜单配置查看SFC状态。
image-20230524154954786

步骤4 在Karaf控制台中执行如下命令配置SFC南向REST插件。

> feature:install odl-sfc-sb-rest

如下图所示,在SFC-UI中,SFF配置菜单中的“REST URI”列即为每个SFF的REST接口地址。对这些REST地址进行相应修改即可完成SFC南向REST插件的配置。
image-20230524155016450

步骤5 执行以下命令安装SFC-OVS插件。

> feature:install odl-sfc-ovs

image-20230524155033808
SFC-UI刚开始都是空的,因为什么都没有配置。另外,在ODL中创建SFC有两种方式:第一,用北向的RESTAPI;第二,用UI来创建。本次实验用将基于UI实现,这样看起来比较直观,方便理解。

三、SFC基本操作

  • 场景一 创建Service Function(Application)

    步骤1 单击导航栏的“Service Functions”菜单,再单击”Add Service Function”,填写表格如下图所示。

    image-20230524155148067

    要注意以下两点:

  • 数据平面的通信方式一定要选,这里选vxlan-gpe。要不然Agent收不到请求。

  • SFF1暂时还没有创建,可以先填入SFF1,后面创建SFF的名字要与这里一致。

    步骤2 单击“Save”,SF创建结果如下图所示。

    image-20230524155229699

  • 场景二 创建Service Function Forwarders(switch)

    步骤1 在导航菜单中选择“Service Function Forwarders”,单击”Add Service Function Forwarder”,填写表单信息如下图所示。

    image-20230524155350083

    image-20230524155419774

    步骤2 单击“Save”按钮,SFF创建结果如下图所示。

    image-20230524155436279

  • 场景三 创建Service Function Chain

    步骤1 在导航栏单击“Service Function Chains”菜单,如下图所示。

    image-20230524155454755

    步骤2 单击“Add Service Function Chain”按钮,填入名字“Chain-1”,单击“Save”按钮提交,如下图所示。

    image-20230524155509162

    创建Chain-1结果如下图所示。

    image-20230524155522786

    步骤3 将”firewall”的SF拖拽到右边的Chain-1中,如下图所示。

    image-20230524155535743

    步骤4 单击保存按钮,如下图所示。

    image-20230524155548392

  • 场景四 创建Service Function Path

    步骤1 单击deploy按钮,生成一条Service Function Path,如下图所示。

    image-20230524155603931

    步骤2 命名为“Chain-1-Path-1”,单击OK按钮,成功创建Service Function Path。

    image-20230524155617655

    image-20230524155629779

    步骤3 导航栏中单击”Service Function Paths”按钮,将会看到刚创建的SFP。

    image-20230524155642138

  • 场景五 创建Rendered Service Path

    步骤1 勾选”Force Symmetric path”生成一条对称反向的RSP,保存。如下图所示。

    image-20230524155708533

    步骤2 单击下图中的按钮,生成一条RSP。

    image-20230524155725957

    image-20230524155740865

    到“Rendered Service Path”标签页可以看到创建的RSP,如下图所示。

    image-20230524155756975

    创建后可以看到RSP的两个重要属性“Path-ID”为53,“starting-index”为255。

标签:Function,单击,Service,1.3,步骤,所示,SFC,OpenDaylight
From: https://www.cnblogs.com/ChuenSan/p/17465163.html

相关文章

  • 1.2使用OpenDaylight界面下发流表
    使用OpenDaylight界面下发流表任务目的1、掌握YANGUI下发流表的方式,了解YANGUI的功能特点,以及其在OpenDaylight架构中所起的作用。2、通过下发流表的过程,梳理出数据包处理的简单流程。并且进一步了解单级流表和多级流表的处理过程。任务环境设备名称软件环境(镜像)硬件......
  • 1.3OpenFlow建立连接交互流程学习
    OpenFlow建立连接交互流程学习任务目的1、了解OpenFlow交换机与OpenFlow控制器建立TCP连接的过程。2、掌握配置安全通道中的OpenFlow版本的方法。3、掌握OpenFlow交换机和OpenFlow控制器的消息交互流程。任务环境设备名称软件环境(镜像)硬件环境控制器Ubuntu14.04......
  • 1.3. 数据类型与变量
    数据类型在Java中,数据类型决定着一个数据的取值范围和操作。Java中的数据类型主要分为两类:基本数据类型和引用数据类型。基本数据类型Java中的基本数据类型包括整型、浮点型、字符型和布尔型。整型:byte、short、int、long。对应的取值范围依次是-128127、-3276832767、-21474......
  • nginx开启更为安全的tls1.3
    随着互联网安全越来越受到重视,越来越多的网站选择启用https来保证数据的加密传输,TLS1.2发布于2008年8月,至今正好有10年,所以新协议TLS1.3呼之欲出。Googlechrome在最近的版本更新中也开始逐步对TLS1.3进行支持,TLS1.3对于TLS1.2有重大改写,提高了安全性并且提高了速度,所以升级还是很......
  • Week1.3
    1)如何通过一个简短的关键字,例如process获取相关的命令。命令:man-kprocess该命令会从所有MAN帮助手册中查找NAME信息的内容(注:只会在NAME里搜索),其中包含process的手册列出来,-k后可以加正则表达式进行搜索。例如:man-k^wait  2)通过命令的描述,选择一个命令,获取命令的man文......
  • Linkis v1.3源码分析
     首先找到单机安装linkis的教程,可以看到第一次先执行install.sh 我们就从这个install.sh作为突破口,看看安装的时候,做了什么?   看到install.sh的前面就是设置了一些变量和环境检测,然后就执行了common.sh了,所以先暂时暂停到install.sh的48行,先去看一下......
  • ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found
    [root@localhostPaddleOCR]#strings/lib64/libstdc++.so.6|grep'CXXABI'CXXABI_1.3CXXABI_1.3.1CXXABI_1.3.2CXXABI_1.3.3CXXABI_1.3.4CXXABI_1.3.5CXXABI_1.3.6CXXABI_1.3.7CXXABI_TM_1[root@localhostPaddleOCR]#find/-name"libstdc++.......
  • linux安装cuda11.3 多版本切换
    https://developer.nvidia.com/cuda-toolkit-archivelsb_release查看ubuntu版本,选择对应版本后通过runfile安装:wgethttps://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.runsudoshcuda_11.3.1_465.19.01_linux.run......
  • 编译安装python3.11.3
     1、下载源码包cd/usr/local/srcwget'https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tar.xz' 2、解压xz-dPython-3.11.3.tar.xztarzfPython-3.11.3.tar 3、安装编译工具和依赖包yum-yinstallgcc-c++openssl-devel 4、配置mkdir-p/......
  • guzz 1.3.0大版本发布,支持Spring事务
    Guzz是一种用来进行快速开发和高性能网站设计的框架,用于替代或者补充hibernate或ibatis的持久化实现,并提供更多的大型系统架构设计支持。guzz的目标是使得大型化网站设计更加简单,团队分工更加明确,框架在使用时更少出问题。主要设计理念:更容易的团队管理和人员分工现代大规模系......