Mobilized.NET* Applications. by Clayne B. Robison

Size: px
Start display at page:

Download "Mobilized.NET* Applications. by Clayne B. Robison"

Transcription

1 Mobilized.NET* Applications by Clayne B. Robison August 28, 2004

2 The information contained in this document is provided for informational purposes only and represents the current view of Intel Corporation Intel on the date of publication. Intel makes no commitment to update the information contained in this document, and Intel reserves the right to make changes at any time, without notice. DISCLAIMER. THIS DOCUMENT AND ALL INFORMATION CONTAINED HEREIN IS PROVIDED AS IS. INTEL MAKES NO REPRESENTATIONS OF ANY KIND WITH RESPECT TO PRODUCTS REFERENCED HEREIN, WHETHER SUCH PRODUCTS ARE THOSE OF INTEL OR THIRD PARTIES. INTEL EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, IMPLIED OR EXPRESS, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND ANY WARRANTY ARISING OUT OF THE INFORMATION CONTAINED HEREIN, INCLUDING WITHOUT LIMITATION, ANY PRODUCTS, SPECIFICATIONS, OR OTHER MATERIALS REFERENCED HEREIN. INTEL DOES NOT WARRANT THAT THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN IS FREE FROM ERRORS, OR THAT ANY PRODUCTS OR OTHER TECHNOLOGY DEVELOPED IN CONFORMANCE WITH THIS DOCUMENT WILL PERFORM IN THE INTENDED MANNER, OR WILL BE FREE FROM INFRINGEMENT OF THIRD PARTY PROPRIETARY RIGHTS, AND INTEL DISCLAIMS ALL LIABILITY THEREFOR. INTEL DOES NOT WARRANT THAT ANY PRODUCT REFERENCED HEREIN OR ANY PRODUCT OR TECHNOLOGY DEVELOPED IN RELIANCE UPON THIS DOCUMENT, IN WHOLE OR IN PART, WILL BE SUFFICIENT, ACCURATE, RELIABLE, COMPLETE, FREE FROM DEFECTS OR SAFE FOR ITS INTENDED PURPOSE, AND HEREBY DISCLAIMS ALL LIABILITIES THEREFOR. ANY PERSON MAKING, USING OR SELLING SUCH PRODUCT OR TECHNOLOGY DOES SO AT HIS OR HER OWN RISK. Licenses may be required. Intel and others may have patents or pending patent applications, trademarks, copyrights or other intellectual proprietary rights covering subject matter contained or described in this document. No license, express, implied, by estoppels or otherwise, to any intellectual property rights of Intel or any other party is granted herein. It is your responsibility to seek licenses for such intellectual property rights from Intel and others where appropriate. Limited License Grant. Intel hereby grants you a limited copyright license to copy this document for your use and internal distribution only. You may not distribute this document externally, in whole or in part, to any other person or entity. LIMITED LIABILITY. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO YOU OR TO ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF YOUR USE OF THIS DOCUMENT OR RELIANCE UPON THE INFORMATION CONTAINED HEREIN, UNDER ANY CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. Intel, the Intel logo, Pentium, Intel Xeon, and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others. Copyright 2005 Intel Corporation

3 Introduction While much research has been done to determine the best native Windows* APIs to use, little has been done to assist developers in adapting their distributed.net* Framework-based applications for mobile environments. In this paper, we present sample methods to obtain system network connection information using the classes found in the.net Framework. The initial intention is to enable individual applications to get this information on their own the laissez-faire approach. But the hope is that these methods will eventually be used by a system-wide mobility-aware infrastructure that will in turn make the information more accessible to subscribing applications. For this paper, we looked specifically at version 1.1 of the.net Framework running on desktop and laptop systems. Note that this does not include applications running on the.net Compact Framework, although some of the same methods may apply. When working within the.net Framework, we can access the information to provide mobility awareness via three interfaces: 1. The Common Language Runtime (CLR) API; 2. The Windows Management Instrumentation (WMI) API; and 3. The native Windows API. Inasmuch as the.net Framework is essentially a wrapper for the native Windows API, and inasmuch as the CLR System.Management namespace provides a CLR interface to WMI, this distinction between APIs is given for the sake of those applications that for one reason or another are limited in what they can do outside of the.net Framework sandbox.

4 What makes an Application Mobilized? An application that is aware of mobility has the ability to function smoothly (i.e. maintain or increase user productivity) in a mobile environment. An application that can function in a mobile environment is one that is aware enough of power, network, and sleep state that it can free the user from care about these uniquely mobile states. The user can then focus instead on tasks directly related to productivity. Typically, a mobile aware application provides four capabilities: Offline Data Management Seamless Connectivity Multiple Platform Support Power & Performance Management Offline Data Management An application that provides offline data management makes distributed data available offline. For example, a database application that provides this capability, allows a mobile user access to relevant data even when working offline. The management of this offline data implies the ability to synchronize changes made to the data while in an offline mode with the central data repository. A system that provides offline data management needs the ability to predict what a user will need in offline mode, pre-fetch that data and then cache it. With this offline data, the application can emulate an on-line state, allowing the user to be as productive as if the main copy of the data were available. Once the user reconnects to the network, the two copies of the data must be reconciled through a synchronization process. Thus, making data available offline is simple; but managing that data and maintaining coherency is the more significant problem. Seamless Connectivity Software that provides seamless connectivity enables the user to never worry about connection state. This might be as simple as detecting the presence of a route to the server, or choosing between multiple service providers and then establishing a connection. The goal is to allow the user to spend more time on real work, not on network management. Once a connection to the server is detected, the software senses the rate at which data can be transferred and makes intelligent decisions based on that data rate. For example, upon reconnect to a network an application will automatically start the synchronization process without requiring user intervention.

5 Multiple Platform Support Multiple platform support in this case refers not only to operating system platforms, but also to the multiple hardware platforms for which an application can be written, for example, laptop, PDA, smart phone, cell phone, etc. Ideally, the user s experience on each of these devices is identical, and there should be no need to re-learn the basic application functionality. Power & Performance Management A mobilized application is power friendly, and recognizes that battery, unlike AC, is a limited resource and should be conserved when possible. Like other limited resources, usage should become more restricted as the threat of resource exhaustion become eminent. For example, background threads and non-essential functionality, can be prioritized and postponed until power is more plentiful. Also, atomic operations that should be completed once they have started (e.g. burning a CD) should first ensure that sufficient battery power remains for the task to complete. Laissez-Faire Awareness vs. System Level Awareness vs. Adaptive Systems Once this kind of mobilized software capability is available on a system, what happens when multiple applications request the information? Some information required to be aware of mobility is process specific, and is system-wide. Should each application be responsible for monitoring system connectivity state, or should applications subscribe to that information from a system service? On the one end of the spectrum, a laissez-faire approach to mobile enabling allows each application to obtain the information it needs. This approach requires the most modification at the application layer, but requires no mobility awareness in the underlying system. However, when multiple applications need the same information, this approach is inefficient. If all information for mobile awareness is provided at the system level, applications ideally can continue functioning as always connected systems because the mobile sub-system completely abstracts connection state from applications. In this model, applications must surrender control of information to a central broker, but there is duplicitous information gathering In between these models is the architecture in which applications can subscribe as needed to the information that a mobility subsystem publishes. Applications are aware of mobility, but they are not completely responsible for adapting to it. This architecture makes the best use of system resources while allowing the greatest flexibility at the application layer.

6 Adaptive Underlying system is totally responsible Applications run unmodified Transparency Application Awareness Aware of the adaptive capabilities of the system Changes its behavior accordingly Laissez-Faire Entirely responsible for adaptation No support from operating system Figure 1: Mobile Environment Transparency Network Connection Awareness Information about the path between client and server is critical for applications that provide seamless transitions between connected and unconnected states. We ll use the classes in the System.Net and System.Net.Sockets namespaces to illustrate how to get that information. IPEndPoint Visibility The first question that we need to ask before transferring data to or from a remote system is Is the service on my target machine visible? This means knowing not only the IP address of the machine, but the port number on which a server is listening. 1 For a Web-Service, this port would be either 80 for unencrypted traffic or 443 for SSL traffic. 1 These two pieces of data IP Address and Port number are encapsulated in the System.Net.IPEndPoint class, hence the section heading IPEndPoint Visibility.

7 CLR One way of determining the visibility of our service is simply to attempt a connection to it. If it works, we can see it. If we get an error, we can use the error code to find out why we can t see it. Using the Connect() method of the Sockets class 2, it might look like this: Figure 2: Establishing a Connection try s.connect(ipendpoint); bendpointvisible = true; //If no exception is thrown, we have a connection bendpointvisible = true; catch(socketexception se) bendpointvisible = false; //figure out what the problem was switch ( se.errorcode ) case 10165: //... Using the error codes, we can determine what the problem is. Table 1: Possible Error Codes for the Socket.Connect() method. Error code Meaning WSANOTINITIALISED A successful WSAStartup call must occur before using this function. WSAENETDOWN The network subsystem has failed. WSAEADDRINUSE The socket's local address is already in use and the socket was not marked to allow address reuse with SO_REUSEADDR. This error usually occurs when executing bind, but could be delayed until this function if the bind was to a partially wildcard address (involving ADDR_ANY) and if a specific address needs to be committed at the time of this function. WSAEINTR The blocking Windows Socket 1.1 call was canceled through WSACancelBlockingCall. 2 The CLR also provides TCPClient and UDPClient classes that further simplify the use of these protocols. Our discussion here focuses on Sockets, but the same methodology can be used in these classes as well.

8 Error code Meaning WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function. WSAEALREADY A nonblocking connect call is in progress on the specified socket. Note In order to preserve backward compatibility, this error is reported as WSAEINVAL to Windows Sockets 1.1 applications that link to either Winsock.dll or Wsock32.dll. WSAEADDRNOTAVAIL The remote address is not a valid address (such as ADDR_ANY). WSAEAFNOSUPPORT Addresses in the specified family cannot be used with this socket. WSAECONNREFUSED The attempt to connect was forcefully rejected. WSAEFAULT The name or the namelen parameter is not a valid part of the user address space, the namelen parameter is too small, or the name parameter contains incorrect address format for the associated address family. WSAEINVAL The parameter s is a listening socket. WSAEISCONN The socket is already connected (connection-oriented sockets only). WSAENETUNREACH The network cannot be reached from this host at this time. WSAENOBUFS No buffer space is available. The socket cannot be connected. WSAENOTSOCK The descriptor is not a socket. WSAETIMEDOUT Attempt to connect timed out without establishing a connection. WSAEWOULDBLOCK The socket is marked as nonblocking and the connection cannot be completed immediately. WSAEACCES Attempt to connect datagram socket to broadcast address failed because setsockopt option SO_BROADCAST is not enabled.

9 Advantages to this method are 1) if the connection is successful, the socket is ready for use; and 2) the SocketExecption.ErrorCode property can give useful information about the cause of the error. If the server is available, the call can return almost immediately; but if the server is not available, the call can take up to 20 seconds before it times out and throws an exception. For this reason, it may be best to use the asynchronous Socket.BeginConnect() call; but even so, it will take up to 20 seconds in order to verify that the service is not visible. Another method of using the Sockets class to detect remote system visibility is to send ICMP packets across the network to the remote machine (i.e. ping the remote system). This method, however, at best can only determine whether a remote machine is on the network, and does not guarantee the visibility of the target service on that machine. Another problem with using ICMP to determine remote system visibility is that the packets are not guaranteed to reach the server. Even for applications that run inside a firewall (or through VPN tunnels) corporate IT policies may not allow ICMP traffic to be forwarded. Because of these disadvantages, we won t take the time to demonstrate custom ping communication in this article. WMI The root/cimv2 namespace provides two classes that allow us to determine whether an application is running on a remote system. If the application is a registered Windows service, it can be found by querying the WMI database for Win32_Service objects. If the Status property of our target service is equal to Running, our service is running. Running processes that are not registered Windows services can be discovered using the Win32_Process class. However, neither of these methods allow us to determine whether our target application is ready to receive or send data. Nor does this method work when the requestor does not have sufficient access privileges on the WMI database a most likely situation. Provided the user has sufficient rights on their own system, we can use the Win32_PingStatus class that is available on Windows XP and Windows Server 2003 to determine the visibility of a remote machine. Obtaining an instance of this class is analogous to executing the ping utility from a command line. For example: Figure 3: Using WMI to Ping a remote machine ManagementObjectSearcher mos = new ManagementObjectSearcher ("root\\cimv2", string.format("select * FROM Win32_PingStatus " "WHERE Address=\"0\"", stripaddress)); foreach ( ManagementObject mo in mos.get() ) // MgmtClassGen.exe generated class PingStatus ps = new PingStatus(mo); switch (ps.statuscode) case PingStatus.StatusCodeValues.Success: //do stuff //...

10 This directs the WMI ping provider to send an ICMP packet to the machine at address stripaddress. The disadvantages of using ICMP are discussed above. Windows API By calling into the unmanaged Windows API, we can take advantage of numerous functions that can help us determine the visibility of a remote machine. Especially helpful are the functions in the IP Helper API found in the Platform SDK. The GetBestInterface function tells us the index of the best interface to use to reach a specified address: Figure 4: Using the GetBestInterface Function DWORD dwbestifindex = 0xFFFF; DWORD retval = GetBestInterface(inet_addr(szIPAddr), &dwbestifindex); if ( retval == NO_ERROR ) printf("best Interface to IP Address %s = %x.", szipaddr, dwbestifindex); else printf("error Occured: %x.", retval); When the destination machine is visible, NO_ERROR is returned and the interface index is valid; when no network interface is present, this function returns an error. But when an interface is present, this function can produce a false positive: the return value is NO_ERROR and the Index number is valid even though the remote machine is not visible. In addition to being somewhat unreliable, as is the case with ICMP, most of these functions can only help us determine whether a remote machine is available and do not allow us to determine whether an application is running on that machine. IPEndPoint Visibility Changes The next two questions that distributed application developers must ask are related to changes in the visibility of IPEndPoints: How can I tell if my remote system is no longer available so I can stop trying to transfer data to it? and How can I tell if my remote system has appeared so I can start

11 communicating with it? If we combine these two questions with the two possible data transfer situations that we might be in at any time we are either transferring data, or we aren t we come up with a matrix: Currently Transferring Data? IPEndPoint Change Type Yes No Appearance Irrelevant Relevant Disappearance Relevant Irrelevant Logically, only two of these situations are relevant. If we are currently transferring data, the sudden appearance of our target IP EndPoint is not likely: we are currently transferring data to/from it. However, we do want to know whether it has disappeared. Conversely, if we are not currently transferring data, we probably don t care whether our target EndPoint disappears. However, we might get data to send, and therefore we want to be notified when an EndPoint becomes visible. CLR In reality, what we are looking for in the first situation is an event to notify us that the EndPoint to which we are currently transferring information is no longer visible. No such event exists as such in the CLR, but we could certainly roll our own using the SocketException that gets thrown when our active Socket.Send() or Socket.Receive() call is disconnected 3 : Figure 5: Using SocketException to Detect IP Endpoint Disappearance Socket s = new Socket(...); //Establish Socket connection try bconnected = true; s.send(sbuffer); s.receive(rbuffer); catch(socketexception se) bconnected = false; //determine what went wrong switch( se.errorcode ) case 10165: //... 3 Assuming we are using a connection-oriented protocol like TCP.

12 Regarding the answer to the second question has my remote service appeared? it would be nice if we could register for an event to notify us when our IPEndPoint was available. Here s our event handler: Figure 6: Our EndPoint Available Event Handler //This method gets called when our IPEndPoint is available public void EndPointAvailableEventHandler ( EndPointAvailableEventArgs args ) //args contains the connected socket args.getsocket().send( ); Here s the method we call to register for the event: Figure 7: Registering for the EndPoint Available Event //Call this to register for the IPEndPointAvailable event public void NotifyIPEndPointAvailable( IPEndPoint RemoteEndPoint, EndPointAvailableEventHandler callbackfunction ) this.m_remoteendpoint = RemoteEndPoint; this.m_callbackfunction = callbackfunction; After we ve registered, we send the monitor thread going and wait for notification: Figure 8: Polling for Connection State //Call this from a separate thread public void PollForEndPoint(int ipollinginterval) bool bconnected = false; while ( m_balive &&!bconnected ) //make sure we start out disconnected Socket s = new Socket (...); try s.connect( m_remoteendpoint ); if( this.m_callbackfunction!= null ) m_callbackfunction( new EndPointAvailableEventArgs( s ) ); bconnected = true; catch (SocketException se ) Thread.Sleep( ipollinginterval ); //try again in a bit

13 The advantage of this method is that we know for sure that the service on our remote machine (and not just the machine) is either up or down. The disadvantage is that we have to tweak the Socket object in order to get the status change information within a reasonable amount of time. By tweaking the send and receive buffer sizes, and by turning off the Nagle algorithm, we can be notified almost immediately when our service disappears in the middle of a transfer, but we do sacrifice some network efficiency. And to get the same immediacy on our service appearance event, we really should use the asynchronous BeginConnect() method and timeout sooner than the sockets sub-system default: Figure 9: Tweaking the Connection Timeout //Call this from a separate thread public void PollForEndPoint(int ipollinginterval, int itimeout) bool bconnected = false; while ( m_balive &&!bconnected ) try //WaitOne() calls must block until Set() is called m_autoresetevent.reset(); Socket s = new Socket(...); //Delegate the blocking connection //call to another thread s.beginconnect( remoteendpoint, new AsyncCallback( myasyncconnectioncallback ), s ); //Give that thread our socket object //Give the other thread 5 seconds to make a connection

14 if ( m_autoresetevent.waitone( itimeout, false ) ) //The socket connected in time: //we have a valid socket if( this.m_callbackfunction!= null ) m_callbackfunction( new EndPointAvailableEventArgs( s ) ); bconnected = true; else //We timed out and we don't have a valid socket //try again in a bit Thread.Sleep( ipollinginterval ); catch (SocketException se ) //Figure out what happened

15 WMI The MSNdis_StatusMediaConnect event in the root/wmi namespace is theoretically generated whenever an NDIS adapter s media moves from a disconnected to a connected state (e.g. when the Ethernet cable is plugged in, or when the Wireless card detects a signal). However, aside from the fact that the event is not completely reliable (it doesn t detect the appearance of PPP adapters at all), the event is generated before any protocol binding takes place and real work can be done. This is fine in environments where the protocol binding follows closely on the heels of the media connection (e.g. environments with static IP addresses), but the event can be only used as a cue in environments where the protocol binging lags behind the media connections (e.g. DHCP environments). This method also does not guarantee IP EndPoint availability only the existence of a media link between the local system and its nearest network node. The MSNdis_StatusMediaDisconnect event detects when an NDIS adapter s media moves from a connected to a disconnected state. This is a more useful (albeit just as unreliable) an event because one can guarantee that if the media is disconnected, the protocol is also unbound, and the IP EndPoint on the other end of the pipe is no longer visible. Hence, registering for the MSNdis_StatusMediaDisconnect event can be useful when we are transferring data and want to know when the connection disappears. If we use MgmtClassGen.exe to generate a C# wrapper for the MSNdis_StatusMediaDisconnect event, registering for the MSNdis events in C# looks like this: Figure 10: Registering for the Event try //query WMI for the event watcher m_mediadisconnectwatcher = new ManagementEventWatcher("root\\wmi", "SELECT * FROM MSNdis_StatusMediaDisconnect"); // Register for the event m_mediadisconnectwatcher.eventarrived += new EventArrivedEventHandler( this.mediadisconnecteventhandler); //start the event thread m_mediadisconnectwatcher.start(); catch (ManagementException me) if ( m_wmidisconnectwatcher!= null ) m_wmidisconnectwatcher.stop(); m_wmidisconnectwatcher= null; Figure 11: The Event Handler

16 public void MediaDisconnectEventHandler(object o, EventArrivedEventArgs e) //Use the NewEvent property to make a //StatusMediaDisconnect object StatusMediaDisconnect smd = new StatusMediaDisconnect(e.NewEvent); //figure out which adapter was disconnected string strdisconnectedadaptername = smd.instancename; //... Effective Data Rate The effective data rate refers to the speed at which real data is being transferred to a remote IP Endpoint. On an Ethernet connection with a link speed of 100 Mbps, in the unlikely event that there were no transport overhead or packet collisions, the best effective data rate would be 12.5 MBps. Link speed, like the speed limit on an interstate freeway, is useful in determining the ideal nature of the immediate segment of a journey; but it is not very helpful when there is a lot of traffic, and when the segment beyond our immediate ken has a much lower speed limit. CLR As with IP EndPoint information, the Socket class provides all the information we need to calculate the effective data rate of our connection. If we extend the Socket class with a DataRateAwareSocket class, we can easily track how many bytes are transferred, and how long it takes to transfer them. For example: Figure12: A DataRateAwareSocket Send() method //Our new Send method public new int Send (byte[] buffer) DateTime start = DateTime.Now; //Start the clock int retval = base.send( buffer ); DateTime stop = DateTime.Now; //stop the clock TimeSpan elapsedtime = stop - start; double rate = (double)retval / elapsedtime.totalseconds; Monitor.Enter( m_dcumulativesendrate ); //Synchronize access //BAD algorithm, but you get the idea m_dcumulativesendrate = ( m_dcumulativesendrate + rate ) / 2; Monitor.Exit( m_dcumulativesendrate ); return retval; public double SendRate get //Calculation is already done, just return the value

17 double retval; Monitor.Enter( m_dcumulativesendrate ); retval = m_dcumulativesendrate; Monitor.Exit( m_dcumulativesendrate ); return retval; We can make the data transferring threads more efficient if we just accumulate the bytes transferred in the transfer operation and perform calculations only when they the querying thread wants the data rate: Figure 13: A More Efficient Method //more efficient public new int Send (byte[] buffer) int retval = base.send( buffer ); TotalSentBytes += retval; return retval; //Don't call this on the same thread that is sending data! public double SampleSendRate(TimeSpan samplelength) int istartbytecount = TotalSentBytes; //sleep while data is sent Thread.Sleep(sampleLength); int iendbytecount = TotalSentBytes; int isentbytes = iendbytecount - istartbytecount; //rate = bytes/second return isentbytes / samplelength.totalseconds; Because we have more than one thread using the TotalBytes property, we need to make it threadsafe: Figure 14: Our Thread-safe TotalBytes Property //The object we are going to synchronize on must be a reference type private Int32 m_itotalsentbytes = new Int32(); //allow threadsafe access private int TotalSentBytes get int retval; Monitor.Enter( m_itotalsentbytes ); //Synchronize access retval = m_itotalsentbytes; Monitor.Exit( m_itotalsentbytes ); return retval; set

18 Monitor.Enter( m_itotalsentbytes ); //Synchronize access m_itotalsentbytes += value; Monitor.Exit( m_itotalsentbytes ); A few caveats here. First, this method does introduce some sampling overhead, compounded by our use of synchronization objects. Second, because of the Nagle algorithm 4 and by the size of underlying send buffer, our Send() method above may return before the data is actually sent across the network media. One work around would be to disable the Nagle algorithm and optimize the send buffer size while sampling is taking place; this, of course, would mean that the sampled data rate is not a completely accurate measure of the effective data rate. Finally, as is the case with road traffic, it would be nice to know the effective data rate before we start transferring data. The method above, however, requires at least some data to be transferred before a measurement can be taken. Since that is probably what we are trying to do anyway, this is no big deal. Should the data rate be too slow for an effective transfer, we can abort the process; if our distributed application has the ability to resume the transfer, we have at lease made forward progress while determining our data rate. We can work around some of these problems by creating our own ping functionality using sockets. This would alleviate the sampling overhead and allow us to estimate the effective data rate between us and our target machine before we transfer any of our own data. However, because network traffic requires system resources that may be constrained, and because ICMP replies can be generated by network hardware and drivers, this method is guaranteed to reflect the working state of the remote system on the data rate. And, of course, this method is useless in ICMP-unfriendly network environments. WMI If we really want to use ICMP, using the Win32_PingStatus object is much simpler. If we modify the WQL query we used above to include a buffer size, we can time the ManagementObjectSearcher.Get() method call to see how long it took to get a response: Figure 15: Using a Win32_PingStatus Object to Estimate Effective Data Rate ManagementObjectSearcher mos = new ManagementObjectSearcher ( "root\\cimv2", string.format("select * FROM Win32_PingStatus " "WHERE Address=\"0\" AND BufferSize=1", stripaddress, ibuffersize ) ); 4 See Jones, Anthony and Jim Ohlund, Network Programming for Microsoft Windows, p for more information on the Nagle Algorithm.

19 this.startclock(); ManagementObjectCollection moc = mos.get(); this.stopclock(); foreach ( ManagementObject mo in moc ) //Class generated by MgmtClassGen.exe PingStatus ps = new PingStatus(mo); if ( ps.statuscode == PingStatus.StatusCodeValues.Success ) UInt32 uibytecount = ps.replysize + ps.buffersize; double rate = uibytecount/this.elapsedtime.totalseconds; //Alternatively, use the ResponseTime property of //PingStatus //double rate = uibytecount/ps.responsetime; //ICMP send and reply are sequential; //we want a full-duplex data rate //Assuming that traffic is flowing //the same speed in both directions double fullduplexrate = rate * 2; As mentioned above, using the ICMP protocol to determine our effective data rate doesn t require us to send any of our own data in order to determine the transfer rate, and there is no sampling overhead. Using WMI to access the information that ICMP can provide allows us the same functionality as our own ICMP sockets implementation, without all of the coding/validation overhead. But we are tied to the platforms that support the Win32_Ping Status class 5. Effective Data Rate Changes If we can detect changes in the effective data rate between two endpoints, then users can subscribe to high and low thresholds and we can notify them when these thresholds are crossed. The two most likely uses of this information are: 1) An application has a large transfer that it does not want to begin until the Effective data rate to its target endpoint rises above a certain threshold; and 2) an application that is currently transferring data wishes to be notified when the effective data rate of the transfer drops below a certain threshold. Notice that for the first scenario, non-application data must be used to measure the data rate because the user wants the effective data rate in order to begin a transfer. In the second scenario, however, the application specific data can be used to measure the data rate. Therefore, our discussion needs to answer the question in two scenarios: when a transfer is already taking place, and when a transfer is pending. 5 At the time of writing, Microsoft Windows XP, and Microsoft Windows Server 2003.

20 CLR When data is already being transferred, we can use the Send() and Receive() methods on the extended Socket() class illustrated above to track the data rate. Let s provide delegates and threshold subscription methods: Figure 16: A Sample Threshold Subscription Method //The threshold event delegate public delegate void DataRateThresholdEventHandler( object sender, DataRateThresholdEventArgs e); public DataRateAwareSocket: Socket //... protected double m_dsendlowthreshold;// KB/sec protected event DataRateThresholdEventHandler SendDataRateLowThresholdEvent; //... //Allow them to subscribe to the event and specify a threshold public void SubscribeSendRateBelowThreshold( double dkbytespersecond, DataRateThresholdEventHandler eventhandler) this.senddataratelowthresholdevent += eventhandler; this.m_dsendlowthreshold = dkbytespersecond ; We then begin our own thread to use the SampleSendRate() method we defined above, compare the rate with the threshold, and notify the user when the data rate crosses the threshold: Figure 17: Sample, Evaluate, and Notify //Don't call on the same thread that is sending protected void SampleAndEvaluateSendRate() while (m_balive) //sample the send rate double rate = this.samplesendrate( new TimeSpan( 0,0,0,0, this.m_isamplelength ) ); //if it is below the send threshold, raise an event if ( rate < this.m_dsendlowthreshold ) if ( this.senddataratelowthresholdevent!= null ) SendDataRateLowThresholdEvent( this, new DataRateThresholdEventArgs( rate ) ); Thread.Sleep(this.m_iPollingInterval);

21 If we need notification that the data rate has risen above a threshold before we transfer data, we have to be a little more creative. Because we logically have to transfer some data in order to calculate a data rate greater than 0, we have two choices: Transfer non-application data, or Transfer application data. A good choice for non-application data is ICMP data. To do this, we modify our SampleSendRate() method above to use either our custom Socket ICMP functionality, or the WMI Win32_PingStatus class. Another option would be to inject traffic measuring data into the sockets that have already been established, but that would require the receiver to have the ability to filter out and discard non-application traffic. However, if we have the option to use application data in our SampleSendRate() method, notifying subscribers that the data rate has risen above a threshold simply involves reversing the logic of the SampleAndEvaluateSendRate() method above. Adapter Selection One final consideration remains with regard to enabling.net based applications to function ideally in the mobile network environment. When there is more than one active network adapter in the system, how do we determine which is the best one? In most situations would come down to which connection has the highest effective data rate, and for many applications, the best solution may be to bind to and utilize all available local IP addresses that can see a remote endpoint. But there may be more considerations such as the existence IPSec or other security mechanism on the connection, and in some situations, a WLAN connection may be more desirable (because it is persistent between desk and meeting room) than a LAN connection, even though the latter has the better data rate. Socket methods that are called without binding to a local IP address allow the underlying system to determine the best connection, but if the underlying system s definition of best connection contradicts the application s definition, there needs to be a way to override that choice using the Socket.Bind() call 6. Obviously the definition of best adapter is a system specific policy issue that is beyond the scope of this paper, but mapping IP addresses to its underlying adapter is crucial to making this kind of decision. CLR From within the CLR, the only information available is the list of IP addresses provided in the IPHostEntry class. These IP addresses can each be used in a Socket.Bind() call that will bind all subsequent socket calls to the adapter bound to that IP address. However, the CLR provides no information about the underlying adapter. 6 And what of clients or servers that have multiple IP addresses aliased to the same adapter?

22 WMI Using the root/cimv2 namespace s Win32_NetworkAdapterConfiguration objects, we can take the IP Address provided by the IPHostEntry class and find out which adapter it is bound to 7. Windows The IPHelper API in the Windows Platform SDK provides helpful methods to query the system route and network adapter tables. This API also provides events that report changes to these tables. Conclusion In summary, in order for an application to maximize user productivity in the mobile computing world, it must be aware and take advantage of network connection state. Mobilized software must be able to detect and react to the visibility of target services, as well as changes in that visibility; it must also be able to determine the effective data rate to the remote service, as well as changes to that data rate. In some instances, determining the mapping of IP addresses to underlying adapters is also helpful in determining the best connection when there is a choice. While there is some information that cannot be obtained without using either the WMI or the Windows API, most of the information required for network connection awareness can be gleaned using methods provided by the CLR. References Jones, Anthony and Jim Ohlund, Network Programming for Microsoft Windows. System.Net namespace documentation: System.Net.Sockets namespace documentation: System.Management namespace documentation: The WMI Win32_PingStatus class: Using WMI to manage NDIS objects: 7 The root/wmi namespace s MSNdis_LinkSpeed object can provide information about the current link speed of the adapters on the system.

23 Detecting internet connection state: NDIS events in WMI: and Network Status Detection: Intel Mobile Applications Architecture Guide, Developer Centers Mobilized Software Intel Centrino Mobile Technology.NET Platform

24

Open-E Data Storage Server. Intel Modular Server

Open-E Data Storage Server. Intel Modular Server Open-E Data Storage Server Intel Modular Server Contents About Open-E Data Storage Server*...4 Hardware Components...5 Installation Software...6 Open-E Data Storage Server* Installation...7 2 www.intel.com/go/esaa

More information

Return Codes and Associated Messages

Return Codes and Associated Messages 39 APPENDIX 1 Return Codes and Associated Messages SAS ODBC Driver Return Codes 39 S1000 Communications Access Method Errors 39 TCP/IP Winsock Return Codes 40 SAS ODBC Driver Return Codes See the Microsoft

More information

BlackBerry Java Development Environment (JDE)

BlackBerry Java Development Environment (JDE) 1 BlackBerry Java Applications for Accessing SAP Applications BlackBerry Java Development Environment The BlackBerry Java Development Environment (JDE) is a fully integrated development and simulation

More information

TCG Compliance TNC IF-MAP Metadata for Network Security Compliance Test Plan

TCG Compliance TNC IF-MAP Metadata for Network Security Compliance Test Plan TCG Compliance TNC IF-MAP Metadata for Network Security Compliance Test Plan 0 Revision 11 10 March 2011 Published Contact: admin@trustedcomputinggroup.org Copyright TCG 2006-2011 Copyright 2006-2011 Trusted

More information

Socket Security: Using SO_REUSEADDR and SO_EXCLUSIVEADDRUSE

Socket Security: Using SO_REUSEADDR and SO_EXCLUSIVEADDRUSE Socket Security: Using SO_REUSEADDR and Developing secure applications is a priority for most developers today; however, socket security is often overlooked but is especially critical. Socket security

More information

Asynchronous Interactions and Managing Modeless UI with Autodesk Revit API

Asynchronous Interactions and Managing Modeless UI with Autodesk Revit API Asynchronous Interactions and Managing Modeless UI with Autodesk Revit API Arnošt Löbel Sr. Principal Software Engineer, Autodesk, Inc. Class Summary In this class we will explore the realms of challenging

More information

USB Feature Specification: Shared Endpoints

USB Feature Specification: Shared Endpoints USB Feature Specification: Shared Endpoints SYSTEMSOFT CORPORATION INTEL CORPORATION Revision 1.0 October 27, 1999 USB Feature Specification: Shared Endpoints Revision 1.0 Revision History Revision Issue

More information

Interface The exit interface a packet will take when destined for a specific network.

Interface The exit interface a packet will take when destined for a specific network. The Network Layer The Network layer (also called layer 3) manages device addressing, tracks the location of devices on the network, and determines the best way to move data, which means that the Network

More information

Internetworking Models The OSI Reference Model

Internetworking Models The OSI Reference Model Internetworking Models When networks first came into being, computers could typically communicate only with computers from the same manufacturer. In the late 1970s, the Open Systems Interconnection (OSI)

More information

MICHAL MROZEK ZBIGNIEW ZDANOWICZ

MICHAL MROZEK ZBIGNIEW ZDANOWICZ MICHAL MROZEK ZBIGNIEW ZDANOWICZ Legal Notices and Disclaimers INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY

More information

PROMISE ARRAY MANAGEMENT ( PAM) FOR FastTrak S150 TX2plus, S150 TX4 and TX4000. User Manual. Version 1.3

PROMISE ARRAY MANAGEMENT ( PAM) FOR FastTrak S150 TX2plus, S150 TX4 and TX4000. User Manual. Version 1.3 PROMISE ARRAY MANAGEMENT ( PAM) FOR FastTrak S150 TX2plus, S150 TX4 and TX4000 User Manual Version 1.3 Promise Array Management Copyright 2003 Promise Technology, Inc. All Rights Reserved. Copyright by

More information

PROMISE ARRAY MANAGEMENT ( PAM) USER MANUAL

PROMISE ARRAY MANAGEMENT ( PAM) USER MANUAL PROMISE ARRAY MANAGEMENT ( PAM) USER MANUAL Copyright 2002, Promise Technology, Inc. Copyright by Promise Technology, Inc. (Promise Technology). No part of this manual may be reproduced or transmitted

More information

TCG Physical Security Interoperability Alliance IP Video Use Case 002 (PSI-UC-IPV002) Specification Version 1.0 Revision 0.2

TCG Physical Security Interoperability Alliance IP Video Use Case 002 (PSI-UC-IPV002) Specification Version 1.0 Revision 0.2 TCG Physical Security Interoperability Alliance IP Video Use Case 002 (PSI-UC-IPV002) Specification Version 1.0 Revision 0.2 Revision History Description Date By Version 1.0 Rev 0.1 Initial Draft August

More information

Intel Unite. Intel Unite Firewall Help Guide

Intel Unite. Intel Unite Firewall Help Guide Intel Unite Intel Unite Firewall Help Guide September 2015 Legal Disclaimers & Copyrights All information provided here is subject to change without notice. Contact your Intel representative to obtain

More information

InfiniBand* Software Architecture Access Layer High Level Design June 2002

InfiniBand* Software Architecture Access Layer High Level Design June 2002 InfiniBand* Software Architecture June 2002 *Other names and brands may be claimed as the property of others. THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY

More information

Intel IXP400 Digital Signal Processing (DSP) Software: Priority Setting for 10 ms Real Time Task

Intel IXP400 Digital Signal Processing (DSP) Software: Priority Setting for 10 ms Real Time Task Intel IXP400 Digital Signal Processing (DSP) Software: Priority Setting for 10 ms Real Time Task Application Note November 2005 Document Number: 310033, Revision: 001 November 2005 Legal Notice INFORMATION

More information

Socket Exception Codes

Socket Exception Codes Value Return Code Socket Exception Codes Description 6 WSA_INVALID_HANDLE Insufficient memory available. 8 WSA_NOT_ENOUGH_MEMORY One or more parameters are invalid. 87 WSA_INVALID_PARAMETER An application

More information

Intel Manageability Commander User Guide

Intel Manageability Commander User Guide Intel Manageability Commander User Guide Document Release Date: October 27, 2016 Legal Information INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED,

More information

OpenFlow Switch Errata

OpenFlow Switch Errata OpenFlow Switch Errata Version 1.0.2 November 1, 2013 ONF TS-013 Disclaimer THIS SPECIFICATION IS PROVIDED AS IS WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT,

More information

Intel IT Director 1.7 Release Notes

Intel IT Director 1.7 Release Notes Intel IT Director 1.7 Release Notes Document Number: 320156-005US Contents What s New Overview System Requirements Installation Notes Documentation Known Limitations Technical Support Disclaimer and Legal

More information

Enhanced Serial Peripheral Interface (espi) ECN

Enhanced Serial Peripheral Interface (espi) ECN Enhanced Serial Peripheral Interface (espi) ECN Engineering Change Notice TITLE Clarify OOB packet payload DATE 10 January 2014 AFFECTED DOCUMENT espi Base Specification Rev 0.75 DISCLOSURE RESTRICTIONS

More information

QUIZ: Longest Matching Prefix

QUIZ: Longest Matching Prefix QUIZ: Longest Matching Prefix A router has the following routing table: 10.50.42.0 /24 Send out on interface Z 10.50.20.0 /24 Send out on interface A 10.50.24.0 /22 Send out on interface B 10.50.20.0 /22

More information

Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification. Version 0.9 April 1, 2004

Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification. Version 0.9 April 1, 2004 Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification Version 0.9 April 1, 2004 SMBus Host Controller Protocol Specification THIS SPECIFICATION IS PROVIDED "AS IS" WITH

More information

BlackBerry Integration With IBM WebSphere Everyplace Access 4.3

BlackBerry Integration With IBM WebSphere Everyplace Access 4.3 BlackBerry Integration With IBM WebSphere Everyplace Access 4.3 Integration Note Research In Motion 2003 Research In Motion Limited. All Rights Reserved. Contents Integration overview... 3 Related resources...

More information

CS 5520/ECE 5590NA: Network Architecture I Spring Lecture 13: UDP and TCP

CS 5520/ECE 5590NA: Network Architecture I Spring Lecture 13: UDP and TCP CS 5520/ECE 5590NA: Network Architecture I Spring 2008 Lecture 13: UDP and TCP Most recent lectures discussed mechanisms to make better use of the IP address space, Internet control messages, and layering

More information

DCMI Data Center Manageability Interface Specification v1.0, Revision 1.0. Addenda, Errata, and Clarifications

DCMI Data Center Manageability Interface Specification v1.0, Revision 1.0. Addenda, Errata, and Clarifications DCMI Data Center Manageability Interface Specification v1.0, Revision 1.0 Addenda, Errata, and Clarifications Addendum Document Revision 1 Date: 4/21/2009 THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO

More information

ICS 351: Networking Protocols

ICS 351: Networking Protocols ICS 351: Networking Protocols IP packet forwarding application layer: DNS, HTTP transport layer: TCP and UDP network layer: IP, ICMP, ARP data-link layer: Ethernet, WiFi 1 Networking concepts each protocol

More information

NetApp Element Software Remote Replication

NetApp Element Software Remote Replication Technical Report NetApp Element Software Remote Replication Feature Description and Deployment Guide Pavani Krishna Goutham Baru, NetApp January 2019 TR-4741 Abstract This document describes different

More information

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008 Distributed Systems Theory 4. Remote Procedure Call October 17, 2008 Client-server model vs. RPC Client-server: building everything around I/O all communication built in send/receive distributed computing

More information

Cloud Access Manager Overview

Cloud Access Manager Overview Cloud Access Manager 8.1.3 Overview Copyright 2017 One Identity LLC. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software described in this guide is furnished

More information

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none.

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none. Ubiquitous Computing Bhaskar Borthakur University of Illinois at Urbana-Champaign Software Research Group Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none The Event Service

More information

User Datagram Protocol

User Datagram Protocol Topics Transport Layer TCP s three-way handshake TCP s connection termination sequence TCP s TIME_WAIT state TCP and UDP buffering by the socket layer 2 Introduction UDP is a simple, unreliable datagram

More information

Installation Guide and Release Notes

Installation Guide and Release Notes Installation Guide and Release Notes Document number: 321604-001US 19 October 2009 Table of Contents 1 Introduction... 1 1.1 Product Contents... 1 1.2 System Requirements... 2 1.3 Documentation... 3 1.4

More information

OCTOSHAPE SDK AND CLIENT LICENSE AGREEMENT (SCLA)

OCTOSHAPE SDK AND CLIENT LICENSE AGREEMENT (SCLA) OCTOSHAPE SDK AND CLIENT LICENSE AGREEMENT (SCLA) This is a License Agreement (the "Agreement") for certain code (the Software ) owned by Akamai Technologies, Inc. ( Akamai ) that is useful in connection

More information

Collecting OpenCL*-related Metrics with Intel Graphics Performance Analyzers

Collecting OpenCL*-related Metrics with Intel Graphics Performance Analyzers Collecting OpenCL*-related Metrics with Intel Graphics Performance Analyzers Collecting Important OpenCL*-related Metrics with Intel GPA System Analyzer Introduction Intel SDK for OpenCL* Applications

More information

Motivation of VPN! Overview! VPN addressing and routing! Two basic techniques for VPN! ! How to guarantee privacy of network traffic?!

Motivation of VPN! Overview! VPN addressing and routing! Two basic techniques for VPN! ! How to guarantee privacy of network traffic?! Overview!! Last Lecture!! Daemon processes and advanced I/O functions!! This Lecture!! VPN, NAT, DHCP!! Source: Chapters 19&22 of Comer s book!! Unix domain protocols and non-blocking I/O!! Source: Chapters

More information

TCG TSS 2.0 TPM Command Transmission Interface (TCTI) API Specification

TCG TSS 2.0 TPM Command Transmission Interface (TCTI) API Specification TCG TSS 2.0 TPM Command Transmission Interface (TCTI) API Specification Family "2.0" Version 1.0 Revision 05 4 January 2018 Committee Draft Copyright TCG 2013-2018 Work in Progress: This document is an

More information

Guide to Mitigating Risk in Industrial Automation with Database

Guide to Mitigating Risk in Industrial Automation with Database Guide to Mitigating Risk in Industrial Automation with Database Table of Contents 1.Industrial Automation and Data Management...2 2.Mitigating the Risks of Industrial Automation...3 2.1.Power failure and

More information

WiMAX End-to-End Network Systems Architecture

WiMAX End-to-End Network Systems Architecture WiMAX End-to-End Network Systems Architecture (Stage : Architecture Tenets, Reference Model and Reference Points) [GPP WiMAX Interworking] Authorized Distribution: Public Access subject to stated terms.

More information

Intel Platform Controller Hub EG20T

Intel Platform Controller Hub EG20T Intel Platform Controller Hub EG20T UART Controller Driver for Windows* Programmer s Guide Order Number: 324261-002US Legal Lines and Disclaimers INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION

More information

Intel Parallel Studio XE 2011 for Windows* Installation Guide and Release Notes

Intel Parallel Studio XE 2011 for Windows* Installation Guide and Release Notes Intel Parallel Studio XE 2011 for Windows* Installation Guide and Release Notes Document number: 323803-001US 4 May 2011 Table of Contents 1 Introduction... 1 1.1 What s New... 2 1.2 Product Contents...

More information

CSCD58 WINTER 2018 WEEK 6 - NETWORK LAYER PART 1. Brian Harrington. February 13, University of Toronto Scarborough

CSCD58 WINTER 2018 WEEK 6 - NETWORK LAYER PART 1. Brian Harrington. February 13, University of Toronto Scarborough CSCD58 WINTER 2018 WEEK 6 - NETWORK LAYER PART 1 Brian Harrington University of Toronto Scarborough February 13, 2018 ADMIN Assignments Midterm after reading week (Feb 27) In class Covering everything

More information

Growth. Individual departments in a university buy LANs for their own machines and eventually want to interconnect with other campus LANs.

Growth. Individual departments in a university buy LANs for their own machines and eventually want to interconnect with other campus LANs. Internetworking Multiple networks are a fact of life: Growth. Individual departments in a university buy LANs for their own machines and eventually want to interconnect with other campus LANs. Fault isolation,

More information

Spotlight Management Pack for SCOM. User Guide

Spotlight Management Pack for SCOM. User Guide Spotlight Management Pack for SCOM 2015 Dell Inc. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software described in this guide is furnished under a software

More information

Stonesoft Management Center. Release Notes for Version 5.6.1

Stonesoft Management Center. Release Notes for Version 5.6.1 Stonesoft Management Center Release Notes for Version 5.6.1 Updated: January 9, 2014 Table of Contents What s New... 3 Fixes... 3 System Requirements... 6 Basic Management System Hardware Requirements...

More information

Intel Setup and Configuration Service. (Lightweight)

Intel Setup and Configuration Service. (Lightweight) Intel Setup and Configuration Service (Lightweight) Release Notes Version 6.0 (Technology Preview #3) Document Release Date: August 30, 2009 Information in this document is provided in connection with

More information

Using Tasking to Scale Game Engine Systems

Using Tasking to Scale Game Engine Systems Using Tasking to Scale Game Engine Systems Yannis Minadakis March 2011 Intel Corporation 2 Introduction Desktop gaming systems with 6 cores and 12 hardware threads have been on the market for some time

More information

Intel Thread Checker 3.1 for Windows* Release Notes

Intel Thread Checker 3.1 for Windows* Release Notes Page 1 of 6 Intel Thread Checker 3.1 for Windows* Release Notes Contents Overview Product Contents What's New System Requirements Known Issues and Limitations Technical Support Related Products Overview

More information

Mobile Routing : Computer Networking. Overview. How to Handle Mobile Nodes? Mobile IP Ad-hoc network routing Assigned reading

Mobile Routing : Computer Networking. Overview. How to Handle Mobile Nodes? Mobile IP Ad-hoc network routing Assigned reading Mobile Routing 15-744: Computer Networking L-10 Ad Hoc Networks Mobile IP Ad-hoc network routing Assigned reading Performance Comparison of Multi-Hop Wireless Ad Hoc Routing Protocols A High Throughput

More information

Supra-linear Packet Processing Performance with Intel Multi-core Processors

Supra-linear Packet Processing Performance with Intel Multi-core Processors White Paper Dual-Core Intel Xeon Processor LV 2.0 GHz Communications and Networking Applications Supra-linear Packet Processing Performance with Intel Multi-core Processors 1 Executive Summary Advances

More information

Intel Cluster Ready Allowed Hardware Variances

Intel Cluster Ready Allowed Hardware Variances Intel Cluster Ready Allowed Hardware Variances Solution designs are certified as Intel Cluster Ready with an exact bill of materials for the hardware and the software stack. When instances of the certified

More information

EEC-682/782 Computer Networks I

EEC-682/782 Computer Networks I EEC-682/782 Computer Networks I Lecture 15 Wenbing Zhao w.zhao1@csuohio.edu http://academic.csuohio.edu/zhao_w/teaching/eec682.htm (Lecture nodes are based on materials supplied by Dr. Louise Moser at

More information

Error Correction Control and Parity BIOS Implementation Example

Error Correction Control and Parity BIOS Implementation Example Error Correction Control and Parity BIOS Implementation Example White Paper Revision 1.2 THIS SPECIFICATION [DOCUMENT] IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY,

More information

StoneGate Management Center. Release Notes for Version 5.1.4

StoneGate Management Center. Release Notes for Version 5.1.4 StoneGate Management Center Release Notes for Version 5.1.4 Created: August 20, 2010 Table of Contents What s New... 3 Enhancements... 3 Fixes... 3 Major Changes Introduced in Version 5.1... 4 System Requirements...

More information

A Complete Discussion of the S 2 Cwire Single-Wire Interface With tlat Specification

A Complete Discussion of the S 2 Cwire Single-Wire Interface With tlat Specification APPLICATION NOTE A Complete Discussion of the S 2 Cwire Single-Wire Interface With tlat Specification Introduction The S 2 Cwire single-wire interface offers the simplest control possible for programmable

More information

Virtual Private Networks (VPNs)

Virtual Private Networks (VPNs) CHAPTER 19 Virtual Private Networks (VPNs) Virtual private network is defined as customer connectivity deployed on a shared infrastructure with the same policies as a private network. The shared infrastructure

More information

Ping Driver PTC Inc. All Rights Reserved.

Ping Driver PTC Inc. All Rights Reserved. 2017 PTC Inc. All Rights Reserved. 2 Table of Contents 1 Table of Contents 2 3 Overview 4 Channel Properties General 4 Channel Properties Ethernet Communications 5 Channel Properties Write Optimizations

More information

DME-N Network Driver Installation Guide for M7CL

DME-N Network Driver Installation Guide for M7CL DME-N Network Driver Installation Guide for M7CL ATTENTION SOFTWARE LICENSE AGREEMENT PLEASE READ THIS SOFTWARE LICENSE AGREEMENT ( AGREEMENT ) CAREFULLY BEFORE USING THIS SOFTWARE. YOU ARE ONLY PERMITTED

More information

Data Link Layer. Our goals: understand principles behind data link layer services: instantiation and implementation of various link layer technologies

Data Link Layer. Our goals: understand principles behind data link layer services: instantiation and implementation of various link layer technologies Data Link Layer Our goals: understand principles behind data link layer services: link layer addressing instantiation and implementation of various link layer technologies 1 Outline Introduction and services

More information

APPLICATION NOTE. Atmel AT03261: SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) SAM D20 System Interrupt Driver (SYSTEM INTERRUPT)

APPLICATION NOTE. Atmel AT03261: SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) APPLICATION NOTE Atmel AT03261: SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) ASF PROGRAMMERS MANUAL SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) This driver for SAM D20 devices provides an

More information

StoneGate IPsec VPN Client Release Notes for Version 4.2.0

StoneGate IPsec VPN Client Release Notes for Version 4.2.0 StoneGate IPsec VPN Client Release Notes for Version 4.2.0 Created: July 24, 2008 Table of Contents What s New... 3 System Requirements... 4 Build Version... 4 Compatibility... 4 IPsec Compliance... 4

More information

Technical Specification MEF 1. Ethernet Services Model, Phase November 2003

Technical Specification MEF 1. Ethernet Services Model, Phase November 2003 Technical Specification Ethernet Services Model, Phase 1 10 November 2003 Disclaimer The information in this publication is freely available for reproduction and use by any recipient and is believed to

More information

Hyperscaler Storage. September 12, 2016

Hyperscaler Storage. September 12, 2016 Storage Networking Industry Association Technical White Paper Hyperscaler Storage Abstract: Hyperscaler storage customers typically build their own storage systems from commodity components. They have

More information

Nondisruptive Operations with SMB File Shares

Nondisruptive Operations with SMB File Shares Technical Report Nondisruptive Operations with SMB File Shares ONTAP 9.x John Lantz, NetApp November 2016 TR-4100 Abstract This technical report details NetApp ONTAP support for nondisruptive operations

More information

Distributed Systems. Pre-Exam 1 Review. Paul Krzyzanowski. Rutgers University. Fall 2015

Distributed Systems. Pre-Exam 1 Review. Paul Krzyzanowski. Rutgers University. Fall 2015 Distributed Systems Pre-Exam 1 Review Paul Krzyzanowski Rutgers University Fall 2015 October 2, 2015 CS 417 - Paul Krzyzanowski 1 Selected Questions From Past Exams October 2, 2015 CS 417 - Paul Krzyzanowski

More information

Enhanced Serial Peripheral Interface (espi)

Enhanced Serial Peripheral Interface (espi) Enhanced Serial Peripheral Interface (espi) Addendum for Server Platforms December 2013 Revision 0.7 329957 0BIntroduction Intel hereby grants you a fully-paid, non-exclusive, non-transferable, worldwide,

More information

FieldView. Management Suite

FieldView. Management Suite FieldView The FieldView Management Suite (FMS) system allows administrators to view the status of remote FieldView System endpoints, create and apply system configurations, and manage and apply remote

More information

Intel Analysis of Speculative Execution Side Channels

Intel Analysis of Speculative Execution Side Channels Intel Analysis of Speculative Execution Side Channels White Paper Revision 1.0 January 2018 Document Number: 336983-001 Intel technologies features and benefits depend on system configuration and may require

More information

Uploading Files Using File Drag and Drop

Uploading Files Using File Drag and Drop September 27, 2017 2017.2 Copyright 2005, 2017, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions

More information

Medium Access Protocols

Medium Access Protocols Medium Access Protocols Summary of MAC protocols What do you do with a shared media? Channel Partitioning, by time, frequency or code Time Division,Code Division, Frequency Division Random partitioning

More information

Non-Volatile Memory Cache Enhancements: Turbo-Charging Client Platform Performance

Non-Volatile Memory Cache Enhancements: Turbo-Charging Client Platform Performance Non-Volatile Memory Cache Enhancements: Turbo-Charging Client Platform Performance By Robert E Larsen NVM Cache Product Line Manager Intel Corporation August 2008 1 Legal Disclaimer INFORMATION IN THIS

More information

Different Layers Lecture 20

Different Layers Lecture 20 Different Layers Lecture 20 10/15/2003 Jian Ren 1 The Network Layer 10/15/2003 Jian Ren 2 Network Layer Functions Transport packet from sending to receiving hosts Network layer protocols in every host,

More information

Barracuda Link Balancer

Barracuda Link Balancer Barracuda Networks Technical Documentation Barracuda Link Balancer Administrator s Guide Version 2.3 RECLAIM YOUR NETWORK Copyright Notice Copyright 2004-2011, Barracuda Networks www.barracuda.com v2.3-111215-01-1215

More information

Dynamic Power Optimization for Higher Server Density Racks A Baidu Case Study with Intel Dynamic Power Technology

Dynamic Power Optimization for Higher Server Density Racks A Baidu Case Study with Intel Dynamic Power Technology Dynamic Power Optimization for Higher Server Density Racks A Baidu Case Study with Intel Dynamic Power Technology Executive Summary Intel s Digital Enterprise Group partnered with Baidu.com conducted a

More information

Application Security for Java-based BlackBerry Handhelds

Application Security for Java-based BlackBerry Handhelds Application Security for Java-based Originally posted: February 2003 Latest revision: May 2003 Introduction Corporate data access capabilities supported by the BlackBerry platform enable wireless connectivity

More information

Chapter 13 TRANSPORT. Mobile Computing Winter 2005 / Overview. TCP Overview. TCP slow-start. Motivation Simple analysis Various TCP mechanisms

Chapter 13 TRANSPORT. Mobile Computing Winter 2005 / Overview. TCP Overview. TCP slow-start. Motivation Simple analysis Various TCP mechanisms Overview Chapter 13 TRANSPORT Motivation Simple analysis Various TCP mechanisms Distributed Computing Group Mobile Computing Winter 2005 / 2006 Distributed Computing Group MOBILE COMPUTING R. Wattenhofer

More information

Dell One Identity Cloud Access Manager 8.0. Overview

Dell One Identity Cloud Access Manager 8.0. Overview Dell One Identity Cloud Access Manager 8.0 2015 Dell Inc. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software described in this guide is furnished under

More information

Entrust WAP Server Certificate Relying Party Agreement

Entrust WAP Server Certificate Relying Party Agreement Entrust WAP Server Certificate Relying Party Agreement The WAP/WTLS specification v1.1 does not provide a means for certificate revocation checking. The following Relying Party Agreement" provides further

More information

A NETWORK PRIMER. An introduction to some fundamental networking concepts and the benefits of using LANtastic.

A NETWORK PRIMER. An introduction to some fundamental networking concepts and the benefits of using LANtastic. A NETWORK PRIMER An introduction to some fundamental networking concepts and the benefits of using LANtastic. COPYRIGHT 1996 Artisoft, Inc. All Rights Reserved. This information file is copyrighted with

More information

1 GSW Bridging and Switching

1 GSW Bridging and Switching 1 Sandwiched between the physical and media access layers of local area networking (such as Ethernet) and the routeing of the Internet layer of the IP protocol, lies the thorny subject of bridges. Bridges

More information

CS 167 Final Exam Solutions

CS 167 Final Exam Solutions CS 167 Final Exam Solutions Spring 2018 Do all questions. 1. [20%] This question concerns a system employing a single (single-core) processor running a Unix-like operating system, in which interrupts are

More information

Native route discovery algorithm

Native route discovery algorithm Native route discovery algorithm Starting conditions Node 1 needs to send data to node Routing tables are empty There is no direct path between node 1 and node Destination Next hop Destination Next hop

More information

BlackBerry Wireless Handheld Getting Started Guide

BlackBerry Wireless Handheld Getting Started Guide BlackBerry Wireless Handheld Getting Started Guide Phone button Open the phone screen Earpiece Headset jack USB port Notification LED Trackwheel Select or click an item Escape button Exit a screen Alt

More information

BlackBerry Wireless Handheld Getting Started Guide

BlackBerry Wireless Handheld Getting Started Guide BlackBerry Wireless Handheld Getting Started Guide Phone button Open the phone screen Earpiece Headset jack USB port Notification LED Trackwheel Select or click an item Escape button Exit a screen Alt

More information

Technical Overview of DirectAccess in Windows 7 and Windows Server 2008 R2. Microsoft Windows Family of Operating Systems

Technical Overview of DirectAccess in Windows 7 and Windows Server 2008 R2. Microsoft Windows Family of Operating Systems Technical Overview of in Windows 7 and Windows Server 2008 R2 Microsoft Windows Family of Operating Systems Published: January 2009 This document supports a preliminary release of a software product that

More information

Fundamental Questions to Answer About Computer Networking, Jan 2009 Prof. Ying-Dar Lin,

Fundamental Questions to Answer About Computer Networking, Jan 2009 Prof. Ying-Dar Lin, Fundamental Questions to Answer About Computer Networking, Jan 2009 Prof. Ying-Dar Lin, ydlin@cs.nctu.edu.tw Chapter 1: Introduction 1. How does Internet scale to billions of hosts? (Describe what structure

More information

AT11512: SAM L Brown Out Detector (BOD) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

AT11512: SAM L Brown Out Detector (BOD) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE SMART ARM-based Microcontrollers AT11512: SAM L Brown Out Detector (BOD) Driver APPLICATION NOTE Introduction This driver for Atmel SMART ARM -based microcontrollers provides an interface for the configuration

More information

Mobile Transport Layer

Mobile Transport Layer Mobile Transport Layer 1 Transport Layer HTTP (used by web services) typically uses TCP Reliable transport between TCP client and server required - Stream oriented, not transaction oriented - Network friendly:

More information

Terms and Conditions 01 January 2016

Terms and Conditions 01 January 2016 Terms and Conditions 01 January 2016 thehealthsource: Terms and Conditions Page 1 of 7 This Agreement (the Agreement ) is entered into by and between thehealthsource (Pty) Ltd and the entity agreeing to

More information

Michael Kinsner, Dirk Seynhaeve IWOCL 2018

Michael Kinsner, Dirk Seynhaeve IWOCL 2018 Michael Kinsner, Dirk Seynhaeve IWOCL 2018 Topics 1. FPGA overview 2. Motivating application classes 3. Host pipes 4. Some data 2 FPGA: Fine-grained Massive Parallelism Intel Stratix 10 FPGA: Over 5 Million

More information

ComAPI+ API Documentation

ComAPI+ API Documentation [01.2017] ComAPI+ API Documentation 30515ST10841A Rev. 4 2017-07-20 Mod. 0806 SPECIFICATIONS ARE SUBJECT TO CHANGE WITHOUT NOTICE NOTICES LIST While reasonable efforts have been made to assure the accuracy

More information

Lecture 10: Cache Coherence: Part I. Parallel Computer Architecture and Programming CMU , Spring 2013

Lecture 10: Cache Coherence: Part I. Parallel Computer Architecture and Programming CMU , Spring 2013 Lecture 10: Cache Coherence: Part I Parallel Computer Architecture and Programming Cache design review Let s say your code executes int x = 1; (Assume for simplicity x corresponds to the address 0x12345604

More information

Operating Systems 2010/2011

Operating Systems 2010/2011 Operating Systems 2010/2011 Input/Output Systems part 1 (ch13) Shudong Chen 1 Objectives Discuss the principles of I/O hardware and its complexity Explore the structure of an operating system s I/O subsystem

More information

Enhancing VMware Horizon View with F5 Solutions

Enhancing VMware Horizon View with F5 Solutions Enhancing VMware Horizon View with F5 Solutions VMware Horizon View is the leading virtualization solution for delivering desktops as a managed service to a wide range of devices. F5 BIG-IP devices optimize

More information

Silberschatz and Galvin Chapter 12

Silberschatz and Galvin Chapter 12 Silberschatz and Galvin Chapter 12 I/O Systems CPSC 410--Richard Furuta 3/19/99 1 Topic overview I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O requests to hardware operations

More information

Broker Clusters. Cluster Models

Broker Clusters. Cluster Models 4 CHAPTER 4 Broker Clusters Cluster Models Message Queue supports the use of broker clusters: groups of brokers working together to provide message delivery services to clients. Clusters enable a Message

More information

A novel design for maximum use of public IP Space by ISPs one IP per customer

A novel design for maximum use of public IP Space by ISPs one IP per customer A novel design for maximum use of public IP Space by ISPs one IP per customer 6/20/2018 Jim McNally, James Lopeman Plusten Mark Steckel Citywisper Abstract This paper outlines a new design for ISP networks

More information

CERTIFIED MAIL LABELS TERMS OF USE and PRIVACY POLICY Agreement

CERTIFIED MAIL LABELS TERMS OF USE and PRIVACY POLICY Agreement CERTIFIED MAIL LABELS TERMS OF USE and PRIVACY POLICY Agreement Welcome to Certified Mail Envelopes and Certified Mail Labels web sites (the Site ) a website, trademark and business name owned and operated

More information

CX Recorder. User Guide. Version 1.0 February 8, Copyright 2010 SENSR LLC. All Rights Reserved. R V1.0

CX Recorder. User Guide. Version 1.0 February 8, Copyright 2010 SENSR LLC. All Rights Reserved. R V1.0 CX Recorder User Guide Version 1.0 February 8, 2010 Copyright 2010 SENSR LLC. All Rights Reserved. R001-418-V1.0 TABLE OF CONTENTS 1 PREAMBLE 3 1.1 Software License Agreement 3 2 INSTALLING CXRECORDER

More information

Using Intel Inspector XE 2011 with Fortran Applications

Using Intel Inspector XE 2011 with Fortran Applications Using Intel Inspector XE 2011 with Fortran Applications Jackson Marusarz Intel Corporation Legal Disclaimer INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS

More information