本文档提供面向openflowjava项目的扩展yang模型说明。yang模型文件(sptn-match.yang&sptn-action.yang)根据CMCC提供的ttp文件书写。
1.Match
1.1.扩展Match相关yang元素的命名方式
本节提供扩展match相关yang元素的命名方式说明,其中粗体部分与ttp文件的映射关系见表1。
identity:”sptnxm-sptnx-“ + Match
grouping:”ofj-sptnxm-sptnx-“ +Match+”-grouping”
case:Match+”-case-value”
表1 TTP match id与Match映射关系
Match ID in TTP | Match |
TRAFFIC_CLASS | traffic-class |
COLOR | color |
VLAN_DEI | vlan-dei |
QOS_INDEX | qos-index |
openFlowMpId | openflow-mp-id |
MPLS_TTL | mpls-ttl |
MPLS_L2_PORT | mpls-l2-port |
MPLS_DATA_FIRST_NIBBLE | mpls-data-first-nibble |
MPLS_ACH_CHANNEL | mpls-ach-channel |
MPLS_NEXT_LABEL_IS_GAL | mpls-next-label-is-gal |
OAM_Y1731_MDL | oam-y1731-mdl |
OAM_Y1731_OPCODE | oam-y1731-opcode |
COLOR_ACTIONS_INDEX | color-actions-index |
TXFCL | txfcl |
RXFCL | rxfcl |
RX_TIMESTAMP | rx-timestamp |
PROTECTION_INDEX | protection-index |
MPLS_TYPE | mpls-type |
ALLOW_VLAN_TRANSLATION | allow-vlan-translation |
以vlan-dei为例
1.Match field within the class
identity sptnxm-sptnx-vlan-dei {
base ofoxm:match-field;
}
2.value of the match
container vlan-dei -values {
type uint8;
}
3.在openflow-augments: experimenter-id-case中扩展
augment "/ofoxm:oxm-container/ofoxm:match-entry-value/aug:experimenter-id-case" {
ext:augment-identifier "ofj-aug-sptnx-match";
choice sptnx-match-entry-value {
case vlan-dei -case-value {
vlan-dei -grouping;
}
}
}
2.Action
2.1.扩展Action相关yang元素的命名方式
本节提供扩展action相关yang元素的命名方式说明,其中粗体部分与ttp文件的映射关系见表2。
1.identity:“sptnx-action” + Action
2.grouping:” ofj-sptnx-action-“ + Action +”-grouping”
3.case:” action-”+ Action
表2 TTP action id与Action映射关系
Action ID in TTP | Action |
PUSH_L2_HEADER | push-l2-header |
POP_L2_HEADER | pop-l2-header |
PUSH_CW | push-cw |
POP_CW_OR_ACH | pop-cw-or-ach |
COPY_MPLS_TC_IN | copy-mpls-tc-in |
COPY_MPLS_TC_OUT | copy-mpls-tc-out |
SET_MPLS_TC_FROM_VPN_TABLE | set-mpls-tc-from--table |
OAM_LM_TX_COUNT | oam-lm-tx-count |
OAM_LM_RX_COUNT | oam-lm-rx-count |
OAM_SET_COUNTER_FIELDS | oam-set-counter-fields |
DEC_TTL_MTU | dec-ttl-mtu |
CHECK_DROP_STATUS | check-drop-status |
SET_MPLS_PCPDEI_FROM_VPN_TABLE | set-mpls-pcp-dei-from--table |
SET_MPLS_TC_FROM_TUNNEL_TABLE | set-mpls-tc-from-tunnel-table |
SET_MPLS_PCPDEI_FROM_TUNNEL_TABLE | set-mpls-pcp-dei-from-tunnel-table |
CLASS_BASED_COUNT | class-based-count |
COLOR_BASED_COUNT | color-based-count |
以push-l2-header 为例
1.action sub type
identity sptnx-action- push-l2-header {
base ofaction:experimenter-action-sub-type;
}
2.action container
container sptnx-action- push-l2-header {
}
3.在 openflow-action:action-choice中扩展
augment "/ofaction:action-container/ofaction:action-choice" {
push-l2-header {
push-l2-header-grouping;
}
2.3.SetField
SetField action是ODL原生支持的动作。
在openflowjava的实现中,针对扩展match的SetField复用了本文档第1章match扩展的内容,所以sptn-action.yang并没有针对该动作进行额外定义。