首页>>科技 >>内容

SDNLAB技术分享:ODL的Service,Function_Chaining入门和Demo

发布时间:2023-11-06 23:04:20编辑:温柔的背包来源:

很多朋友对SDNLAB技术分享:ODL的Service,Function_Chaining入门和Demo不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

SDNLAB技术分享:ODL的Service,Function_Chaining入门和Demo

1.1的基本概述。SDN服务链

由于覆盖网络的发展,虚拟网络和物理网络分离,使得数据中心的网络控制更加灵活和可扩展。但是在数据中心,虚拟网络和物理网络之间有很多中间件,比如防火墙、QoS、负载均衡器等等。这些中间件提供了必要的业务处理功能,即服务功能。

灵活、便捷、高效、安全地将流量分配给服务功能,形成服务功能链,这是SFC项目要解决的问题。服务链可以理解为一种商业形式。

过去也有服务链的概念,但传统的网络服务链往往与网络拓扑紧密耦合,部署复杂。当业务链发生变化和扩展时,需要改变网络拓扑,重新配置网络设备。然而,虚拟化技术广泛应用于云计算环境中,具有动态性、高流动性、规模可变、多租户等特点。传统网络的服务链无法满足这些需求,SDN的出现让服务链重新焕发光彩。所以目前谈服务链,默认指的是SDN服务链。

与传统DC配置的网络服务链相比,基于SDN的SFC具有以下优势:

传统的网络服务链往往基于手动配置,很大程度上依赖于具体的网络拓扑,使得网络设备之间的耦合性很大。基于SDN的配置可以在链表上动态添加或删除服务节点,不仅使用方便,而且解耦了网络设备之间的关联。在数据流量通过链表的过程中,SFC还支持分类器和服务之间以及服务之间的上下文信息共享。

在传统的数据服务链中,数据包往往要经过多重分类的过程,即拆包和打包。在SFC中,这个过程大大减少,一般只需要分类一次,整个过程更加便捷高效。2.基于OpenDaylight的服务链项目2.1服务功能链的架构和组件。

OpenDaylight的SFC项目是整个控制器平台内的一个功能模块。用户可以通过控制器提供的北向API使用SFC的功能,如创建、更新或删除服务链,也可以通过配置不透明的元数据段在服务功能的节点间共享数据。同时,该项目可以在控制器的数据存储中注册和配置服务节点,并获得拓扑结构。南向还支持Netconf、Openflow12等协议。SFC的核心组件如下:

分类:根据初始化(配置)的策略匹配数据流进行封装,然后传递给服务功能链。

服务功能(SF):负责用特定的功能处理接收到的数据包。作为一个逻辑组件,SF可以是一个虚拟元素或嵌入在特定网络设备中的功能。常见的SF包括:防火墙、广域网设备加速器、深度包检测、DPI)、NAT等。服务功能转发器(SFF):主要负责服务功能链上的流量转发控制。

服务功能链(SFC): SFC定义了服务功能的抽象有序集合。已分类的包应该依次遍历集合中的服务功能。例如,用户可以配置防火墙-qos-dpi服务来构建SFC。呈现的服务路径(RSP):数据包的实际路径。服务功能路径(service function path): SFP是一个逻辑概念,是SFC和RSP之间的一层抽象,SFP有时等同于SFC

2.2 ODL的SFC项目工作流程原理那么,SFC项目是如何将上述组件整合起来工作的呢?

一种基于NSH封装头的机制是使用ODL来配置和发布服务功能链,每个链都有自己的标识符。当主机1向主机2发送数据包时,该数据包将首先在分类器中过滤。需要通过服务功能链接的数据包将被封装,并用NSH报头标记。头包含了很多信息,包括走哪个服务链,服务链有多少跳。然后数据包会依次通过SFF,SFF会将数据包传递给SF或下一跳SFF,直到链的末端。

3.本文旨在通过介绍基本概念和一个SFC实验,帮助您理解什么是SFC以及如何在OpenDaylight中配置基本的SFC。通过对SFC的大致了解,感兴趣的学生可以继续深入研究NSH、SFC架构和应用。3.1实验准备系统需要Ubuntu 14.04(Mac也可以)Java 7Mave 3.4git OpenDaylight SFC项目导入Python 3.4,包括:Requests、FLASK、Netfacts、Paramiko等。

在Ubuntu14.04下构建ODL环境参考:https://wiki.opendaylight.org/view/Install_On_Ubuntu_14.04在Ubuntu下安装Python3.4,需要的包如下:如果没有Python3.4:安装一个Python3.4-pip安装程序来安装flask包,其他包安装类似。根据不同版本,安装方法或说明可能与此处不一样:3.2术语汇总:

SF: Service Function SFF: Service Function Forwarder FP: Service Function Path RSP: Presented Service Path DL: OpenDaylightSFC Agent: Service Function Link Agent 3.3 Basic Configuration and Installation: ifconfig View the ip of the local machine. My side is: 192.168.2.134 Installation of ODL surface (same as the surface) Project: git cloning of the surface (same as the surface) used by the landlord in http://git.opendaylight.org/gerrit/sfc is the May version: git can be resethard cd12dda6 can be returned to that version.

如果读者在实验过程中使用的是最新版本的SFC,那么sfc/sfc-py/sfc/nsh/service.py脚本存在很多bug,要适当修改。为了方便起见,这里使用的是以前版本的演示。用maven构建一个项mvn clean install -DskipTests启动ODL:过一会儿就可以用浏览器进入SFC:http://localhost:8181/SFC/index . html用户名和密码分别是:admin。

一开始都是空的。点击系统信息,会有404。不要紧张,因为什么都不配置。另外,在ODL创建SFC有两种方法:一是使用北行RESTAPI;第二,用UI创建。这个实验将基于UI,它看起来很直观,很容易理解。对于将来有兴趣配置rest的人,请参阅SFC 101文档。3.4启动实验3.4.1启动SFC代理

SFC Agent是用Python脚本编写的仿真工具,位于SFC项目的sfc-py目录下。在实验过程中,ODL通过南方的REST与Agent通信,即ODL通过REST将配置信息发送给Agent,Agent根据这些信息在数据平面中模拟相应的元素组件。使用Agent的好处是简化了南向接口,容易实现实验。进入sfc/sfc-py目录,打开start_agent.sh文件,将默认ip地址更改为本地主机ip:

也可以将127.0.0.1改为192.168.2.134。启动代理:按照上图,可以等到代理运行的端口是5000。3.4.2创建服务功能t点击导航栏中的服务功能选项卡,然后点击“添加服务功能”填写如下表格:点击提交,代理端会输出以下信息:表示代理已经成功为我们创建了SF1(防火墙)。以下是几个需要注意的地方:

1.1的使用。NSH头球。我们这里有一个基于代理的模拟实验,我们还没有配置分类器。选择真或假并不重要,但在现实中,您会根据NSH报头中的信息选择具体的路径。具体可以研究:必须选择http://datatracker.ietf.org/doc/draft-ietf-sfc-nsh/2.数据面的通信方式,这里选择的是vxlan-gpe。否则,代理将不会收到请求。3.SFF1尚未创建。可以先填SFF1,后面创建的SFF名称应该和这里一样。创建SFF

在导航菜单中点击服务功能转发器点击“添加服务功能转发器”,填写表格信息如下:SFF字典“移除右下角为“移除”,以后版本不再提供该目录。如下图所示:提交后,在代理端,SFF创建成功信息打印如下:3.4.4当前拓扑和工作流3.4.5创建服务功能链点击导航栏中的服务功能链页签:

点击创建服务功能链,填写名称“Chain-1”,提交并拖拽“防火墙”的SF到右边的Chain-1保存,点击部署生成一个名为“Chain-1-Path-1”的服务功能路径,这样就创建好了一个服务功能Paht。3.4.6创建渲染函数路径单击导航栏中的“服务函数路径”,您将看到我们刚刚创建的SFP。

根据SFP,单击上面的按钮生成RSP。如果选中“对称路径”,将生成另一个对称反转的RSP。成功之后,记住RSP的两个重要属性是“路径标识”63和“起始索引”255。这时,我们可以看到代理中打印的消息:

从创建SFC到SFP,再到创建RSP,是一个从抽象到具体的过程。从应用的角度来看,SFC是服务功能的抽象,其中SFP是将每个服务功能具体化到其对应配置的SF(SF1),RSP的产生代表了包的具体路径会是什么。3.4.7发送数据包我们将发送一个数据包来遍历这个简单的SFC,其“Path-ID”为63,“starting-index”为255。打开sfc/sfc-py/sfc/目录,并运行以下命令:

python 3.4 SFF _ client . py-remote-SFF-IP 192 . 168 . 2 . 134-remote-SFF-port 4789-SFP-id63-SFP-index 255 agent得到如下结果:从上图可以看出,客户端(client192.168.2.134)。SF被处理后,被传送回SFF,SFF寻找下一跳。如果没有找到,则判断为链表的结尾。实验总结

上面,我们简单演示了一个使用SFC的实验,它只包含一个SFF和SF。通过使用ODL北向UI接口配置SF的信息,配置SF的信息并发送给对应SF关联的代理。在这个过程中,我们还可以删除和修改这些节点的信息,充分体现了基于SDN的服务链的灵活性和拓扑独立性。

当用户需要配置服务链时,只需要通过控制器的北向接口将节点自由组合成有序序列。然后,当它被使用时,分组路径被生成和分发。同时,用户还可以配置多个服务链。请注意,在不修改原始python脚本的情况下,您可以通过使用代理在南方向创建多个悬挂在SFF上的SFF,但是只能创建一个SFF。审计郭婷

以上知识分享希望能够帮助到大家!