${DUMP_FLOW} sudo ovs-ofctl dump-flows br-int -OOpenflow13
${DUMP_PORT_DESC} sudo ovs-ofctl dump-ports-desc br-int -OOpenflow13
${PACKET_COUNT} 5
-${PACKET_COUNT_CMB} 10
-${PACKET_DIFF} 0
-${PACKET_DIFF_CMB} 5
${BCAST_IP} 255.255.255.255
-${SUBNET1_BCAST_IP} 10.0.0.255
-${SUBNET2_BCAST_IP} 20.0.0.255
+${SUBNET1_BCAST_IP} 55.0.0.255
+${SUBNET2_BCAST_IP} 56.0.0.255
${ENABLE_BCAST} echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
-*** Test case ***
+*** Test Case ***
Verify Network Broadcast traffic between the VMs hosted in Single Network
[Documentation] This TC is to verify Network Broadcast traffic between the VMs hosted in Same Network on same/different compute node
+ ${pkt_check} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" 10 5
Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP}
- ... @{VM_IPS}[0] same
+ ... @{VM_IPS}[0] same pingsuccess pkt_check=${pkt_check}
Verify Network Broadcast traffic between the VMs hosted in Multi Network
[Documentation] This TC is to verify Network Broadcast traffic between the VMs hosted in Different Network on same/different compute node.
+ ${pkt_check} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" 5 0
Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP}
- ... @{VM_IPS}[3] different
+ ... @{VM_IPS}[3] different pingsuccess pkt_check=${pkt_check}
+
+Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
+ [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
+ Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${SUBNET1_BCAST_IP}
+ ... @{VM_IPS}[0] same pingsuccess ${VM2_SUBMETA} pkt_check=5 additional_args=| grep ${VM2_SUBMETA}
+
+Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Single Network
+ [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network
+ Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP2_IP} ${EGRESS_ACL_TABLE} ${SUBNET1_BCAST_IP}
+ ... @{VM_IPS}[0] same pingsuccess ${VM3_SUBMETA} pkt_check=5 additional_args=| grep ${VM3_SUBMETA}
+
+Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network
+ [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network
+ Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${SUBNET2_BCAST_IP}
+ ... @{VM_IPS}[0] different nosuccess ${VM4_SUBMETA} pkt_check=0 additional_args=| grep ${VM4_SUBMETA}
+
+Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network
+ [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network
+ Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP2_IP} ${EGRESS_ACL_TABLE} ${SUBNET2_BCAST_IP}
+ ... @{VM_IPS}[0] different nosuccess ${VM5_SUBMETA} pkt_check=0 additional_args=| grep ${VM5_SUBMETA}
*** Keywords ***
Start Suite
OpenStackOperations.Get Suite Debugs
Create Setup
- : FOR ${network} IN @{NETWORKS}
- \ OpenStackOperations.Create Network ${network}
- : FOR ${i} IN RANGE len(${NETWORKS})
- \ OpenStackOperations.Create SubNet @{NETWORKS}[${i}] @{SUBNETS}[${i}] @{SUBNET_CIDRS}[${i}]
+ FOR ${network} IN @{NETWORKS}
+ OpenStackOperations.Create Network ${network}
+ END
+ FOR ${i} IN RANGE len(${NETWORKS})
+ OpenStackOperations.Create SubNet @{NETWORKS}[${i}] @{SUBNETS}[${i}] @{SUBNET_CIDRS}[${i}]
+ END
OpenStackOperations.Create Allow All SecurityGroup @{SECURITY_GROUP}[0]
OpenStackOperations.Create Router ${ROUTER}
- : FOR ${interface} IN @{SUBNETS}
- \ OpenStackOperations.Add Router Interface ${ROUTER} ${interface}
- : FOR ${port_net1} IN @{NET_1_PORTS}
- \ OpenStackOperations.Create Port @{NETWORKS}[0] ${port_net1} sg=@{SECURITY_GROUP}[0]
- : FOR ${port_net2} IN @{NET_2_PORTS}
- \ OpenStackOperations.Create Port @{NETWORKS}[1] ${port_net2} sg=@{SECURITY_GROUP}[0]
+ FOR ${interface} IN @{SUBNETS}
+ OpenStackOperations.Add Router Interface ${ROUTER} ${interface}
+ END
+ FOR ${port_net1} IN @{NET_1_PORTS}
+ OpenStackOperations.Create Port @{NETWORKS}[0] ${port_net1} sg=@{SECURITY_GROUP}[0]
+ END
+ FOR ${port_net2} IN @{NET_2_PORTS}
+ OpenStackOperations.Create Port @{NETWORKS}[1] ${port_net2} sg=@{SECURITY_GROUP}[0]
+ END
@{ports} = BuiltIn.Create List @{NET_1_PORTS}[0] @{NET_1_PORTS}[1] @{NET_1_PORTS}[2] @{NET_2_PORTS}[0] @{NET_2_PORTS}[1]
@{vms} = BuiltIn.Create List @{NET_1_VMS}[0] @{NET_1_VMS}[1] @{NET_1_VMS}[2] @{NET_2_VMS}[0] @{NET_2_VMS}[1]
@{nodes} = BuiltIn.Create List ${OS_CMP1_HOSTNAME} ${OS_CMP1_HOSTNAME} ${OS_CMP2_HOSTNAME} ${OS_CMP1_HOSTNAME} ${OS_CMP2_HOSTNAME}
- : FOR ${port} ${vm} ${node} IN ZIP ${ports} ${vms}
+ FOR ${port} ${vm} ${node} IN ZIP ${ports} ${vms}
... ${nodes}
- \ OpenStackOperations.Create Vm Instance With Port On Compute Node ${port} ${vm} ${node} sg=@{SECURITY_GROUP}[0]
+ OpenStackOperations.Create Vm Instance With Port On Compute Node ${port} ${vm} ${node} sg=@{SECURITY_GROUP}[0]
+ END
@{vms} = Collections.Combine Lists ${NET_1_VMS} ${NET_2_VMS}
@{VM_IPS} = OpenStackOperations.Get VM IPs @{vms}
BuiltIn.Should Not Contain ${VM_IPS} None
${cmd2} = Utils.Run Command On Remote System And Log ${OS_CMP2_IP} ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata:
${output2} = String.Get Regexp Matches ${cmd2} reg6=(\\w+) 1
${metalist} = Collections.Combine Lists ${output1} ${output2}
- : FOR ${meta} IN @{metalist}
- \ ${metadata_check_status} = Run Keyword And Return Status should contain ${vm_metadata} ${meta}
- \ Return From Keyword if ${metadata_check_status} == True ${meta}
+ FOR ${meta} IN @{metalist}
+ ${metadata_check_status} = Run Keyword And Return Status should contain ${vm_metadata} ${meta}
+ Return From Keyword if ${metadata_check_status} == True ${meta}
+ END
Verify L3Broadcast With Antispoofing Table
- [Arguments] ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} ${vm_ip} ${subnet_var}
+ [Arguments] ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} ${vm_ip} ${subnet_var} ${ping_response}='pingsuccess'
+ ... ${vm_submeta}='' ${pkt_check}=0 ${additional_args}=${EMPTY}
[Documentation] Verify the l3 broadcast requests are hitting to antispoofing table in same subnet
- ${get_pkt_count_before_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP}
+ ${get_pkt_count_before_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} additional_args=| grep ${vm_submeta}
${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] ${vm_ip} ping -c ${PACKET_COUNT} ${BCAST_IP}
- BuiltIn.Should Contain ${output} ${PING_REGEXP}
- ${bcast_egress} = Utils.Run Command On Remote System And Log ${OS_COMPUTE_IP} ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP}
- ${get_pkt_count_after_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP}
+ BuiltIn.Run Keyword If '${ping_response}'=='pingsuccess' BuiltIn.Should Contain ${output} ${PING_REGEXP}
+ ... ELSE BuiltIn.Should Contain ${output} ${NO_PING_REGEXP}
+ ${bcast_egress} = Utils.Run Command On Remote System And Log ${OS_COMPUTE_IP} ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP} ${additional_args}
+ ${get_pkt_count_after_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} additional_args=| grep ${vm_submeta}
${pkt_diff} = Evaluate int(${get_pkt_count_after_bcast})-int(${get_pkt_count_before_bcast})
- ${pkt_diff_expected} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" ${PACKET_DIFF_CMB} ${PACKET_DIFF}
- ${pkt_count} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" ${PACKET_COUNT_CMB} ${PACKET_COUNT}
- BuiltIn.Run Keyword If '${subnet_var}' == 'same' Should Be Equal As Numbers ${pkt_diff} ${pkt_count}
- ... ELSE Should Be True ${pkt_diff} == ${pkt_diff_expected}
+ BuiltIn.Should Be Equal As Numbers ${pkt_diff} ${pkt_check}