Hi all,
I have set up the EGPRS network using software bundles (osmo-nitb + osmo-bts-trx + osmo-trx + osmo-pcu + osmo-sgsn + openggsn) based on the USRP B210 platform. Now the cell phone can connect to the EGPRS network, but the network is not stable and the data rate is too low (only about 8kbs).
Is this data rate correct? If not, could you pls send me some working config files? Thank you.
Best Regards,
Xinke
Hello,
I would like to implement a command line tool, which will be able to open / close , read / write to gtp tunnels. I was able to install the libgtpnl library, but due to lack of documentation I have no idea where to start.
Is there some sort of documentation available for this library?
I need to be able to create and delete tunnels without the GTP-C communication, so just basic command line tool like create-gtp-tunnel + arguments like IPs, version and teid. The GTP-U tunnels must be kernel based. I have the latest kernel with the gtp kernel module loaded.
Any help is appreciated.
Thank you,
Tomas
Hi all,
I built OsmoSGSN with the these following instructions.
<build instructions>
git clone git://git.osmocom.org/osmo-sgsn
cd osmo-sgsn
autoreconf -fi
./configure --enable-iu
make -j5
make check
make install
sudo ldconfig
<build instructions>
And no error came out during building process, but no “osmo-sgsn” executable was found. Pls help me. Thank you in advance.
Best Regards,
Xinke
Hello,
I tried to run sgsnemu in "createif" mode - transfer traffic via tun
interface.
tun interface created and routing too. But there are no outgoing GTP-U
from test machine. (in my scenario sgsnemu on separated server).
From gdb it looks, that in cb_tun_ind function ipm->pdp is 0x0, as result
gtp_data_req(gsn, ipm->pdp, pack, len);
not running.
After changes like below, it's start working. Does I correctly
understood internal logic?
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index 630733b..cf4aa44 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -1462,7 +1462,7 @@ static int create_pdp_conf(struct pdp_t *pdp, void
*cbp, int cause)
free(forwarding);
}
- ipset((struct iphash_t *)pdp->peer, &addr);
+ ipset(iph, &addr);
state = 2; /* Connected */
If need more test details, please let me know.
--
Viktor
Hi,
I'm trying to run GPRS in my network. So far I get flooded with the
bellow trafic in the PCU and the GGNS doesn't appear to receive any
traffic.
<000c> gprs_bssgp_bss.c:294 BSSGP (BVCI=2) Tx BVC-RESET CAUSE=O&M
intervention
<000c> gprs_bssgp.c:551 BSSGP BVCI=0 Rx BVC STATUS, cause=Protocol
error - unspecified
<000c> gprs_bssgp_pcu.cpp:348 Rx BSSGP BVCI=0 (SIGN) PDU type
BVC-UNBLOCK unknown
<000c> gprs_bssgp_util.c:238 BSSGP BVCI=0 Tx STATUS, cause=Protocol
error - unspecified
<000c> gprs_bssgp_pcu.cpp:298 Rx BSSGP BVCI=0 (SIGN) BVC_RESET_ACK
<000c> gprs_bssgp_pcu.cpp:835 Sending unblock on BVCI 2
<000c> gprs_bssgp_bss.c:274 BSSGP (BVCI=2) Tx BVC-BLOCK
<000c> gprs_bssgp.c:289 Cell 1-1-1-0 CI 0 on BVCI 2
Thanks,
Filipe Laíns <https://github.com/FFY00>
Sent via Migadu.com, world's easiest email hosting
---------- Forwarded message ----------
From: fırat sönmez <firatssonmez(a)gmail.com>
Date: 2018-02-01 15:51 GMT+03:00
Subject: Re: icmp encapsulation
To: Pau Espin Pedrol <pespin(a)sysmocom.de>
Hi Pau,
Thank you for your response.
You are right, I should have told the configuration in more detail.
However, you came to the point already. I am talking about the second case
where there is NAT. There is a slight difference though.
After the NAT two IP (IP1 and IP2) will be IPnat, but the NAT maps the IP1
and IP2 to the port range. Since, there is no port in ICMP, both IP1 and
IP2 will be go to uplink as IPg and but on the return there must be problem
for NAT machine to traverse the two different paths from IPnat to IP1 and
IPnat to IP2. I looked into the ICMP header and observed the packets have
different identifiers. So, NAT machine must be using the identifies to
reverse the packets.
Anyways, in my case the *IP1=IP2* (In my experimental architecture, the
GGSN will not be assigning distinct IP for each host. Instead, GGSN will
assign 1 IP address for 32 hosts (seems like NAT). My configuration is
probably out of standard architectures, but I need to understand how would
gtp handle matching these two pdp contexts. I have tried this
configuration, pinging from two different host with same IP and it was
successful!
Two packets coming from the server to the GGSN will be *[src:IPs | dst:IP1]*
and *[src:IPs | dst:IP2]* IP1=IP2, but two packets have different icmp
identifier. And pdp contexts are still resolved successfully. so a big HOW
in my mind?
Fırat
2018-02-01 13:46 GMT+03:00 Pau Espin Pedrol <pespin(a)sysmocom.de>:
> Hi firat,
>
> I didn't understand fully the configuration you are describing. Something
> like this?
>
> Host1 --SGSN1--\GGSN--Server
> Host2 --SGSN2--/
>
> Where Host1 has been assigned IP1 and Host2 has been assigned IP2, both
> assigned by GGSN where IP1 != IP2. Let's assume the server IP is IPs and
> the GGSN public uplink (non-GTP) IP is IPg.
>
> As far as I understand, it works as follow:
>
> - Case without NAT between GGSN and Server:
> Host1 sends ICMP packet with saddr=IP1 daddr=IPs, which gets encapsulated
> through GTP and GGSN decapsulates it. Same for Host2 but in this case the
> packet will have saddr=IP2. As there's no NAT (eg. host clients are
> assigned a public IP), the server receives 2 ICMP packets with different
> saddr, and when answering back using the original saddr now as daddr. As
> GGSN keeps track of the saddr assigned to each pdp context, when it
> receives a packet from the uplink (non-GTP side), it matches the daddr of
> the packet against the saddr of the active pdp ctx to find to which pdp ctx
> should forward the packet.
>
> - Case with NAT between GGSN and Server:
> Almost the same but with extra steps done by the NAT. When the GGSN sends
> the packet saddr=IP1 daddr=IPs to the server, the NAT changes
> saddr=IP1->IPg. It does the same for saddr=IP2, but the NAT keeps track of
> the binding. When the response is received from the server, the NAT
> converts back IPg->IP1 and GGSN can again track the pdp ctx as described in
> the previous case.
>
> --
> - Pau Espin Pedrol <pespin(a)sysmocom.de> http://www.sysmocom.de/
> =======================================================================
> * sysmocom - systems for mobile communications GmbH
> * Alt-Moabit 93
> * 10559 Berlin, Germany
> * Sitz / Registered office: Berlin, HRB 134158 B
> * Geschaeftsfuehrer / Managing Director: Harald Welte
>
Hi,
I would like to ask&know how the GGSN holds and finds pdp contexts for icmp
packets that have same source and destination address on the downlink?
For example, if there are two hosts having same IP address behind two
different network pinging same destination address and they are
encapsulated at SGSN and then one GGSN receives both and saves the packet,
decapsulates and sends to the destination. On the downlink destination
responds to the two ping packets (they are different because they have
different identifier in icmp packet), but then how does GGSN finds the pdp
contexts again to encapsulate these packets and send back to the two SGSNs?
The pdp context doesnt include thse icmp identifiers. There is no sockets
either since icmp doesnt have sockets. On the downlink, when there are two
icmp packets recieved by GGSN, there is only icmp identfier that
distinguish each other, but this identifier is not in the pdp context.
Would someone help me figure out this?
Thank you all