動態

詳情 返回 返回

軟件定義網絡--06(OpenFlow協議) - 動態 詳情

常見的 OpenFlow 消息類型及其格式

  • OFPT_HELLO:
    用於交換機和控制器之間的初始握手。
    格式:包含 OpenFlow 版本信息。
  • OFPT_FEATURES_REQUEST:
    控制器發送給交換機,要求交換機報告其能力。
    格式:不包含額外的數據。
  • OFPT_FEATURES_REPLY:
    交換機響應 OFPT_FEATURES_REQUEST,報告其能力和資源信息。
    格式:包含交換機的 datapath ID、緩衝區數量、流表數量、能力標誌和端口信息。
  • OFPT_FLOW_MOD:
    控制器發送給交換機,用於添加、修改或刪除流表項。
    格式:包含匹配字段、優先級、超時、動作列表等。
  • OFPT_PACKET_IN:
    交換機發送給控制器,通知控制器有數據包需要處理。
    格式:包含數據包的原始數據、輸入端口、緩衝區 ID 等。
  • OFPT_PACKET_OUT:
    控制器發送給交換機,用於向指定端口發送數據包。
    格式:包含數據包的原始數據、輸出端口、動作列表等。

下面是ryu 源碼裏面一些字段的含義

# 消息類型(Message Types)
# 這些常量用於表示 OpenFlow 消息的類型
OFP_HELLO = 0  # 交換 Hello 消息,用於建立初始連接
OFP_ERROR = 1  # 錯誤消息,用於報告錯誤
OFP_ECHO_REQUEST = 2  # Echo 請求消息,用於測試連接
OFP_ECHO_REPLY = 3  # Echo 回覆消息,用於響應 Echo 請求
OFP_EXPERIMENTER = 4  # 實驗者消息,用於自定義擴展
OFP_FEATURES_REQUEST = 5  # 特性請求消息,用於請求交換機特性
OFP_FEATURES_REPLY = 6  # 特性回覆消息,用於報告交換機特性
OFP_GET_CONFIG_REQUEST = 7  # 配置請求消息,用於請求交換機配置
OFP_GET_CONFIG_REPLY = 8  # 配置回覆消息,用於報告交換機配置
OFP_SET_CONFIG = 9  # 設置配置消息,用於設置交換機配置
OFP_PACKET_IN = 10  # 數據包輸入消息,用於通知控制器有數據包需要處理
OFP_FLOW_REMOVED = 11  # 流表項刪除消息,用於通知控制器流表項被刪除
OFP_PORT_STATUS = 12  # 端口狀態消息,用於報告端口狀態變化
OFP_PACKET_OUT = 13  # 數據包輸出消息,用於控制器向交換機發送數據包
OFP_FLOW_MOD = 14  # 流表項修改消息,用於添加、修改或刪除流表項
OFP_GROUP_MOD = 15  # 組修改消息,用於添加、修改或刪除組
OFP_PORT_MOD = 16  # 端口修改消息,用於修改端口屬性
OFP_TABLE_MOD = 17  # 表修改消息,用於修改流表屬性

# 端口號(Port Numbers)
# 這些常量用於表示特殊的端口號
OFPP_MAX = 0xffffff00  # 最大端口號
OFPP_IN_PORT = 0xfffffff8  # 數據包的輸入端口
OFPP_TABLE = 0xfffffff9  # 流表
OFPP_NORMAL = 0xfffffffa  # 正常交換機處理
OFPP_FLOOD = 0xfffffffb  # 泛洪,發送到所有端口
OFPP_ALL = 0xfffffffc  # 所有端口
OFPP_CONTROLLER = 0xfffffffd  # 控制器端口
OFPP_LOCAL = 0xfffffffe  # 本地端口
OFPP_ANY = 0xffffffff  # 任意端口

# 動作類型(Action Types)
# 這些常量用於表示 OpenFlow 動作的類型
OFPAT_OUTPUT = 0  # 輸出動作
OFPAT_COPY_TTL_OUT = 11  # 拷貝 TTL 到輸出
OFPAT_COPY_TTL_IN = 12  # 拷貝 TTL 到輸入
OFPAT_SET_MPLS_TTL = 15  # 設置 MPLS TTL
OFPAT_DEC_MPLS_TTL = 16  # 減少 MPLS TTL
OFPAT_PUSH_VLAN = 17  # 壓入 VLAN 標籤
OFPAT_POP_VLAN = 18  # 彈出 VLAN 標籤
OFPAT_PUSH_MPLS = 19  # 壓入 MPLS 標籤
OFPAT_POP_MPLS = 20  # 彈出 MPLS 標籤
OFPAT_SET_QUEUE = 21  # 設置隊列
OFPAT_GROUP = 22  # 組動作
OFPAT_SET_NW_TTL = 23  # 設置網絡 TTL
OFPAT_DEC_NW_TTL = 24  # 減少網絡 TTL
OFPAT_SET_FIELD = 25  # 設置字段
OFPAT_PUSH_PBB = 26  # 壓入 PBB 標籤
OFPAT_POP_PBB = 27  # 彈出 PBB 標籤

# 匹配字段(Match Fields)
# 這些常量用於表示 OpenFlow 匹配字段的類型
OFPXMT_OFB_IN_PORT = 0  # 輸入端口
OFPXMT_OFB_IN_PHY_PORT = 1  # 物理輸入端口
OFPXMT_OFB_METADATA = 2  # 元數據
OFPXMT_OFB_ETH_DST = 3  # 以太網目的地址
OFPXMT_OFB_ETH_SRC = 4  # 以太網源地址
OFPXMT_OFB_ETH_TYPE = 5  # 以太網類型
OFPXMT_OFB_VLAN_VID = 6  # VLAN ID
OFPXMT_OFB_VLAN_PCP = 7  # VLAN 優先級
OFPXMT_OFB_IP_DSCP = 8  # IP DSCP
OFPXMT_OFB_IP_ECN = 9  # IP ECN
OFPXMT_OFB_IP_PROTO = 10  # IP 協議
OFPXMT_OFB_IPV4_SRC = 11  # IPv4 源地址
OFPXMT_OFB_IPV4_DST = 12  # IPv4 目的地址
OFPXMT_OFB_TCP_SRC = 13  # TCP 源端口
OFPXMT_OFB_TCP_DST = 14  # TCP 目的端口
OFPXMT_OFB_UDP_SRC = 15  # UDP 源端口
OFPXMT_OFB_UDP_DST = 16  # UDP 目的端口
OFPXMT_OFB_SCTP_SRC = 17  # SCTP 源端口
OFPXMT_OFB_SCTP_DST = 18  # SCTP 目的端口
OFPXMT_OFB_ICMPV4_TYPE = 19  # ICMPv4 類型
OFPXMT_OFB_ICMPV4_CODE = 20  # ICMPv4 代碼
OFPXMT_OFB_ARP_OP = 21  # ARP 操作
OFPXMT_OFB_ARP_SPA = 22  # ARP 源協議地址
OFPXMT_OFB_ARP_TPA = 23  # ARP 目的協議地址
OFPXMT_OFB_ARP_SHA = 24  # ARP 源硬件地址
OFPXMT_OFB_ARP_THA = 25  # ARP 目的硬件地址
OFPXMT_OFB_IPV6_SRC = 26  # IPv6 源地址
OFPXMT_OFB_IPV6_DST = 27  # IPv6 目的地址
OFPXMT_OFB_IPV6_FLABEL = 28  # IPv6 流標籤
OFPXMT_OFB_ICMPV6_TYPE = 29  # ICMPv6 類型
OFPXMT_OFB_ICMPV6_CODE = 30  # ICMPv6 代碼
OFPXMT_OFB_IPV6_ND_TARGET = 31  # IPv6 鄰居發現目標地址
OFPXMT_OFB_IPV6_ND_SLL = 32  # IPv6 鄰居發現源鏈路層地址
OFPXMT_OFB_IPV6_ND_TLL = 33  # IPv6 鄰居發現目標鏈路層地址
OFPXMT_OFB_MPLS_LABEL = 34  # MPLS 標籤
OFPXMT_OFB_MPLS_TC = 35  # MPLS 流量類別
OFPXMT_OFB_MPLS_BOS = 36  # MPLS 序列結束
OFPXMT_OFB_PBB_ISID = 37  # PBB ISID
OFPXMT_OFB_TUNNEL_ID = 38  # 隧道 ID
OFPXMT_OFB_IPV6_EXTHDR = 39  # IPv6 擴展頭部

# 能力標誌(Capabilities)
# 這些常量用於表示交換機的能力標誌
OFPC_FLOW_STATS = 1 << 0  # 支持流統計
OFPC_TABLE_STATS = 1 << 1  # 支持表統計
OFPC_PORT_STATS = 1 << 2  # 支持端口統計
OFPC_GROUP_STATS = 1 << 3  # 支持組統計
OFPC_IP_REASM = 1 << 5  # 支持 IP 重組
OFPC_QUEUE_STATS = 1 << 6  # 支持隊列統計
OFPC_PORT_BLOCKED = 1 << 8  # 端口阻塞

# 錯誤類型和代碼(Error Types and Codes)
# 這些常量用於表示 OpenFlow 錯誤的類型和代碼
OFPET_HELLO_FAILED = 0  # Hello 消息失敗
OFPET_BAD_REQUEST = 1  # 錯誤的請求
O

Add a new 評論

Some HTML is okay.