best way to measure internet traffic over different networks - blackberry

I am developing a application in Blackberry SDK 5.0.0 end from my research the only class that deals with internet traffic is RadioInfo with the methods RadioInfo.getNumberOfPacketsReceived()/Sent(), but this methods retrieve the total traffic over all the networks, counting both mobile data and WiFi data. Is there a way to determine which network is used when the device connects to internet?

Related

IoT devices in pcap files

I'm doing some network research, I want to find all the IoT devices (or at least devices that could be IoT) from .pcap files. Do IoT devices have some unique traffic characteristics, traffic pattern or identification (eg. protocols, ports, etc)? I can't find the answer. IoT devices are relatively new so there is not that much documentation about it.
Thanks!
This is an active area of research and may require some sort of ML algorithm. We (3 students at UC Berkeley) are also looking into it. Do you have any pcaps you can share?
There are many characteristics, but because this is a new field with insufficient standardization - there is no solution to find all devices, and you will have to use several different methods.
Watch the protocol - some devices use niche protocols that single them out (like SIP for VOIP devices)
Watch the urls devices are looking for via DNS - since most iot devices are not directly human controlled like normal computers, their communication is rather unique per device. They will contact the site of their vendors for updates, send and receive data that directly relates to their function and won't have much variance in their behavior.
Watch for service discovery protocols. Many protocols include the service that the device gives as field. Read about ssdp and mdns.
There are many more complex ways of using the fact that most of the communication is pre-defined. Devices have unique patterns of communication - like specific times between requests for example.
There really isn't. It's an internet device after all, and the manufacturer and the user through configuration will define its traffic pattern.
That said, there will be a traffic pattern for a particular type of IoT devices. Sine IoT devices always phones home for legit reasons, you can probably find your device types by the servers they connect to, and use that to refine your statistics/ML algorithm.
Now on a tangent, a lot of IoT devices (medical devices, OnStar, Tesla and etc) use cellular networks, both for mobility and for reliability. There are a set of protocols that show a lot more information.

Real-time data from Raspberry Pi to iPhone

I recently have not much experiance about working with a raspberry.
I need to send real-time data from my Raspberry Pi 2 Model B to an iPhone. The Raspberry will get the internet connection via UMTS stick.
I thought about a websocket but I didn't find any information what websocket would be the best and how to config it.
So is there anyone who already has a solution about it?
Thank you!
WebSocket requires a WebSocket (WS) server or a webserver that understands the WebSocket protocol as defined by the IETF. So for a RPi to talk directly to your iPhone, one of the devices has to have a WS server... which is not likely.
There are a couple of possible alternatives (there are certainly others). You could send data from the RPi to an external server that hosts a WS-capable server which then forwards that data to your iPhone, either thru a native app or a web browser. The data is logically transmitted between the two devices, but physically sent using an external service to coordinate the two. Visit http://goo.gl/Utg0dU to see data exchanged between an RPi and an iPhone using web messaging (src available).
Another possible alternative is to use Bluetooth to send data directly from the RPi to the iPhone. Being a Java dude, I know you can run a JVM on the RPI and I know there's a Java bluetooth API, and obviously the iPhone supports bluetooth, so its definitely do-able with a JVM. A quick Google shows plenty of support for bluetooth on the RPi with other languages. So you're good with this approach too.
If the Raspberry Pi is connected to the Internet with a public IP Address (I guess it doesn't since it uses UMTS) then you can setup a TCP Listener where the iPhone will connect to. If it doesn't and you can do Port Forwarding (I guess you can't) then you can forward the TCP port to the Raspberry Pi. The above examples also work with an HTTP server.
If the iPhone is near the Raspberry Pi and you're writing an app for the iPhone you can use a Bluetooth transceiver on the Pi to communicate.
If you can't do any of this you may need a third server with a public IP where both devices will connect to and the server will relay all connections from one device to the other.
In general, it would help if you could describe a little bit better what you want to achieve and the network topology involved so we can provide more specific answers.

What to choose for data share in same wifi network: Multipeer, Bonjour, Socket connection

I am working on data share over same wifi two/more iOS devices.I have successfully implemented it using multipeer networking and explored it from videos documents.I am just looking on apple Dev for difference between Bonjour vs Multipeer Networking. Is there some one in group who have worked on both and can share me his experience with what to choose.
My requirement:
Connect two/more iOS device in Same Wifi Network
Automatic Discovering and Connectivity.
Data Size Can be 1 KB to 1 GB.(working on it with MC).
Resume data share when disconnect and connect(looking for it with MC).
Which is more reliable?
What will YOU choose?
I am also looking at GCDAsyncSocket(Don't know i m on right direction).
So please share your experience.
Thanks.
As per documentation says:
The Multipeer Connectivity Framework provides a layer on top of Bonjour that lets you communicate with apps running on nearby devices (over infrastructure Wi-Fi, peer-to-peer Wi-Fi, and either Bluetooth (for iOS) or Ethernet (for OS X) without having to write lots of networking code specific to your app.

Is GSM data sending between 2 phones impossible?

Please tell me in detail why it is impossible to send the data between two phones over GSM? I can find almost no information about this problem.
There are 2 points here.
Firstly, GSM is a mobile voice telephony system - plain GSM doesn't do data connections.
GPRS and EDGE are add-ons to the GSM network that allow data to be sent.
There are other kinds of wireless phone networks that also use a SIM and allow data to be sent (UMTS, LTE).
Secondly, when you establish a data connection with a mobile phone and a phone network, you are establishing an IP connection between your phone/modem and a gateway server in the operator's network. The gateway server allows you access to the internet (together with the DNS server etc, obviously).
This is similar to a computer plugging in a LAN cable and connecting to their ISP. But you can also connect 2 computers with a crossover cable, and configure them to have an IP connection directly. So what you are asking is, why can't I do the same with 2 GSM phones? what is the equivalent of a wireless crossover cable?
The reason is because GSM has no protocol to connect phones to each other. It only defines a protocol for phones to connect to a network base station.
To transfer data between 2 phones, therefore, you need a different protocol, one which will work between 2 peers. Bluetooth is a common such protocol, but it only works over short distances.
If you want to connect 2 distant phones, you can do this via a third party, like a website, to which data can be uploaded into the cloud by the first phone and downloaded by the second phone.
Or, you could establish a connection at the IP level via the internet, e.g. if one mobile device was a web server (the last sentence is only theorising).
See also this related question
EDIT: 3GPP Release 12 includes direct Device to Device communications. At the time of writing, it's still very new, and not yet commercially available, so the answer above still holds. D2D is designed for emergency services, eg if the network is damaged by a disaster, they can still communicate directly. But 3GPP suggests that it will be commercially available as well. From 3GPP news
There are also commercial benefits of D2D, with new applications building on the physical proximity of users being trialed by operators.
2nd EDIT: Apple has created a feature called Multipeer Connectivity Framework, which uses a mixture of WiFi networks, peer-to-peer WiFi and Bluetooth to enable short distance connectivity between iPhones when there is no GSM network.
NFC is another peer-to-peer technology for communicating between 2 devices, that is supported by some phones. More information here.

How to detect whether Bis-B is through carrier or Wi-Fi programatically?

How do we programatically detect whether the BIS data traffic is routed through the carrier network or Wi-Fi. Looking at the BB logo dots, we can see that it will be near Wi-Fi indicator if data is routed through Wi-Fi, and near the carrier signal indicator if the data is routed through the carrier data network.
Is there a way to detect that programatically?
You can use the API to determine if a particular service is capable of carrying BIS-B or BES traffic. Since BIS-B and BES are automatically routed through the least expensive means, if Wi-Fi is capable of carrying it BIS-B will go by Wi-Fi.
The KB article in Mister Smiths's comment specifies BIS-B access is available with a qualifying data plan (AKA a BlackBerry data plan, BlackBerry bolt on, etc
"To connect to the BlackBerry Data Services over Wi-Fi for PIN
messaging and BlackBerry Internet Service connectivity, the BlackBerry
smartphone requires a BlackBerry data plan from the wireless service
provider..."
). Given a qualifying data plan BlackBerry Internet Service (BIS) is available under all conditions specified in the chart. If the Wi-Fi connection supports a connection to the BlackBerry router at the ROC then BIS will travel via that connection unless a better option is available. One such better option is also known as "wireless bypass". When a BlackBerry in connected (by USB or BlueTooth) to a PC with internet access and Desktop Manager installed, the BlackBerry will use the PC internet connection.
The KB article also mentions BES. It is often helpful to think of BIS/BIS-B as a subset of BES capability hosted at a RIM Operations Center. Both BES and BIS/BIS-B make use of the BlackBerry router capabilities. The BlackBerry will automatically seek out the apparent least cost method of connecting with the BlackBerry Router either BES or BIS/BIS-B. In order of preference that is: wireless bypass; Wi-Fi; wireless carrier.
Try disabling Wi-Fi:
Radio.deactivateWAFs(RadioInfo.WAF_WLAN);
Maybe you could also detect if Wi-Fi is active calling RadioInfo.getActiveWAFs, but how would you know if it is your app the one using the connection?
To detect whether BIS is going through Wi-Fi, use
if (CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_BIS_B)) {
if (CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_BIS_B, RadioInfo.WAF_WLAN, false))
{
//BIS-B going through wifi
}
else
{
//BIS-B going through carrier
}
}

Resources