SDN
文章平均质量分 87
楊木木8023
我是风,我是雨,我是神奇的小海螺
展开
-
基于SDN的访问控制模块实现
一、背景1、访问控制访问控制技术,指防止对任何资源进行未授权的访问,从而使计算机系统在合法的范围内使用。意指用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用的一种技术。访问控制通常是系统管理员控制用户对服务器、目录、文件等网络资源的访问。2、防火墙防火墙是最常见的访问控制技术的实现,其通过设置一系列的访问过滤规则实现限制访问主体对客体的访问的功能。现有最常见的防火墙分为:包过滤防火墙和状态检测防火墙。(1)包过滤防火墙包过滤是指在网络层对每一个数原创 2021-10-25 10:32:16 · 5018 阅读 · 3 评论 -
Docker+Ovs构建SDN网络
一、背景知识关于Docker的基础知识和实验用到的Docker ryu镜像可以参考:Docker命令、基于Docker的SDN实验环境部署(1)_北风-CSDN博客Docker网络模式:本实验,主要利用两个Docker作为主机,OVS作为交换机,一个Docker作为控制器构建。构建的Topo如下所示。二、构建步骤(1)创建两个未配置网络的docker,命令如下。# 创建Docker01docker run -it --name host1 --network none .原创 2021-09-20 15:24:52 · 2210 阅读 · 1 评论 -
ryu--北向接口(流表的操作以及多控制器流表信息互通)
目标:(1)实现两控制器的流表互通(2)域内信息互通(主机ip)(3)控制控制器进行流表下发实现链路的切断与连接(3)控制控制器进行流表下发实现ip匹配流屏蔽拓扑:两个控制器分别位于两个docker中,利用docker进行模拟控制器;两个控制器程序利用socket同同一个服务端进行通信docker处理:创建两个docker,分别作为as1和as2的控制器,docker和宿主机之间共享同一存储空间,也就是进行数据卷挂载,方便在pycharm中进行python程序的编写,同.原创 2021-09-17 10:13:49 · 3314 阅读 · 4 评论 -
Docker命令、基于Docker的SDN实验环境部署(1)
背景Docker简介1、docker的作用2、docker常见命令介绍Docker镜像构建1、Dockerfile2、镜像代码发布镜像原创 2021-08-19 14:49:30 · 2171 阅读 · 0 评论 -
ryu---北向接口(利用socket对外通信)
最近有人问ryu控制器如何实现与应用层(如web、app等)的通信,实际上,实现通信就需要利用SDN的北向接口,关于SDN的北向接口,各种文章的解释不一,难以理解。实质上,北向接口实现的功能就是和两个软件实体之间的通信无任何区别,也就是说,北向接口不需要任何新的协议,只要会写简单的socket编程就能轻易实现应用层与控制层之间的通信。下面我介绍一下如何使用python的socket编程实现控制器和应用层之间的通信。...原创 2021-07-27 17:32:26 · 1470 阅读 · 3 评论 -
ryu实例---基于链路质量(时延)的最短路径转发
一、前言预备知识:(1) ryu网络拓扑发现:https://www.sdnlab.com/11576.html(2) ryu基于跳数最短路径转发:https://blog.csdn.net/weixin_40042248/article/details/116977397?spm=1001.2014.3001.5501(3) ryu网络时延探测:https://blog.csdn.net/weixin_40042248/article/details/117562160?spm=1001.原创 2021-06-09 16:04:42 · 4886 阅读 · 22 评论 -
ryu实例---网络时延探测
前面的博文写到了基于跳数的最短路径的案例实现,然而基于跳数的最短路径转发并未考虑网络链路的质量,所以针对这种情况,应该有一种基于链路zhi原创 2021-06-04 18:34:19 · 4238 阅读 · 12 评论 -
ryu实例---基于跳数的最短路径转发
参考网上的一些知识,本篇内容主要介绍如何利用networkx实现最短路径转发,同时介绍ryu如何获取链路拓扑。一、获取拓扑对于ryu控制器而言,获取链路拓扑的主要模块在ryu/topology目录下面,下面主要介绍接下来用到的api.py和switches.py。(1) api:api是ryu对开发者提供的获取链路信息的接口,api提供了get_switch(), get_link()方法,通过这两个接口,可以获取链路的交换机的信息和各个节点的链路信息,具体的代码如下。def get_原创 2021-05-18 19:10:10 · 5701 阅读 · 19 评论 -
ryu实例---ECMP的rr(轮询)算法实现
最近,做到一个实验,需要每隔一段时间,就改变数据的传输路径,如下图所示,主机之间的数据传输需要经过s1和s2两个交换机,交换机之间的链路有两条,实验是在这两条链路之间每隔10秒切换一次,也就是相当于ECMP的轮询算法(当然,若想以流为单位切换链路,比如说:上一个流经链路1下一条流经链路2,这种方式的轮询利用集线器的程序改变一下就可以实现)。轮询,即各个流在多条路径之间轮询传输。拓扑的端口对应关系:接下来,重点说明程序如何写,不再赘述一些关于拓扑构建和轮询的一些概念。一、程序SDN架原创 2021-05-15 10:47:36 · 3304 阅读 · 6 评论 -
ryu实例---网络聚合(LACP)
这一篇重点介绍ryu来实现网络聚合的功能,建议先阅读关于LACP的知识,可以参考上一篇博文:https://blog.csdn.net/weixin_40042248/article/details/116395325?spm=1001.2014.3001.5501一、拓扑构建在介绍程序之前,先介绍一下实验拓扑的构建。拓扑如下图所示,其中h1和交换机连接的两条链路绑定在一个逻辑平面之中,接下来的实验就是针对这两个链路进行。这个拓扑的构建,本实验选择namespace进行,新建h1-h4四个n原创 2021-05-07 21:22:44 · 1784 阅读 · 7 评论 -
ryu基础---ryu源码的解析
https://www.cnblogs.com/zxqstrong/p/4789105.html原创 2021-05-06 21:05:21 · 631 阅读 · 0 评论 -
ryu实例---自学习交换机
前面的几篇博客介绍了hub、流表的操作、数据包的解析等知识(以下若有不明白之处,建议先把前几篇博客看完)。接下来,根据这些知识就可以编写自学习交换机的实例了。第一部分:相关知识转发表、路由表、ARP表之间的关系需要先行了解(https://cloud.tencent.com/developer/article/1173761)参考ryubook(https://github.com/Yang-Jianlin/ryu/tree/master/spec_book)OpenFlow 交换器会接受来原创 2021-04-21 20:59:17 · 1666 阅读 · 1 评论 -
ryu实例---流表的操作
本文章基于https://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html里面的Modify State Messages的内容进行讲解的,即openflow1.3的流表的操作的简单实现。通过这里的讲解,可以实现控制器对交换机的流表的增加删除等操作。接下来,着重讲一下ryu如何实现对交换机的流表的操作。(重点以默认流表项的添加为例)第一部分:涉及的openflow知识在学习ryu之前,我认为初学者需要先大致的了解openflow协议,理解交换机原创 2021-04-18 19:39:56 · 5553 阅读 · 0 评论 -
ryu实例---数据包解析
本文章基于https://ryu.readthedocs.io/en/latest/writing_ryu_app.html里面的Packet library的内容进行讲解的,即数据包解析的简单实现。ryu包库可以帮助我们去解析和构造各种数据协议包。下面就着重讲一下,ryu如何对数据包进行解析。首先,数据包解析是指控制器对从交换机收到的数据包进行解析。那么这个数据包在哪呢,按照官网的给出的开发文档,我们知道数据包主要指的是msg.data,如下图所示。可以看出data数据是由一串16进制的数原创 2021-04-16 10:17:01 · 2327 阅读 · 1 评论 -
ryu实例---Hub
本文章基于https://ryu.readthedocs.io/en/latest/writing_ryu_app.html里面的第一个应用,即hub的简单实现。但是,按照这里的原程序,出现了一些问题,这篇文章里我给出了一些我自己的解决方案。接下来,我就按照官网的示例进行讲解。第一部分:代码新建一个类L2Switch,内容如下:from ryu.base import app_managerfrom ryu.ofproto import ofproto_v1_3class L2Sw原创 2021-04-14 18:51:44 · 1240 阅读 · 2 评论 -
VLAN---背景、原理、实验2(vlan间通信)
一、知识背景1、子接口技术子接口(也称子端口)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。相对子接口而言,这个物理接口称为主接口。每个子接口从功能、作用上来说,与每个物理接口是没有任何区别的,它的出现打破了每个设备存在物理接口数量有限的局限性。在路由器中,一个子接口的取值范围是0~4096个,当然受主接口物理性能限制,实际中并无法完全达到4096个,数量越多,各子接口性能越差。经典应用:在拥有多个VLAN的交换机和路由器上,通过配置子接口和802.1Q协议,实现V原创 2021-02-21 23:05:28 · 1373 阅读 · 0 评论 -
VLAN---背景、原理、实验1(划分vlan)
一、背景介绍Underlay、Overlay、大二层介绍:云计算的核心思想就是将所有资源,包括服务器、网络、存储等等,虚拟化为一片云,让用户不再需要关心实际物理资源是如何部署的。而这其中,传统网络也必须转型为新型的云网络才能满足需求。传统网络在转型为支持大规模计算虚拟化的云网络时会有什么样的问题呢?最典型的问题是,在服务器虚拟化的场景中,虚拟机迁移后如果位于不同的三层网络中,则需要修改服务器的IP地址,但很多应用并不允许随意修改IP地址。那么最直接的解决方案便是使虚拟机迁移之后仍然位于同一个二层网络原创 2021-02-20 16:57:26 · 2496 阅读 · 3 评论 -
Open vSwitch---流表控制主机数据转发实验(五)---group表实践
一、group表介绍OpenFlow v1.1中增加了组表(Group Table)的概念,并一直被后续的版本所沿用。OpenFlow支持四种组表类型:Indirect:执行该group中一个已定义的bucket,该组仅支持一个bucket。 允许多个流表项或组表项指向一个公共的组(例如IP转发的下一跳)。 这是最简单的group类型,交换机通常比较支持这种类型的group。 All:执行该group中所有的bucket。这种类型的group用来进行multicast和broadcast。为.原创 2021-02-02 21:59:31 · 3665 阅读 · 1 评论 -
Open vSwitch---流表控制主机数据转发实验(四)---meter表实践
一、meter表介绍meter表是openflow协议的内容,meter表是openflow1.3版本以后才支持,所以所有命令需要指定OpenFlow1.3版本以上。此外,在openvswitch-v2.8之前的版本中,还不支持meter,在v2.8版本之后已经实现,要正常使用的话,需要注意的是datapath类型要指定为netdev(即将datapath从内核态转化到用户态,datapath一般来说是运行在内核态),而且band type暂时只支持drop。meter表主要用来进行网络限速,网络限原创 2021-01-29 17:07:43 · 3607 阅读 · 1 评论 -
Open vSwitch---流表控制主机数据转发实验(三)---实现NAT地址转换(2)
上一篇博客中,我介绍了如何使用iptables实现ovs连接的主机的nat地址转换,在本节中,通过实验介绍如何使用流表来实现nat地址的转换。(上节详见:https://blog.csdn.net/weixin_40042248/article/details/112975072)实验目的:使用NAT转换使得ovs连接的主机可以和外界的互联网连接,实验中,使用114.114.114.114作为ping的对象,NAT转换可以参考前文(https://blog.csdn.net/weixin_4004224原创 2021-01-27 00:00:37 · 1935 阅读 · 0 评论 -
Open vSwitch---流表控制主机数据转发实验(三)---实现NAT地址转换(1)
实验目的:使用NAT转换使得ovs连接的主机可以和外界的互联网连接,实验中,使用114.114.114.114作为ping的对象,NAT转换可以参考前文(https://blog.csdn.net/weixin_40042248/article/details/112534477),本次实验中也是通过iptables来进行nat转换,从而实验和外界进行通信的。实验原理:具体的拓扑是在上一个实验(https://blog.csdn.net/weixin_40042248/article/details/1原创 2021-01-22 21:30:18 · 1782 阅读 · 2 评论 -
Open vSwitch---流表控制主机数据转发实验(二)
上一节的试验中讲到了ovs的控制管理类和流表类的简单试验(详见:https://blog.csdn.net/weixin_40042248/article/details/112854471)。这一节,继续根据上节内容对ovs的匹配项和指令动作进行讲解,并讲解控制器ryu的安装和连接。一、ryu控制器的安装(1)安装python套件apt install python3-eventletapt install python3-routesapt install python3-webo原创 2021-01-21 18:16:42 · 2199 阅读 · 0 评论 -
Open vSwitch---流表控制主机数据转发实验(一)
一、ovs的安装安装ovs有两种方法,一种是源码安装二、ovs命令ovs-vsctl介绍三、数据流转发试验原创 2021-01-20 16:45:13 · 3210 阅读 · 0 评论 -
Linux下为主机创建虚拟端口并选择特定端口发送数据---以mininet下的SDN网络架构模拟为例
网络拓扑图如下:根据上图,如果h1 ping h2会有分别经过s1和s2的两条链路可选,那么初始状态下是否两条链路都可以发送数数据呢?显然,不可以。因为,初始状态下,h1和h2一般都只设置了一个端口h1-eth0和h2-eth0的ip地址,如图。在mininet的终端中输入命令links,如图可用看出,有h1-eth0----s1----h2-eth0和h1-eth1----s2----h2-eth1这两天链路,但是由于只有h1-eth0和h2-eth0配置了ip地址,所以此时只有经过s原创 2020-12-31 21:20:07 · 1243 阅读 · 1 评论 -
Segment Routing
这几年,在云计算和SDN技术的推动下,很多网络新技术,新名词涌现出来,让人眼花缭乱,有些是包装概念,有些是技术创新。其中,Segment Routing可以堪称是在核心路由领域的黑科技。在这篇文章里,我们不讲协议字段解释,不讲配置步骤,只谈谈Segment Routing 的工作原理,让我们一起看看Segment Routing为什么与众不同。1 Segment Routing(SR)概念1.1 什么是Segment和Segment 路径在谈SR之前,我们先要搞清楚一个最基本的概念,什么是S转载 2020-12-30 20:40:28 · 3905 阅读 · 2 评论 -
通过脚本程序依次执行在Linux终端输入的一系列命令(以开启ovs服务为例)
在使用基于Linux的一些应用的时候,通常需要在终端的命令行中,依次执行一系列的程序,但是当我们对这些命令的使用率较高时,且这些命令又是顺序执行的时候,如果一次一次的手动输入命令就会降低效率,因此就不妨写个脚本,包括想要执行的命令,一键执行。例如:在使用OVS时,每次重启系统,都需要一系列的命令重新开启ovs的功能,如下列步骤所示。[1]、启动ovs,首先输入命令:export PATH=$PATH:/usr/local/share/openvswitch/scripts导入环境变量,然后执行命令:原创 2020-12-28 23:14:59 · 1245 阅读 · 0 评论 -
基于ryu实现网络的流量监控--monitor
程序均为ryubook的案例,在此记录一下我对程序的理解和实验的执行步骤。如系统学习,可以下载ryubook进行学习,此外可以参考https://ryu.readthedocs.io/en/latest/getting_started.html,这是官方的网站,里面详细阐述了各种功能和开发步骤。背景:流量监控,即针对交换机加入流量监控的功能,包括监控错包,发送包的数量等一系列的操作。因为,网络已经成为许多服务或业务的基础建设,所以维护一个稳定的网络环境是必要的。但是网络问题总是不断地发生。网络发生异原创 2020-12-27 21:51:52 · 6333 阅读 · 0 评论 -
利用mininet进行链路拥塞造成数据丢包的实验
实验原理网络链路拥塞是指在分组交换网络中传送分组的数目太多时,由于存储转发节点的资源有限而造成网络传输性能下降的情况。当网络发生拥塞时,一般会出现数据丢失,时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃”。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。因此,根据这些特征,构建了一个网络拓扑(SDN网络拓扑,普通拓扑也行,但是我这是构建的SDN架构,为了方便我后续的学习),设计了一种逐渐增加链路中发送的数据包,从而观察各个主机的丢包率和链路带宽的情况。实验设备:2台Ubu原创 2020-12-24 14:33:13 · 3811 阅读 · 1 评论 -
基于ryu实现集线器的功能---Hub实现
Hub实现环境:两台Ubuntu虚拟机、mininet、ryu控制器、pycharm环境搭建见前几篇文章,有具体的搭建步骤。对于ryu的开发,推荐ryubook这本工具书。首先,在Ubuntu上安装pycharm,安装完成后,导入ryu项目,若出现无法修改或者权限问题,则需要通过命令chmod [ u / g / o / a ] [ + / - / = ] [ r / w / x ] file修改文件的权限。接下来,就解释一下代码的编写:导入包,将导包放在最前面,主要是刚开始学实在不知道原创 2020-12-23 12:25:44 · 828 阅读 · 1 评论 -
Ubuntu下安装部署openvswitch和一些安装的异常处理(ovs安装)
最近为了安装ovs,可废了老大劲了,按照网上的教程安装基本都会出现各种各样的报错,最终安装失败。最后还是官方的文档比较好,按照ovs网址上的步骤操作下来,结果还真行了,下面是我的安装步骤,以及参考的链接,希望可以给你带来一些帮助。OVS安装过程官网安装指导(ahttps://docs.openvswitch.org/en/latest/intro/install/general/)参考博客(https://www.cnblogs.com/popsuper1982/p/3800431.html)原创 2020-11-20 19:42:17 · 7235 阅读 · 4 评论 -
利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)
1、知识概述(1)软件定义网络:(2)mininet:Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX原创 2020-11-02 10:54:56 · 15181 阅读 · 7 评论 -
利用mininet的可视化界面miniedit进行拓扑构建
Mininet 2.2.0之后的版本内置了一个构建网络拓扑的可视化工具miniedit,使用miniedit可视化界面方便了用户自定义网络拓扑的创建,为不熟悉python脚本的使用者创造了更简单的环境,界面直观,可操作性强。因此,这篇文章介绍一下miniedit的使用方法。miniedit的各项操作都是在root用户进行的,所有首先我们进入root用户下。那么miniedit的位置在哪呢?找到miniedit,我们需要进入mininet的目录下,miniedit的目录如下图的操作所示,可以看见一原创 2020-10-25 17:08:15 · 10624 阅读 · 7 评论