Why routing stack?

Bluetooth devices can form a piconet with one master node and up to seven slave nodes. Piconet is very limited in the number of effective nodes and the effective communication distance. By sharing node, several Piconets can form a Scatternet. The formation of Scatternet is not addressed in the Bluetooth specification. To form a Scatternet, some routing mechanism must be used so that a message can reach any node in the Scatternet. The current official Linux Bluetooth stack, Bluez, delegates the routing mechanism to higher level protocol, i.e. IP layer. We think this is not appropriate because of the characteristics of Bluetooth devices, specificly for the following reasons:

1. The location of a Bluetooth node really matters because of the limit of communication distance which is about 10 metres, while it is not the case for Ethernet or Internet.

2. The resource is limited compared with other protocols. The bandwidth is relatively small and Bluetooth devices may have limited system resource. Although in our case, we are dealing with PC based Bluetooth routing stack, we can predict the same issue for a stack of a cellphone OS.

3. Mobility of Bluetooth devices is another concern.

Therefore, we think it is necessary to add a routing layer in the bluetooth stack. Furthermore, we prefer a common routing interface so different Scatternet formation and management and routing methods can be plugged in. We will provide a sample solution in this project, but the focus will be the stack itself instead of the routing algorithm.