zoukankan      html  css  js  c++  java
  • 2019 SDN上机第3次作业

    1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性

        常规快乐连线,
        不过要注意先sudo Wireshark,不然后面抓 不到Hello
    

    2. 利用Wireshark工具,捕获拓扑中交换机与控制器之间的通信数据,对OpenFlow协议类型的各类报文(hello, features_request, features_reply, set_config, packet_in, packet_out等)进行分析,对照wireshark截图写出你的分析内容。

    hello:

    控制器6633端口(最高支持openflow1.0)->交换机38520端口

    交换机38520端口(最高支持openflow1.3)->控制器6633端口
    双方建立连接,并使用OpenFlow 1.0

    总之就是快乐打招呼,
    确认一下对面的协议,建立连接
    

    features_request:

    控制器6633端口(请求获取交换机信息)->交换机38520端口

    features_reply:

    交换机38520端口(最高支持openflow1.3)->控制器6633端口

    对照Features Reply Message结构
    struct ofp_switch_features{
        struct ofp_header header;
        uint64_t datapath_id; /*唯一标识 id 号*/
        uint32_t n_buffers; /*交缓冲区可以缓存的最大数据包个数*/
        uint8_t n_tables; /*流表数量*/
        uint8_t pad[3]; /*align to 64 bits*/
        uint32_t capabilities; /*支持的特殊功能,具体见 ofp_capabilities*/
        uint32_t actions; /*支持的动作,具体见 ofp_actions_type*/
        struct ofp_phy_port ports[0]; /*物理端口描述列表,具体见 ofp_phy_port*/
    };
    
    对照可知
    id为:0x0000000000000002
    交缓冲区可以缓存的最大数据包个数:256
    流表数量:254
    等……
    

    set_config:

    控制器6633端口(给予了config flag和max bytes of packet用于配置) ---> 交换机38520端口

    packet_in:

    根据Packet_in的结构
    struct ofp_packet_in {
        struct ofp_header header;
        uint32_t buffer_id; /*Packet-in消息所携带的数据包在交换机缓存区中的ID*/
        uint16_t total_len; /*data字段的长度*/
        uint16_t in_port; /*数据包进入交换机时的端口号*/
        uint8_t reason; /*发送Packet-in消息的原因,具体见 ofp_packet_in_reason*/
        uint8_t pad;
        uint8_t data[0]; /*携带的数据包*/
    };
    
    对照可知
    Packet-in消息所携带的数据包在交换机缓存区中的ID:0x00000140
    data字段的长度:70
    数据包进入交换机时的端口号:1
    发送Packet-in消息的原因:Reason: No matching flow (table-miss flow entry) (0)(发现没有匹配流表)
    等信息……
    

    packet_out:

    对照Packet_out的结构
    struct ofp_packet_out {
        struct ofp_header header;
        uint32_t buffer_id; /*交换机缓存区id,如果为-1则指定的为packet-out消息携带的data字段*/
        uint16_t in_port; /*如果buffer_id为‐1,并且action列表中指定了Output=TABLE的动作,in_port将作为data段数据包的额外匹配信息进行流表查询*/
        uint16_t actions_len; /*action列表的长度,可以用来区分actions和data段*/
        struct ofp_action_header actions[0]; /*动作列表*/
        uint8_t data[0]; /*数据缓存区,可以存储一个以太网帧,可选*/
    }
    
    对照可知
    交换机缓存区id,如果为-1则指定的为packet-out消息携带的data字段:
    action列表的长度:8
    动作列表:Output to switch port(0)
    等信息……
    
  • 相关阅读:
    mac上python3安装HTMLTestRunner
    双目深度估计传统算法流程及OpenCV的编译注意事项
    深度学习梯度反向传播出现Nan值的原因归类
    1394. Find Lucky Integer in an Array
    1399. Count Largest Group
    1200. Minimum Absolute Difference
    999. Available Captures for Rook
    509. Fibonacci Number
    1160. Find Words That Can Be Formed by Characters
    1122. Relative Sort Array
  • 原文地址:https://www.cnblogs.com/wawu/p/11853864.html
Copyright © 2011-2022 走看看