| [[chapter_details]] |
| == Proxy details |
| |
| === BVC handling |
| |
| This section describes in more detail how BVCs are handled in OsmoGbProxy |
| |
| If a BSS connects to OsmoGbProxy while the SGSN is not available it will |
| acknowledge the BVC RESET on the signalling BVC, but ignore other messages |
| (especially any PTP BVC RESET). |
| |
| .BSS connects to OsmoGbProxy |
| [mscgen] |
| ---- |
| msc { |
| hscale="1.8"; |
| bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"]; |
| bss1 <=> gbproxy [label="NS link available"]; |
| bss1 => gbproxy [label="BVC RESET (BVCI=0)"]; |
| gbproxy => bss1 [label="BVC RESET ACK"]; |
| bss1 -x gbproxy [label="PTP BVC RESET (ignored)"]; |
| } |
| ---- |
| |
| As soon as the SGSN is reachable through NS OsmoGbProxy will send a BVC RESET |
| to the signalling BVC towards the SGSN. After that completes it will reset the |
| signalling BVC of all BSS connections. At this point the BSS will send a BVC |
| RESET for its PTP BVCs which will be forwarded to the SGSN, similarly the PTP |
| BVC RESET ACK from the SGSN will be sent back to the BSS. |
| |
| .SGSN connection to OsmoGbProxy |
| [mscgen] |
| ---- |
| msc { |
| hscale="1.8"; |
| bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"]; |
| gbproxy <=> sgsn [label="NS link available"]; |
| gbproxy => sgsn [label="BVC RESET (BVCI=0)"]; |
| sgsn => gbproxy [label="BVC RESET ACK"]; |
| |
| gbproxy => bss1 [label="BVC RESET (BVCI=0)"]; |
| bss1 => gbproxy [label="BVC RESET ACK"]; |
| bss1 box bss1 [label="PTP BVCs need to be reset"]; |
| bss1 => gbproxy [label="PTP BVC RESET (BVCI=x)"]; |
| gbproxy => sgsn [label="PTP BVC RESET (BVCI=x)"]; |
| sgsn => gbproxy [label="PTP BVC RESET ACK (BVCI=x)"]; |
| gbproxy => bss1 [label="PTP BVC RESET ACK (BVCI=x)"]; |
| bss2 <=> sgsn [label="BVCI x established"]; |
| } |
| ---- |
| |
| The communication on the PTP BVC will then be forwarded between the BSS and the |
| SGSN. |
| |
| If a BSS connects while the SGSN is up the PTP BVC RESET will directly be |
| forwarded. |
| |
| .BSS connects to OsmoGbProxy |
| [mscgen] |
| ---- |
| msc { |
| hscale="1.8"; |
| bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"]; |
| bss2 <=> gbproxy [label="NS link available"]; |
| bss2 => gbproxy [label="BVC RESET (BVCI=0)"]; |
| gbproxy => bss2 [label="BVC RESET ACK"]; |
| bss2 => gbproxy [label="PTP BVC RESET (BVCI=y)"]; |
| gbproxy => sgsn [label="PTP BVC RESET (BVCI=y)"]; |
| sgsn => gbproxy [label="PTP BVC RESET ACK (BVCI=y)"]; |
| gbproxy => bss2 [label="PTP BVC RESET ACK (BVCI=y)"]; |
| bss2 <=> sgsn [label="BVCI y established"]; |
| } |
| ---- |
| |
| If OsmoGbProxy looses the connection to the SGSN it will reset the signalling |
| BVC of all BSS connections. This ensures that the BSS will not send traffic |
| over a PTP BVC before its reset procedure has been completed. |
| |
| .SGSN connection fails |
| [mscgen] |
| ---- |
| msc { |
| hscale="1.8"; |
| bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"]; |
| gbproxy <=> sgsn [label="NS link fails"]; |
| gbproxy => bss1 [label="BVC RESET (BVCI=0)"]; |
| gbproxy => bss2 [label="BVC RESET (BVCI=0)"]; |
| } |
| ---- |
| |
| When the connection to the SGSN is eventually restored the signalling BVC |
| between OsmoGbProxy and SGSN will be reset. |
| |
| After that completes OsmoGbProxy will reset the signalling BVC on all BSS NS |
| connections and forward the PTP BVC RESET messages. |
| |
| .SGSN connection restored |
| [mscgen] |
| ---- |
| msc { |
| hscale="1.8"; |
| bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"]; |
| gbproxy <=> sgsn [label="NS link available"]; |
| gbproxy => sgsn [label="BVC RESET (BVCI=0)"]; |
| sgsn => gbproxy [label="BVC RESET ACK"]; |
| gbproxy => bss1 [label="BVC RESET (BVCI=0)"]; |
| bss1 => gbproxy [label="BVC RESET ACK"]; |
| bss1 box bss1 [label="PTP BVCs need to be reset"]; |
| gbproxy => bss2 [label="BVC RESET (BVCI=0)"]; |
| bss2 => gbproxy [label="BVC RESET ACK"]; |
| bss2 box bss2 [label="PTP BVCs need to be reset"]; |
| } |
| ---- |