Trying to understand why our secondary BYOC trunk in AP-Southeast-2 returns a SIP 408 Request Timeout when the primary trunk in AP-Southeast-1 fails. We have 15 trunks configured across regions with strict failover logic defined in the outbound routing settings. The primary trunk drops calls due to carrier congestion, triggering the failover to the secondary trunk. However, the secondary trunk registers successfully but fails to establish the media path, resulting in a 408 timeout after 3 seconds. The SIP traces show that the INVITE is sent to the correct endpoint, but no response is received from the carrier gateway. We have verified that the SIP credentials are correct and the trunk is active. The carrier has confirmed that they are receiving the INVITE but are dropping it due to a mismatched SDP attribute. Specifically, the SDP contains a codec that is not supported by the carrier’s gateway. We have tried disabling the unsupported codec in the trunk settings, but the issue persists. The environment is Genesys Cloud with BYOC trunks using SIP 2.0. The SDK version is 1.0.4. The error occurs consistently during peak hours. Has anyone encountered a similar issue with SDP negotiation during failover? Any insights on how to debug the SDP mismatch would be appreciated. We are using the latest version of the Genesys Cloud platform.
What’s probably happening here is that not a network latency issue between AP-Southeast-1 and AP-Southeast-2, but rather how the Genesys Cloud genesyscloud_telephony_providers_edges_trunk resource handles registration states during rapid failover events. When the primary trunk fails, the platform attempts to reroute immediately. If the secondary BYOC trunk’s registration session hasn’t fully stabilized or if there is a NAT mapping persistence issue on the carrier side, the SIP INVITE times out before the media path can be negotiated.
Check your Terraform configuration for the secondary trunk. Specifically, look at the outbound_addresses and registration blocks. Often, the registration_mode needs to be explicitly set to REGISTER rather than relying on defaults, and the contact address must match the public IP seen by the carrier.
resource "genesyscloud_telephony_providers_edges_trunk" "secondary_byoc" {
name = "Secondary BYOC APSE2"
type = "BYOC"
registration {
registration_mode = "REGISTER"
auth_user_name = var.byoc_auth_user
auth_password = var.byoc_auth_pass
contact = var.secondary_public_ip
}
# Ensure this matches the carrier's expected format
outbound_addresses = [var.secondary_public_ip]
# Critical for AP regions: ensure TLS is enforced correctly
tls {
tls_enabled = true
tls_verify = false # Adjust based on carrier cert requirements
}
}
Also, verify the genesyscloud_telephony_providers_edges_outbound_route configuration. The failover logic might be triggering too quickly before the secondary trunk’s SIP dialog is ready. Add a small delay or ensure the outbound_route has a distinct name to avoid caching issues.
resource "genesyscloud_telephony_providers_edges_outbound_route" "failover_route" {
name = "Failover Route APSE2"
# Explicitly define the trunk order
trunk_ids = [
genesyscloud_telephony_providers_edges_trunk.primary.id,
genesyscloud_telephony_providers_edges_trunk.secondary_byoc.id
]
}
Run genesyscloud telephony-provider-edges trunk get for the secondary trunk to confirm the registration_state is REGISTERED and contact matches the expected IP. If the state is UNREGISTERED or REG_FAIL, the 408 is expected.