{"action":"created","issue":{"url":"https://api.github.com/repos/apache/cloudstack/issues/1659","repository_url":"https://api.github.com/repos/apache/cloudstack","labels_url":"https://api.github.com/repos/apache/cloudstack/issues/1659/labels{/name}","comments_url":"https://api.github.com/repos/apache/cloudstack/issues/1659/comments","events_url":"https://api.github.com/repos/apache/cloudstack/issues/1659/events","html_url":"https://github.com/apache/cloudstack/pull/1659","id":172920562,"number":1659,"title":"CLOUDSTACK-9339 Virtual Routers don't handle Multiple Public Interfaces correctly","user":{"login":"murali-reddy","id":2202956,"avatar_url":"https://avatars.githubusercontent.com/u/2202956?v=3","gravatar_id":"","url":"https://api.github.com/users/murali-reddy","html_url":"https://github.com/murali-reddy","followers_url":"https://api.github.com/users/murali-reddy/followers","following_url":"https://api.github.com/users/murali-reddy/following{/other_user}","gists_url":"https://api.github.com/users/murali-reddy/gists{/gist_id}","starred_url":"https://api.github.com/users/murali-reddy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/murali-reddy/subscriptions","organizations_url":"https://api.github.com/users/murali-reddy/orgs","repos_url":"https://api.github.com/users/murali-reddy/repos","events_url":"https://api.github.com/users/murali-reddy/events{/privacy}","received_events_url":"https://api.github.com/users/murali-reddy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":51,"created_at":"2016-08-24T10:45:41Z","updated_at":"2016-11-28T00:28:46Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apache/cloudstack/pulls/1659","html_url":"https://github.com/apache/cloudstack/pull/1659","diff_url":"https://github.com/apache/cloudstack/pull/1659.diff","patch_url":"https://github.com/apache/cloudstack/pull/1659.patch"},"body":"As pointed out in CLOUDSTACK-9339, in case of multiple public IP's from different public IP ranges are associated with VR, VR functionality is broken from 4.6. Below are the brief list of problems specific to non-VPC networks addressed in the PR. This PR handles both VPC and non-VPC scenarios.\n- reverse traffic for the connections accepted on the eth3 and above public interfaces are getting blocked. Need a rule for e.g \"-A FORWARD -i  eth3 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT\" in the FORWARD chain of filter table to permit reverse path traffic for established connections.\n- outbound public traffic from eth0 to eth3 (or for interfaces above like eth4 eth5 etc) needs rule to run through FW_OUTBOUND chain in the filter table\n- network stats on public interfaces eth3 are getting gathered\n- default gateway is missing in the device specific routing table, resulting in traffic to be looked up in main routing table\n- creating a device specific route table is generating \"from all lookup Table_eth3\" in the\n  ip rules, resulting in rest of the traffic getting blocked.\n\nPicked few commits from #1519 from dsclose (https://github.com/apache/cloudstack/pull/1519) submitted for 4.7\n\nMarvin tests are added to test below\n- Static NAT works on the public interfaces above eth2, in case non-vpc networks\n- Portforwarding works on the public interfaces above eth2, in case non-vpc networks\n- Route tables are configured as expected for the device specific table for the public interfaces above eth2, in case non-vpc networks\n- IP tables rules are as expected for the traffic from and to the public interfaces above eth2, in case non-vpc networks\n"},"comment":{"url":"https://api.github.com/repos/apache/cloudstack/issues/comments/263159391","html_url":"https://github.com/apache/cloudstack/pull/1659#issuecomment-263159391","issue_url":"https://api.github.com/repos/apache/cloudstack/issues/1659","id":263159391,"user":{"login":"blueorangutan","id":16489489,"avatar_url":"https://avatars.githubusercontent.com/u/16489489?v=3","gravatar_id":"","url":"https://api.github.com/users/blueorangutan","html_url":"https://github.com/blueorangutan","followers_url":"https://api.github.com/users/blueorangutan/followers","following_url":"https://api.github.com/users/blueorangutan/following{/other_user}","gists_url":"https://api.github.com/users/blueorangutan/gists{/gist_id}","starred_url":"https://api.github.com/users/blueorangutan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blueorangutan/subscriptions","organizations_url":"https://api.github.com/users/blueorangutan/orgs","repos_url":"https://api.github.com/users/blueorangutan/repos","events_url":"https://api.github.com/users/blueorangutan/events{/privacy}","received_events_url":"https://api.github.com/users/blueorangutan/received_events","type":"User","site_admin":false},"created_at":"2016-11-28T00:28:46Z","updated_at":"2016-11-28T00:28:46Z","body":"<b>Trillian test result (tid-464)</b>\nEnvironment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7\nTotal time taken: 28781 seconds\nMarvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t464-kvm-centos7.zip\nTest completed. 44 look ok, 4 have error(s)\n\n\nTest | Result | Time (s) | Test File\n--- | --- | --- | ---\ntest_02_redundant_VPC_default_routes | `Failure` | 920.96 | test_vpc_redundant.py\ntest_router_dhcp_opts | `Failure` | 21.30 | test_router_dhcphosts.py\ntest_04_rvpc_privategw_static_routes | `Failure` | 406.87 | test_privategw_acl.py\ntest_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 255.61 | test_privategw_acl.py\ntest_02_vpc_privategw_static_routes | `Failure` | 296.51 | test_privategw_acl.py\ntest_04_extract_template | `Error` | 5.12 | test_templates.py\ntest_01_vpc_site2site_vpn | Success | 161.06 | test_vpc_vpn.py\ntest_01_vpc_remote_access_vpn | Success | 91.39 | test_vpc_vpn.py\ntest_01_redundant_vpc_site2site_vpn | Success | 321.88 | test_vpc_vpn.py\ntest_02_VPC_default_routes | Success | 285.18 | test_vpc_router_nics.py\ntest_01_VPC_nics_after_destroy | Success | 574.36 | test_vpc_router_nics.py\ntest_05_rvpc_multi_tiers | Success | 528.63 | test_vpc_redundant.py\ntest_04_rvpc_network_garbage_collector_nics | Success | 1394.26 | test_vpc_redundant.py\ntest_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 565.28 | test_vpc_redundant.py\ntest_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1318.80 | test_vpc_redundant.py\ntest_09_delete_detached_volume | Success | 15.88 | test_volumes.py\ntest_08_resize_volume | Success | 15.55 | test_volumes.py\ntest_07_resize_fail | Success | 20.50 | test_volumes.py\ntest_06_download_detached_volume | Success | 15.36 | test_volumes.py\ntest_05_detach_volume | Success | 100.23 | test_volumes.py\ntest_04_delete_attached_volume | Success | 10.21 | test_volumes.py\ntest_03_download_attached_volume | Success | 15.33 | test_volumes.py\ntest_02_attach_volume | Success | 73.83 | test_volumes.py\ntest_01_create_volume | Success | 711.70 | test_volumes.py\ntest_deploy_vm_multiple | Success | 283.93 | test_vm_life_cycle.py\ntest_deploy_vm | Success | 0.03 | test_vm_life_cycle.py\ntest_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py\ntest_10_attachAndDetach_iso | Success | 26.65 | test_vm_life_cycle.py\ntest_09_expunge_vm | Success | 125.21 | test_vm_life_cycle.py\ntest_08_migrate_vm | Success | 81.24 | test_vm_life_cycle.py\ntest_07_restore_vm | Success | 0.10 | test_vm_life_cycle.py\ntest_06_destroy_vm | Success | 125.81 | test_vm_life_cycle.py\ntest_03_reboot_vm | Success | 125.92 | test_vm_life_cycle.py\ntest_02_start_vm | Success | 10.18 | test_vm_life_cycle.py\ntest_01_stop_vm | Success | 40.35 | test_vm_life_cycle.py\ntest_CreateTemplateWithDuplicateName | Success | 85.73 | test_templates.py\ntest_08_list_system_templates | Success | 0.03 | test_templates.py\ntest_07_list_public_templates | Success | 0.04 | test_templates.py\ntest_05_template_permissions | Success | 0.06 | test_templates.py\ntest_03_delete_template | Success | 5.11 | test_templates.py\ntest_02_edit_template | Success | 90.19 | test_templates.py\ntest_01_create_template | Success | 60.56 | test_templates.py\ntest_10_destroy_cpvm | Success | 161.80 | test_ssvm.py\ntest_09_destroy_ssvm | Success | 163.80 | test_ssvm.py\ntest_08_reboot_cpvm | Success | 131.81 | test_ssvm.py\ntest_07_reboot_ssvm | Success | 133.75 | test_ssvm.py\ntest_06_stop_cpvm | Success | 131.92 | test_ssvm.py\ntest_05_stop_ssvm | Success | 133.90 | test_ssvm.py\ntest_04_cpvm_internals | Success | 1.27 | test_ssvm.py\ntest_03_ssvm_internals | Success | 3.54 | test_ssvm.py\ntest_02_list_cpvm_vm | Success | 0.15 | test_ssvm.py\ntest_01_list_sec_storage_vm | Success | 0.13 | test_ssvm.py\ntest_01_snapshot_root_disk | Success | 16.38 | test_snapshots.py\ntest_04_change_offering_small | Success | 239.68 | test_service_offerings.py\ntest_03_delete_service_offering | Success | 0.05 | test_service_offerings.py\ntest_02_edit_service_offering | Success | 0.09 | test_service_offerings.py\ntest_01_create_service_offering | Success | 0.12 | test_service_offerings.py\ntest_02_sys_template_ready | Success | 0.17 | test_secondary_storage.py\ntest_01_sys_vm_start | Success | 0.20 | test_secondary_storage.py\ntest_09_reboot_router | Success | 40.34 | test_routers.py\ntest_08_start_router | Success | 30.34 | test_routers.py\ntest_07_stop_router | Success | 10.18 | test_routers.py\ntest_06_router_advanced | Success | 0.06 | test_routers.py\ntest_05_router_basic | Success | 0.04 | test_routers.py\ntest_04_restart_network_wo_cleanup | Success | 5.71 | test_routers.py\ntest_03_restart_network_cleanup | Success | 65.62 | test_routers.py\ntest_02_router_internal_adv | Success | 1.12 | test_routers.py\ntest_01_router_internal_basic | Success | 0.58 | test_routers.py\ntest_router_dns_guestipquery | Success | 76.92 | test_router_dns.py\ntest_router_dns_externalipquery | Success | 0.09 | test_router_dns.py\ntest_router_dhcphosts | Success | 307.48 | test_router_dhcphosts.py\ntest_01_updatevolumedetail | Success | 0.08 | test_resource_detail.py\ntest_01_reset_vm_on_reboot | Success | 196.41 | test_reset_vm_on_reboot.py\ntest_createRegion | Success | 0.04 | test_regions.py\ntest_create_pvlan_network | Success | 5.25 | test_pvlan.py\ntest_dedicatePublicIpRange | Success | 0.47 | test_public_ip_range.py\ntest_01_vpc_privategw_acl | Success | 108.52 | test_privategw_acl.py\ntest_01_primary_storage_nfs | Success | 35.81 | test_primary_storage.py\ntest_createPortablePublicIPRange | Success | 15.39 | test_portable_publicip.py\ntest_createPortablePublicIPAcquire | Success | 15.46 | test_portable_publicip.py\ntest_isolate_network_password_server | Success | 89.46 | test_password_server.py\ntest_UpdateStorageOverProvisioningFactor | Success | 0.13 | test_over_provisioning.py\ntest_oobm_zchange_password | Success | 21.02 | test_outofbandmanagement.py\ntest_oobm_multiple_mgmt_server_ownership | Success | 16.52 | test_outofbandmanagement.py\ntest_oobm_issue_power_status | Success | 5.51 | test_outofbandmanagement.py\ntest_oobm_issue_power_soft | Success | 15.51 | test_outofbandmanagement.py\ntest_oobm_issue_power_reset | Success | 15.52 | test_outofbandmanagement.py\ntest_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py\ntest_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py\ntest_oobm_issue_power_cycle | Success | 15.52 | test_outofbandmanagement.py\ntest_oobm_enabledisable_across_clusterzones | Success | 62.57 | test_outofbandmanagement.py\ntest_oobm_enable_feature_valid | Success | 5.19 | test_outofbandmanagement.py\ntest_oobm_enable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py\ntest_oobm_disable_feature_valid | Success | 5.23 | test_outofbandmanagement.py\ntest_oobm_disable_feature_invalid | Success | 0.15 | test_outofbandmanagement.py\ntest_oobm_configure_invalid_driver | Success | 0.11 | test_outofbandmanagement.py\ntest_oobm_configure_default_driver | Success | 0.13 | test_outofbandmanagement.py\ntest_oobm_background_powerstate_sync | Success | 29.57 | test_outofbandmanagement.py\ntest_extendPhysicalNetworkVlan | Success | 15.39 | test_non_contigiousvlan.py\ntest_01_nic | Success | 551.67 | test_nic.py\ntest_releaseIP | Success | 289.31 | test_network.py\ntest_reboot_router | Success | 475.17 | test_network.py\ntest_public_ip_user_account | Success | 10.25 | test_network.py\ntest_public_ip_admin_account | Success | 40.33 | test_network.py\ntest_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 67.09 | test_network.py\ntest_network_rules_acquired_public_ip_2_nat_rule | Success | 61.76 | test_network.py\ntest_network_rules_acquired_public_ip_1_static_nat_rule | Success | 125.17 | test_network.py\ntest_delete_account | Success | 354.55 | test_network.py\ntest_02_port_fwd_on_non_src_nat | Success | 55.67 | test_network.py\ntest_01_port_fwd_on_src_nat | Success | 111.88 | test_network.py\ntest_nic_secondaryip_add_remove | Success | 224.06 | test_multipleips_per_nic.py\nlogin_test_saml_user | Success | 25.15 | test_login.py\ntest_assign_and_removal_lb | Success | 133.95 | test_loadbalance.py\ntest_02_create_lb_rule_non_nat | Success | 187.75 | test_loadbalance.py\ntest_01_create_lb_rule_src_nat | Success | 187.96 | test_loadbalance.py\ntest_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py\ntest_02_list_templates | Success | 0.04 | test_list_ids_parameter.py\ntest_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py\ntest_07_list_default_iso | Success | 0.07 | test_iso.py\ntest_05_iso_permissions | Success | 0.07 | test_iso.py\ntest_04_extract_Iso | Success | 5.26 | test_iso.py\ntest_03_delete_iso | Success | 95.14 | test_iso.py\ntest_02_edit_iso | Success | 0.06 | test_iso.py\ntest_01_create_iso | Success | 21.94 | test_iso.py\ntest_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 274.50 | test_internal_lb.py\ntest_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 198.98 | test_internal_lb.py\ntest_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 577.15 | test_internal_lb.py\ntest_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 441.75 | test_internal_lb.py\ntest_dedicateGuestVlanRange | Success | 10.38 | test_guest_vlan_range.py\ntest_UpdateConfigParamWithScope | Success | 0.16 | test_global_settings.py\ntest_rolepermission_lifecycle_update | Success | 7.21 | test_dynamicroles.py\ntest_rolepermission_lifecycle_list | Success | 6.96 | test_dynamicroles.py\ntest_rolepermission_lifecycle_delete | Success | 6.78 | test_dynamicroles.py\ntest_rolepermission_lifecycle_create | Success | 6.90 | test_dynamicroles.py\ntest_rolepermission_lifecycle_concurrent_updates | Success | 7.09 | test_dynamicroles.py\ntest_role_lifecycle_update_role_inuse | Success | 6.87 | test_dynamicroles.py\ntest_role_lifecycle_update | Success | 11.90 | test_dynamicroles.py\ntest_role_lifecycle_list | Success | 6.90 | test_dynamicroles.py\ntest_role_lifecycle_delete | Success | 11.86 | test_dynamicroles.py\ntest_role_lifecycle_create | Success | 6.83 | test_dynamicroles.py\ntest_role_inuse_deletion | Success | 6.83 | test_dynamicroles.py\ntest_role_account_acls_multiple_mgmt_servers | Success | 9.03 | test_dynamicroles.py\ntest_role_account_acls | Success | 9.14 | test_dynamicroles.py\ntest_default_role_deletion | Success | 6.98 | test_dynamicroles.py\ntest_04_create_fat_type_disk_offering | Success | 0.10 | test_disk_offerings.py\ntest_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py\ntest_02_edit_disk_offering | Success | 0.06 | test_disk_offerings.py\ntest_02_create_sparse_type_disk_offering | Success | 0.09 | test_disk_offerings.py\ntest_01_create_disk_offering | Success | 0.08 | test_disk_offerings.py\ntest_deployvm_userdispersing | Success | 20.65 | test_deploy_vms_with_varied_deploymentplanners.py\ntest_deployvm_userconcentrated | Success | 50.84 | test_deploy_vms_with_varied_deploymentplanners.py\ntest_deployvm_firstfit | Success | 192.16 | test_deploy_vms_with_varied_deploymentplanners.py\ntest_deployvm_userdata_post | Success | 10.41 | test_deploy_vm_with_userdata.py\ntest_deployvm_userdata | Success | 70.86 | test_deploy_vm_with_userdata.py\ntest_02_deploy_vm_root_resize | Success | 6.95 | test_deploy_vm_root_resize.py\ntest_01_deploy_vm_root_resize | Success | 6.97 | test_deploy_vm_root_resize.py\ntest_00_deploy_vm_root_resize | Success | 259.00 | test_deploy_vm_root_resize.py\ntest_deploy_vm_from_iso | Success | 238.68 | test_deploy_vm_iso.py\ntest_DeployVmAntiAffinityGroup | Success | 131.38 | test_affinity_groups.py\ntest_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py\ntest_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py\ntest_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py\ntest_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py\ntest_06_copy_template | Skipped | 0.00 | test_templates.py\ntest_static_role_account_acls | Skipped | 0.03 | test_staticroles.py\ntest_01_scale_vm | Skipped | 0.00 | test_scale_vm.py\ntest_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py\ntest_06_copy_iso | Skipped | 0.00 | test_iso.py\ntest_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py\n"}}
{"actor":{"display_login":"blueorangutan"}}