aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/proxy/proxy.txt
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/proxy/proxy.txt')
-rw-r--r--openbsc/src/proxy/proxy.txt57
1 files changed, 57 insertions, 0 deletions
diff --git a/openbsc/src/proxy/proxy.txt b/openbsc/src/proxy/proxy.txt
new file mode 100644
index 000000000..e80a65b7a
--- /dev/null
+++ b/openbsc/src/proxy/proxy.txt
@@ -0,0 +1,57 @@
+OpenBSC ip.access Abis/IP proxy design
+======================================================================
+
+== the big picture ==
+
+* behave as BSC
+ * listen for BTS OML connections (TCP port 3002, primary OML)
+ * listen for BTS RSL connections (TCP port 3003)
+ * actively connect to BTS (TCP port 3006, 2ndary OML)
+
+* behave as BTS
+ * actively connect OML to BSC (TCP port 3002)
+ * actively connect RSL to BSC (TCP port 3003)
+
+* provide UDP interface for packet injection
+ * packet format inside UDP is exactly the same as ip.access
+ * provide one port for each direction:
+ * UDP port 5001: message to BTS
+ * IDP port 5002: message to BSC
+
+== use cases ==
+
+* transparent proxy
+ * simply pass all messages from BTS to BSC and vice-versa
+
+* injection proxy
+ * provide UDP (packet-based) interface for tools like scapy
+
+== misc ==
+
+* keep-alive is handled independently, i.e. connections to BTS / BSC are always
+ kept open
+
+
+== code architecture ==
+
+=== incoming TCP connection ===
+* connect TCP to BSC
+* create 2 UDP sockets for packet injection
+
+=== incoming TCP data from BTS ===
+* determine if OML or RSL fd
+* copy data to tx_queue of corresponding BSC fd
+
+=== incoming TCP data from BSC ===
+* determine if OML or RSL fd
+* copy data to tx_queue of corresponding BTS fd
+
+=== incoming UDP data ===
+* determine OML or RSL and direction based on port number
+* copy data to apropriate tx_queue
+
+=== termination of TCP connection ===
+* no matter if BSC or BTS disconnect, keep other TCP session open
+* make sure upon re-connection, the correct pairs of connections
+ are matched up
+