ieee 802.21 media independent handover dcn: 21-07-0029-00
DESCRIPTION
IEEE 802.21 MEDIA INDEPENDENT HANDOVER DCN: 21-07-0029-00 Title: Using the Unified Link Layer API (ULLA) for Generic and Open Media Access within 802.21 Date Submitted: January, 2007 Presented at IEEE 802.21 session #18 Authors or Source(s): Tim Farnham Mahesh Sooriyabandara - PowerPoint PPT PresentationTRANSCRIPT
IEEE 802.21 MEDIA INDEPENDENT HANDOVER
DCN: 21-07-0029-00
Title: Using the Unified Link Layer API (ULLA) for Generic and Open Media Access within 802.21
Date Submitted: January, 2007
Presented at IEEE 802.21 session #18
Authors or Source(s):
Tim Farnham
Mahesh Sooriyabandara
Abstract: Overview of the API framework developed within the collaborative GOLLUM project and how it could be used
Using the Generic Open Link Layer API for Unified Media Access within 802.21
Examples using recent 802.21 issues / suggestions raised by contributors
Overview
• GOLLUM project overview & achievements
• Relationship between 802.21 & ULLA
• Possible ways to use ULLA in 802.21 • ULLA compatible 802.21 links & link provider• Use of ULLA for link configure thresholds • Use of ULLA for link configuration• Use of ULLA for retrieving device and link
information (802.11 example)
Original Project Objectives
• To solve the complexity and interoperability problem related to the large number of different APIs used for accessing communication interfaces
• To provide triggers, handles and APIs for different smart, context sensitive and link/network aware applications
• To solve the abstraction and extendibility problem related to different underlying wireless interfaces and networking technologies.
• To design, develop and in part implement a solution to hide the embedded communication network problem from the middleware, application and operating system programmers.
• To develop a wireless interface description method that can be used as a tool and as a framework for presenting and extending the API support for current and future wireless interfaces.
Main Project Achievements
• ULLA demonstrates that it is possible to use one single API to get information from and control various link layer technologies
• possible across different platforms & operating systems
• Benefits for link-aware applications / cross-layer design and the ULLA concept has been proven with the demonstrators prototyped during the project execution
• GOLLUM is an enabling technology for innovative link enhancements and optimisation
Main Project Achievements (2)
• The technical goals have been fulfilled:• Performance evaluated
• Inclusion of GOLLUM does not present a significant performance ‘hit’
• A higher level of operating system integration maximises the performance levels but this leads to a lower degree of flexibility
• Scalability• GOLLUM has been implemented and tested on devices
ranging from low-end sensors to high-end laptops• Extensibility
• There is provision for future radio technologies to be incorporated into GOLLUM without modification of the core functionality
• Portability• ANSI C API Definition (common across all platforms and
implementations)• Use of Java/Javascript, C++ and C# APIs for enhanced
portability
ULLA LP API
LL Adapter LL Adapter LL Adapter
ULLA in a nutshell (1)
802.11 driver
ULLA StorageULLA Query Processing
Commands
ULLA Command Processing
InfoQuery
UpdateRequest
Commands
Bluetoothstack
GPRSModem
ULLA LU APINotificationRequests Notifications
Next generationULLA enabled
driver
LLA
ULLA Event Processing
Events GetAttribute
Link User (Application)Link User (Application) Applications
Key:
ULLA Components
Legacy Drivers
ULLA in a nutshell (2)
• ULLA LU API exposes three types of services to applications: information querying, trigger notification and commands
• ULLA LP API allows technology specific device drivers to be plugged in to ULLA core to expose information in a uniform way.
• Extensible ULLA data abstraction model organises link parameters of different technologies
• UQL – Use SQL syntax strings to specify query and trigger conditions
ULLA Demonstration Platforms
• Multimedia streaming platform• Linux user space ULLA and 802.11 LLA
• Connection management platform• Windows CE kernel space and 802.11, GPRS and Bluetooth
LLA’s
• Real-time multimedia platform• Linux user space on “Nomadik™” platform with STM
Phasor 802.11 LLA
• Wireless Sensor Network platform• TinyOS Mica2 & Micaz sensors using nesC language
Multimedia Streaming Demonstrator Platform
• Scenarios• Dynamic Channel Selection
• Frequency, time and other (e.g. spatial) channels / multiplexing schemes
• Avoidance of interference and network congestion
• Adaptive Transcoding • Video codec, resolution and frame rate • More rapid Adaptation of rate to link
performance variation
• Focus on
802.11 WLANVideo server
Video Client 1
Router
IP IP
Ethernet Ethernet
UDP
IP
Ethernet
UDP
IP
802.11Transcoding proxy
UDP UDP
IP IP
Ethernet Ethernet
WLAN AP 2
Ethernet 802.11
WLAN AP 1
Ethernet 802.11
TCP
Netperf server 1
Video Client 2
UDP
IP
802.11
TCP
Netperf server 2
Connection Management Demonstration Platform
• Scenarios• Handle and prioritize the
connection requests coming from multiple applications
• Establish Connections on behalf of the application, using the “best possible” path in the current networking environment
• Monitor the “quality” of established connections
• Try to re-establish a new connection when a link disappears
• Focus on 802.11 & GPRSNote : CeBIT 2006 demo based on this platform was developed by Materna / EMIC
Real-time Multimedia Demonstration Platform
• Scenario• Adapt a real-time
multimedia session to changing wireless network conditions
• In particular to perform codec selection and selection of FEC mechanisms
• Focus on Voice over IP over WLAN
802.21 Implementation with ULLA
802.21 MIH Function
Protocol and Device Hardware
Applications (Video/Audio/Web)
Connection Management
WLAN Cellular WMAN
L2 Triggers and Events
Information Service
Mobility Management Protocols
Smart Triggers
Information Service
Handover Messages
Handover Management
Handover Policy
Handover Messages IE
EE
80
2.2
1
ULLA Core
Protocol and Device Hardware
Applications (Video/Audio/Web etc.)Connection
Manager
WLAN Cellular WMAN
L2 Triggers and Events
Information Query
Request Notification QueryCommand
Link User API
MIH ULLA Agent
Handover command
UL
LA
ULLAStorage
LLA LLA LLA
Derived from DCN: 21-06-0706-00-0000
ULLA & 802.21 Event/Command functions
• Handover initiation • ullaDoCmd() - scanAvailableLinks to populate the
information about new available links• ullaRequestNotification() - to setup triggers to be notified
when new links are available
• Network selection• ullaRequestInfo() and ullaRequestNotification () API calls to
select a link that matches a certain criteria.
• Interface activation• ullaDoCmd(), ullaSetAttribute() and ullaConfigureL3() API
calls - to configure the L2 and L3
ULLA and 802.21 Information Service
• 802.21 Global Network Map could be mapped to ULLA data model
• ULLA Agents placed in network nodes • could gather information & populate map
• all available networks (GPRS, 802.16)• Link layer information (Neighbour maps) • Higher layer services (ISP, MMS)
• could translate link information to RDF schema format• could use a push-pull type service to populate local ULLA
database gather global information available at the .21 Information server
• Possible to implement parts of 802.21 Information Service using ULLA framework
Technology-independent base classes ullaLink
securityLink
Classes for familiesof standards 80211Link
btLinkwsnLinkcellularLink
80216Link
Standard-amendment classes 80211kLink
btEdrLinkhsdpaLink
80216eLink
UMTSLink
Vendor-specificclasses channelBondingLink
btHiddenProfileLink newWsnMacLink
Example LP1 offers links supporting
ullaLink
cellularLink
UMTSLink
mandatory
ULLA extension for 80221 Link classes
• ULLA link hierarchy• Mandatory base class
+ optional classes• 80221Link class can
be an optional class supporting 80221 specific attributes and commands (methods)
• Link providers can support 80221 together with other technologies to permit access to information and link configuration
• 80221 link class can provide “linkup”, “linkgoingdown” etc. event notification
Example LP2offers links supporting
802.11/802.21Links
80221Link
80211Link
ullaLink
80221Link
mandatory
80221Link
channelBondingLink
Link Configure Thresholds –(from 21-06-0739-00-0000-Suggestion about link parameter threshold configuration)
Name Type Valid Range Description
LinkParameterList List N/A A list of following set of parameters:TrafficType,LinkParameterThresholdList
TrafficType INTEGER 0x00- All types0x01- conversational0x02- streaming0x03- interactive0x04- background0x05-0xff: reserved
Traffic classes for which thresholds may be set.
LinkParameterThresholdList List N/A A list of following set of parameters:LinkParameterType,InitiateActionThreshold,RollbackActionThreshold,ExecuteActionThreshold
Link ParameterType Link Quality Parameter Type (8)
N/A Parameters for which thresholds may be set. LinkParameterType is media specific.
InitiateActionThreshold Link parameter Threshold (16)
N/A Threshold value which may cause Upper layers to start “setup” type activities in response to actual parameter values crossing this threshold.
RollbackActionThreshold Link parameter Threshold (16)
N/A Threshold value which may cause Upper layers to cancel or rollback the above setup type operation if the actual parameter values retreat to this threshold.
ExecuteActionThreshold Link parameter Threshold (16)
N/A Threshold value which may cause Upper layers to execute taking appropriate action if the actual parameter values cross this threshold.
HO Threshold Setting using ULLA Notification Request and (Joined Query)
• Basic query structure• SELECT parameter FROM classes WHERE condition
• Examplevoid HOHandler(RnId_t rnId, ullaResult_t res, void* privdata){
// do a connect on this idint id;CmdDescr_t cmdDescr;if ((ullaResultNextTuple(res) == ULLA_OK) && (ullaResultIntValue(res, 1, &id) == ULLA_OK)) {
cmdDescr.className=“UMTSLink";cmdDescr.cmd=“connect";cmdDescr.id=id;if (ullaPrepareCmd(&cmdDescr) == ULLA_OK)
ullaDoCmd(&cmdDescr, 10000);}ullaResultFree(res);
}
char *query = “SELECT ieee80221Link.id FROM UMTSLink, ieee80221Link WHERE UMTSLink.residualBER < 5E5 AND UMTSLink.txBitRate > 10000 AND ieee80221Link.TrafficType=2”;
RnDescr_t reqNotifDesc;reqNotifDesc.query = (char*)query;reqNotifDesc.count = 0;reqNotifDesc.period = 0;reqNotifDesc.privdata = NULL;ullaRequestNotification(&reqNotifDesc, HOHandler, &rnId, 0);
We get notified each time the id’s of the UMTS links change with condition :
Residual BER < 5x10-5 and Tx bit rate > 10Kbps
So we just connect to the first link meeting the criteria
HO Threshold & Simple Statistics within ULLA Notification Request
• Basic statistical query• SELECT stat(parameter) FROM classes WHERE condition
• Examplevoid HOHandler(RnId_t rnId, ullaResult_t res, void* privdata) {
char *query = “SELECT ieee80221Link.id, UMTSLink.txBitRate FROM UMTSLink, ieee80221Link WHERE UMTSLink.residualBER < 5E5 AND UMTSLink.txBitRate > 10000 AND ieee80221Link.TrafficType=2”;
int maxbitrate, bitrate, id;ullaResult_t result;
CmdDescr_t cmdDescr;if ((ullaResultIntValue(res, 1, &maxbitrate) == ULLA_OK) && (ullaRequestInfo(query, &result, 0) == ULLA_OK)) {
while (ullaResultNextTuple(result) == ULLA_OK) {if ((ullaResultIntValue(result, 1, &id) == ULLA_OK) && (ullaResultIntValue(result, 2, &bitrate) == ULLA_OK) && (bitrate == maxbitrate)) {
cmdDescr.className=“UMTSLink";cmdDescr.cmd=“connect";cmdDescr.id=id;if (ullaPrepareCmd(&cmdDescr) == ULLA_OK)
ullaDoCmd(&cmdDescr, 10000);break;
} } } ullaResultFree(result);
}ullaResultFree(res);
}char *query = “SELECT MAX( UMTSLink.txBitRate ) FROM UMTSLink, ieee80221Link
WHERE UMTSLink.residualBER < 5E5 AND ieee80221Link.TrafficType=2”;RnDescr_t reqNotifDesc;reqNotifDesc.query = (char*)query;reqNotifDesc.count = 0;reqNotifDesc.period = 0;reqNotifDesc.privdata = NULL;ullaRequestNotification(&reqNotifDesc, HOHandler, &rnId, 0);
We get notified each time the UMTS link with the maximum bit rate changes and the residual BER is < 5x10-5
We connect to this link if it is > 10 Kbps
Setting Optional LP Measurement Configuration for HO Threshold
void HOHandler(RnId_t rnId, ullaResult_t res, void* privdata){// do a connect on this idint id;CmdDescr_t cmdDescr;if ((ullaResultNextTuple(res) == ULLA_OK) && (ullaResultIntValue(res, 1, &id) == ULLA_OK)) {
cmdDescr.className=“ullaLink";cmdDescr.cmd=“connect";cmdDescr.id=id;if (ullaPrepareCmd(&cmdDescr) == ULLA_OK)
ullaDoCmd(&cmdDescr, 10000);}ullaResultFree(res);
}RnDescr_t rnDescr;RnId_t rnId;AttrDescr_t attrDescr;Int val[1]val[0] = -100;attrDescr.id = 1;attrDescr.className = “ullaLinkProvider”;attrDescr.attribute = “ullaLink.txbitrate.window”;attrDescr.qualifier = ULLA_QUAL_MEASUREMENT;attrDescr.type = ULLA_TYPE_INT;attrDescr.numValues = 1;attrDescr.data = (void*)val;ullaSetAttribute (&attrDescr);attrDescr.attribute = “ullaLink.txbitrate.interval”;Val[0] = -10000;ullaSetAttribute (&attrDescr);rnDescr.count = 0;rnDescr.period = 0;rnDescr.privdata = NULL;rnDescr.query = "SELECT ieee80221Link.id FROM ullaLink, ieee80221Link WHERE ullaLink.txBitRate_mean > 10000 AND ieee80221Link.TrafficType=2 ";ullaRequestNotification(&rnDescr,notificationHandler,&rnId,0);
Instructs the Link Provider to compute the average over 100 intervals (with sliding window) to smooth out the bit rate values in dynamic environments
Sets the samples to be time based taken at 10 second intervals, with updates occurring every sample interval (i.e. 10s)
We get notified each time the id’s of the links meeting the criteria change - mean bit rate > 10 Kbps
Update at a rate of not more than once every 10 seconds to avoid ping-pong or false triggering
Link Configuration (ref. LB Issue- #49: Comment 622)
Link_Configure.requestFunction
This primitive is issued by MIH function to control the behavior of a lower layer link.
Semantics of the service primitive
The parameters of the primitive are as follows:Link_Configure.request (
SourceIdentifier,DestinationIdentifier,
LinkIdentifier,
ConfigurationRequestsSets)
•Name •Type •Valid Range •Description
•Configuration Request Sets
•Set of configuration parameters for corresponding interfaces
•N/A •Containing a set of configuration parameters. See table 18 below.
When generated
This primitive is generated by MIHF when it receives the MIH_Configure.request command from the upper layer and attempt to control the behaviors of lower layer link, for example, set some features in the drivers.Effect of receipt
The recipient responds with Link_Configure.confirm primitive.
•Name •Type •Valid Range •Description
•NETWORK_TYPES_IN_USE •INTEGER •0x01 802.3•0x02 802.11•0x03 802.16•0x04 3GPP•0x05 3GPP2
•Set the network type that should be used for the lower layer entity, e.g., a driver.
•OPERATION_MODE •INTEGER •0x00 Normal Mode•0x01 Power Saving Mode•0x02 Power Down
•Change the device’s power mode
•DISABLE_TRANSMITTER •Boolean •N/A •Enable/disable the transmitter of the inter face.
•NETWORK_ID •STRING •N/A •Change to the specified network of an inter face.
•CURRENT_ADDRESS •STRING •N/A •Change the current address to the value specified
•SUSPEND_DRIVER •Boolean •N/A •Suspend or resume of the specified interface.
Link Configuration using ULLA
AttrDescr_t attrDescr;int val[1];val[0] = 1; //802.3attrDescr.id = lpId;attrDescr.className = “ieee80221LinkProvider”;attrDescr.attribute = “NETWORK_TYPES_IN_USE”;attrDescr.qualifier = ULLA_QUAL_EXACT;attrDescr.type = ULLA_TYPE_INT;attrDescr.numValues = 1;attrDescr.data = (void*)val;ullaSetAttribute (&attrDescr);attrDescr.attribute = “OPERATION_MODE”;Val[0] = 0; //NormalattrDescr.numValues = 1;ullaSetAttribute (&attrDescr);
We set the network types and mode of operation via ULLA & LP
Information Service – 802.11device information
• Recommended information to store in 802.21 database (from 21-06-0761-00-000-Network-Selection-MIH-Support):
• SSPN name/realm• SSPN roaming partners• Interworking services by SSPN (including
emergency services)• 802.11 AN parameters:
• Location• Country/regulatory domain• {SSID, ESSID}• PHY types supported• 802.11e QoS support } ULLA currently supported
Using ULLA to get 802.11 LP informationullaResult_t result;int valueCount = 0, deviceCount=0;int mt[100][100], lpId[100];
char *query = “SELECT id, type FROM ieee80211LinkProvider”;if (ullaRequestInfo(query, &result, 0) == ULLA_OK) { while ((ullaResultNextTuple(result) == ULLA_OK) && (deviceCount < 100)) {
valueCount=0; if (ullaResultIntValue(result, 1, &lpId[deviceCount])
== ULLA_OK) { while ((ullaResultIntValue(result, 2, &mt[deviceCount][valueCount])
== ULLA_OK) && (valueCount < 100)) valueCount ++;
} deviceCount++;
} ullaResultFree(result);
}
int linkCount=0;char ssid[100][256];int linkId[100];int len = 256;
char query[100];for (i=0;i<deviceCount;i++) { sprintf( query, “SELECT id, networkName FROM ullaLink WHERE state=%d AND lpid =
%d”, ULLA_MEDIASTATE_CONNECTED, lpId[i] );
if (ullaRequestInfo(query, &result, 0) == ULLA_OK) { while ((ullaResultNextTuple(result) == ULLA_OK) && (linkCount < 100)) {
if (ullaResultIntValue(result, 1, &linkId[linkCount]) == ULLA_OK) {len=256;ullaResultStringValue(result, 1, &ssid[linkCount][0], &len);
} linkCount++;
} ullaResultFree(result);
}}
We get the supported PHY from ULLA media type attribute of the LP
We get the ssid from ULLA networkName attribute of the link
Issues that need to be addressed
• ULLA link class definitions• Harmonise the link technology specific class definitions with 802.21 requirements
• Develop a 802.21 link class
• Control of ULLA specification• GOLLUM has finished and so the specification has no official “owner”
• Sourceforge open source project• Data model definitions need to be consistently defined within standards groups or via open source approach