计算机网络
文章平均质量分 86
楊木木8023
我是风,我是雨,我是神奇的小海螺
展开
-
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 · 2206 阅读 · 1 评论 -
ryu--北向接口(流表的操作以及多控制器流表信息互通)
目标:(1)实现两控制器的流表互通(2)域内信息互通(主机ip)(3)控制控制器进行流表下发实现链路的切断与连接(3)控制控制器进行流表下发实现ip匹配流屏蔽拓扑:两个控制器分别位于两个docker中,利用docker进行模拟控制器;两个控制器程序利用socket同同一个服务端进行通信docker处理:创建两个docker,分别作为as1和as2的控制器,docker和宿主机之间共享同一存储空间,也就是进行数据卷挂载,方便在pycharm中进行python程序的编写,同.原创 2021-09-17 10:13:49 · 3300 阅读 · 4 评论 -
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 · 4872 阅读 · 22 评论 -
ryu实例---网络时延探测
前面的博文写到了基于跳数的最短路径的案例实现,然而基于跳数的最短路径转发并未考虑网络链路的质量,所以针对这种情况,应该有一种基于链路zhi原创 2021-06-04 18:34:19 · 4228 阅读 · 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 · 5687 阅读 · 19 评论 -
ryu实例---ECMP的rr(轮询)算法实现
最近,做到一个实验,需要每隔一段时间,就改变数据的传输路径,如下图所示,主机之间的数据传输需要经过s1和s2两个交换机,交换机之间的链路有两条,实验是在这两条链路之间每隔10秒切换一次,也就是相当于ECMP的轮询算法(当然,若想以流为单位切换链路,比如说:上一个流经链路1下一条流经链路2,这种方式的轮询利用集线器的程序改变一下就可以实现)。轮询,即各个流在多条路径之间轮询传输。拓扑的端口对应关系:接下来,重点说明程序如何写,不再赘述一些关于拓扑构建和轮询的一些概念。一、程序SDN架原创 2021-05-15 10:47:36 · 3293 阅读 · 6 评论 -
ovs的生成树协议(STP)实验
一、相关概念(1) 概述为了提高网络可靠性,交换机网络中通常会使用冗余链路,冗余链路会给交换机带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又避免环路带来的各种问题。随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如果交换机之间仅使用一条链路互连,则可能会出现单点故障,导致业务中断。为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。 冗余链路虽然增强了网络的可靠性,原创 2021-05-08 22:08:19 · 2083 阅读 · 1 评论 -
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 · 1783 阅读 · 7 评论 -
LACP(网络聚合)与openflow group表Fast failover类型的对比试验
一、LACP:1、概念链路聚合控制协议LACP(Link Aggregation Control Protocol),是基于IEEE802.3ad标准的一种实现链路动态聚合与解聚合的协议,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据,LACP模式就是采用LACP的一种链路聚合模式。聚合链路形成以后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整链路聚合。具体工作方式参考(https://support.huawei.com/enterprise/zh/doc/EDOC11原创 2021-05-04 11:37:24 · 1329 阅读 · 1 评论 -
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 · 1662 阅读 · 1 评论 -
转发表(MAC表)、ARP表、路由表总结
https://cloud.tencent.com/developer/article/1173761原创 2021-04-21 14:07:34 · 461 阅读 · 0 评论 -
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 · 5542 阅读 · 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 · 2321 阅读 · 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 · 1236 阅读 · 2 评论 -
python udp socket解决服务端响应时间长的指数退避算法
UDP连接是一个不可靠的连接,也就是说,UDP通信过程中可能出现数据包丢失的情况,或者是服务端宕机后,客户端不知道服务端状态,仍然不停的访问服务端的情况。针对这一情况,UDP客户端必须选择一个等待时间,一旦超过这个时间间隔还未收到服务端的响应,就重新发送请求,若多次请求仍未收到服务端的响应,就认为服务端宕机。而且,由于数据丢包的主要原因在于网络拥塞,因此,客户端在等待时间内未收到服务端的应答,客户端重发不应该和上次一样,这样就会造成网络拥塞加剧,鉴于这种情况,客户端采用指数退避算法,使得重发数据包频率越来越原创 2021-03-31 22:29:18 · 1248 阅读 · 1 评论 -
vxlan---背景、原理、实验
一、知识背景详见:https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803605http://www.h3c.com/cn/d_201811/1131076_30005_0.htm1、vxlan 简介VXLAN 全称是Virtual eXtensible Local Area Network,虚拟可扩展的局域网。它是一种 overlay 技术,通过三层的网络来搭建虚拟的二层网络。rf..原创 2021-02-25 19:21:20 · 4132 阅读 · 0 评论 -
linux 网络虚拟化: network namespace 简介
network namespace 是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己就在独立的网络中。这篇文章介绍 network namespace 的基本概念和用法,network namespace 是 linux 内核提供的功能,这篇文章借助ip命令来完成各种操作。ip命令来自于iproute2安装包,一般系统会默认安装,如果没有的话,请读者自行安装。NOTE:ip命令因为需要修改系统的网络配置,默认需要 sud...转载 2021-02-23 21:21:42 · 492 阅读 · 0 评论 -
VLAN---背景、原理、实验2(vlan间通信)
一、知识背景1、子接口技术子接口(也称子端口)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。相对子接口而言,这个物理接口称为主接口。每个子接口从功能、作用上来说,与每个物理接口是没有任何区别的,它的出现打破了每个设备存在物理接口数量有限的局限性。在路由器中,一个子接口的取值范围是0~4096个,当然受主接口物理性能限制,实际中并无法完全达到4096个,数量越多,各子接口性能越差。经典应用:在拥有多个VLAN的交换机和路由器上,通过配置子接口和802.1Q协议,实现V原创 2021-02-21 23:05:28 · 1370 阅读 · 0 评论 -
VLAN---背景、原理、实验1(划分vlan)
一、背景介绍Underlay、Overlay、大二层介绍:云计算的核心思想就是将所有资源,包括服务器、网络、存储等等,虚拟化为一片云,让用户不再需要关心实际物理资源是如何部署的。而这其中,传统网络也必须转型为新型的云网络才能满足需求。传统网络在转型为支持大规模计算虚拟化的云网络时会有什么样的问题呢?最典型的问题是,在服务器虚拟化的场景中,虚拟机迁移后如果位于不同的三层网络中,则需要修改服务器的IP地址,但很多应用并不允许随意修改IP地址。那么最直接的解决方案便是使虚拟机迁移之后仍然位于同一个二层网络原创 2021-02-20 16:57:26 · 2494 阅读 · 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 · 3656 阅读 · 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 · 3591 阅读 · 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 · 1929 阅读 · 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 · 1775 阅读 · 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 · 2191 阅读 · 0 评论 -
Open vSwitch---流表控制主机数据转发实验(一)
一、ovs的安装安装ovs有两种方法,一种是源码安装二、ovs命令ovs-vsctl介绍三、数据流转发试验原创 2021-01-20 16:45:13 · 3202 阅读 · 0 评论 -
iptables之state模块使用
为了防止恶意攻击主动连接到你的主机,我们需要通过iptables的扩展模块判断报文是为了回应我们之前发出的报文还是主动向我们发送的报文,state模块可以让iptables实现 连接追踪机制 ,报文状态可以分成NEWESTAVLISHEDRELATEDINVALIDUNTRACKED。具体的连接跟踪的原理详见(https://blog.csdn.net/weixin_40042248/article/details/112568071)。本次实验是为了验证iptables的state模块如何进...原创 2021-01-15 10:54:25 · 3276 阅读 · 0 评论 -
netfilter之connnection track(连接跟踪)简述
1、什么是连接跟踪?报文过滤和连接跟踪可以说是Netfilter提供的两大基本功能。连接跟踪可以让Netfilter知道某个特定连接的状态,运行连接跟踪的防火墙称作带有状态机制的防火墙,以下简称为状态防火墙。状态防火墙比非状态防火墙要安全,因为它允许我们编写更严密的规则。无状态防火墙通常会查看经过它的流量,并使用诸如它的地址、来源地址和其他预定义的统计信息。这是最简单、最容易使用的防火墙类型;大多数基于软件的防火墙都使用这种技术。它不像有状态防火墙那样安全,但它通常更快,因为它不必处理太多的信息。有原创 2021-01-13 16:37:47 · 1368 阅读 · 0 评论 -
iptables之nat表的学习和实验
本次实验接着上一篇博客《iptables之filter表的学习和实验》进行(https://blog.csdn.net/weixin_40042248/article/details/112477946),主要实现iptables的nat表的功能。实验目标:实现在ns1空间访问其他的外部网址、添加nat规则后对数据抓包分析ns1访问ns2或者ns3的过程、实现ns1访问www.baidu.com。理论知识补充:1、什么是NAT:nat:Network Address Translatin,网原创 2021-01-12 21:37:33 · 2199 阅读 · 0 评论 -
iptables之filter表的学习和实验
实验目标:本次实验主要完成以下内容:DROP掉外界主机的icmp协议的流量、DROP掉向外界主机发出的icmp协议的流量、DROP掉特定的源IP发送过来的流量,完成试验后删除所有规则。实验设备:Ubuntu20实验拓扑:3个namesapce代表三个主机,主机1作为流量接收设备,主机2、3作为流量发送设备。具体的拓扑构建见上一篇博客《两个network namesapce通过路由实现互通》(https://blog.csdn.net/weixin_40042248/article/details/.原创 2021-01-12 14:16:36 · 1705 阅读 · 0 评论 -
两个network namespace通过路由实现互通
本次实验主要是测试两个namespace之间的网络互通,即在一个物理机上新建两个namespace空间,然后新建几个虚拟网卡,通过设置网卡的ip和路由实现两个namespace之间相互ping通,具体入下图所示。首先,进入Linux终端,此时使用命令ip netns add nsx新建两个网络空间,如下图所示,新建完成后,使用命令ip netns查看是否新建成功。图中,新建了ns1,ns2两个网络空间。网络空间新建完成后,就需要新建虚拟网卡,使用命令ip link add veth1-.原创 2021-01-10 16:09:50 · 1694 阅读 · 2 评论 -
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 · 1242 阅读 · 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 · 3898 阅读 · 2 评论 -
利用mininet进行链路拥塞造成数据丢包的实验
实验原理网络链路拥塞是指在分组交换网络中传送分组的数目太多时,由于存储转发节点的资源有限而造成网络传输性能下降的情况。当网络发生拥塞时,一般会出现数据丢失,时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃”。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。因此,根据这些特征,构建了一个网络拓扑(SDN网络拓扑,普通拓扑也行,但是我这是构建的SDN架构,为了方便我后续的学习),设计了一种逐渐增加链路中发送的数据包,从而观察各个主机的丢包率和链路带宽的情况。实验设备:2台Ubu原创 2020-12-24 14:33:13 · 3790 阅读 · 1 评论