Openflow标准定义了控制器与交换机之间的交互协议,以及一组交换机操作。这个控制器—交换机协议运行在安全传输层协议(TLS)或无保护TCP连接之上。Openflow使用TCP端口6633或6653。

每个流表中每个流条目包括三个部分:

(1)匹配match—使用ingressport,packetheader以及前一个flow table传递过来的metadata;

(2)计数counter---对匹配成功的包进行计数;

(3)操作instruction—修改actionset或者流水线处理

交换机针对SDN有一个比较重要的消息类型:Packet-In,主要针对未知数据流无法命中流表的时候,作上送控制器的操作。

同样,SDN控制器也有一个比较重要的消息类型:Packet-Out,主要针对下游SDN被管理设备,用于控制器指定从交换机的特定端口发送数据包,或者用于转发通过Packet-in消息接收到的数据包。Packet-Out报文中包含明确的Action动作。

SDN Controller通过Openflow和LLDP发现整网拓扑:


背景阐述:

① 所有交换机彼此互联

② 交换机通过带外方式(或网管网方式)连接Controller

③ 交换机均使用Openflow协议。Openflow使用TCP端口6633或6653作为接收的监听端口。目前最新Openflow协议为1.5.1,详见ONF的spec。(https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/Openflow/Openflow-switch-v1.5.1.pdf)

④ 无特殊Controller指定,各类型都OK

那对于传统交换机而已,正常情况他们是通过LLDP等类似的邻居发现协议发现彼此网络设备,形成整网拓扑。而在SDN环境中,设备是无脑的,此时需要借助Openflow和LLDP同时工作,来保障Controller环境下能够对全网进行拓扑发现。

工作流程介绍:

① 交换机连线至Controller,通过电信号,Controller发现有支持Openflow的SDN交换机接入,此时,Controller能够发现三台SDN交换机接入了。注意,此时三台设备之间的组网环境Controller是不清楚的。

② Controller通过packet-out报文,封装LLDP报文进Openflow,分别分发给每个交换机。此时的packet-out报文中含有动作:分发LLDP报文从交换机的每个端口发出去。

③ 此时交换机A根据Controller的动作指令,将LLDP报文从交换机所有接口发出去。交换机B和交换机C此时都能收到这个报文。

④ LLDP报文经过交换机之间的互联链路到达对端SDN交换机。而此时正因为交换机是SDN无脑交换机,他对于报文的处理都是上送Controller而非本地操作。则此时接受到LLDP的对端交换机会将LLDP报文再次封装,封装进packet-in,并上送至Controller。

⑤ 此时Controller收到对端SDN交换机封装的packet-in报文,报文里包含原本的LLDP报文。此时Controller就已经知道所有的拓扑连接关系了。

SDN控制器对于ARP报文的处理:


背景阐述:

① 网络拓扑已发现

② 控制器采用ODL(OpenDayLight)

③ 本地主机H1(10.0.0.1)和对端主机H2(10.0.0.2)均连接于SDN交换机下面

④ 整个过程是H1请求H2的ARP,H2响应H1

整个解析过程

① H1去pingH2,即10.0.0.1去ping10.0.0.2。因为没有H2的MAC,此时需要做一次ARP解析。此时ARP请求(原本是广播)被SwitchA通过Openflow形式单播上送给Controller(packet-in报文)

② Controller收到H1的ARP请求,记录H1位于Switch A下游,且记录相关的位置信息。

③ 正因为Controller有所有交换机的拓扑及位置信息,此时Controller会给全网中每台SDN交换机都发送一个10.0.0.0/8网段的ARP请求消息,来请求10.0.0.2的MAC地址。但源IP并非10.0.0.1,而是Controller的网关地址,此处为10.0.0.254。此时报文均为packet-out,即通过Controller手工泛洪,但此泛洪是有选择性的,只针对同网段(10.0.0.0/8)

④ 所有交换机都能收到此ARP单播请求,而只有Switch B会做出回应,因为H2接在Switch B下游。此时通过packet-in,所有SDN交换机会将此ARP泛洪发送到同网段的端口。

⑤ H2收到此时的ARP请求,正常做出回应。

⑥ Switch B收到H2的ARP响应,无脑上送到Controller。Controller收到ARP响应,发现正是前面发出的ARP请求的响应报文。记录此时的H2位置信息及ARP信息。

⑦ Controller通过Openflow将ARP响应回应给Switch A,Switch A将报文回送给H1。

此时做个小结,Controller已经完整知道SwitchA/SwitchB/H1/H2的位置信息及MAC/ARP信息。SwitchA/H1知道完整的ARP/MAC信息。而SwitchB也有H1/H2的完整IP。唯独H2此时只知道H1的IP,而不知道H1的MAC。

⑧ H1的整个ARP请求过程已经完成。接下来要输送ICMP请求报文。报文经由Switch A正常输送到H2(此时是实际转发流量,而且Switch A已有完整转发路径,不需要再上送Controller)

⑨ H2收到ICMP报文,想要回应,但是没有H1的MAC,需要再次做ARP请求。此时H2请求H1的MAC地址,报文被Switch B上送Controller,Controller已有H1的MAC,则Controller做出回应,将H1的MAC回应给H2。

⑩ H2收到ARP,则整个过程完整。回应ICMP报文。整个业务流打通。

可以看到,最关键的应该是第三步,即Controller发送伪装ARP报文给全局同网段交换机,以此来实现ARP广播的同样效果。但也正是这样一个看似合理的安全行为,带来了很多不安全的隐患。可以想象,Controller有几种方式可以获取终端主机的MAC情况:1.通过免费ARP的方式、2.定时申请下游终端的MAC方式,都可以保证对下游终端MAC的始终更新。

但同样,集中Controller的方式也带来了单点安全的风险考虑,一旦一台下游主机中毒,不断变化自己的MAC不断做出更新动作,此时会极大消耗Controller的资源,形成DOS攻击。同样,Controller的安全如果不是很坚固,则一旦被攻破,所有终端信息一览无余。

摘录自:http://www.tuicool.com/articles/uuaMri

SDN交换机的拓扑发现与ARP处理相关推荐

  1. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(上)

    An In-depth Look Into SDN Topology Discovery Mechanisms: Novel Attacks and PracticalCountermeasures ...

  2. 提高SDN控制器拓扑发现性能

    原文由我发表在sdnlab.com.原文链接:http://www.sdnlab.com/15425.html SDN网络的一大特点就是资源由控制器集中管理,控制器管理网络,最基本的当然需要知道网络的 ...

  3. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(下)

    An In-depth Look Into SDN Topology Discovery Mechanisms: Novel Attacks and PracticalCountermeasures ...

  4. 基于OpenFlow协议的SDN控制器拓扑发现

    基于OpenFlow协议的SDN控制器拓扑发现     OpenFlow协议的SDN控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,并根 ...

  5. 论文阅读八:SDN 交换机转发规则 TCAM 存储优化综述

    摘要:SDN将传统网络的控制平面和数据平面解耦,通过控制平面的控制器灵活地对网络进行管理,目前应用最广泛的控制协议是OpenFlow.三态内容寻址存储器(TCAM)查找速度快.支持三态掩码存储,在SD ...

  6. SDN交换机在云计算网络中的应用场景

    SDN的技术已经发展了好几年了,而云计算的历史更长,两者的结合更是作为SDN的一个杀手级应用在近两年炒得火热,一些知名咨询公司的关于SDN逐年增加的市场份额的论断,也主要是指SDN在云计算网络中的应用 ...

  7. Mininet+OVS:如何更改SDN交换机的流表条目上限

    前言 流表是SDN交换机转发的重要环节.当一个不匹配的流量进入交换机时,交换机通过packet-in上报控制器,控制器以flow-mod应答,并在交换机中安装对应规则. OVS中提供了对于流表的支持, ...

  8. SDN交换机配置说明—微云

    SDN交换机采用虚拟网络设备技术,不仅可以实现扩展数据链路层,而且还能够实现安全.具有弹性.自适应的云计算基础网络.那么SDN交换机该如何安装配置. SDN交换机的安装 1.为了能够使SDN交换机实现 ...

  9. 我是一个SDN交换机

    我是一名SDN交换机 我的名字叫小羊,是湖工大的快递小哥.我送货很快. 我的工作普普通通,我的工资普普通通,买不起房子,但我知道,只要努力,就能够出人头地.因为在因特奈特国,识字的人并不多.因为我认得 ...

最新文章

  1. mysql unicode转汉字_Mysql数据库表引擎与字符集
  2. step1 . day1:工具准备
  3. python中list index out of range_Python知识精解:str split()方法
  4. PowerVR 7架构解析
  5. redis在应用中使用连接不释放问题解决
  6. 没有基础怎么学习PLC编程?
  7. x58服务器主板装win7系统,技嘉Z390主板重装win7方法|Z390主板Bios设置及安装win7图文教程...
  8. HMC5883L 电子指南针用树莓派进行磁场干扰过滤 校准
  9. 十八岁白帽子与“攻陷五角大楼”众测计划
  10. alsa设置默认声卡
  11. Python股票量化学习(1)——股票代码下载
  12. 读《日本包装设计鉴赏》有感之——博客第一篇
  13. codeforces 869 E. The Untended Antiquity(树状数组)
  14. 网络系列--SDN安全
  15. android手机性能如何界定,手机性能测试最新资讯
  16. MSP430单片机原理及应用 实验
  17. kubernetes 日志收集
  18. 为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数 escapeHtml,将<, >, , “进行转义
  19. Failed to resolve org.junit.vintage:junit-vintage-engine:5.6.2
  20. 老李的RT-THREAD学习05--线程

热门文章

  1. Win10系统安装详细说明
  2. galaxy s4刷机相关说明
  3. 免费杀毒软件推荐下载
  4. 计算机教育的改革论文,学校计算机改革下的计算机教育论文
  5. 【愚公系列】2023年06月 移动安全之安卓逆向(插桩及栈分析)
  6. Google推出多重防御新举措,打击点击欺诈广告
  7. (15.1.21.2)Camera--Type
  8. 抱米花-豆丁文档下载器 docin20090818
  9. python时间序列可视化_TOP50 Python可视化经典案例下(附源码,建议收藏)
  10. 实习笔记Day11(2022.8.19)