Windows TCP Socket Buffer Hitting Plateau Too Early

Note: This is a repost of a ServerFault Question edited over the course of a few days, originally here: http://serverfault.com/questions/608060/windows-tcp-window-scaling-hitting-plateau-too-early
Scenario: We have a number of Windows clients regularly uploading large files (FTP/SVN/HTTP PUT/SCP) to Linux servers that are ~100-160ms away. We have 1Gbit/s synchronous bandwidth at the office and the servers are either AWS instances or physically hosted
in US DCs.
The initial report was that uploads to a new server instance were much slower than they could be. This bore out in testing and from multiple locations; clients were seeing stable 2-5Mbit/s to the host from their Windows systems.
I broke out iperf
-s on a an AWS instance and then from a Windows client in the office:
iperf
-c 1.2.3.4
[ 5] local 10.169.40.14 port 5001 connected with 1.2.3.4 port 55185
[ 5] 0.0-10.0 sec 6.55 MBytes 5.48 Mbits/sec
iperf
-w1M -c 1.2.3.4
[ 4] local 10.169.40.14 port 5001 connected with 1.2.3.4 port 55239
[ 4] 0.0-18.3 sec 196 MBytes 89.6 Mbits/sec
The latter figure can vary significantly on subsequent tests, (Vagaries of AWS) but is usually between 70 and 130Mbit/s which is more than enough for our needs. Wiresharking the session, I can see:
iperf
-c Windows SYN - Window 64kb, Scale 1 - Linux SYN, ACK: Window 14kb, Scale: 9 (*512) 
iperf
-c -w1M Windows SYN - Windows 64kb, Scale 1 - Linux SYN, ACK: Window 14kb, Scale: 9
Clearly the link can sustain this high throughput, but I have to explicity set the window size to make any use of it, which most real world applications won't let me do. The TCP handshakes use the same starting points in each case, but the forced one scales
Conversely, from a Linux client on the same network a straight, iperf
-c (using the system default 85kb) gives me:
[ 5] local 10.169.40.14 port 5001 connected with 1.2.3.4 port 33263
[ 5] 0.0-10.8 sec 142 MBytes 110 Mbits/sec
Without any forcing, it scales as expected. This can't be something in the intervening hops or our local switches/routers and seems to affect Windows 7 and 8 clients alike. I've read lots of guides on auto-tuning, but these are typically about disabling scaling
altogether to work around bad terrible home networking kit.
Can anyone tell me what's happening here and give me a way of fixing it? (Preferably something I can stick in to the registry via GPO.)
Notes
The AWS Linux instance in question has the following kernel settings applied in sysctl.conf:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
net.ipv4.tcp_rmem = 4096 1048576 16777216
net.ipv4.tcp_wmem = 4096 1048576 16777216
I've used dd
if=/dev/zero | nc redirecting to /dev/null at
the server end to rule out iperfand
remove any other possible bottlenecks, but the results are much the same. Tests with ncftp(Cygwin,
Native Windows, Linux) scale in much the same way as the above iperf tests on their respective platforms.
First fix attempts.
Enabling CTCP - This makes no difference; window scaling is identical. (If I understand this correctly, this setting increases the rate at which the congestion window is enlarged rather than the maximum size it can reach)
Enabling TCP timestamps. - No change here either.
Nagle's algorithm - That makes sense and at least it means I can probably ignore that particular blips in the graph as any indication of the problem.
pcap files: Zip file available here: https://www.dropbox.com/s/104qdysmk01lnf6/iperf-pcaps-10s-Win%2BLinux-2014-06-30.zip (Anonymised
with bittwiste, extracts to ~150MB as there's one from each OS client for comparison)
Second fix attempts.
I've enabled ctcp and disabled chimney offloading: TCP Global Parameters
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : ctcp
ECN Capability : disabled
RFC 1323 Timestamps : enabled
Initial RTO : 3000
Non Sack Rtt Resiliency : disabled
But sadly, no change in the throughput.
I do have a cause/effect question here, though: The graphs are of the RWIN value set in the server's ACKs to the client. With Windows clients, am I right in thinking that Linux isn't scaling this value beyond that low point because the client's limited CWIN
prevents even that buffer from being filled? Could there be some other reason that Linux is artificially limiting the RWIN?
Note: I've tried turning on ECN for the hell of it; but no change, there.
Third fix attempts.
No change following disabling heuristics and RWIN autotuning. Have updated the Intel network drivers to the latest (12.10.28.0) with software that exposes functioanlity tweaks viadevice manager tabs. The card is an 82579V Chipset on-board NIC - (I'm going to
do some more testing from clients with realtek or other vendors)
Focusing on the NIC for a moment, I've tried the following (Mostly just ruling out unlikely culprits):
Increase receive buffers to 2k from 256 and transmit buffers to 2k from 512 (Both now at maximum) - No change
Disabled all IP/TCP/UDP checksum offloading. - No change.
Disabled Large Send Offload - Nada.
Turned off IPv6, QoS scheduling - Nowt.
Further investigation
Trying to eliminate the Linux server side, I started up a Server 2012R2 instance and repeated the tests using iperf (cygwin
binary) and NTttcp.
With iperf,
I had to explicitly specify -w1m on both sides
before the connection would scale beyond ~5Mbit/s. (Incidentally, I could be checked and the BDP of ~5Mbits at 91ms latency is almost precisely 64kb. Spot the limit...)
The ntttcp binaries showed now such limitation. Using ntttcpr
-m 1,0,1.2.3.5 on the server and ntttcp
-s -m 1,0,1.2.3.5 -t 10 on the client, I can see much better throughput:
Copyright Version 5.28
Network activity progressing...
Thread Time(s) Throughput(KB/s) Avg B / Compl
====== ======= ================ =============
0 9.990 8155.355 65536.000
##### Totals: #####
Bytes(MEG) realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
79.562500 10.001 1442.556 7.955
Throughput(Buffers/s) Cycles/Byte Buffers
===================== =========== =============
127.287 308.256 1273.000
DPCs(count/s) Pkts(num/DPC) Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
1868.713 0.785 9336.366 0.157
Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
57833 14664 0 0 9.476
8MB/s puts it up at the levels I was getting with explicitly large windows in iperf.
Oddly, though, 80MB in 1273 buffers = a 64kB buffer again. A further wireshark shows a good, variable RWIN coming back from the server (Scale factor 256) that the client seems to fulfil; so perhaps ntttcp is misreporting the send window.
Further PCAP files have been provided, here:https://www.dropbox.com/s/dtlvy1vi46x75it/iperf%2Bntttcp%2Bftp-pcaps-2014-07-03.zip
Two more iperfs,
both from Windows to the same Linux server as before (1.2.3.4): One with a 128k Socket size and default 64k window (restricts to ~5Mbit/s again) and one with a 1MB send window and default 8kb socket size. (scales higher)
One ntttcp trace
from the same Windows client to a Server 2012R2 EC2 instance (1.2.3.5). here, the throughput scales well. Note: NTttcp does something odd on port 6001 before it opens the test connection. Not sure what's happening there.
One FTP data trace, uploading 20MB of /dev/urandom to
a near identical linux host (1.2.3.6) using Cygwin ncftp.
Again the limit is there. The pattern is much the same using Windows Filezilla.
Changing the iperf buffer
length does make the expected difference to the time sequence graph (much more vertical sections), but the actual throughput is unchanged.
So we have a final question through all of this: Where is this limitation creeping in? If we simply have user-space software not written to take advantage of Long Fat Networks, can anything be done in the OS to improve the situation?

Hi,
Thanks for posting in Microsoft TechNet forums.
I will try to involve someone familiar with this topic to further look at this issue. There might be some time delay. Appreciate your patience.
Thank you for your understanding and support.
Kate Li
TechNet Community Support

Similar Messages

  • Buffer hit ratio (to be negative)

    Hi All,
    My DB Version: 10.2.0
    OS: Windows Server 2003
    When i am checking snapshots at peak time and comparing it with one when there is no load on the server the buffer hit ratio (to be negative), the buffer cache is too small and the data in is being aged out before it can be used so it must be retrieved again.
    So i just want to know that whether should i increase the value of db_cache_size.
    What exactly happens when i do this.

    Hi;
    DB_CACHE_SIZE specifies the size of the DEFAULT buffer pool for buffers with the primary block size (the block size defined by the DB_BLOCK_SIZE initialization parameter).
    The value must be at least 4M * number of cpus * granule size (smaller values are automatically rounded up to this value). A user-specified value larger than this is rounded up to the nearest granule size. A value of zero is illegal because it is needed for the DEFAULT memory pool of the primary block size, which is the block size for the SYSTEM tablespace.
    Source:
    http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams043.htm
    Regard
    Helios

  • Outlook displays date of birthdays one day too early in MS Office 2007, 2010 and 2013

    Hi
    We are supporting several clients that has issues with Outlook. Different versions of Windows, Office and different exchange server versions. Some contacts' birthdays
    just "magically" changes to one day too early.  I have done extensive research with no answer. I have experienced this issue personally as early as about 2005 or 2006 with a Windows Mobile PDA.
    Our local time is GMT +2 without daylight-savings. I have checked the settings in Windows (Vista Pro and Win 7 pro
    x86 and x64) and the calendar settings, I have reloaded a couple of pc's, created new profiles, installed new server hardware with newer exchange.  Even tried a few off-the-wall ideas like resetting all views to default.
    Some users' address books are shared, some not. Some uses Apple, Android, BB or Windows phone, some don't.  Some connects through VPN, some don't. Some uses
    AVG, Avast, Eset Nod, Forticlient, Mcafee, etc....
    I have been fighting this problem for months, and can find no conclusive answer that resolves this.
    If I manually open the contact and rectify the date, it will stay correct for a very random time period and then shift
    again.
    I am about to lose a couple of my biggest clients, and probably my job as well, so I need urgent help.
    Please no remarks on OS version, Office version or mobile devices, as this is definitely not the issue.
    HELP!

    Hi,
    Have the users check on OWA, does the issue persist? Please also make sure the timezone of Exchange is also properly configured.
    I'm not an expert about Exchange, I hope this blog can be helpful:
    http://blogs.technet.com/b/fun_with_powershell/archive/2013/04/30/where-is-the-time-zone-property-stored-in-exchange-2010.aspx
    To further dig the problem, rectify the date on owa and drop Outlook for a while(or one day), check the result the next day if the problem will come back.
    Regards,
    Melon Chen
    TechNet Community Support

  • TCP Socket connection in CLOSE_WAIT status and not getting closed

    I am facing an issue with the TCP socket connections not getting closed and they are in CLOSE_WAIT status for ever.
    As a part of batch process in our application, emails are sent with 4 embedded images. These images are downloaded from 3rd party site with IP say "UUU.XXX.YYY.ZZZ"
    The images are embedded to email as follows
    1. An URL object is created with the site url.
    URL urlPhoto = new
    URL("http://UUU.XXX.YYY.ZZZ/email/photos.jpg");
    2.     The image cid is created with the URL object and the image name
    HtmlEmail htmlEmail = new HtmlEmail();
    String cid1 = htmlEmail.embed(urlPhoto,
    "photo.jpg");
    3.     The image cid is added to the email template by replacing the ${cid1} and the email is sent.
    <td valign="top">
                   <img src="cid:${cid1}" width="279" height="274">
              </td>
    When a mail is sent, 4 new TCP connections are opened and are put in CLOSE_WAIT status for ever. For every mail sent 4 new connections are opened. In UNIX there is an upper limit on the number of open file handles (defaults to 1024) at any point of time. The open TCP connection has the underlying socket in CLOSE_WAIT status and is not getting closed at all. When the upper limit (1024) is reached the batch process is throwing the following exception and terminates.
    Caused by: com.inet.tds.ap: java.net.SocketExceptionjava.net.SocketException: Too many open files
    at com.inet.tds.am.a(Unknown Source)
    at com.inet.tds.TdsDriver.a(Unknown Source)
    at com.inet.tds.TdsDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:171)
    at com.hcomemea.batchprocess.dataaccess.database.BaseJdbcDao.openConnection(BaseJdbcDao.java:106)
    ... 12 more
    When I run the command lsof in UNIX which list the open file handles in the system
    $ /usr/sbin/lsof -p 22933 -i | grep CLOSE_WAIT
    java 22933 build_master 297u IPv6 129841943 TCP integration.com:47929->UUU.XXX.YYY.ZZZ:http (CLOSE_WAIT)
    java 22933 build_master 298u IPv6 129841947 TCP integration.com:47933->UUU.XXX.YYY.ZZZ:http (CLOSE_WAIT)
    java 22933 build_master 299u IPv6 129841950 TCP integration.com:47936->UUU.XXX.YYY.ZZZ:http (CLOSE_WAIT)
    java 22933 build_master 300u IPv6 129841970 TCP integration.com:47952->UUU.XXX.YYY.ZZZ:http (CLOSE_WAIT)
    ���list of 935 connections similarly�
    I tried 2 solutions
    1. Got the HttpURLConnection from the URL object and invoked disconnect method on the same. But it doesn�t work.
    2. Ran the batch process java program with the parameter �Dhttp.keepAlive=false to close the underlying connection but didn�t help.
    I need the underlying sockets to be closed and not put in CLOSE_WAIT status after sending the mail.
    Is it the problem with the embed method of HtmlEmail object not closing the underlying socket connection.
    If anyone has faced this issue before, kindly let me know the possible solutions for the same ASAP.
    Thank you,
    Ramesh G

    This sounds more like a problem due to connection pooling at middle tier/application server.
    If that has been ruled out, then you might to enable DCD or set expiry time on the server.

  • Bytes read from Socket buffer

    Hi,
    I'm writing a proxy application that relays data from a server to a client that requested the data. One thing I have observed is that when I have read about 32136 bytes of data, my reads from my buffered input stream fetch only one byte at a time. Not only is my read function now reading only one byte at a time, but it takes over a minute to fetch 83 bytes of data. And the delay gets worse the longer I run.
    In an effort to stress test my app, I deliberately set the send and receive buffers of the client socket to a small value (128 bytes). I can understand that filling up the buffer could slow down the reading, but what is odd is that long after the client has digested all the data, the Input stream reads never seem to go back to their original speed.
    Is this an O/s thing? a JVM thing? I'm running JDK 1.3.1 on an intel box with Linux Redhad 6.2. It seems to me that there must be some way of getting the socket buffer clear on the receive side so that I can get something that ressembles a normal dataflow. Oh, and I tried toggling the TCP no delay flag to no avail.
    Any suggestions?
    -hugh

    However, even with a large socket buffer, there is
    always the chance that the receiving app will run
    slowly due to bad programming, network latency, etc
    (we're not the authors of the clients who will
    connect), meaning even with the maximum buffer size,
    we could fill the socket buffer. I suppose, though,
    if it is the sender app that is getting fooled, then
    it's a matter for the authors of the sending
    application.True but the same thing will happen if the client connects directly to the server without your proxy, so why worry? General tips for writing proxies: use as large a buffer as possible, run separate reading and writing threads in your proxy, and propagate an EOF by doing shutdownOutput in the opposite direction. When you have done this in both directions you can close the socket, not before.

  • Oracle Buffer Hit Ratio

    I m using this query to find Oracle Buffer Hit ratio .Is this query right.Is there some other way of getting more accurate ratio
    select trunc((1-(sum(decode(name,'physical reads',value,0))/(sum(decode(name,'db block gets',value,0)) + (sum(decode(name,'consistent gets',value,0)))))) * 100) from v$sysstat

    Asif,
    Too bad we couldn't meet when I happened to come to Bdesh coz if we could , we would had talked about the same topic for hours. If you are using this hit ratio as the tuning technique than you are not alone. There are so many dbas who are using hit ratio and loose sleep seeing not to a particular %. It was a method that was given years ago by Oracle reason being that at that time, databases , their loads, they were not too much. But now things have changed so should be the troubleshooting techniques. Search over this forum for the same topic and you would see some "cool" threads where some top-notch experts are talking about the same issue.
    Aman....

  • Problems sending files throught TCP sockets

    I would like to transfer a file throught a tcp socket, here there is what the sender program does :
    try{
         File localFile = new File("shared/"+fileName);
         DataOutputStream oos = new DataOutputStream(socket.getOutputStream());     
         DataInputStream fis = new DataInputStream(new FileInputStream(localFile));
         while(fis.available() > 0){
              oos.writeByte(fis.readByte());
         catch(Exception e){}here what the receiver program does:
         try{
         File downloadFile = new File("incoming/"+fileName);
         downloadFile.createNewFile();
         ois = new DataInputStream(connectionSocket.getInputStream());
         fos = new DataOutputStream(new FileOutputStream(downloadFile));
         while(ois.available() > 0){
              fos.writeByte(ois.readByte());
         catch(Exception e){}
    }Where i m wrong? it doesnt work :( , it just create the new file in the incoming folder, but its size remains 0 byte :(
    help a newbye please :D

    Your problem is probably related to the use of available. This is the amount that is currently in the buffer that you can read without blocking. For network programming you should expect to have to wait for data. Second, you are copying the data one byte at a time which is not very efficient. Try something like:
    // Sender
    try {
        File localFile = new File("shared/"+fileName);
        OutputStream out = socket.getOutputStream();     
        InputStream fis = new FileInputStream(localFile);
        int length;
        byte[] buffer = new byte[4096];
        while((length = fis.read(buffer)) != -1)
         out.write(buffer, 0, length);
        fis.close();
        out.close();
    catch(Exception e){}
    // Receiver
    try {
        File downloadFile = new File("incoming/"+fileName);
        IntputStream ois = connectedSocket.getIntputStream();     
        OutputStream fos = new FileOutputStream(downloadFile);
        int length;
        byte[] buffer = new byte[4096];
        while((length = ois.read(buffer)) != -1)
         fos.write(buffer, 0, length);
        fos.close();
        ois.close();
    catch(Exception e){}

  • Safari gives up loading images too early

    Hi
    I have noticed that Safari (currently I am using 3.1.1 but I had noticed this behavior on earlier versions as well) usually gives up on loading images too early.
    I have a 30Mbps internet connection and also in Firefox and Opera I do not experience the same problem.
    Is this a known issue? Are there currently any workarounds around this problem?
    Regards,
    Behrang

    From your Safari menu bar click Safari > Preferences then select the Privacy tab.
    Click:   Remove All Website Data
    Then delete the cache.
    Open a Finder window. From the Finder menu bar click Go > Go to Folder
    Type or copy paste the following
    ~/Library/Caches/com.apple.Safari/Cache.db
    Click Go then move the Cache.db file to the Trash.
    Quit and relaunch Safari to test.
    If nothing above helped, troubleshoot Safari extensions.
    From the Safari menu bar click Safari > Preferences then select the Extensions tab. Turn that OFF, quit and relaunch Safari to test.
    If that helped, turn one extension on then quit and relaunch Safari to test until you find the incompatible extension then click uninstall.

  • Preflight droplet process returns too early – before it's done

    I'm calling an Acrobat preflight DROPLET from program that I'm writing, and I need to know when the files are ready, that is when the preflight fixups are done.
    I need to know this in order to go on with some other file system stuff in my program, that needs to be done after the preflight fixups.
    I guess the droplet just tells Acrobat what to do, and then exits. The Droplet process stays up for a while but exits before the work is done.
    There is an question from 2009 asking the exact same thing, but no answer.  Preflight droplet returns too early
    Since it's in a locked section of the forum I venture to ask the same question now, six years later.
    Checking the modified dates of all files does not seem to work since a preflight obviously does not alter files that are not in need of being altered.
    I'm on windows, and I don't know whether this is a platform dependent problem.
    What should I do?
    Thanks,
    Andreas

    This is not a good way to do it. But this is the way I do it now...
    It seems to work but there is no guarantee that it will work in the future, or even on all machines.
    private static int WaitForAcrobatReady() {
      // Get the current Acrobat instance.
      var app = new Acrobat.AcroApp();
      // While a preflight (droplet) is running, app.GetNumAVDocs() will
      // not return ANYTHING, it will just hang.
      return app.GetNumAVDocs();
    To sum up the efforts of the last weeks: Acrobat doesn't seem to be made for inclusion in other automation jobs. This is just another thing that doesn't work.
    (I had to use the C# library PDFSharp to do other things that Acrobat can do really well only that it's not possible to set those properties, or start that kind of actions, from "outside".)

  • TCP Socket Adapter

    I want to use BPEL to integrate Oracle CRM with some banking software that validates bank sort codes and account numbers. The banking validation software listens for an input stream on a TCP socket.
    Can anyone tell me where I can find the technology socket adapter that are referenced on a number of Oracle presentations?
    I know I could write code in Java to achieved the same effect, but if there is an adapter that can do the job then that is preferable.

    I too am looking for this. I see that one of the posters above mentions an item provided by oracle, more details would be appreciated.
    In the mean time, I think the way to go is to write a POJO that sits on the the tcp port and gets into the ESB via a message queue, allowing it to "send an event" if you will.
    The scenario where you want to go outbound to tcp might be a bit trickier, if I use the POJO approach, then my code is outside of the ESB, since the ESB would end by dumping to a message queue, and my POJO would pick up from there.
    It would be really nice to have an Oracle component specificially for TCP.

  • Shuts down too early

    I just phoned up apple technical support and asked if i could get a repair.
    I explained my problem to them. It shuts down too early, when the battery gets from about a half to a third full, it can just randonly shut down even though there is enough power left in it. It will turn on and play again if you reset it about 6 billion times.
    Anyhow he asked me the play time of the ipod mini 2nd gen. He said that any ipod that played for at least 50% of the actual time would be considered a fully working ipod. I then asked him if i got a playtime of over 9 hours and then it switched off saying that there was no battery power remaining would the ipod be considered defective. He said no. WHAT so what apple saying is that if i get 9 hours and then it swithes off after that even though the battery isn't really empty, this is a fully working ipod. What is this.
    I could get over 9 hours of continous playback from my ipod but then if it switches off early, this is fine. NO IT ISN'T APPLE.
    Can someone help me or make a comment please.
    P.S. I have already tried updating and downgrading firmware and resetting and restoring several times. I have also recalibrated the battery nothing works it will still switch off early. It has also been in for a repair before but they sent it back to me without fixing it.
    compaq   Windows XP   ipod mini 4gb
    Title edited by an Apple Discussions Host

    what apple saying is that if i get 9 hours and then it swithes off after that even though the battery isn't really empty, this is a fully working ipod.
    Okay. That makes good sense.
    when the battery gets from about a half to a third full,
    You really mean that when the
    [sarcasm mode on]
    highly accurate
    [/sarcasm mode off]
    battery meter shows 1/2 to 1/3.
    get over 9 hours of continous playback from my ipod but then if it switches off early
    If you are getting 9 hours it is NOT switching off early. It is switching off early if it gets less than ~5 hours.

  • Lvwutil32 version too early to covert to current LabVIEW version?

    Hi all,
    I am looking to control the windows panel with some of the useful vis stored inside the lvwutil32 lib. However when I tried to open the vis inside the library, an error message saying that the vi version (4.0) is too early to be converted to my current LabVIEW version (8.5.1).
    Is there anyway to reconvert the vi that my current LabVIEW can use? It is a great shame as from the readme that comes with the lvwutil32, it seems that there are a lot of useful vis that I would find very useful for my projects.
    Hope someone could provide some help on this. Thanks!
    Solved!
    Go to Solution.

                           Hello,
                           I am having the same problem as YuanGe(the topic owner). I wanna open a file from the 5.1.1 LABview version on my LABview 8.6 and occurs the same error message.
                          I would be very grateful, if anybody could help me.
                          Thanks.
                          ps: The file is just down here.
    Attachments:
    ag8614x.zip ‏2795 KB

  • Communication with database using TCP sockets connection

    Hi all,
    I am bit of a newbie when it comes to databases. In a project I realised over te passed few weeks, I communicated with an 11g database using an application I created with VS Express. It uses an ODBC connection. I now want to connect a PLC to the same database. These PLC's don't have the ability to install an ODBC client so I need something different.
    I am easily able to open a TCP socket on the PLC and send data from there. I would like to know if I can start a TCP sockets connection with our 11g server and send all queries directly. The other (already suggested) option would be to have the PLC connect to a PC that reads this information and hands it over to the ODBC connector, but that would mean I need an extra PC just to 'translate'.
    I have been searching these forums for socket, TCP and more and feel it is possible, but I need a good document as a reference to show/tell me how it's done.
    Thanks in advance,
    Marijn

    The TCP/IP interface to Oracle is undocumented (and hugely complex anyway). You'll need to use a higher layer iterface or setup your own infrastructure.
    We need more information about what is available to you inside the PLC.
    Can you use Java? If so, perhaps use thin JDBC?
    Can you sent HTTP requests? If so you could set up your own Web services to handle this.
    If you can only use C or C++, Oracle has interfaces there too.. it's called OCI (Oracle Call Interface) and thats as close to the networking layer as you can get.
    Finally if you can use .NET Oracle has a Fully Managed Oracle Data Provider for .NET that you could use.
    But if all you can do is super low level network access and none of the above then you will need to set up an intermediary as you mentioned.

  • What version of windows is best to run on an Early 2008 IMac?

    What version of Windows is best to run on an Early 2008 IMac? And should I use Boot Camp, Parallels, or VMWare? My IMac will be a secondary computer now that I got a new IMac. The Early 2008 IMac is an Intel Core 2 Duo with 2GB memory, and 2.66 ghz processor speed. It is also running OSX 10.9.5 and Boot Camp is version 5.1.2.
    I mostly want to do this so I can get rid of an old Windows machine that I just use to run Quicken on. I think I need to do this since Intuit does not support online bill pay for Apple versions of Quicken.
    I am average with computers so any help would be really appreciated.
    Thanks
    Rocco

    Bootcamp gives you access to underlying hardware on the iMac unlike VMware or Parallels. It does require reboot. Most VM engines let you take a Bootcamp Windows and run it as VM where a reboot can be avoided. With 2GB of memory, you should be able to Windows 7, but I would not recommend W8.
    You may also want to look at - Boot Camp: System requirements for Microsoft Windows operating systems.

  • Material Cost Estimate - Release too early

    Hi,
    I ran the cost estimate for one material on 12.06.2008 and i released the cost estimate. Here it is saying 'Cost Estimate released too early'. I thought system is releasing the cost for material for the next month. but i want to update the material cost for this month only.
    And how many days before you have to run the cost estimate for the new month.
    sateesh

    Hi Sateesh,
    Please check the period which you have mentioned in CK24.
    I think the period you have given is of next month. Hence system is giving that message as next month's  period may not have been opened.
    System allows to release cost estimate only once in a period. Normal practice is to carry out cost run at the end of the month.
    Please do let me know if your problem is solved.
    regards,
    makrand

Maybe you are looking for