struktur TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)

[Fitur offload cerobong asap TCP tidak digunakan lagi dan tidak boleh digunakan.]

Struktur TCP_OFFLOAD_STATE_DELEGATED berisi variabel yang didelegasikan dari objek status koneksi TCP.

Sintaks

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

Anggota

Header

Struktur OFFLOAD_STATE_HEADER . NDIS mengatur anggota PanjangHeader ke ukuran, dalam byte, dari struktur TCP_OFFLOAD_STATE_DELEGATED. Anggota Header RecognizedOptions dicadangkan.

State

Status koneksi TCP saat ini (lihat RFC 793) sebagai salah satu nilai TCP_OFFLOAD_CONNECTION_STATE berikut:

TcpConnectionClosed

Tidak ada status koneksi.

TcpConnectionListen

Menunggu permintaan koneksi dari TCP dan port jarak jauh apa pun.

TcpConnectionSynSent

Menunggu permintaan koneksi yang cocok setelah mengirim permintaan koneksi.

TcpConnectionSynRcvd

Menunggu pengakuan permintaan koneksi yang mengonfirmasi setelah menerima dan mengirim permintaan koneksi.

TcpConnectionEstablished

Koneksi terbuka: data yang diterima dapat dikirimkan kepada pengguna. Status normal untuk fase transfer data koneksi.

TcpConnectionFinWait1

Menunggu permintaan penghentian koneksi dari TCP jarak jauh, atau pengakuan permintaan penghentian koneksi yang sebelumnya dikirim.

TcpConnectionFinWait2

Menunggu permintaan penghentian koneksi dari TCP jarak jauh.

TcpConnectionCloseWait

Menunggu permintaan penghentian koneksi dari pengguna lokal.

TcpConnectionClosing

Menunggu pengakuan permintaan penghentian koneksi dari TCP jarak jauh.

TcpConnectionLastAck

Menunggu pengakuan permintaan penghentian koneksi yang sebelumnya dikirim ke TCP jarak jauh, yang mencakup pengakuan atas permintaan penghentian koneksinya.

TcpConnectionTimeWait

Menunggu cukup waktu untuk lulus untuk memastikan bahwa TCP jarak jauh menerima pengakuan permintaan penghentian koneksinya.

Perhatikan bahwa tumpukan host dapat membongkar koneksi TCP ketika koneksi berada dalam status apa pun kecuali TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,

Status TcpConnectionSynSent, atau TcpConnectionTimeWait . Tumpukan host dapat mengkueri, memperbarui, membatalkan, atau mengakhiri koneksi TCP terlepas dari status koneksi.

Flags

Dicadangkan untuk penggunaan sistem.

RcvNxt

Nomor urut untuk segmen penerima berikutnya (lihat RCV. BERIKUTNYA dalam RFC 793).

RcvWnd

Ukuran jendela penerima, dalam byte (lihat RCV. WND dalam RFC 793).

SndUna

Nomor urut untuk byte pertama data yang tidak diakui (lihat SND. UNA di RFC 793). Untuk informasi selengkapnya, lihat Mengirim Data yang Berisi Data yang akan ditransmisikan ulang.

SndNxt

Nomor urut untuk byte berikutnya yang akan dikirim pada koneksi (lihat SND. NXT dalam RFC 793). Untuk informasi selengkapnya, lihat Mengirim Data yang Berisi Data yang akan ditransmisikan ulang.

SndMax

Nomor urut maksimum yang telah dikirim pada koneksi. Untuk informasi selengkapnya, lihat Mengirim Data yang Berisi Data yang akan ditransmisikan ulang.

SndWnd

Ukuran jendela kirim, dalam byte (lihat SND. WND dalam RFC 793).

MaxSndWnd

Ukuran jendela kirim maksimum, dalam byte (lihat RFC 813).

SendWL1

Nomor urutan segmen yang digunakan untuk pembaruan jendela terakhir (lihat SND. WL1 di RFC 793).

CWnd

Ukuran jendela kemacetan, dalam byte (lihat cwnd di RFC 2581).

SsThresh

Ambang awal lambat, dalam byte (lihat ssthresh di RFC 2581).

SRtt

Waktu round-trip yang dihaluskan, dalam jam tick (lihat SRTT di RFC 793 dan 2988). Dipertahankan per koneksi karena memperhitungkan jalur akun, host, dan terkadang perilaku aplikasi.

RttVar

Variasi waktu pulang-pergi, dalam jam tick (lihat RTTVAR di RFC 2988).

TsRecent

Nilai tanda waktu untuk dikirim di ACK berikutnya (lihat TS. Terbaru dalam RFC 1323)

TsRecentAge

Lamanya waktu, dalam tanda waktu, karena tanda waktu terbaru diterima (lihat RFC 1323).

TsTime

Nilai saat ini dari tanda waktu yang disesuaikan.

TotalRT

Total waktu, dalam tick jam, yang telah dihabiskan untuk mengirimkan ulang segmen TCP saat ini.

DupAckCount

Jumlah ACL yang telah diterima untuk nomor urut yang sama (lihat RFC 1323).

SndWndProbeCount

Putaran pemeriksaan jendela kirim saat ini. Untuk deskripsi putaran pemeriksaan jendela kirim, lihat Pertahankan Timer.

KeepAlive

Anggota ini adalah serikat yang terdiri dari anggota berikut:

KeepAlive.ProbeCount

Jumlah pemeriksaan keepalive yang telah dikirim yang belum menerima respons (lihat RFC 1122).

KeepAlive.TimeoutDelta

Waktu yang tersisa, dalam jam berdetik, hingga batas waktu keepalive berikutnya (lihat RFC 1122). Perhatikan bahwa nilai -1 segera setelah koneksi TCP dilepaskan menunjukkan bahwa timer keepalive tidak berjalan ketika koneksi dilepaskan. Jika timer keepalive target offload tidak berjalan, target offload harus mengembalikan -1 dalam anggota ini saat menanggapi panggilan ke fungsi MiniportQueryOffload atau fungsi MiniportTerminateOffload.

Retransmit

Anggota ini adalah serikat yang terdiri dari anggota berikut:

Retransmit.Count

Jumlah pengiriman ulang yang telah dikirim (lihat RFC 2581).

Retransmit.TimeoutDelta

Waktu, dalam jam berdetik, tersisa hingga batas waktu pengiriman ulang berikutnya (lihat RFC 2581). Perhatikan bahwa nilai -1 segera setelah koneksi TCP dilepas menunjukkan bahwa timer transmisi ulang tidak berjalan ketika koneksi dilepaskan. Timer transmisi ulang tidak berjalan karena tidak ada pengiriman data yang luar biasa pada koneksi ketika koneksi dilepaskan. Jika timer transmisi ulang target offload tidak berjalan, target offload harus mengembalikan -1 dalam anggota ini saat menanggapi panggilan ke fungsi MiniportQueryOffload atau fungsi MiniportTerminateOffload.

SendDataHead

Penunjuk ke struktur NET_BUFFER_LIST . Struktur NET_BUFFER_LIST ini ada dalam daftar tertaut yang ditujukan oleh anggota NetBufferListChain NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struktur yang segera mendahului struktur TCP_OFFLOAD_STATE_DELEGATED. Jika penunjuk NetBufferListChain adalah NULL, SendDataHead tidak signifikan.

Penunjuk SendDataHead menunjuk ke struktur NET_BUFFER_LIST pertama yang struktur NET_BUFFER-nya telah menyangga data pengiriman yang terkait dengannya.

Variabel ini hanya digunakan dalam operasi offload yang memulai atau mengakhiri operasi offload. Untuk informasi selengkapnya tentang bagaimana variabel ini digunakan, lihat Menangani Pengiriman Data Yang Luar Biasa Selama dan Setelah Operasi Offload dan Menangani Pengiriman Data Yang Berutang Selama Operasi Penghentian Offload.

SendDataTail

Penunjuk ke struktur NET_BUFFER_LIST . Struktur NET_BUFFER_LIST ini ada dalam daftar tertaut yang ditunjukkan oleh anggota NetBufferListChain dari struktur NDIS_MINIPORT_OFFLOAD_BLOCK_LIST yang segera mendahului struktur TCP_OFFLOAD_STATE_DELEGATED. Jika penunjuk NetBufferListChain adalah NULL, SendDataTail tidak signifikan.

Penunjuk SendDataTail menunjuk ke struktur NET_BUFFER_LIST terakhir yang struktur NET_BUFFER-nya telah menyangga data pengiriman yang terkait dengannya.

Variabel ini hanya digunakan dalam operasi offload yang memulai atau mengakhiri operasi offload. Untuk informasi selengkapnya tentang bagaimana variabel ini digunakan, lihat Menangani Pengiriman Data Yang Luar Biasa Selama dan Setelah Operasi Offload dan Menangani Kirim Data Yang Berutang Selama Operasi Penghentian Offload

SendBacklogSize

Target offload menentukan nilai ini untuk menunjukkan jumlah byte data yang seharusnya dimiliki tumpukan host yang luar biasa pada target offload untuk performa optimal. (Ini adalah jumlah byte pengiriman yang telah diteruskan ke target offload tetapi belum diselesaikan oleh target offload.) Variabel dan algoritma spesifik yang digunakan target offload untuk menghitung ukuran backlog kirim bersifat spesifik implementasi. Ukuran backlog kirim dapat menjadi fungsi waktu pulang pergi (RTT) untuk koneksi, bandwidth antarmuka, dan parameter lainnya. Target offload dapat, misalnya, menggunakan minimum bandwidth/produk penundaan dan jendela yang diterima yang diiklankan. Namun, perhatikan bahwa ukuran backlog pengiriman tidak bervariasi sesuai dengan jumlah byte data yang saat ini diposting untuk transmisi pada koneksi.

Tumpukan host dapat mengkueri status yang didelegasikan TCP untuk koneksi guna mendapatkan ukuran backlog pengiriman. Selain itu, target offload dapat menunjukkan perubahan ukuran backlog pengiriman dengan memanggil Fungsi NdisTcpOffloadEventHandler .

Jika target offload tidak mendukung fitur ukuran send-backlog, target tersebut harus menulis nilai 0xFFFFFFFF ke SendBacklogSize saat status yang didelegasikan TCP untuk koneksi dikueri. Variabel SendBacklogSize tidak digunakan dalam operasi penghentian offload.

BufferedData

Penunjuk ke data penerima yang di-buffer. Tumpukan host dapat meneruskan data tersebut ke target offload saat membongkar koneksi TCP. (Untuk informasi selengkapnya, lihat Menangani Data Penerima yang Di-buffer Selama dan Setelah Operasi Offload.) Target offload dapat meneruskan data tersebut ke tumpukan host saat mengunggah koneksi TCP. (Untuk informasi selengkapnya, lihat Menangani Data Penerima yang Di-buffer Selama Operasi Penghentian Offload.)

ReceiveBacklogSize

Target offload menentukan nilai ini untuk menunjukkan jumlah byte data penerima yang di-buffer dalam target offload untuk koneksi TCP yang dilepas. Tumpukan host dapat mengkueri status yang didelegasikan TCP agar koneksi mendapatkan nilai ini. Tumpukan host menggunakan nilai ini untuk memposting satu atau beberapa permintaan terima pada koneksi yang cukup besar untuk menyimpan semua data yang di-buffer.

Jika target offload tidak mendukung fitur ukuran backlog penerimaan, target tersebut harus menulis nilai 0xFFFFFFFF ke ReceiveBacklogSize .

DWnd

Keterangan

Tumpukan host menyediakan nilai awal untuk variabel yang didelegasikan TCP saat membongkar variabel ini ke target offload. Setelah dilepas, variabel yang didelegasikan TCP dimiliki dan dikelola oleh target offload. Hanya target offload yang dapat mengubah nilai variabel yang didelegasikan TCP yang dilepas. Target offload tidak memberi tahu tumpukan host perubahan pada nilai variabel yang didelegasikan TCP yang dibongkar. Namun, tumpukan host dapat mengkueri nilai variabel yang didelegasikan TCP yang dilepas, yang menyebabkan NDIS memanggil fungsi MiniportQueryOffload target offload. Ketika tumpukan host mengakhiri offload objek status koneksi TCP dengan menyebabkan NDIS memanggil target offload Fungsi MiniportTerminateOffload , target offload meneruskan nilai variabel yang didelegasikan TCP dalam objek status koneksi TCP yang dihentikan kembali ke tumpukan host.

Ketika diteruskan ke target offload, struktur TCP_OFFLOAD_STATE_DELEGATED dikaitkan dengan NDIS_MINIPORT_OFFLOAD_BLOCK_LIST struktur, yang berisi header yang diformat sebagai struktur NDIS_OBJECT_HEADER . Anggota Revisi dari struktur NDIS_OBJECT_HEADER, dalam hal ini, menentukan nomor revisi struktur TCP_OFFLOAD_STATE_DELEGATED.

Persyaratan

Persyaratan Nilai
Header ndischimney.h (termasuk Ndischimney.h)

Lihat juga

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST