sw test tool: Enable IPv6 flow label maskable
OF 1.3.4 spec (B.15.1 Changes) says: Make IPv6 flow label maskable (EXT-101). This patch makes IPv6 flow label maskable, and adds a test file for IPv6 flow label with masks. Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:

committed by
FUJITA Tomonori

parent
a2fc54bd79
commit
cc6dcbabaa
927
ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json
Normal file
927
ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json
Normal file
@@ -0,0 +1,927 @@
|
||||
[
|
||||
"match: 28_IPV6_FLABEL (Mask)",
|
||||
{
|
||||
"description":"ethernet/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"egress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"max_len":65535,
|
||||
"port":4294967293
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"PACKET_IN":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/ipv6(flow_label=203)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34525)",
|
||||
"ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)",
|
||||
"tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"table-miss":[
|
||||
0
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/vlan/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)",
|
||||
"vlan(pcp=3, cfi=0, vid=100, ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"egress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)",
|
||||
"vlan(pcp=3, cfi=0, vid=100, ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/vlan/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"max_len":65535,
|
||||
"port":4294967293
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)",
|
||||
"vlan(pcp=3, cfi=0, vid=100, ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"PACKET_IN":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)",
|
||||
"vlan(pcp=3, cfi=0, vid=100, ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/vlan/ipv6(flow_label=203)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=33024)",
|
||||
"vlan(pcp=5, cfi=0, vid=203, ethertype=34525)",
|
||||
"ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)",
|
||||
"tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"table-miss":[
|
||||
0
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/mpls/ipv6(flow_label=100)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34887
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopMpls":{
|
||||
"ethertype":34525
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34887)",
|
||||
"mpls(bsb=1, label=100, exp=3, ttl=64)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"egress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/mpls/ipv6(flow_label=100)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34887
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopMpls":{
|
||||
"ethertype":34525
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"max_len":65535,
|
||||
"port":4294967293
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34887)",
|
||||
"mpls(bsb=1, label=100, exp=3, ttl=64)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"PACKET_IN":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/mpls/ipv6(flow_label=203)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34887
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopMpls":{
|
||||
"ethertype":34525
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34887)",
|
||||
"mpls(bsb=1, label=203, exp=5, ttl=127)",
|
||||
"ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)",
|
||||
"tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"table-miss":[
|
||||
1
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/itag/ethernet/ipv6(flow_label=100)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":35047
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopPbb":{}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=35047)",
|
||||
"itag(sid=100)",
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"egress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/itag/ethernet/ipv6(flow_label=100)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":35047
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopPbb":{}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"max_len":65535,
|
||||
"port":4294967293
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=35047)",
|
||||
"itag(sid=100)",
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"PACKET_IN":[
|
||||
"ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)",
|
||||
"ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)",
|
||||
"tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description":"ethernet/itag/ethernet/ipv6(flow_label=203)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'",
|
||||
"prerequisite":[
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":0,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":35047
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionPopPbb":{}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPInstructionGotoTable":{
|
||||
"table_id":1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"OFPFlowMod":{
|
||||
"table_id":1,
|
||||
"match":{
|
||||
"OFPMatch":{
|
||||
"oxm_fields":[
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"eth_type",
|
||||
"value":34525
|
||||
}
|
||||
},
|
||||
{
|
||||
"OXMTlv":{
|
||||
"field":"ipv6_flabel",
|
||||
"mask":1048560,
|
||||
"value":96
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"instructions":[
|
||||
{
|
||||
"OFPInstructionActions":{
|
||||
"actions":[
|
||||
{
|
||||
"OFPActionOutput":{
|
||||
"port":2
|
||||
}
|
||||
}
|
||||
],
|
||||
"type":4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tests":[
|
||||
{
|
||||
"ingress":[
|
||||
"ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=35047)",
|
||||
"itag(sid=203)",
|
||||
"ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34525)",
|
||||
"ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)",
|
||||
"tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)",
|
||||
"'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
|
||||
],
|
||||
"table-miss":[
|
||||
1
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
@@ -798,6 +798,7 @@ class OfTester(app_manager.RyuApp):
|
||||
def __reasm_match(match):
|
||||
""" reassemble match_fields. """
|
||||
mask_lengths = {'vlan_vid': 12 + 1,
|
||||
'ipv6_flabel': 20,
|
||||
'ipv6_exthdr': 9}
|
||||
match_fields = list()
|
||||
for key, united_value in match.iteritems():
|
||||
|
Reference in New Issue
Block a user