流表

原创
2019/11/25 23:55
阅读数 515

3.1 流与流表

流:

  • 同一时间,经过同一网络中具有某些共同特性(属性)的数据,抽象成一个流。可以将访问同一目的地址的数据视为流;
  • 流一般由网络管理员定义,根据不同的流执行不同的策略
  • OpenFlow体系中,数据以‘流’为单位进行处理

流表:

  • 针对特定流的策略表项的集合,负责数据的查找与转发
  • 一张流表包含了一系列的流表项

3.2 OpenFlow 流表项

流表项包含三个域:

  1. 包头域(head fields):涵盖了链路层、网络层、传输层大部分标识
  2. 计数器(counters):用于统计数据流量相关信息,可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护;
  3. 动作表(actions):指示与该流表项匹配的数据包应该执行的下一步操作

流表及其组成:

  安全通道

-----------------------------OpenFlow协议---------控制器

    流表

  • 包头域:输入端口-MAC地址-MAC目的地址-以太网类型-VLAN ID-VLAN优先级-IP源地址-IP目的地址-IP协议-IP服务类型-IP源端口-IP目的端口
    包头域分为四层:
        1.入端口(Ingress Port),消息在哪个端口进入交换机
        2.源MAC地址+Ether dst+Ether Type+VLAN         id+VLAN prioroty
        3.IP src+IPdst+IP Proto+IP ToSbits
        4.TCP/UDP src port +  TCP/UDP dst port
  • 计数器:数据包、字节的统计

            针对交换机中的每张流表,每个数据流,每个设备端    口,每个转发队列进行维护,用于统计数据流量相关信息如下:   

  1. 对每张数据流表,统计当前活动的表项数、数据包查询次数、数据包匹配次数
  2. 对每个数据流,统计接收到的数据包数、字节数、数据流持续时
  3. 对每个设备端口:接收到的数据包数、发送数据包数、接收字节数、发送字节数以及错误发生次数
  4. 对每个队列:统计发送的数据包数和字节数,还有发送时的溢出错误次数
  • 动作表:

                1.转发数据包到端口

                2.转发数据包到控制器
                3.丢弃数据包
                4.送到正常的处理了流程

  • 必备动作(Forward and drop):需要所有OpenFlow交换机默认支持
  • 可选动作(Forward[NORMAL利用交换机传统转发机制处理数据包/FLOOD] + enqueue +modify fileld):需要交换机告知控制器它所能支持的动作类型

OpenFlow端口类型:

    端口(Ports):交换机传递数据包的网络接口,交换机通过端口和其他交换机建立逻辑连接:

  • 物理端口
  • 逻辑端口:对物理端口虚拟化,提高复用性,逻辑端口数据包需要 tunnel_id;
  • 保留端口:指定通用转发动作ALL\CONTROLLER\TABLE\IN_PORT\ANY\LOCAL\NORMAL\FLOOD

3.3数据包处理流程

  每个包按照优先级依次去匹配流表中的表项,匹配包的优先级最高的项即为匹配结果匹配成功,对应计数器更新,同时实施转发动作;如果没有匹配到相应表项,则转发给控制器。

  • 接收报文
  • 802.1STP处理
  • 包头解析
  • 匹配:是--执行动作    否---匹配---是--执行动作;否--通过安全通道发送给控制器

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部