Content Delivery App

As a part of the second phase of my mobility first research, me along with my class mate Curtis David shall be creating an Android app which creates content and sends it.

The idea of the app is to take pictures at a certain event and share the pictures with others at the same event. So they can see the event from your point of view as well as you seeing it from theirs.

First the app uses GPS to get the users location on launch which is uses to save the pictures. The user will then have the option to take pictures, view pictures, or send pictures all from the app.

Stay tuned for pics and updates as the project comes together!

Mobility First Research Phase 2

Now that we have studied the future Internet architecture and developed our individual apps, my classmates and I are now going to the second phase of the research project. The second phase is going to be doing further research focused on Mobility First. Along with the research we are also going to be developing a content delivery app that will utilize mobility first.

App Up and running!

My app is finally complete or almost complete. All the buttons are functional and each process works. The game works very simple, nothing too fancy. First the user can create their user name which the app uses to address them throughout. Then the user can click the how to play button which will give them instructions on how to play the game. There is a high score activity which is not fully functional as yet. The final button is the play game button which takes the user to the first question. If the user selects the correct answer to the question 10 points will be added to their score and they will be taken to the next picture. Otherwise the user will just be taken to the next question with no points being awarded.

Screenshot_2014-08-22-23-15-46Screenshot_2014-08-22-23-16-08app3High score activity Screenshot_2014-09-14-19-26-26Screenshot_2014-09-14-19-26-45

Report on STAR (Storage Aware Routing protocol)

Khaiel Younis

Future Internet Architectures Report

Professor Shweta Jain

 

STAR – Storage Aware Routing Protocol

 

The storage aware routing protocol or STAR as it is more commonly referred to was researched and developed by Dr. Shweta Jain of CUNY York College, Snehapreethi Gopinath and Dipankar Raychaudhuri of Rutgers WINLAB. It was designed to improve the efficiency of generalized delay tolerant networks or gDTN as it more commonly referred to; and to facilitate with future internet architectures as mobility becomes more essential.

STAR or anything similar will prove to be vital due to the fact that it supports mobility throughout the network in which it will be implemented in. The current internet architecture was designed with IP being the narrow waist that everything goes through from the application layer to the physical layer. But this internet architecture was not designed to support mobile devices that move and change location dynamically. And as we know mobile devices which are connected to the internet are becoming a huge part of global internet, vastly out numbering computers and other devices which remain at one location. This trend will continue and mobile devices will generate the majority of the future internet traffic load.

Wireless networks face many challenges to implement and functions successfully at all times due to the fact that there is no hard-wire connection and devices in the network move around. Many things can happen to disrupt communication; wireless signals like wifi can be lost due to distance as devices move throughout the network, other frequencies my cause channel disturbances, and link outages due to the drop in link speed. Also some devices may disconnect from the network when their batteries are running low in order to conserve power. The term gDTN which means generalized Delay Tolerant Networks was coined to described these network scenarios. Generally when these interruptions take place the entire piece of data that was being transferred at that time would be lost and would have to be retrieved all the way from the host again. This means that the routers would have to find the path back to host or server where the original content came from, because the data wasn’t stored anywhere on its path to the content receiver. Although it may not take that long to reconnect to the host the more disconnections happening the time will definitely add up and be noticeable. Worst yet, the connection between the original content creator or server cannot be re-established when the content requestor reconnects to the network, this causes serious problems and lack of functionality in the network. But STAR will remedy these problems.

Currently future internet researchers are have been working to develop new technologies that will further accommodate wireless networks and integrate them as a part of the future internet architecture. So far they have proposed a new transport protocol that would provide hop by hop routing instead of end to end routing. But these innovations at the upper layer will only work efficiently if the network routers and protocols are created or upgraded to support wireless networks and mobility throughout the network. So this is where STAR comes in with its new network protocol that makes routers smarter to provide the best quality data transfer throughout the network.

Star will put into effect policies that will work seamlessly between disconnected wireless networks to well-connected wired networks. The objective is to always find the best end-to-end path to the destination and knowing how and when to transmit the data. The main elements needed in order for star to function are: a storage router, a transport layer, a routing cost metric, network topology discovery, path computation, and a store and forward algorithm.

Star introduces the design of a storage router that will be used to allocate storage for all layers of the protocol stack. Routers implementing star would be built with large storage capacities which would be used to store large content in transit. These routers will keep the information on all the data requests up stream and all the actual data coming down stream before it is forwarded further. Different content can be stored and cached if necessary for future use if the router constantly requests it; this means that the routers can be smart keep data the nodes closest to it requests regularly instead of going to the host or original content creator all the time. This can be implemented easy as the cost of storage is decreasing rapidly and companies are creating bigger hard disks.

The transport layer currently being used which is TCP has been proven to be in efficient in general wireless networks due to the fact that the connections between wireless devices terminate at the access point(AP). As mobile devices move around they may connect to another AP which would cause the data transfer to stop and need to restart from the original server unless the wireless device can find a way to connect to the original AP that was being used when the transfer initially started. Therefore star uses the hop by hop protocol which is reliable and doesn’t require connections. In hop by hop the data is transferred by using the selective repeat ARQ scheme. Instead of sending an acknowledgement every time a frame is transferred a batch acknowledgment(BACK) is used when everything is done transferring. The back contains a field that tells the server what frames need to be retransmitted if any.

The routing cost metric is important as it is used to determine when it is best to the link between the server and the client is best and optimized for data transfer. Star uses a two dimensional routing cost metric which has both short term and long term route costs. Star constantly checks the state of the link to know when the bandwidth and signal is at its best, it keeps a record of the average highest a link was to know that it was capable of that before, so the router would wait for the link to get to its optimal strength or close to it before sending the data. The routing cost metric also factors in the distance and time it would take for each transfer. The less time a transfer takes the lower the cost, the highest the link strength is the lower the cost, the shorter the distance is the lower the cost. Star implements tables in the router that keeps the records of all the nodes directly connected to it, and their neighbor nodes. This table is always being updated so the router can know information about its neighbors and the path to other nodes in the vicinity. The tables are updated by using the information received from a broadcast of hello messages. These hello messages contains information such as a list of the node that sent the message’s neighbors and best transmission rate for each neighbor, as well as the available storage on itself and its neighbor nodes if that router already has such information. Using the information received from the broadcast messages each node creates their one and two hop neighbor tables.

With this information star then chooses the path with the average lowest costs when all the variables are factored in and taken into consideration and uses that path to send the data. Star uses a modified breadth first search to find multiple paths with low costs to each destination. Star works smarter and not harder, by finding the path with the lowest to one destination very far it can also learn the best routes to various destination nodes along the way. Star saves that information for later use if necessary.

After figuring out the best possible route to a node, star then has to make the decision to either forward or store the data. Before forwarding data each router first looks up in its table the available storage on the multiple routers downstream in route to the destination node. If there isn’t sufficient storage capacity on the next router downstream or the next few, the router will not forward the data. It will instead keep the data in its own storage to be forwarded later when there is sufficient storage space on the routers downstream.  Routers also store data when it doesn’t know how to get to the destination node, if the node at the next hop is disconnected for any reason, or if the signal/link between the nodes is not optimal for data transfer.

Overall I think star is going to be a huge part of the future internet architecture as it mends and deals with quite a few issues of the current internet architecture. It works genius to find the best ways to transfer data to its destination. It adds versatility to the internet to support mobile devices moving throughout the network and disconnecting from time to time. If the devices are disconnected or are unable to be reached the data being sent to them can be stored to be distributed later.

I think the biggest issue star will face is storage management on the routers. How long should the data be stored? What data is important to keep and what is not? As much as storage is getting cheaper, in a large network routers storage may get filled from time to time. So I think there should be a system in place to determine what data is important and what can be deleted in such a situation when storage is minimal. What if the data being stored was going to a device once connected to that router and that device has since moved and the device is better off getting the data from the original content creator. As long as this part is figured out star will work great and improve the internet architecture substantially.

 

Reference:

STAR: Storage Aware Routing Protocol for Generalized delay Tolerant Networks by Shweta Jain, Snehapreethi Gopinath, and Dipankar Raychaudhuri.

Introduction to Databases (Healthcare)

In the very little spear time that I have, I began learning about databases as they pertain to medical informatics, a field that I am very interested in. So to help me retain what I have learned I am going to write short summaries on what I have learned and post them here.


 

Database: A Database is any collection of data that stored with a defined structure to serve a purpose. When we use the term database we refer to a computer database, that is a database that is stored on a computer or a series of computers. In order for a computer to create, access or modify the database the computer must first have a Database Management System (DBMS).

 

Types of Databases

Flat DatabasesThese databases have the least amount of structure. They are usually a large table with the first row being variable and all the other rows being data. Flat databases are very simple and work efficiently for small portions of data. However they are not able to be tweaked for specialized usage and functionality and they are not conducive to complicated search queries that divide the database further.

Relational Databases: These databases are databases in which records are stored with related fields as data. To effectively store data information items and and their relationships are stored in a table format. The first row of the tables usually belong to the same case and are related. One column of the table is considered the key. Tables in relational databases does not need to be the same size but must all have a key column which connects them to each other. These databases are usually harder to design but makes it easier for the end users.

Hierarchical Databases:  These are databases which have sub databases with the same characteristics as the parent database. They are like folders on ones computer. It works as the parent database has children databases within it, if something is modified on the parent the children will be affected too. If the parent is deleted so will the child databases within it. This database type makes it easy to modify databases as a group that should all have the same characteristics maintained.

Distributed Databases: So far all the databases I have mentioned are databases that are created and stored on one computer or server. Distributed databases however are different. Distributed databases are databases in which data is stored on different computers in different settings. One or more computers will contain the index as to where each piece of data is stored, by using the address of the data the DBMS could retrieve and modify the data as needed. One key feature of this type of database is an audit trail. Audit trails are created whenever someone modifies, adds, deletes, or access the data to keep track of who is accessing in or changing it. Therefore a system administrator can know and manage everything that is taking place within the database.

Federated Databases: These operate similarly to distributed databases but have more enhanced security features. Each local database are responsible for managing their own data and security. It is the local database that chooses whether or not to connect to the federation and how they process incoming requests and queries.

 

Source: http://gunston.gmu.edu/healthscience/709/EvolutionDatabases.asp

Android App Progress

 

 

 

My Android app is coming together slowly but surely. I have created a start up screen with the app tittle and the four main buttons. So far the first three buttons are active. The user can save their username then display it, see the instructions on how to play the game and the high scores activity can be viewed. I have done some work in photoshop to create some png files for the launcher logo as well as the start up screen logo. Have a look below at my progress and stay tuned for more!

 

 

 

Screenshot_2014-08-22-23-15-46Screenshot_2014-08-22-23-16-08High score activity

My Android App

I have began work on my Android trivia game app. So far I have set up the start up screen user interface with four basic buttons:

Username button- Where the user will create their username and save it.

How to play button- Instructions on how to play the game.

High scores button- Users can check their past high scores.

Play game button- Take the user to the game to begin playing.

So far only the username button works and it takes you to the page where the user can create their username or select their username. After the user creates their username and saves it, I added the return bar to take them back to the parent activity which is the start up screen. However I also want to create a work flow where the user can go from the username activity, to the instructions activity then to play the game. At least it is a start, take a look below to see what it looks like.

App1app2app3

Android App Proposal

For my Android app development workshop I was required to come up with a simple idea for an app that I would create over the upcoming weeks. I decided to create a simple trivia game in which the user would view an image then get asked a question about that image. The user would be given 3 multiple choice answers and points would be rewarded for each correct answer.

Here is the simple Presentation I made for my colleagues: Slide1 Slide2 Slide3 Slide4 Slide5 Slide6

eXpressive Internet Architecture

The eXpressive Internet Architecture (XIA) is another one of the four projects funded by the the National Science Fund(NSF) in 2010. It tries to cater to the needs of every single aspect of the internet as well as those still to come in the future. XIA sets of to be the continuously evolvable internet architecture which provides and support communication between: content, host, service and any others that will come next.

XIA keeps the current narrow waist model of the internet and still uses IP address to get to hosts. However the main idea behind it is to provide more innovations at upper and lower levels.  So XIA will not be able to support the Named Data Network structure due to the nature of its functionality.

XIX struct

 

 

XIA will deal with each request type individually and the application figure what would be the best way to communicate to the endpoint. A piece of content would be addressed by name, A service would be identified by a service ID, and a host will be obtainable by address or name. I believe that this makes sense as it handles each request in the best manor that the architecture knows how to, for example you wont go looking for apples in the sea or go looking for fish in an apple orchard.

xia

 

To get content XIA finds the service identifier using either a web search, bookmark or secure DNS, then receives a destination ID from the content creator which will then be used to get content from the nearest service provider instead of going to the originator.

xia 2

Overall I think XIA is a great internet architecture as it tries to deal with all variations of internet communication and deals with each one individual in a unique way. However I think that because it tries to do so much it might be quite complicated to implement.

Named Data Network

The first research topic we looked at in the workshop was the Named Data Network.

The Named Data Network is one of four projects funded by the NSF in 2010, but has its roots from a project started by Van Jacobsen in 2006 called Content Centric Networking. It’s main feature is to evolve from being a host centric to a data centric architecture. It will use the current narrow waist model but would require IP packets to name objects rather than communication endpoints. NDN structure

 

NDN uses two packets to function, An interest packet and a Data packet. The user sends the an interest packet with contains the name of the data they want. Then the packet is forwarded by the routers until it gets to a destination where that piece of data is stored. Finally the data will be sent back to the user in a data packet.

NDN packets There are 3 types of data structures which are needed in routers for NDN; Content Stores, Pending Interest Tables, and Forwarding Information Base. Content stores (CS) saves the data within routers and allows the data to be served to the users. Pending Interest Tables (PIT) keeps a log of all forwarded interests that the router.

This architecture is interesting and appears simple in theory. I believe that it has great potential and will definitely play a part and have a hand in the future of the internet. It may save tremendous time in daily computing by going to the content instead of the host. If the original content creator is at a great distance and the content is stored at a closer distance there will be no need to send and receive packets all the way to and from the contents creator. Because at the end of the day everyone or everything using the internet is only interested in some type of content or service, so if they can receive that same content or service quicker and still be able to trust it, there is no need to worry about where it comes from. The data’s original producer public key is used to digitally sign each data packet so that the end user can verify its originality. Also the data producer can also choose who can access this data even though it is being stored else where. Overall I think that this is a great concept, but we just have to figure out what the names of the data are gonna look like.