blob: 1c4b1e829e041b9a9ae5214624c651b9f9799e46 [file] [log] [blame]
/* This file input supports the Optical Transport Protocol Extentions - version 1.0 */
#version 4
/*Supported signal types for layer class OFPOTPL_ODU */
enum ofp_odu_signal_type (wire_type=uint8_t) {
OFPODUT_ODU1 = 1,
OFPODUT_ODU2 = 2,
OFPODUT_ODU3 = 3,
OFPODUT_ODU4 = 4,
OFPODUT_ODU0 = 10,
OFPODUT_ODU2E = 11,
OFPODUT_ODUfCBR = 20,
OFPODUT_ODUfGFPfHAO = 21,
OFPODUT_ODUfGFPf = 22,
};
//enum ofp_experimenter_multipart_type_exp (wire_type=uint32_t){
//OFPEMPTE = 1, /*extended port discription */
//OFPEMPAD = 2, /*extended port adjacency discovery */
//};
//enum ofp_port_desc_prop_type_exp (wire_type=uint32_t){
//OFPPDPT_OPTICAL_TRAMSPORT = 2,
//OFPPDPT_ADJACENCY_DISCOVERY = 3,
//};
/* Supported signal types for layer class OFPPOTL_PORT */
enum ofp_port_optical_transport_signal_type (wire_type=uint8_t) {
OFPPOTST_OTSn = 1,
OFPPOTST_OMSn = 2,
OFPPOTST_OPSn = 3,
OFPPOTST_OPSM = 4,
OFPPOTST_OCH = 5,
OFPPOTST_OTU1 = 11,
OFPPOTST_OTU2 = 12,
OFPPOTST_OTU3 = 13,
OFPPOTST_OTU4 = 14,
};
/* Features of optical transport ports available in switch. */
enum ofp_port_optical_transport_feature_type (wire_type=uint16_t) {
OFPPOTFT_OPT_INTERFACE_CLASS = 1, /* Application code/ID encoding */
OFPPOTFT_LAYER_STACK = 2, /* Supported signal types and adaptations */
};
/*Supported signal types for layer class OFPOTPL_ODUCLT */
enum ofp_oduclt_signal_type(wire_type=uint8_t) {
OFPODUCLT_STM16 = 1,
OFPODUCLT_STM64 = 2,
OFPODUCLT_STM256 = 3,
OFPODUCLT_STM1 = 4,
OFPODUCLT_STM4 = 5,
OFPODUCLT_GBE1 = 6,
OFPODUCLT_GBE10 = 7,
OFPODUCLT_GBE40 = 8,
OFPODUCLT_GBE100 = 9,
OFPODUCLT_FC100 = 10,
OFPODUCLT_FC200 = 11,
OFPODUCLT_FC400 = 12,
OFPODUCLT_FC800 = 13,
OFPODUCLT_FC1200 = 14,
OFPODUCLT_GPON = 15,
OFPODUCLT_XGPON = 16,
OFPODUCLT_IB_SDR = 17,
OFPODUCLT_IB_DDR = 18,
OFPODUCLT_IB_QDR = 19,
OFPODUCLT_SBCON_ESCON = 20,
OFPODUCLT_DVBASI = 21,
OFPODUCLT_SDI = 22,
OFPODUCLT_SDI1G5 = 23,
OFPODUCLT_SDI3G = 24,
OFPODUCLT_ATM = 25,
OFPODUCLT_ETH = 26,
OFPODUCLT_MPLS = 27,
OFPODUCLT_IP = 28,
};
/* Supported adaptations for optical transport port layer stack*/
enum ofp_adaptations_type (wire_type=uint8_t){
OFPADAPT_OTS_OMS = 1,
OFPADAPT_OMS_OCH = 2,
OFPADAPT_OPS_OCHr = 3,
OFPADAPT_OPSM_OTUk = 4,
OFPADAPT_OCH_OTUk = 5,
OFPADAPT_ODUk_ODUij = 6,
OFPADAPT_ODUk_ODUj21 = 7,
OFPADAPT_ODUkh_ODUj21 = 8,
OFPADAPT_ODU0_CBRx = 9,
OFPADAPT_ODUk_CBRx = 10,
OFPADAPT_ODUk_CBRxg = 11,
OFPADAPT_ODUk_RSn = 12,
OFPADAPT_ODUk_ATM = 13,
OFPADAPT_ODUk_ETH = 14,
OFPADAPT_ODUkh_ETH = 15,
OFPADAPT_ODUk_ETHPPOS = 16,
};
struct of_oxm_exp_odu_sigtype : of_oxm {
uint32_t type_len == 0xFFFF0401;
uint32_t experimenter == 0xFF000007;
uint8_t value;
};
struct of_oxm_exp_odu_sig_id : of_oxm {
uint32_t type_len == 0xFFFF0610;
uint32_t experimenter == 0xFF000007;
of_odu_sig_id_t value;// size of this struct is 16 bytes 2+2+10+2(pad)
};
//This struct defenition is unnecessury for the openflow java ("make java" command )
//It is reqiured for wireshark dissector ("make wireshark" command)
struct of_odu_sig_id_t {
uint16_t tpn; //Tributary Port Number
uint16_t length; // Number of Tributary Slots included in tsmap,
// based on the Server ODU type and TS Granularity
of_octets_t tsmap; //tsmap;
};
struct of_oxm_exp_och_sigtype : of_oxm {
uint32_t type_len == 0xFFFF0801;
uint32_t experimenter == 0xFF000007;
uint8_t value;
};
struct of_oxm_exp_och_sig_id : of_oxm {
uint32_t type_len == 0xFFFF0A06;
uint32_t experimenter == 0xFF000007;
of_och_sig_id_t value;
};
// Optical transport protocol extensions request & reply head
struct of_exp_optical_ext_request : of_experimenter_stats_request {
uint8_t version;
uint8_t type == 18;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_request_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == ?;
};
struct of_exp_optical_ext_reply : of_experimenter_stats_reply {
uint8_t version;
uint8_t type == 19;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_reply_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == ?;
};
// open flow extention - support port description Extentions for OTN Ports
struct of_exp_port_desc_request : of_exp_optical_ext_request {
uint8_t version;
uint8_t type == 18;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_request_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == 1;//enum ofp_experimenter_multipart_type exp_type == 1;
};
struct of_exp_port_desc_reply : of_exp_optical_ext_reply {
uint8_t version;
uint8_t type == 19;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_reply_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == 1;//enum ofp_experimenter_multipart_type subtype == 1;
list(of_exp_port_t) entries;
};
struct of_exp_port {
of_port_no_t port_no;
uint16_t length;
pad(2);
of_mac_addr_t hw_addr;
pad(2);
of_port_name_t name;
enum ofp_port_config config;
enum ofp_port_state state;
list(of_exp_port_desc_prop_optical_transport_t) properties;
};
struct of_exp_port_des_prop_header {
uint16_t type == 2; //enum ofp_port_desc_prop_type_exp type == 2;
uint16_t length;
};
struct of_exp_port_desc_prop_optical_transport // : of_exp_port_des_prop_header
{
uint16_t type == 2;
uint16_t length; // length in bytes of this property
enum ofp_port_optical_transport_signal_type port_signal_type;
//base port layer signal type (enum ofp_port_optical_transport_signal_type)
uint8_t reserved;
pad(2);
list(of_exp_port_optical_transport_layer_stack_t) features; // list of of_port_optical_transport_feature_header
};
struct of_exp_port_optical_transport_feature_header {
uint16_t feature_type == ?; // from enum ofp_port_optical_transport_feature_type
uint16_t length;
};
/* OTN Layer Stack Feature Encoding */ //of_port_optical_transport_layer_stack (in circuit )
struct of_exp_port_optical_transport_layer_stack// : of_exp_port_optical_transport_feature_header
{
uint16_t feature_type == 2; /* Set to OFPOTPF_LAYER_STACK */
uint16_t length; /* length of feature excluding padding*/
pad(4); /* Zero bytes-see above for sizing */
list(of_exp_port_optical_transport_layer_entry_t) value; /* 0 or more fields */
};
/*OTN Layer Stack Entry Encoding */ // can be found in circut of_port_optical_transport_layer_entry
struct of_exp_port_optical_transport_layer_entry {
enum ofp_port_optical_transport_layer_class layer_class; /* OFPPOTL_* */
uint8_t signal_type; /*OFP(OTP/OCH/ODU/ODUCL)T_*/
enum ofp_adaptations_type adaptation;/* OFPADAPT_*/
pad(5); /* Align to 64-bit boundary */
};
// open flow extention - support port adjacency extentions
/* SubTLVs used for send, expected and received identity strings */
//enum ofp_exp_ext_port_tlv_types (wire_type=uint8_t) {
// OFP_EXP_EXT_PORT_TLV_AD_ID_SENT = 2, //TTI to be send by the port
// OFP_EXP_EXT_PORT_TLV_AD_ID_RECEIVED = 4, //TTI rcvd on port
//};
/* used in state field in ofp_port */
//enum ofp_port_state (wire_type=uint8_t) {
// OPPPS_AD_ID_MISMATCH = 1 << 16
//};
/* used in config field in ofp_port */
//enum ofp_port_config {
// OFPPF_AD_ENABL = 1<< 16,
// OFPPF_AIS_AD_ID_MISMATCH = 1 << 17
//};
struct of_exp_port_adjacency_request : of_exp_optical_ext_request {
uint8_t version;
uint8_t type == 18;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_request_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == 2;//enum ofp_experimenter_multipart_type exp_type == 2;
};
struct of_exp_port_adjacency_reply : of_exp_optical_ext_reply {
uint8_t version;
uint8_t type == 19;
uint16_t length;
uint32_t xid;
uint16_t stats_type == 0xffff;
enum ofp_stats_reply_flags flags;
pad(4);
uint32_t experimenter == 0xFF000007;
uint32_t subtype == 2;//enum ofp_experimenter_multipart_type subtype == 2;
list(of_exp_port_adjacency_t) entries;
};
//Port adjacency discovery property,
//the body of ofp_experimenter_port in the spec.
struct of_exp_port_adjacency {
of_port_no_t port_no;
uint16_t length;
pad(2);
of_mac_addr_t hw_addr;
pad(2);
of_port_name_t name;
enum ofp_port_config config;
enum ofp_port_state state;
list(of_exp_port_adjacency_id_t) properties;
};
//coresponding to ofp_port_desc_prop_adjacency_discovery in the spec
//with adjecency id definition for otn network
struct of_exp_port_adjacency_id
{
uint16_t type == 3; //enum ofp_port_desc_prop_type_exp type == 3
uint16_t length; // length in bytes of this property
list(of_exp_ext_ad_id_t) ad_id;
};
struct of_exp_ext_ad_id
{
uint16_t type;//enum ofp_exp_ext_port_tlv_types type;
uint16_t length; // The TLV value field length.
//defined as 8 + the length of id[] field
uint16_t namespace == 0; // One of OFPHTN*. OFPHTN_ONF = 0
uint16_t ns_type == ?; // type witin namespace
};
struct of_exp_port_adid_otn : of_exp_ext_ad_id
{
uint16_t type; // ofp_exp_ext_port_tlv_types type;
uint16_t length; // The TLV value field length.
//defined as 8 + the length of id[] field
uint16_t namespace == 0; // One of OFPHTN*. OFPHTN_ONF = 0
uint16_t ns_type == 0; // type witin namespace
of_bitmap_128_t sapi; //source asccess point identifier, ex.ITUT G.831
of_bitmap_128_t dapi; //destination asccess point identifier,ex. ITUT G.831
of_bitmap_256_t opspec;//Operator specific value, ex. ITUT G.7714
};
struct of_exp_ext_adid_sonet : of_exp_ext_ad_id
{
uint16_t type; //enum ofp_exp_ext_port_tlv_types type;
uint16_t length; // The TLV value field length.
//defined as 8 + the length of id[] field
uint16_t namespace == 0; // One of OFPHTN*. OFPHTN_ONF = 0
uint16_t ns_type == 1; // type witin namespace
of_bitmap_128_t id;
};