public class SessionBorderController extends Proxy
The SBC forces both signaling and media flows to transit through it.
It do this by using Record-Route header field, by mangling contact and request-URI addresses,
and by mangling SDP content (actually the 'c' and 'm' fields).
If the same message has spiralelly passed to the SBC more times,
the contact address is mangled recursively each time.
For media flows the SBC operates as media relay.
Currenly no RTP transcoding is implemented, and just rough UDP relay is performed.
A SBC can be used for example to assist an UA (e.g. a softphone) to communicate through NAT middle-boxes (using symmetric RTP).
It works dinamically and allows an UA to change its point of attachment without loose the SBC connectivity and relay functinality.
A SBC is created by the SessionBorderController() costructor based on:
- a ServerProfile containg general proxy configuration,
- a SessionBorderControllerProfile containg the specific SBC configuration.
SBC uses a set of media ports assigned cyclically to new media relays (when the last port is in-use, the first port is re-used). The set of available media ports is also taken by the SessionBorderControllerProfile.
Modifier and Type | Field and Description |
---|---|
protected SessionBorderControllerProfile |
sbc_profile
The SBC configuration
|
protected ExtendedSipProvider |
sip_provider
The ExtendedSipProvider.
|
as, AUTHENTICATION_SCHEMES, AUTHENTICATION_SERVER_CLASSES, authentication_service, AUTHENTICATION_SERVICE_CLASSES, AUTHENTICATION_SERVICES, location_service, LOCATION_SERVICE_CLASSES, LOCATION_SERVICES, logger, Loop_Tag, server_profile
Constructor and Description |
---|
SessionBorderController(ExtendedSipProvider sip_provider,
ServerProfile server_profile,
SessionBorderControllerProfile sbc_profile)
Costructs a new SessionBorderController.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
doRelay(java.lang.String remote_addr)
Whether acts as relay system for that remote host.
|
static void |
main(java.lang.String[] args)
The main method.
|
void |
processRequestToLocalUser(SipMessage msg)
When a new request message is received for a local user.
|
protected SipMessage |
updateProxyingRequest(SipMessage req)
Processes the Proxy headers of the request.
|
protected SipMessage |
updateProxyingResponse(SipMessage resp)
Processes the Proxy headers of the response.
|
protected SipMessage |
updateRegistration(SipMessage msg)
Updates the registration of a local user.
|
getAuthDomainBasedProxyingTarget, getAuthPrefixBasedProxyingTarget, getDomainBasedProxyingTarget, getPrefixBasedProxyingTarget, isPhoneNumber, processRequestToLocalServer, processRequestToRemoteUA, processResponse
getTargets
getLocalDomains, isResponsibleFor, isResponsibleFor, isResponsibleFor, onReceivedMessage, validateRequest
protected ExtendedSipProvider sip_provider
protected SessionBorderControllerProfile sbc_profile
public SessionBorderController(ExtendedSipProvider sip_provider, ServerProfile server_profile, SessionBorderControllerProfile sbc_profile)
sip_provider
- is the SIP transport providerserver_profile
- the ServerProfile cointaining basic server confiugurationsbc_profile
- the SessionBorderControllerProfile cointaining specific SBC network configuration.public void processRequestToLocalUser(SipMessage msg)
processRequestToLocalUser
in class Proxy
protected SipMessage updateProxyingRequest(SipMessage req)
updateProxyingRequest
in class Proxy
protected SipMessage updateProxyingResponse(SipMessage resp)
updateProxyingResponse
in class Proxy
protected SipMessage updateRegistration(SipMessage msg)
updateRegistration
in class Registrar
protected boolean doRelay(java.lang.String remote_addr)
public static void main(java.lang.String[] args)