openflow简明学习笔记(原创)

一、openflow用来解决什么问题?

1.首先简单介绍一下什么是SDN,传统的网络是每个节点自己计算路由;

SDN是集中控制路由。在一个数据中心的网络中,只有一个控制器,下面可以连接多个交换机。控制器集中计算好路由后,将流表下发给交换机,交    换机根据流表进行转发。

跑在最上层是用户的APP(相当于计算机架构的应用软件),下一层是SDN控制层面(相当于操作系统),给APP提供接口,并负责集中    计算并控制所有    的路由;

最下面一层是进行转发的网络设备,控制器将流表下发给交换机,交换机根据流表进行转发。

2.openflow规定了控制器与交换机之间进行交互的协议。

二、openflow的机制是什么?

1.openflow交换机的包处理流程如下:

每个交换机都有一系列的表,规定了哪种报文头的报文,相应动作是什么,例如:

上图的就是流表类的一个实例,规定了目的IP为10.1.1.1的类型为0X800的报文进行某种动作。

收到一个报文,解析报文头中的信息,根据报文头(中的12元组)进行流表的匹配,匹配到了则进行相应操作。

通常action list中可以有转发、丢弃等动作,如果报文匹配到了流表,但action list为空,openflow规定默认丢弃报文;

但如果报文匹配不到流表,则会发往controller。

2.交换机与控制器的交互:

交换机与控制器建立TCP连接后,交换过hello报文后就可以进行通信了,通信内容有比如:

获取/设置配置信息,报文上送/发送,流表修改,端口状态获取/设置,错误信息等等。

3.控制器是如何获得所有交换机的组网情况的?

通过LLD报文。控制器与交换机建立连接,并获知该交换机的所有端口情况后,控制器往该交换机的所有端口都发送一个LLD报        文,对端连接的交换机收到该LLD报文后无法识别,上送给控制器,控制器就知道两个交换机是通过哪个端口连接的了。

4.控制器是如何往交换机中安装转发表项,并将数据正确转发的呢?

举个HostA与HostB相互ping同的例子:

HostA -- SwtA-- SwtB -- HostB

hostA要给HostB发送ICMP报文,首先需要发送ARP查询B的MAC地址。

SwtA收到A发送的ARP查询,通过Packet-in发送给控制器,控制器学习HostA地址,并将HostA的ARP查询报文发送给所有的边缘        Swt,边缘Swt对    边缘链路转发A的ARP查询。

HostB收到ARP查询后,也会回复ARP应答,同样的swtB将ARP应答发送给控制器,控制器学习B的MAC。

控制器将一一通知最短路径中的交换机安装转发表项,比如从端口1收到目的地址为MACB的报文,发往端口2。

交换机安装好表项后,ICMP报文就能按照转发表转发了。

以上是本人对openflow粗浅的了解,请高手多多指教:)

时间: 2024-12-25 15:59:33

openflow简明学习笔记(原创)的相关文章

VXLAN简明学习笔记(原创)

一.为什么需要VXLAN,传统的VLAN技术无法解决什么问题? 1. 因为现在虚拟化技术的发展,在数据中心里服务器都模拟成虚拟机,这样就可以方便的在物理服务器上移动.新增.删除服务器. 这样数据中心就会有成千上万的VM,而且VM一般都会需要分割成组, 或者数据中心租用给很多的用户,而每个用户所租用的VM也需要划分成组,这样的二层隔离,目前大多通过VLAN技术实现的. 但是VLAN技术有一个缺陷就是VLAN头预留的长度太短只有12位,最多只能支持4096个,是无法满足日益增长的VLAN占用需求的.

OpenFlow Switch学习笔记(一)——基础概念

OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open Flow Protocol等.下文主要是基于个人理解整理的一些学习笔记,理解不到位的地方还请大家多多指教. 一.基础概念图: 首先我们先看下Open Flow Switch的整体结构,以便有一个初步的感性认识,如下图所示: 从上面架构图中,我们可以看到Open Flow Switch主要是由以下几个部

OpenFlow Switch学习笔记(四)——Matching

这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matching 当一个来自于外部网络的数据包进入到OpenFlow Switch中时,OpenFlow Switch将会按照如下图所示的方式来处理这些数据包,如前面的学习笔记中讲述的那样,会先从Pipeline的第一个Flow Table首先进行Lookup,然后可能继续进入到其他的Flow Table进行Lo

OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters

本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1.Group Table Group Table给OpenFlow Switch提供了更加高级的数据包转发特性(比如select或者all),其由多个Group Entries组成,而每个Group Entry结构如下所示: 每个Group Entry根据其Group Identifier来唯一定位,

OpenFlow Switch学习笔记(三)——Flow Tables

这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述OpenFlow Switch内部数据包的流转机制. 1.Pipeline Processing 遵循OpenFlow Switch规范的OpenFlow交换机大致分为 OpenFlow-only 和 OpenFlow-hybrid 两类.OpenFlow-only 交换机仅仅只支持OpenFlow规

OpenFlow Switch学习笔记(六)——Instructions和Actions

本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包含有一系列的Instructions,这些Instructions会在与该Flow Entry成功匹配的数据包上执行,进而导致数据包头信息的修改.Action Set的更新或者改变Pipeline Processing的处理行为.Instructions大致有下列几种类型,OpenFlow Swit

git简明学习笔记(一)

什么是git git是一个分布式的文件版本关系系统 gitHub是一个应用了git版本管理系统的网站 git并非保存修改后的增量信息,而是保存整个项目的所有信息 git的每一个项目的副本都保存有整个项目的完整信息 在底层git使用hash来对每个文件进行校验和索引 git系统可以离线使用,这意味着git将在离线时保存提交文件大暂存区,待有网络时进行提交. git的一些基本逻辑 数据保存地址有三个 仓库:存放已经提交的所有项目文件 工作区:即进行项目编辑的地方 暂存区:离线时暂时保存正式提交数据的

NXP NFC移植及学习笔记(原创)

NFC功能介绍 NFC 目前使用的三种功能: 1. P2P模式:基于LLCP协议的基础上,以NDEF数据交换格式来通信. 2. 读写模式:当作为读卡器,对NFC Tag的读写. 3. 卡模拟模式:模块成卡,可以与读卡器(或pos机)进行数据通信. 移植过程 驱动移植: kernel-3.10/drivers/misc/mediatek/nfc/nxp Framework移植: 1. 增加 packages/apps/Nfc-nxp 2. 增加 vendor/NXP/device 3. 更改 ha

UFS文件系统简明学习笔记

UNIX底下有很多文件系统,我在apue上看到了一点关于ufs文件系统的知识,想把它记下来, 在每一分区上会建立一个文件系统,很多操作也仅能在一个文件系统里实现 文件系统大概包含 自举块 超级块 柱面组 柱面组则包含了 超级块副本,配置信息,i 节点图,块位图,  i节点,数据块 一个文件的创建是利用i节点创建的,其有指向它的链接计数,表明有几个它的文件名和i节点编码,代表一个实际的空间可以有多个文件名,要删除实际空间上的数据就必须将所有的链接清楚掉,而文件的内容是有i节点里面的数据决定的,它可