JP4875126B2 - Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols - Google Patents

Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols Download PDF

Info

Publication number
JP4875126B2
JP4875126B2 JP2009217450A JP2009217450A JP4875126B2 JP 4875126 B2 JP4875126 B2 JP 4875126B2 JP 2009217450 A JP2009217450 A JP 2009217450A JP 2009217450 A JP2009217450 A JP 2009217450A JP 4875126 B2 JP4875126 B2 JP 4875126B2
Authority
JP
Japan
Prior art keywords
network adapter
data
iscsi
module
tcp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2009217450A
Other languages
Japanese (ja)
Other versions
JP2010063110A (en
Inventor
ミナミ ジョン・シゲト
ウイェシロ ロビン・ヤス
ジョンソン マイケル・ワード
ス スティーブ
スミス マイケル・ジョン・セバスティアン
チェン アッディソン・クウアンミン
ドクター ミヒル・シャイレシュブハイ
グリーンフィールド ダニエル・レオ
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/456,871 external-priority patent/US7535913B2/en
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2010063110A publication Critical patent/JP2010063110A/en
Application granted granted Critical
Publication of JP4875126B2 publication Critical patent/JP4875126B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Description

本発明は電気通信、特にデータの送信および受信に使用される通信プロトコルを伴ってデータを処理する方法および装置に関する。   The present invention relates to a method and apparatus for processing data with a communication protocol used for telecommunications, in particular data transmission and reception.

コンピュータネットワークはデータを送信および受信するための種々の通信プロトコルの規定を必要とする。典型的に、コンピュータネットワークは、共に通信できるように接続されているコンピュータ、プリンタ、他のコンピュータ周辺機器のような装置のシステムを具備している。データは通信プロトコル標準を使用してネットワークを通して通信されるデータパケットにより各これらの装置間で転送される。多数の異なるプロトコル標準が現在使用されている。ポピュラーなプロトコルの例はインターネットプロトコル(IP)、インターネットワークパケット交換(IPX)、シーケンストパケット交換(SPX)、送信制御プロトコル(TCP)、ポイント・ツー・ポイントプロトコル(PPP)である。各ネットワーク装置はプロトコルを翻訳しデータを処理するハードウェアとソフトウェアの組合わせを含んでいる。 Computer networks require the definition of various communication protocols for sending and receiving data. Typically, a computer network comprises a system of devices such as computers, printers, and other computer peripherals that are communicatively connected together. Data is transferred between each of these devices by data packets communicated over the network using a communication protocol standard. A number of different protocol standards are currently in use. Examples of popular protocols are Internet Protocol (IP), Internetwork Packet Exchange (IPX), Sequenced Packet Exchange (SPX), Transmission Control Protocol (TCP), and Point-to-Point Protocol (PPP). Each network device includes a combination of hardware and software that translates protocols and processes data.

一例は構内網(LAN)システムに取付けられたコンピュータであり、ここではネットワーク装置はリンク層プロトコルを処理するハードウェアと、ネットワーク、転送、通信プロトコルおよび情報データ処理を管理するソフトウェアとを使用する。ネットワーク装置は通常、1つのリンク層プロトコルをハードウェアで構成し、取付けられたコンピュータをその特定のLANプロトコルにのみ限定する。高次のプロトコル、例えばネットワーク、転送および通信プロトコルは、データハンドラと共にソフトウェアプログラムとして構成され、一度これらがネットワーク装置のハードウェアを通してシステムメモリに送られるとデータを処理する。この構成の利点は、コンピュータのような汎用装置が多数の異なるネットワークセットアップで使用され、必要とされる随意選択的なネットワークアプリケーションをサポートすることを可能にすることである。しかしながら、この構成の結果、システムはコンピュータのオペレーティングシステム(O.S.)とコンピュータと、およびネットワークハードウェアへ通信する異なるソフトウェアプロトコルおよびデータハンドラを調整するために、高いプロセッサオーバーヘッドと、多量のシステムメモリと、複雑な構成セットアップをコンピュータユーザ側で必要とする。   An example is a computer attached to a local area network (LAN) system, where the network device uses hardware to handle link layer protocols and software to manage network, transfer, communication protocols and information data processing. A network device typically configures one link layer protocol in hardware and limits the attached computer to only that particular LAN protocol. Higher-order protocols, such as network, transfer and communication protocols, are configured as software programs with data handlers to process the data once they are sent to the system memory through the network device hardware. The advantage of this configuration is that it allows a general purpose device such as a computer to be used in a number of different network setups to support the optional network applications required. However, as a result of this configuration, the system has a high processor overhead and a large amount of system to coordinate different software protocols and data handlers that communicate to the computer operating system (OS) and the computer, and network hardware. Requires computer and complicated configuration setup on the computer user side.

処理時間で必要とされるこの高いオーバーヘッドは1996年1月16日出願のSchrierの米国特許第5,485,460号明細書に示されており、これは装置で同一のプロトコルを実行する多数のソフトウェアプロトコルスタックを動作する方法を示している。このタイプの構成はディスクオペレーティングシステム(DOS)ベースのマシーン動作マイクロソフトウィンドウズで使用されている。通常の動作中、一度、ハードウェアが転送またはリンク層プロトコルを確認すると、結果的なデータパケットはパケットフレームフォーマットを決定し、任意の特定のフレームヘッダを分解するソフトウェア層へ転送される。パケットはその後、異なるプロトコルスタックへ送信され、そこで特定のプロトコルに対して評価される。しかしながらパケットはそれが容認されるか拒否される前に、幾つかのプロトコルスタックへ転送されることができる。ソフトウェアプロトコルスタックにより生成される時間遅延はオーディオおよびビデオ伝送が実時間で処理されることを妨げ、データは再生される前に緩衝されなければならない。プロトコルの処理に必要とされる処理オーバーヘッド量は非常に高く、極めて厄介であり、強力な中央処理装置(CPU)と大容量のメモリを有するアプリケーション向きにされることが明白である。   This high overhead required in processing time is shown in Schrier, US Pat. No. 5,485,460, filed Jan. 16, 1996, which includes multiple software protocol stacks running the same protocol on the device. Shows how it works. This type of configuration is used in disk operating system (DOS) based machine operation Microsoft Windows. During normal operation, once the hardware confirms the transfer or link layer protocol, the resulting data packet is transferred to a software layer that determines the packet frame format and resolves any particular frame header. The packet is then sent to a different protocol stack where it is evaluated for a particular protocol. However, a packet can be forwarded to several protocol stacks before it is accepted or rejected. The time delay generated by the software protocol stack prevents audio and video transmissions from being processed in real time, and the data must be buffered before being played. Obviously, the amount of processing overhead required to process the protocol is very high, extremely cumbersome, and intended for applications with powerful central processing units (CPUs) and large amounts of memory.

伝統的なネットワーク装置のモデルに適合しないコンピュータプロダクトが市場に入っている。これらのプロダクトのいくつかの例は、ページャ、セルラ電話、ゲームマシーン、スマート電話機、テレビジョンが含まれている。大部分のこれらのプロダクトは小さいフットプリント、8ビット制御装置、限定されたメモリを有し、または非常に限定された形態のファクタを必要とする。これらのような消費者プロダクトは簡単であり、廉価で低電力消費を必要とする。前述のプロトコル構成はこれらの要求を満たすために非常に多くのハードウェアおよびプロセッサパワーを必要とする。このような構成の複雑性によって価格が効率的な方法で消費者プロダクトに一体化することは困難である。ネットワークアクセスが廉価で低電力の小さいフォームファクタの装置で容易に製造されるように簡単にされることができるならば、これらのプロダクトはインターネットのようなネットワークサービスにアクセスできる。   Computer products that do not fit the traditional network device model are on the market. Some examples of these products include pagers, cellular phones, game machines, smart phones, and televisions. Most of these products have a small footprint, 8-bit controller, limited memory, or require a very limited form factor. Consumer products like these are simple, inexpensive and require low power consumption. The protocol configuration described above requires a great deal of hardware and processor power to meet these requirements. This complexity of configuration makes it difficult to integrate into consumer products in a cost effective manner. These products can access network services such as the Internet if network access can be simplified to be easily manufactured with low cost, low power, small form factor devices.

通信ネットワークはデータの送信および受信のためのプロトコルを使用する。通信ネットワークは、典型的に共に通信できるように接続されているコンピュータ、プリンタ、記憶装置、およびその他のコンピュータ周辺機器のようなノードとも呼ばれるネットワーク装置の集合を含んでいる。データはプロトコルを使用して通信ネットワークを通して送信されるデータパケットを使用して、これらの各ネットワーク装置間で転送される。多数の異なるプロトコルが現在使用されている。ポピュラーなプロトコルの例にはインターネットプロトコル(IP)、インターネットワークパケット交換(IPX)プロトコル、シーケンストパケット交換(SPX)プロトコル、送信制御プロトコル(TCP)、ポイント・ツー・ポイントプロトコル(PPP)および開発中のその他の類似の新しいプロトコルが含まれる。ネットワーク装置はプロトコルおよびデータパケットを処理するハードウェアとソフトウェアの組合わせを含んでいる。   Communication networks use protocols for data transmission and reception. A communications network includes a collection of network devices, also called nodes, such as computers, printers, storage devices, and other computer peripherals that are typically connected to communicate with each other. Data is transferred between each of these network devices using data packets transmitted over the communication network using a protocol. A number of different protocols are currently in use. Examples of popular protocols are Internet Protocol (IP), Internetwork Packet Exchange (IPX) Protocol, Sequenced Packet Exchange (SPX) Protocol, Transmission Control Protocol (TCP), Point-to-Point Protocol (PPP) and in development Other similar new protocols are included. The network device includes a combination of hardware and software that processes protocols and data packets.

1978年、国際標準化機構(ISO)、即ち標準設定団体は開放型システム間相互接続(OSI)モデルとして知られているネットワーク基準モデルを作成した。このOSIモデルは7つの概念的な層を含んでいる。即ち、1)ネットワーク装置をネットワークへ接続する物理的なコンポーネントを規定する物理(PHY)層と、2)データパケットを含んでいるフレームとして知られているディスクリートな形態でデータの動きを制御するデータリンク層と、3)特定のプロトコルにしたがってデータパケットを構築するネットワーク層と、4)データパケットの確実な転送を確保する転送層と、5)ネットワーク装置間で2方向の通信を可能にするセッション層と、6)データを表す方法を制御し、データが正しい形態であることを確認するプレゼンテーション層と、7)ファイルの共有、メッセージ処理、印刷等を行うアプリケーション層である。時には、セッションおよびプレゼンテーション層はこのモデルから省略される。現代の通信ネットワークおよびインターネットがどのようにISOの7つの層モデルに関連するかの説明については、例えばテキスト“Internetworking with TCP/IP”、Douglas E. Corner(第1巻、第4版、ISBN 020 1633469)の第11章と、テキスト“TCP/IP Illustrated”、W. Richard Stevens(第1巻、ISBN 0130183806)の第1章を参照にされたい。   In 1978, the International Organization for Standardization (ISO), the standard-setting body, created a network reference model known as the Open Systems Interconnection (OSI) model. This OSI model includes seven conceptual layers. That is, 1) a physical (PHY) layer that defines physical components that connect a network device to the network, and 2) data that controls the movement of data in a discrete form known as a frame containing data packets. A link layer, 3) a network layer that constructs data packets according to a specific protocol, 4) a transfer layer that ensures reliable transfer of data packets, and 5) a session that allows two-way communication between network devices. 6) a presentation layer that controls how data is represented and confirms that the data is in the correct form, and 7) an application layer that performs file sharing, message processing, printing, and the like. Sometimes the session and presentation layers are omitted from this model. For an explanation of how modern communications networks and the Internet relate to the seven-layer model of ISO, see for example the text “Internetworking with TCP / IP”, Douglas E. Corner (Volume 1, 4th Edition, ISBN 020 1633469) and the text “TCP / IP Illustrated”, W. Richard Stevens (Vol. 1, ISBN 0130183806), Chapter 1.

ネットワーク装置の一例は構内網(LAN)に取付けられたコンピュータであり、ここではネットワーク装置は物理およびデータリンク層を管理するためにホストコンピュータのハードウェアを使用し、ネットワーク、転送、セッション、プレゼンテーション、アプリケーション層を管理するためにホストコンピュータで動作するソフトウェアを使用する。ネットワーク、転送、セッション、プレゼンテーション層はプロトコルスタックとも呼ばれるプロトコル処理ソフトウェアを使用して実行される。アプリケーション層は一度データがネットワーク装置のハードウェアおよびプロトコル処理ソフトウェアを通して転送されるとデータを処理するアプリケーションソフトウェアを使用して実行される。このソフトウェアベースのプロトコル処理構造の利点は、汎用コンピュータが多数の異なるタイプの通信ネットワークで使用されることを可能にし、必要とされる任意のアプリケーションをサポートすることである。しかしながら、このソフトウェアベースのプロトコル処理構造の結果として、ネットワーク、転送、セッション、プレゼンテーション層を処理するためにホストコンピュータの中央処理装置(CPU)で動作するプロトコル処理ソフトウェアのオーバーヘッドは非常に高い。ソフトウェアがデータを処理するとき、データがコピーされ移動されなければならないので、ソフトウェアベースのプロトコル処理構造はまたホストコンピュータで大容量のメモリを必要とする。プロトコル処理ソフトウェアにより必要とされる高いオーバーヘッドは1996年1月16日出願のSchrierによる米国特許第5,485,460号明細書に記載され、これは多数のソフトウェアプロトコルスタックの動作方法を教示している。このタイプのソフトウェアベースのプロトコル処理構造は例えばコンピュータが動作するマイクロソフトウインドウズで使用される。   An example of a network device is a computer attached to a local area network (LAN), where the network device uses the host computer's hardware to manage the physical and data link layers, and the network, transfer, session, presentation, Use software running on the host computer to manage the application layer. The network, transport, session, and presentation layers are implemented using protocol processing software, also called a protocol stack. The application layer is executed using application software that processes the data once it has been transferred through the network device hardware and protocol processing software. The advantage of this software-based protocol processing structure is that it allows a general purpose computer to be used in many different types of communication networks and supports any required application. However, as a result of this software-based protocol processing structure, the overhead of the protocol processing software that runs on the central processing unit (CPU) of the host computer to process the network, transfer, session, and presentation layers is very high. Software-based protocol processing structures also require a large amount of memory at the host computer because the data must be copied and moved when the software processes the data. The high overhead required by protocol processing software is described in US Pat. No. 5,485,460 by Schrier filed Jan. 16, 1996, which teaches how to operate a number of software protocol stacks. This type of software-based protocol processing structure is used, for example, in Microsoft Windows running computers.

ネットワーク装置の正常動作中、ネットワークソフトウェアのハードウェアは、その後ホストコンピュータのプロトコル処理ソフトウェアへ送信されるデータパケットを抽出する。プロトコル処理ソフトウェアはホストコンピュータで動作し、このホストコンピュータはプロトコル処理ソフトウェアにより行われるタスクに対して最適化されていない。プロトコル処理ソフトウェアと汎用目的のホストコンピュータの組合わせはプロトコル処理に対して最適化されておらず、それによって性能を限定されてしまう。プロトコル処理ソフトウェアの実行により生成される時間遅延のようなプロトコル処理における性能の制限は有害であり、例えばオーディオおよびビデオ送信が実時間で処理されることを妨害し、または通信ネットワークのフルスピードおよび容量が使用されることを妨害する。プロトコルの処理に必要とされるホストコンピュータCPUのオーバーヘッド量は非常に高く、極めて厄介であり、ホストコンピュータでCPUと大容量のメモリの使用を必要とすることが明白である。   During normal operation of the network device, the network software hardware then extracts data packets that are sent to the host computer's protocol processing software. The protocol processing software runs on a host computer, which is not optimized for the tasks performed by the protocol processing software. The combination of protocol processing software and a general purpose host computer is not optimized for protocol processing, thereby limiting performance. Limiting performance in protocol processing, such as time delays generated by the execution of protocol processing software, is detrimental, for example, preventing audio and video transmissions from being processed in real time, or the full speed and capacity of a communications network Interferes with the use. It is clear that the amount of host computer CPU overhead required to process the protocol is very high and extremely cumbersome and requires the host computer to use a CPU and a large amount of memory.

伝統的なネットワーク装置のモデルに適合しない新しい消費者および産業プロダクトが市場に参入し、同時にネットワーク速度は増加し続けている。これらの消費者プロダクトの例は、インターネットエネーブルセル電話、インターネットエネーブルTV、インターネット機器である。産業プロダクトの例はネットワークインターフェースカード(NIC)、インターネットルータ、インターネットスイッチ、インターネット記憶サーバである。ソフトウェアベースのプロトコル処理構成はこれらの新しい消費者および産業上のプロダクトの要求を満たすのに効率的ではない。ソフトウェアベースのプロトコル処理構成は複雑であるために効率的な価格で消費者プロダクトに含ませることが困難である。ソフトウェアベースのプロトコル処理構成は処理パワーを必要とするので高速度の産業上のプロダクトに一体化することが困難である。プロトコルの処理はこれが廉価で低電力で高性能の集積された小さいフォームファクタ装置で容易に製造されるように簡単にされ、最適化されることができるならば、これらの消費者および産業プロダクトはインターネットのような任意の通信ネットワークでデータを読取り、書込むことができる。   New consumer and industrial products that do not fit the traditional network equipment model have entered the market and at the same time the network speed continues to increase. Examples of these consumer products are Internet enabled cell phones, Internet enabled TVs, and Internet equipment. Examples of industrial products are network interface cards (NICs), internet routers, internet switches, internet storage servers. Software-based protocol processing configurations are not efficient to meet the demands of these new consumer and industrial products. Software-based protocol processing configurations are complex and difficult to include in consumer products at an efficient price. Software-based protocol processing configurations require processing power and are difficult to integrate into high speed industrial products. If the processing of the protocol can be simplified and optimized so that it can be easily manufactured in an inexpensive, low power, high performance integrated small form factor device, these consumer and industrial products will Data can be read and written on any communication network such as the Internet.

ソフトウェアベースとは反対に、ハードウェアベースのプロトコル処理構成のインターネットチューナがJ. Minami、R. Koyama、M. Johnson、M. Shinohara、T. Poff、D. BurkesのMultiple network protocol encoder/decoder and data processor、米国特許第6,034,963号明細書(2000年3月7日)に記載されている(以下’963号明細書という)。このインターネットチューナはプロトコルを処理するための基本的な技術を提供している。   Contrary to software-based, hardware-based protocol processing configuration Internet tuners are J. Minami, R. Koyama, M. Johnson, M. Shinohara, T. Poff, D. Burkes Multiple network protocol encoder / decoder and data processor, U.S. Pat. No. 6,034,963 (March 7, 2000) (hereinafter referred to as the '963 specification). This Internet tuner provides basic techniques for processing protocols.

高い通信ネットワーク速度に対するハードウェアによる解決策を提供するギガビットのイーサネット(登録商標)アダプタを提供することが有効である。さらに多数の通信プロトコルに適合するギガビット・イーサネット(登録商標)・アダプタを提供することが有効である。   It would be advantageous to provide a Gigabit Ethernet adapter that provides a hardware solution for high communication network speeds. It is also effective to provide a Gigabit Ethernet (registered trademark) adapter that is compatible with many communication protocols.

本発明はギガビット・イーサネット(登録商標)・アダプタで実施される。本発明によるシステムは高いネットワーク通信速度を処理するコンパクトなハードウェアの解決手段を提供する。さらに、本発明はモジュール構造および設計により多数の通信プロトコルに適合する。本発明の好ましい実施形態はネットワークプロトコルを復号および符号化しデータを処理する統合ネットワークアダプタを提供する。このネットワークアダプタはストリーミングデータを処理するための、配線接続されたデータパスと、パケットの受信および送信とパケットの符号化および復号化のための、配線接続されたデータパスと、複数の並列の、配線接続されたプロトコル状態マシーンとを具備し、ここで各プロトコル状態マシーンは特別なネットワークプロトコル用に最適化され、前記プロトコル状態マシーンは並列で処理を実行し、さらに、トラフィックに基づいて共有リソースをスケジュールする手段を具備している。   The present invention is implemented with a Gigabit Ethernet adapter. The system according to the present invention provides a compact hardware solution that handles high network communication speeds. Furthermore, the present invention is compatible with a number of communication protocols due to its modular structure and design. The preferred embodiment of the present invention provides an integrated network adapter that decodes and encodes network protocols and processes data. The network adapter is a wired data path for processing streaming data, a wired data path for receiving and transmitting packets, and encoding and decoding packets, and a plurality of parallel, A wired protocol state machine, wherein each protocol state machine is optimized for a particular network protocol, the protocol state machine performs processing in parallel, and further allocates shared resources based on traffic. Means for scheduling.

本発明にしたがったNICカード構造の概略ブロック図。1 is a schematic block diagram of a NIC card structure according to the present invention. 本発明にしたがったネットワークに取付けられた装置のインターフェースの概略ブロック図。1 is a schematic block diagram of an interface of a device attached to a network according to the present invention. FIG. 本発明にしたがったシステムのレベルブロック図。1 is a level block diagram of a system according to the present invention. 本発明にしたがったギガビット・イーサネット(登録商標)・アダプタの高レベルのブロック図。1 is a high level block diagram of a Gigabit Ethernet adapter in accordance with the present invention. FIG. 本発明にしたがったMACインターフェースモジュールで使用されるI/Oの概略を示したブロック図。FIG. 2 is a block diagram showing an outline of I / O used in a MAC interface module according to the present invention. 本発明にしたがったイーサネット(登録商標)インターフェースの概略ブロック図。1 is a schematic block diagram of an Ethernet interface according to the present invention. FIG. 本発明にしたがったアドレスフィルタおよびパケットタイプパーサ/モジュールの概略ブロック図。1 is a schematic block diagram of an address filter and packet type parser / module according to the present invention. FIG. 本発明にしたがったアドレスフィルタおよびパケットタイプパーサ/モジュールの動作を示したタイミング図。FIG. 4 is a timing diagram illustrating the operation of an address filter and packet type parser / module according to the present invention. 本発明にしたがったデータ整列器モジュールの概略ブロック図。2 is a schematic block diagram of a data aligner module according to the present invention. FIG. 本発明にしたがったARPモジュールの概略ブロック図。1 is a schematic block diagram of an ARP module according to the present invention. 本発明にしたがったARPキャッシュの概略ブロック図。1 is a schematic block diagram of an ARP cache according to the present invention. 本発明にしたがった送信待ち行列エントリフォーマットを示す図。FIG. 4 shows a transmission queue entry format according to the present invention. 本発明にしたがった探索テーブルエントリフォーマットを示す図。The figure which shows the search table entry format according to this invention. 本発明にしたがったARPキャッシュエントリフォーマットを示す図。FIG. 4 shows an ARP cache entry format according to the present invention. 本発明にしたがったARP探索プロセスを示すフロー図。FIG. 5 is a flow diagram illustrating an ARP search process according to the present invention. 本発明にしたがったIPモジュールの概略ブロック図。1 is a schematic block diagram of an IP module according to the present invention. 本発明にしたがったIP発生器のブロック図。FIG. 3 is a block diagram of an IP generator according to the present invention. 本発明にしたがったインジェクタによるデータフローを示すブロック図。FIG. 3 is a block diagram illustrating a data flow by an injector according to the present invention. 本発明にしたがったTCPモジュールのトップレベルのブロック図。1 is a top level block diagram of a TCP module according to the present invention. FIG. 本発明にしたがったTCP受信データフローを示す図。FIG. 4 is a diagram showing a TCP reception data flow according to the present invention. 本発明にしたがったVSOCK/Rcv状態ハンドラの制御ブロックサーチ解決のフロー図。FIG. 5 is a flow diagram of control block search resolution of a VSOCK / Rcv state handler according to the present invention. 本発明にしたがった基本的なデータのフロー図。FIG. 3 is a basic data flow diagram according to the present invention. 本発明にしたがったソケット受信データのフロー図。FIG. 4 is a flow diagram of socket reception data according to the present invention. 本発明にしたがったソケット送信流を示す図。FIG. 6 shows a socket transmission flow according to the present invention. 本発明にしたがったデータのフロー図。FIG. 4 is a data flow diagram according to the present invention. 本発明にしたがったモジュールのブロック図。FIG. 3 is a block diagram of a module according to the present invention. 本発明にしたがったアルゴリズムを示す図。The figure which shows the algorithm according to this invention. 図27に示されているアルゴリズム全体のブロック図。FIG. 28 is a block diagram of the entire algorithm shown in FIG. 27. 本発明にしたがった論理手段を示す図。FIG. 4 is a diagram showing logic means according to the present invention. 本発明にしたがったオプションのフォーマット図。FIG. 4 is an optional format diagram according to the present invention. 本発明にしたがった別のオプションのフォーマット図。FIG. 6 is a format diagram of another option according to the present invention. 本発明にしたがった別のオプションのフォーマット図。FIG. 6 is a format diagram of another option according to the present invention. 本発明にしたがったさらに別のオプションのフォーマット図。FIG. 4 is a format diagram of yet another option according to the present invention. 本発明にしたがったさらに別のオプションのフォーマット図。FIG. 4 is a format diagram of yet another option according to the present invention. 本発明にしたがったIPルータの概略ブロック図。1 is a schematic block diagram of an IP router according to the present invention. 本発明にしたがったIPルートエントリのフォーマット図。FIG. 4 is a format diagram of an IP route entry according to the present invention. 本発明にしたがったルートをリクエストし受信するために使用されるシグナリングの説明図。FIG. 6 is an illustration of signaling used to request and receive a route according to the present invention. 本発明にしたがった例外ハンドラの概略ブロック図。FIG. 3 is a schematic block diagram of an exception handler according to the present invention. 本発明にしたがったM1メモリマップを示す図。FIG. 4 shows an M1 memory map according to the present invention. 本発明にしたがったサンプルメモリマップを示す図。FIG. 4 shows a sample memory map according to the present invention. 本発明にしたがったデータのフローのブロック図。FIG. 3 is a block diagram of a data flow according to the present invention. 本発明にしたがったmtxarbサブユニットのブロック図。FIG. 4 is a block diagram of an mtxarb subunit according to the present invention. 本発明にしたがったデータのフローのブロック図。FIG. 3 is a block diagram of a data flow according to the present invention. 本発明にしたがったmcbarbサブユニットのブロック図。FIG. 3 is a block diagram of an mcbarb subunit according to the present invention. 本発明にしたがったネットワークスタックのデフォルトメモリマップを示す図。FIG. 4 shows a default memory map of a network stack according to the present invention. 本発明にしたがったデフォルト設定を示す図。The figure which shows the default setting according to this invention. 本発明にしたがった共にチャンネルを形成する一致したIBおよびSB待ち行列を示す図。FIG. 5 shows a matched IB and SB queue that together form a channel in accordance with the present invention. 本発明にしたがった命令ブロック待ち行列の処理のフロー図。FIG. 5 is a flow diagram of instruction block queue processing in accordance with the present invention. 本発明にしたがったネットワークスタック、オンチッププロセッサ、ホスト間を通過するar状態ブロックのデータのフローを示すブロック図。FIG. 6 is a block diagram showing the data flow of an ar state block passing between a network stack, an on-chip processor, and a host according to the present invention. 本発明にしたがったiSCSI送信データパスのブロック図。FIG. 3 is a block diagram of an iSCSI transmit data path according to the present invention. 本発明にしたがったiSCSI送信フローチャートを示す図。FIG. 4 is a diagram showing an iSCSI transmission flowchart according to the present invention. 本発明にしたがった4バイトバッファの使用の説明図。FIG. 4 is an illustration of the use of a 4-byte buffer according to the present invention. 本発明にしたがったiSCSI受信データパスのブロック図。FIG. 3 is a block diagram of an iSCSI receive data path according to the present invention. 本発明にしたがった2つのリクエストに分割された転送を示す説明図。Explanatory drawing which shows the transfer divided | segmented into two requests according to this invention. 本発明にしたがった別々のリクエストに分割されたホストへのDMA転送を示す図。FIG. 6 illustrates a DMA transfer to a host that is divided into separate requests according to the present invention. 本発明にしたがったSAブロックフローを示す図。FIG. 6 shows an SA block flow according to the present invention. 本発明によるTX AH転送SAブロックのフォーマットを示す図。The figure which shows the format of the TX AH transfer SA block by this invention. 本発明によるTX ESP−1転送SAブロックのフォーマットを示す図。The figure which shows the format of TX ESP-1 transfer SA block by this invention. 本発明によるTX ESP−2転送SAブロックのフォーマットを示す図。The figure which shows the format of TX ESP-2 transfer SA block by this invention. 本発明によるTX AHトンネルSAブロックのフォーマットを示す図。The figure which shows the format of the TX AH tunnel SA block by this invention. 本発明によるTX AHトンネルSAブロックのフォーマットを示す図。The figure which shows the format of the TX AH tunnel SA block by this invention. 本発明によるTX ESP−2トンネルSAブロックのフォーマットを示す図。The figure which shows the format of TX ESP-2 tunnel SA block by this invention. 本発明によるRX AH SAブロックのフォーマットを示す図。The figure which shows the format of the RX AH SA block by this invention. 本発明によるRX ESP−1 SAブロックのフォーマットを示す図。The figure which shows the format of the RX ESP-1 SA block by this invention. 本発明によるRX ESP−2 SAブロックのフォーマットを示す図。The figure which shows the format of the RX ESP-2 SA block by this invention. 本発明にしたがったIPSEC論理に対する全体的なフローを示すブロック図。2 is a block diagram illustrating the overall flow for IPSEC logic in accordance with the present invention. FIG. 本発明にしたがったデータのフローの概略ブロック図。FIG. 3 is a schematic block diagram of a data flow according to the present invention. 本発明による受信されたIPSECパケットに対するデータパスのフローのブロック図。FIG. 4 is a block diagram of a data path flow for a received IPSEC packet according to the present invention. 本発明にしたがったIPSECアンチリレイアルゴリズムを示すフロー図。FIG. 4 is a flow diagram illustrating an IPSEC anti-relay algorithm according to the present invention.

本発明はギガビット・イーサネット(登録商標)・アダプタで実施される。本発明にしたがったシステムは高いネットワーク通信速度を処理するためのコンパクトなハードウエアによる解決手段を提供する。さらに、本発明はモジュール構造および設計を介して多数の通信プロトコルに適合する。   The present invention is implemented with a Gigabit Ethernet adapter. The system according to the present invention provides a compact hardware solution for handling high network communication speeds. Furthermore, the present invention is compatible with a number of communication protocols through a modular structure and design.

[前置き]
[一般的な説明]
本発明は高速度ハードウェアネットワークスタックで使用されるアーキテクチャ(以下IT10Gと呼ぶ)を含んでいる。ここでの説明はデータパスおよびフロー、レジスタ、アプリケーションの理論およびタイミングを規定する。他のシステムブロックと組合わせて、IT10Gは回線速度のTCP/IP処理のコアを提供する。
[Preface]
[General description]
The present invention includes an architecture (hereinafter referred to as IT10G) used in a high speed hardware network stack. The description here defines the data path and flow, registers, application theory and timing. In combination with other system blocks, IT10G provides a core for line speed TCP / IP processing.

[定義]
ここで使用される以下の用語は対応する意味を有している:
10Gbps 10ギガビット(毎秒10,000,000,000ビット)
ACK 肯定応答
AH 認証ヘッダ
AHS 追加ヘッダセグメント
ARP アドレス解決プロトコル
BHS 基本ヘッダセグメント
CB 制御ブロック
CPU 中央処理装置
CRC 巡回冗長検査
DAV 利用可能なデータ
DDR ダブルデータレート
DIX デジタルインテルゼロックス
DMA 直接メモリアクセス
DOS サービスの否認
DRAM ダイナミックRAM
EEPROM 電気的に消去可能なPROM
ESP カプセル化セキュリティペイロード
FCIP IPにわたるファイバチャンネル
FIFO 先入れ先出し
FIM 固定したインターバルのマーカー
FIN 終了
Gb ギガビット(毎秒10,000,000,000ビット)
HDMA ホストDMA
HO 半分オープン
HR ホスト再送信
HSU ヘッダ記憶装置
IB 命令ブロック
ICMP インターネット制御メッセージプロトコル
ID 識別
IGMP インターネットグループ管理プロトコル
IP インターネットプロトコル
IPsec IPセキュリティ
IPX インターネットパケット交換
IQ 命令ブロック待ち行列
iSCSI インターネット小型コンピュータシステムインターフェース
ISN 初期シーケンス番号
LAN 構内網
LDMA ローカルDMA
LIP ローカルIPアドレス
LL リンクされたリスト
LP ローカルポート
LSB 下位桁バイト
LUT 探索テーブル
MAC メディアアクセス制御装置
MCB CBメモリ
MDL メモリ記述子リスト
MIB 管理情報ベース
MII メディア独立インターフェース
MPLS マルチプロトコルラベルスイッチング
MRX 受信メモリ
MSB 上位桁ビット
MSS 最大セグメントサイズ
MTU 最大送信ユニット
MTX TX(送信)メモリ
NAT ネットワークアドレス変換
NIC ネットワークインターフェースカード
NS ネットワークスタック
OR オア論理機能
PDU プロトコルデータユニット
PIP ピアIPアドレス
PP ピアポート
PROM プログラム可能なROM
PSH プッシュ
PV 有効なポインタ
QoS サービス品質
RAM ランダムアクセスメモリ
RARP リバースアドレス解決プロトコル
Rcv 受信
RDMA 遠隔DMA
ROM 読取専用メモリ
RST リセット
RT ラウンドトリップ
RTO 再送信タイムアウト
RTT ラウンドトリップ時間
RX 受信
SA セキュリティ・アソシエーション
SB 状態ブロック
SEQ シーケンス
SM 状態メッセージ
SNMP シンプルネットワーク管理プロトコル
SPI セキュリティパラメータインデックス
Stagen 状態発生器
SYN 同期
TCP 転送制御プロトコル
TOE 転送オフロードエンジン
TOS サービスのタイプ
TTL 生存時間
TW 待機時間
TX 送信
UDP ユーザデータグラムプロトコル
URG 緊急
VLAN 仮想LAN
VSOCK 仮想ソケット
WS ウィンドウスケーリング
XMTCTL 送信制御
XOR 排他的オア
[Definition]
The following terms used herein have corresponding meanings:
10 Gbps 10 Gigabit (10,000,000,000 bits per second)
ACK Acknowledgment AH Authentication header AHS Additional header segment ARP Address resolution protocol BHS Basic header segment CB Control block CPU Central processing unit CRC Cyclic redundancy check DAV Available data DDR Double data rate DIX Digital Intel Xerox DMA Direct memory access DOS Service denial DRAM Dynamic RAM
EEPROM PROM that is electrically erasable
Fiber Channel FIFO over ESP Encapsulated Security Payload FCIP IP First In First Out FIM Fixed Interval Marker FIN Finish Gb Gigabit (10,000,000,000 bits per second)
HDMA Host DMA
HO Half-open HR Host retransmission HSU Header storage IB Command block ICMP Internet control message protocol ID Identification IGMP Internet group management protocol IP Internet protocol IPsec IP security IPX Internet packet exchange IQ Command block queue iSCSI Internet Internet small computer system interface ISN Initial sequence Number LAN Local network LDMA Local DMA
LIP Local IP address LL Linked list LP Local port LSB Lower digit byte LUT Search table MAC Media access controller MCB CB memory MDL Memory descriptor list MIB Management information base MII Media independent interface MPLS Multiprotocol label switching MRX Receive memory MSB Upper Digit Bit MSS Maximum Segment Size MTU Maximum Transmission Unit MTX TX (Transmission) Memory NAT Network Address Translation NIC Network Interface Card NS Network Stack OR Logical Function PDU Protocol Data Unit PIP Peer IP Address PP Peer Port PROM Programmable ROM
PSH Push PV Valid pointer QoS Quality of service RAM Random access memory RARP Reverse address resolution protocol Rcv Receive RDMA Remote DMA
ROM read only memory RST reset RT round trip RTO retransmission timeout RTT round trip time RX receiving SA security association SB state block SEQ sequence SM state message SNMP simple network management protocol SPI security parameter index Stagen state generator SYN synchronous TCP transfer control protocol TOE Transfer offload engine TOS Service type TTL Time to live TW Wait time TX Transmission UDP User datagram protocol URG Emergency VLAN Virtual LAN
VSOCK Virtual socket WS Window scaling XMTCTL Transmission control XOR Exclusive OR

[アプリケーションの概要]
[概要]
帯域幅が増加し続けるとき、TCP/IP通信を処理する能力はシステムプロセッサのオーバーヘッドを超えるようになる。多数のソースはイーサネット(登録商標)レートが毎秒ギガビット(Gbps)に到達するとき、そのTCP/IPプロトコル処理はホストコンピュータのCPU帯域幅の100%近くを消費し、レートがさらに10Gbpsまで増加するとき、TCP/IPプロトコル処理全体は専用のサブシステムヘオフロードされなければならないことを告げる。ここで記載されているIT10Gは、一連の状態マシーンとして例えばARP、RARP、IPホストルーティングを含んだ関連するプロトコルと共にTCPとIPを構成する。IT10Gコアは転送オフロードエンジン(TOE)としても知られている加速器またはエンジンを構成する。接続されたオンチッププロセッサがネットワークスタックの特性を拡張するために使用されるように処理できるようにフックが設けられているが、IT10Gコアはプロセッサまたはソフトウェアを使用しない。
[Application Overview]
[Overview]
As bandwidth continues to increase, the ability to handle TCP / IP communications will exceed system processor overhead. When a large number of sources reach an Ethernet rate of gigabits per second (Gbps), their TCP / IP protocol processing consumes nearly 100% of the host computer's CPU bandwidth, and the rate increases further to 10 Gbps. , The entire TCP / IP protocol process must be offloaded to a dedicated subsystem. The IT 10G described here configures TCP and IP as a series of state machines with associated protocols including, for example, ARP, RARP, and IP host routing. The IT10G core constitutes an accelerator or engine, also known as a transfer offload engine (TOE). Although hooks are provided so that connected on-chip processors can be processed to be used to extend the characteristics of the network stack, the IT10G core does not use a processor or software.

[サンプルアプリケーション]
IT10Gコアの一例の使用はインテリジェントネットワークインターフェースカード(NIC)である。典型的な応用では、NICはコンピュータサーバへプラグ接続され、ネイティブにTCP/UDP/IPパケットを処理する。
[Sample application]
An example use of the IT10G core is an intelligent network interface card (NIC). In a typical application, the NIC is plugged into a computer server and natively processes TCP / UDP / IP packets.

図1は本発明のNICを概略したブロック図である。図1では、IT10Gコア10はプロセッサ11、システム周辺機器12、単一チップNIC制御装置へのシステムバスインターフェース13と結合されている。単一チップNIC制御装置はイーサネット(登録商標)PHY14と集積され、構成EEPROM15、低いチップカウントNICを形成するためネットワークスタックの随意選択的な外部メモリと結合されている。プロセッサメモリ16(ROMとRAMの両者)は集積されたチップに対して内部であっても外部に位置してもよい。   FIG. 1 is a block diagram schematically showing the NIC of the present invention. In FIG. 1, the IT10G core 10 is coupled to a processor 11, system peripherals 12, and a system bus interface 13 to a single chip NIC controller. A single chip NIC controller is integrated with the Ethernet PHY 14 and combined with an optional external memory of the network stack to form a configuration EEPROM 15, a low chip count NIC. The processor memory 16 (both ROM and RAM) may be internal or external to the integrated chip.

IT10Gコア10の別の使用は記憶装置、プリンタ、カメラ等のようなネットワークに取付けられた装置に対するインターフェースとして機能することである。このような場合、カスタムアプリケーションソケット(またはインターフェース)17が層6、7プロトコルを処理し、そのアプリケーションに特別なデータの移動を容易にするためにIT10Gへ設けられることができる。例はストリーミングメディア、バルクなデータ移動、iSCSIおよびFCIPのようなプロトコルのためのカスタムデータパスを含んでいる。   Another use of the IT10G core 10 is to serve as an interface to devices attached to a network such as storage devices, printers, cameras, and the like. In such a case, a custom application socket (or interface) 17 can be provided in the IT 10G to handle the layer 6 and 7 protocol and to facilitate the movement of data special to that application. Examples include custom data paths for protocols such as streaming media, bulk data movement, iSCSI and FCIP.

図2は本発明にしたがったネットワークに取付けられた装置に対するインターフェースの概略ブロック図である。IT10Gは10Gbpsのライン速度処理をサポートするように設計されており、同一のアーキテクチャおよび論理装置はまた低い速度で使用されることができる。これらの場合、イーサネット(登録商標)MAC21とPHY14にのみ違いがある。低いライン速度のこのアーキテクチャを使用する利点には例えば低いパワー消費が含まれている。   FIG. 2 is a schematic block diagram of an interface to a device attached to a network according to the present invention. IT10G is designed to support 10 Gbps line rate processing, and the same architecture and logic units can also be used at lower speeds. In these cases, only Ethernet (registered trademark) MAC21 and PHY14 are different. Advantages of using this low line speed architecture include, for example, low power consumption.

[チャレンジ]
高速度の帯域幅に対するチャレンジはワイヤ回線速度でのTCP/IPパケットの処理にある。これは以下の表に示されている。

Figure 0004875126
[Challenge]
The challenge for high bandwidth is in the processing of TCP / IP packets at wireline speeds. This is shown in the table below.
Figure 0004875126

注意:1 これは500バイトの平均パケットサイズを仮定している。
2 これはパケット当りの500の命令オーバーヘッドとバイト当りの1命令を仮定している。
Note: This assumes an average packet size of 500 bytes.
2 This assumes 500 instruction overhead per packet and 1 instruction per byte.

前述の表の数字は非常に保守的であり、例えばネットワーク化の二重特性を考慮しない。二重動作が計算に入れられるならば、処理パワーの要求は容易に二倍になる。いずれにせよ、ギガビットレベルで開始して、TCP/IPの処理オーバーヘッドはホストコンピュータ処理パワーで主要なドレインであり、別の解決手段が必要であることが明白である。   The numbers in the above table are very conservative and do not take into account, for example, the dual nature of networking. If dual operation is taken into account, the processing power requirement is easily doubled. In any case, starting at the gigabit level, it is clear that the processing overhead of TCP / IP is a major drain on host computer processing power and another solution is needed.

[帯域幅の制限]
IT10Gは種々のアーキテクチャを実装することでホストコンピュータの処理パワーの制限を解決する。当該実装は以下の特性を含んでいる。
・入力および出力されるデータのオンザフライ(ストリーミング)処理、
・超広いデータパス(現在の構造では64ビット)、
・プロトコル状態マシーンの並列動作、
・共有されたリソースのインテリジェントなスケジュール化、
・最小にされたメモリコピー。
Bandwidth limit
IT10G solves the host computer processing power limitation by implementing various architectures. The implementation includes the following characteristics:
On-the-fly (streaming) processing of input and output data,
-Ultra wide data path (64 bits in the current structure),
・ Parallel operation of protocol state machines,
Intelligent scheduling of shared resources,
• Minimized memory copy.

[システムの概要]
[概要]
このセクションは好ましい実施形態の上部レベルを説明する。これはシステムのブロックレベルの説明および異なるデータパスと転送タイプに対する動作理論を提供する。
[System Overview]
[Overview]
This section describes the upper level of the preferred embodiment. This provides a block level description of the system and the theory of operation for different data paths and transfer types.

本発明の実施形態はIT10Gネットワークスタックを含み、異なるアプリケーションで完全なネットワーク化サブシステムを提供するためにこれをプロセッサコアおよびシステムコンポーネントを結合する。システムのブロックレベル図は図3に示されている。   Embodiments of the present invention include an IT10G network stack that combines processor cores and system components to provide a complete networked subsystem in different applications. A block level diagram of the system is shown in FIG.

[クロック要求]
現在の本発明の好ましい実施形態は異なるクロックドメインで動作するように設計されたチップである。以下の表は1Gbpsと10Gbps動作の両者のすべてのクロックドメインをリストしている。

Figure 0004875126
[Clock request]
The presently preferred embodiment of the present invention is a chip designed to operate in different clock domains. The following table lists all clock domains for both 1 Gbps and 10 Gbps operation.
Figure 0004875126

[プロトコルプロセッサ]
[概要]
このセクションは内部プロトコルプロセッサの概要を与える。
[Protocol processor]
[Overview]
This section gives an overview of the internal protocol processor.

[プロセスコア]
ここで説明するチップはプログラム能力とフレキシブル性のために内部(またはオンチップ)プロセッサを使用する。このプロセッサもまた動作システムを完成するために必要なすべての周辺機器を完備している。正常の動作状態下で、オンチッププロセッサはネットワークスラックを制御する。
[Process Core]
The chip described here uses an internal (or on-chip) processor for programmability and flexibility. This processor is also complete with all the peripherals necessary to complete the operating system. Under normal operating conditions, the on-chip processor controls network slack.

[メモリアーキテクチャ]
オンチッププロセッサは4Gバイトまでのメモリをアドレスする能力を有する。このアドレススペース内にはすべてのその周辺機器、そのRAM、ROM、ネットワークスラックが位置されている。
[Memory Architecture]
On-chip processors have the ability to address memory up to 4 Gbytes. All the peripheral devices, the RAM, the ROM, and the network slack are located in this address space.

[ネットワークスラックアーキテクチャ]
[概要]
このセクションはIT10Gアーキテクチャを概要を説明する。ここでのその後のセクションは個々のモジュールについての詳細に入る。IT10Gはネットワークスラックのハードウェアプロトコル処理機能を取り、10Gbpsレートまでのスケールを可能にするために強化を付加する。前のバージョンに対する主な付加はデータパス、状態マシーンの並列動作、共有されたリソースのインテリジェントなスケジュール化を広げることである。さらに、前にサポートされなかかった他のプロトコルはRARP、ICMP、IGMPのようなプロトコルに対するサポートを付加される。図4はIT10Gの高レベルのブロック図である。
[Network slack architecture]
[Overview]
This section outlines the IT10G architecture. Subsequent sections here will go into details about the individual modules. IT10G takes network slack hardware protocol processing capabilities and adds enhancements to enable scaling up to 10 Gbps rates. The main addition to the previous version is to extend the data path, state machine parallelism, and intelligent scheduling of shared resources. In addition, other protocols that were not previously supported add support for protocols such as RARP, ICMP, IGMP. FIG. 4 is a high level block diagram of IT10G.

[動作理論]
IT10Gを使用して任意のデータを転送する前に、ソケット接続が初期化されなければならない。これはコマンドブロックの使用またはTCPソケットレジスタを直接プログラムアップすることにより行われることができる。ソケット毎にプログラムされなければならない特性には、目的地IPアドレス、目的地ポート番号、接続のタイプ(例えばTCPまたはUDP、サーバまたはクライアント)が含まれている。随意選択的なパラメータにはQosレベル、ソースポート、TTL、TOS設定のような設定が含まれている。これらのパラメータが一度入力されると、ソケットを起動することができる。UDPソケットの場合、データは即座に送信または受信され始めることができる。TCPクライアントに対しては、ソケット接続が最初に設定されなければならず、TCPサーバに対しては、SYNパケットがクライアントから受信され、その後ソケット接続が設定されなければならない。すべてのこのような動作はIT10Gハードウェアにより完全に実行されることができる。
[Theory of operation]
Before transferring any data using IT10G, the socket connection must be initialized. This can be done by using a command block or by directly programming up the TCP socket register. Characteristics that must be programmed for each socket include the destination IP address, the destination port number, and the type of connection (eg, TCP or UDP, server or client). Optional parameters include settings such as QoS level, source port, TTL, and TOS settings. Once these parameters are entered, the socket can be activated. In the case of a UDP socket, data can begin to be sent or received immediately. For TCP clients, a socket connection must be set up first, and for TCP servers, a SYN packet must be received from the client and then a socket connection must be set up. All such operations can be performed entirely by IT10G hardware.

[パケットの送信]
TCPパケットが送信される必要のあるとき、ホストコンピュータで動作するアプリケーションは最初にデータをソケット(固定したソケットまたは仮想ソケット−仮想ソケットはIT10Gアーキテクチャによりサポートされる)に書込む。現在の送信バッファが空であるならば、データがメモリに書込まれているとき、部分的に動作するチェックサムが維持される。部分的なチェックサムはチェックサム計算用のスタートシードとして使用され、データを送出する前に再度、データを通して読取るためのIT10GネットワークスタックにおけるTCP層の必要性をなくす。データは32ビットまたは64ビットチャンクでソケットバッファに書込まれることができる。4までの有効_バイト信号が有効なバイトを示すために使用される。ソケットバッファに書込むとき、データは可能性のある有効ではないバイトを有する最後のワードだけでパックされなければならない。この段はまたデータチェックサムを計算しない選択肢が存在するUDPパケットにも適用される。
[Send packet]
When a TCP packet needs to be sent, the application running on the host computer first writes data to the socket (fixed socket or virtual socket—virtual sockets are supported by the IT10G architecture). If the current transmit buffer is empty, a partially working checksum is maintained when data is being written to memory. The partial checksum is used as a start seed for the checksum calculation, eliminating the need for a TCP layer in the IT10G network stack to read through the data again before sending the data. Data can be written to the socket buffer in 32-bit or 64-bit chunks. Up to 4 valid_byte signals are used to indicate valid bytes. When writing to the socket buffer, the data must be packed with only the last word with possible invalid bytes. This stage also applies to UDP packets where there is an option not to calculate the data checksum.

一度、すべてのデータが書込まれると、SENDコマンドがホストコンピュータで動作するアプリケーションにより発生されることができる。この時点で、TCP/UDPエンジンはパケット長を計算し、チェックサムし、TCP/IPヘッダを作成する。このTCP/IPヘッダはソケットデータセクションに予めペンディングされる。パケットのバッファポインタはソケットQoSレベルと共に、その後送信待ち行列に置かれる。   Once all the data has been written, a SEND command can be generated by an application running on the host computer. At this point, the TCP / UDP engine calculates the packet length, checksums, and creates a TCP / IP header. This TCP / IP header is previously pending in the socket data section. The packet's buffer pointer, along with the socket QoS level, is then placed in the transmission queue.

送信スケジューラはペンディングパケットを有するすべてのソケットを観察し、最高のQoSレベルを有するパケットを選択する。この送信スケジューラは送信を必要とするすべてのタイプのパケットを観察する。これらのパケットには例えばTCP、UDP、ICMP、ARP、RARP、生のパケットが含まれることができる。最小の帯域幅のアルゴリズムはソケットが完全に結合されないことを確実にするために使用される。ソケットパケットが送信に選択されたとき、ソケットバッファポインタはMAC TXインターフェースへ転送される。MAC TXインターフェースはソケットバッファからデータを読取り、そのデータをMACへ送信するように動作する。バッファはイーサネット(登録商標)の衝突またはその他の理由で再送信が必要な場合に出力されるパケットを記憶するために使用される。一度パケットデータがオリジナルソケットバッファから送信されると、そのデータバッファは解放される。有効な送信状態がMACから受信されるとき、データバッファはフラッシュされ、次のパケットがその後送信されることができる。有効ではない送信状態がMACから受信されるならば、データバッファ中に記憶されている最後のパケットが再送信される。   The transmission scheduler observes all sockets with pending packets and selects the packet with the highest QoS level. This transmission scheduler observes all types of packets that require transmission. These packets can include, for example, TCP, UDP, ICMP, ARP, RARP, and raw packets. A minimum bandwidth algorithm is used to ensure that the socket is not fully coupled. When a socket packet is selected for transmission, the socket buffer pointer is transferred to the MAC TX interface. The MAC TX interface operates to read data from the socket buffer and send the data to the MAC. The buffer is used to store packets that are output when retransmission is required due to Ethernet collisions or other reasons. Once packet data is transmitted from the original socket buffer, the data buffer is released. When a valid transmission state is received from the MAC, the data buffer is flushed and the next packet can then be transmitted. If a transmission state that is not valid is received from the MAC, the last packet stored in the data buffer is retransmitted.

[パケットの受信]
パケットがMACから受信されるとき、イーサネット(登録商標)ヘッダはパケットがこのネットワークスタックを目的地とするか否かを決定するために分析される。MACアドレスフィルタはユニキャストアドレス、プログラムされたマスク内に入るユニキャストアドレス、放送アドレス、またはマルチキャストアドレスを受けるようにプログラムされることができる。さらに、カプセル化プロトコルもまた決定される。イーサネット(登録商標)ヘッダの16ビットTYPEフィールドがARP(0×0806)またはRARP(0×0835)パケットを示すならば、ARP/RARPモジュールはさらにパケットを処理することを可能にされる。TYPEフィールドがIPv4(0×0800)へ復号されるならば、IPモジュールはさらにパケットを処理することを可能にされる。例のサポートされたTYPEフィールドの完全なリストが以下の表に示されている。TYPEフィールドが任意の他の値に復号されるならば、パケットは随意選択的にバッファに経路設定され、ホストコンピュータは未知のイーサネット(登録商標)パケットが受信されていることを通知される。この最後のケースでは、アプリケーションはパケットを読取り、適切な動作コースを決定する。このデータパスの構成により、例えばIPXのようなハードウェアで直接サポートされない任意のプロトコルはIT10Gにより間接的にサポートされることができる。

Figure 0004875126
[Receive packet]
When a packet is received from the MAC, the Ethernet header is analyzed to determine whether the packet is destined for this network stack. The MAC address filter can be programmed to receive unicast addresses, unicast addresses that fall within a programmed mask, broadcast addresses, or multicast addresses. In addition, the encapsulation protocol is also determined. If the 16-bit TYPE field of the Ethernet header indicates an ARP (0x0806) or RARP (0x0835) packet, the ARP / RARP module is further enabled to process the packet. If the TYPE field is decoded to IPv4 (0x0800), the IP module is enabled to further process the packet. A complete list of example supported TYPE fields is shown in the table below. If the TYPE field is decoded to any other value, the packet is optionally routed to a buffer and the host computer is notified that an unknown Ethernet packet has been received. In this last case, the application reads the packet and determines an appropriate course of operation. With this data path configuration, any protocol not directly supported by hardware such as IPX can be indirectly supported by IT10G.
Figure 0004875126

注意:IPv6パケットはイーサネット(登録商標)層で例外として管理される。   Note: IPv6 packets are managed as exceptions in the Ethernet layer.

[ARP/RARPパケット]
受信されたパケットがARPまたはRARPパケットであるならば、ARP/RARPモジュールが使用可能になる。これはパケットのOPフィールドを検査し、これがリクエストであるか回答であるかを決定する。リクエストであるならば、外部のエンティティが情報に対してポーリングをしている。ポールされているアドレスがIT10Gに対するものであるならば、reply_reqがARP/RARP回答モジュールへ送信される。受信されるパケットがARPまたはRARP回答であるならば、結果、即ちMACおよびIPアドレスがARP/RARPリクエストモジュールへ送信される。
[ARP / RARP packet]
If the received packet is an ARP or RARP packet, the ARP / RARP module is enabled. This examines the packet's OP field to determine if this is a request or a reply. If so, an external entity is polling for information. If the polled address is for IT10G, reply_req is sent to the ARP / RARP reply module. If the received packet is an ARP or RARP reply, the result, ie MAC and IP address, is sent to the ARP / RARP request module.

別の実施形態では、ARPおよび/またはRARP機能はARP/RARPパケットを例外パスを介してホストへ伝送するためにIT10Gの専用のおよび最適化されたハードウェアを使用してホストコンピュータ中で処理される。   In another embodiment, ARP and / or RARP functions are processed in the host computer using IT10G dedicated and optimized hardware to transmit ARP / RARP packets to the host via the exception path. The

[IPパケット]
受信されたパケットがIPパケットであるならば、IPモジュールが使用可能になる。IPモジュールは最初に受信されたパケットがIPv4パケットであるか否かを決定するためにIPヘッダ中のバージョンフィールドを検査する。
[IP packet]
If the received packet is an IP packet, the IP module can be used. The IP module checks the version field in the IP header to determine if the first received packet is an IPv4 packet.

IPモジュールは受信されたパケットの埋設されたプロトコルを構文解析する。復号されるプロトコルに基づいて、受信されたパケットは適切なモジュールへ送信される。本発明のこの実施形態のハードウェアにより直接サポートされるプロトコルには例えばTCPおよびUDPが含まれている。RDMAのような他のプロトコルは他の最適化された処理モジュールによりサポートされることができる。すべての未知のプロトコルは例外ハンドラを使用して処理される。   The IP module parses the embedded protocol of the received packet. Based on the protocol to be decoded, the received packet is sent to the appropriate module. Protocols directly supported by the hardware of this embodiment of the invention include, for example, TCP and UDP. Other protocols such as RDMA can be supported by other optimized processing modules. All unknown protocols are handled using exception handlers.

[TCPパケット]
TCPパケットがIT10Gにより受信されるならば、ソケット情報は構文解析され対応するソケットが使用可能になる。ソケットの状態情報が検索され、受信されたパケットのタイプに基づいて、それにしたがってソケット状態が更新される。(応用可能であるならば)パケットのデータペイロードはソケットデータバッファに記憶されている。ACKパケットが発生される必要があるならば、TCP状態モジュールはACKパケットを発生し、ACKパケットを送信するようにスケジュールする。オープンソケットに相関しないTCPパケットが受信されるならば、TCP状態モジュールはRSTパケットを発生し、そのRSTパケットは送信するようにスケジュールされる。
[TCP packet]
If a TCP packet is received by IT10G, the socket information is parsed and the corresponding socket is available. The socket status information is retrieved and the socket status is updated accordingly based on the type of packet received. The packet's data payload (if applicable) is stored in a socket data buffer. If an ACK packet needs to be generated, the TCP status module generates an ACK packet and schedules to send the ACK packet. If a TCP packet that does not correlate with an open socket is received, the TCP status module generates an RST packet and the RST packet is scheduled to be transmitted.

[UDPパケット]
UDPパケットが受信されるならば、ソケット情報が解析され、ソケット中に記憶されているデータはデータバッファを受信する。オープンソケットが存在しないならば、UDPパケットは暗黙に破棄される。
[UDP packet]
If a UDP packet is received, the socket information is parsed and the data stored in the socket receives the data buffer. If there is no open socket, the UDP packet is silently discarded.

別の実施形態では、UDPパケットは例外ハンドラを使用してホストコンピュータにより処理されることができる。   In another embodiment, UDP packets can be processed by the host computer using an exception handler.

[ネットワークスタックレジスタ]
IT10Gのハードウェアネットワークスタックはオンチッププロセッサに対して周辺機器として現れるように構成される。ネットワークスタックのベースアドレスはオンチッププロセッサのNS_Base_Addレジスタを介してプログラムされる。このアーキテクチャはオンチッププロセッサがネットワークスタックをそのメモリまたはI/Oスペースの種々の位置に置くことを可能にする。
[Network stack register]
The IT10G hardware network stack is configured to appear as a peripheral to the on-chip processor. The base address of the network stack is programmed via the NS_Base_Add register of the on-chip processor. This architecture allows the on-chip processor to place the network stack at various locations in its memory or I / O space.

[イーサネット(登録商標)MACインターフェース]
[概要]
以下の記載はイーサネット(登録商標)MACインターフェースモジュールを説明している。イーサネット(登録商標)MACインターフェースモジュールの機能はIT10Gのコアからイーサネット(登録商標)MACを抽象化することである。これは例えばIT10Gコアアーキテクチャを変更せずに、IT10Gネットワークスタックコアが異なる速度のMACおよび/または種々のソースからのMACに結合されることを可能にする。このセクションはIT10Gコアとのための通信のインターフェース要求について説明する。
[Ethernet (registered trademark) MAC interface]
[Overview]
The following description describes the Ethernet MAC interface module. The function of the Ethernet MAC interface module is to abstract the Ethernet MAC from the IT10G core. This allows, for example, IT10G network stack cores to be coupled to different speed MACs and / or MACs from various sources without changing the IT10G core architecture. This section describes the communication interface requirements for the IT10G core.

[モジュールI/O]
図5はMACインターフェースモジュールで使用されるI/Oを概略的に示したブロック図である。
[Module I / O]
FIG. 5 is a block diagram schematically showing I / O used in the MAC interface module.

[イーサネット(登録商標)インターフェース]
[概要]
このセクションはイーサネット(登録商標)インターフェースモジュールを説明する。イーサネット(登録商標)インターフェースモジュールは低い端部のイーサネット(登録商標)MACインターフェースと、および高い端部のARPおよびIPモジュールのようなブロックへ通信する。イーサネット(登録商標)インターフェースモジュールは受信および送信パスの両者のデータを処理する。送信側では、イーサネット(登録商標)インターフェースモジュールは送信のためのパケットのスケジュールをし、送信のためのDMAチャンネルを設定し、イーサネット(登録商標)MACインターフェース送信信号によって通信するように動作する。受信側では、イーサネット(登録商標)インターフェースモジュールはイーサネット(登録商標)ヘッダの解析、パケットがアドレスフィルタ設定に基づいて受信されるべきであるか否かの決定、パケットヘッダのTYPEフィールドに基づいた次のカプセル化されたプロトコルのエネーブル、上部層プロトコルに対して64ビット境界で開始するようにデータを整列させるように動作する。図6はイーサネット(登録商標)インターフェース40の概略ブロック図である。
[Ethernet (registered trademark) interface]
[Overview]
This section describes the Ethernet interface module. The Ethernet interface module communicates with the low end Ethernet MAC interface, and blocks such as the high end ARP and IP modules. The Ethernet interface module processes data on both the receive and transmit paths. On the transmitting side, the Ethernet interface module operates to schedule packets for transmission, set up a DMA channel for transmission, and communicate via Ethernet MAC interface transmission signals. On the receiving side, the Ethernet interface module analyzes the Ethernet header, determines whether the packet should be received based on the address filter settings, and next based on the TYPE field of the packet header. Enables the encapsulated protocol, operates to align the data to start on a 64-bit boundary relative to the upper layer protocol. FIG. 6 is a schematic block diagram of the Ethernet (registered trademark) interface 40.

[サブモジュールブロックの説明]
[送信スケジューラ]
送信スケジューラブロック60はARP、IP、TCP、および生の送信モジュールから送信リクエストを取り、次に送信されるべきパケットを決定するように動作する。送信スケジューラは各送信リクエストのQoSレベルを比較することにより送信順序を決定する。QoSレベルと共に、各送信リクエストはパケット長と共にパケットの開始メモリブロックへのポインタを含んでいる。送信スケジューラはあるパケットタイプの送信優先順をその他よりも重く加重するようにプログラムされる能力を有する。例えばTCPモジュールからのQoSレベル5はIPモジュールからのレベル5のリクエストよりも価値があるように作られることができる。送信スケジューラは多数のモジュールが並列して、送信データトラフィックに基づいた共有された方法で動作することを可能にする。以下の説明はパケットスケジュール化の決定に現在使用されているアルゴリズムである。
[Description of sub module block]
[Send Scheduler]
The transmission scheduler block 60 operates to take transmission requests from the ARP, IP, TCP, and raw transmission modules and to determine the next packet to be transmitted. The transmission scheduler determines the transmission order by comparing the QoS level of each transmission request. Along with the QoS level, each transmission request includes a pointer to the starting memory block of the packet along with the packet length. The transmission scheduler has the ability to be programmed to weight the transmission priority of certain packet types more heavily than others. For example, QoS level 5 from a TCP module can be made more valuable than level 5 requests from an IP module. The transmission scheduler allows multiple modules to operate in parallel and in a shared manner based on transmission data traffic. The following description is the algorithm currently used for packet scheduling decisions.

パケットチャンネルが欠乏状態に到達していないかをチェックする。これはチャンネルタイプ当りのプログラム可能なレベル、即ちTCP、IP、ARP、生のバッファであり、これはスケジューラがQoSレベルを無効にし、パケットが送出される前に何回チャンネルが通過されたかを示す。2以上のパケットが同時に欠乏状態に到達したならば、高い加重を有するチャンネルに優先順位が与えられる。他のパケットはその後で次に送信されるようにスケジュールされる。パケットが同一の優先順位の加重を有するならば、それらは次の順序、即ちTCP/UDP、その後ARP、その後IP 、その後生のイーサネット(登録商標)にしたがって代わる代わる送出される。   Check if the packet channel has reached the starved state. This is a programmable level per channel type, ie TCP, IP, ARP, raw buffer, which indicates how many times the channel has been passed before the scheduler disables the QoS level and the packet is sent out. . If two or more packets reach the starvation state at the same time, the channel with the higher weight is given priority. Other packets are then scheduled for subsequent transmission. If the packets have the same priority weight, they are sent out alternately according to the following order: TCP / UDP, then ARP, then IP, then raw Ethernet.

チャンネルが欠乏状態のパケットをもたないならば、最高の結合されたQoSレベルとチャンネル加重を有するチャンネルが送信される。   If the channel has no deficient packets, the channel with the highest combined QoS level and channel weight is transmitted.

1つのチャンネルだけが送信されるパケットを有している場合には、それは直ちに送信される。   If only one channel has a packet to be sent, it is sent immediately.

一度、パケットチャンネルが送信するように選択されると、チャンネルメモリポインタ、パケット長、およびタイプがDMAエンジンに転送される。転送が終了したとき、DMAエンジンは次に信号を送信スケジューラへ戻す。この時点でスケジューラはパケットパラメータをDMAエンジンへ送信する。   Once the packet channel is selected for transmission, the channel memory pointer, packet length, and type are transferred to the DMA engine. When the transfer is complete, the DMA engine then returns a signal to the transmission scheduler. At this point, the scheduler sends packet parameters to the DMA engine.

[DMAエンジン]
DMAエンジン61は送信スケジューラからパケットパラメータを受信する。パケットパラメータはパケットタイプ、パケット長、開始メモリポインタを含んでいる。DMAエンジンはいくつのデータバイトがメモリから転送されるかを決定するためにパケット長を使用する。パケットタイプはどのメモリバッファからデータを検索するかをDMAエンジンへ示し、開始メモリポインタはデータの読取りを開始する場所を示す。DMAエンジンは、出力するパケットが多数のメモリブロックに及ぶため、チャンネルパケットで使用される各メモリブロックがどれ程の大きさかを理解する必要がある。DMAエンジンはメモリ制御装置から一度にデータ64ビットを受信し、データ64ビットを一度に送信機インターフェースへ供給する。
[DMA engine]
The DMA engine 61 receives packet parameters from the transmission scheduler. Packet parameters include packet type, packet length, and starting memory pointer. The DMA engine uses the packet length to determine how many data bytes are transferred from memory. The packet type indicates to the DMA engine which memory buffer to retrieve data from, and the start memory pointer indicates where to start reading the data. The DMA engine needs to understand how large each memory block used in the channel packet is because the output packet spans many memory blocks. The DMA engine receives 64 bits of data at a time from the memory controller and provides 64 bits of data to the transmitter interface at a time.

[送信機インターフェース]
送信機インターフェース62はDMAエンジンから出力を取り、イーサネット(登録商標)MACインターフェースのmacout_lock、macout_rdy、macout_eof、macout_val_byte信号を発生する。64ビットのmacout_dataバスはDMAエンジンからイーサネット(登録商標)MACインターフェースへ直接的に接続する。
[Transmitter interface]
The transmitter interface 62 takes the output from the DMA engine and generates macout_lock, macout_rdy, macout_eof, and macout_val_byte signals of the Ethernet MAC interface. The 64-bit macout_data bus connects directly from the DMA engine to the Ethernet MAC interface.

[受信機インターフェース]
受信機インターフェース63はイーサネット(登録商標)MACインターフェースとインターフェースするように動作する。受信機インターフェースはデータを取り、そのデータを状態カウント情報と共にアドレスフィルタおよびパケットタイプパーサブロックへ与える。
[Receiver interface]
The receiver interface 63 operates to interface with an Ethernet MAC interface. The receiver interface takes the data and provides it to the address filter and packet type parser block along with the status count information.

[アドレスフィルタおよびパケットタイプパーサ]
アドレスフィルタおよびパケットタイプパーサ64はイーサネット(登録商標)ヘッダを解析し、以下の2つの主要な機能を行う。
・パケットが構内網スタック用であるか否かを決定する。
・残りのパケットを送信する場所を決定するために、カプセル化されたパケットタイプを解析する。
[Address filter and packet type parser]
The address filter and packet type parser 64 parses the Ethernet header and performs the following two main functions:
Determine whether the packet is for a private network stack.
Analyze the encapsulated packet type to determine where to send the remaining packets.

[アドレスフィルタ処理]
ネットワークスタックは以下のフィルタ選択肢でプログラムされることができる。
・プログラムされたユニキャストアドレスの受付、
・放送パケットの受付、
・マルチキャストパケットの受付、
・ネットマスクにより特定される範囲内のアドレスの受付、
・無差別モード(すべてのパケットを受入れる)。
[Address filtering]
The network stack can be programmed with the following filter options:
・ Reception of programmed unicast address,
・ Reception of broadcast packets,
・ Accepting multicast packets,
・ Accepting addresses within the range specified by the netmask,
Promiscuous mode (accepts all packets)

これらのパラメータはすべてレジスタを介してホストコンピュータによって設定可能である。   All of these parameters can be set by the host computer via a register.

[サポートされるパケットタイプ]
以下のパケットタイプはIT10Gハードウェアにより知られており、固有にサポートされる。
・タイプ=0×8000を有するIPv4パケット、
・タイプ=0×0806を有するARPパケット、
・タイプ=0×8035を有するRARPパケット。
[Supported packet types]
The following packet types are known by IT10G hardware and are uniquely supported.
IPv4 packet with type = 0x8000,
An ARP packet with type = 0x0806,
RARP packet with type = 0x8035

パケットタイプパーサはまた802.3の長さのパラメータがTYPEフィールドに含まれるケースを処理する。このケースは値が1500(デシマル)以下であるときに検出される。この条件が検出されるとき、タイプパーサはカプセル化されたパケットを802_フレーム信号の主張と共にARPおよびIP受信モジュールの両者へ送信し、そのモジュールを本当に目的としていないという認識でパケットを復号すべきであることを各その後のモジュールが承認する。   The packet type parser also handles the case where an 802.3 length parameter is included in the TYPE field. This case is detected when the value is 1500 (decimal) or less. When this condition is detected, the type parser should send the encapsulated packet with both the 802_frame signal assertion to both the ARP and IP receiving modules and decode the packet with the realization that the module is not really intended. Each subsequent module approves that it is.

注意:IPv6パケットはイーサネット(登録商標)層により例外パケットとして扱われる。   Note: IPv6 packets are treated as exception packets by the Ethernet layer.

図7は、アドレスフィルタおよびパケットタイプパーサモジュールの概略ブロック図であり、図8はアドレスフィルタおよびパケットタイプパーサモジュールの動作を示したタイミング図である。I/Oタイミングでは、そのパケットに対応するmacin_lock信号の主張が解除されるまで、パケットタイプを示す信号は主張された状態である。All_packet信号はまた目的地MACアドレスが許容可能である場合のみトリガーする。   FIG. 7 is a schematic block diagram of the address filter and packet type parser module, and FIG. 8 is a timing diagram showing the operation of the address filter and packet type parser module. At the I / O timing, the signal indicating the packet type is in the asserted state until the assertion of the machine_lock signal corresponding to the packet is canceled. The All_packet signal also only triggers if the destination MAC address is acceptable.

アドレスフィルタおよびパケットタイプパーサモジュールはそれが理解していないパケットを構文解析し、サポートされていないタイプの特性が使用可能になったならば、そのパケットは記憶およびさらに処理するために例外ハンドラへ転送される。   The address filter and packet type parser module parses a packet that it does not understand, and if an unsupported type characteristic becomes available, the packet is forwarded to an exception handler for storage and further processing. Is done.

[データ整列器]
データ整列器65は後続するパケット処理の層のデータバイトを整列させるように動作する。イーサネット(登録商標)ヘッダが64ビットの偶数倍ではないのでデータ整列器が必要とされる。VLANタグが存在するか否かに応じて、データ整列器は上部処理層に対してデータがMSB位置調節されるように64ビットデータを方向付けする。このようにしてイーサネット(登録商標)フレームのペイロードセクションは常に偶数の64ビット境界で整列される。データ整列器はまた準備完了信号を次の層に発生するように動作する。準備完了信号はmacin_rdyが主張された後に、2または3の作動可能サイクルをアクチブにする。図9は構成データ整列モジュールの概略ブロック図である。
[Data aligner]
Data aligner 65 operates to align the data bytes of subsequent packet processing layers. A data aligner is required because the Ethernet header is not an even multiple of 64 bits. Depending on whether a VLAN tag is present, the data aligner directs the 64-bit data so that the data is MSB aligned with respect to the upper processing layer. In this way, the payload section of an Ethernet frame is always aligned on an even 64-bit boundary. The data aligner also operates to generate a ready signal to the next layer. The ready signal activates 2 or 3 ready cycles after macin_rdy is asserted. FIG. 9 is a schematic block diagram of the configuration data alignment module.

[イーサネット(登録商標)パケットフォーマット]
IT10Gは802.3(SNAP)とDIXフォーマットパケットの両者をネットワークから受取るが、DIXフォーマットのパケットだけを送信する。さらに、802.3パケットが受信されるとき、それらは最初にDIXフォーマットに変換され、その後イーサネット(登録商標)フィルタにより処理される。それ故、すべてのイーサネット(登録商標)例外パケットはDIXフォーマットで記憶される。
[Ethernet (registered trademark) packet format]
IT10G receives both 802.3 (SNAP) and DIX format packets from the network, but only transmits DIX format packets. In addition, when 802.3 packets are received, they are first converted to DIX format and then processed by an Ethernet filter. Therefore, all Ethernet exception packets are stored in DIX format.

[ARPプロトコルおよびARPキャッシュモジュール]
[概要]
以下の記載はARPプロトコルおよびARPキャッシュモジュールの詳細な説明である。IT10Gアーキテクチャの1実施形態では、ARPプロトコルモジュールはRARPプロトコルもサポートするが、ARPキャッシュ自体を含まない。パケットを送信できる各モジュールは以外に早くARPキャッシュに問い合わせするので、この共通のリソースはこのARPモジュールから分離される。ARPプロトコルおよびARPキャッシュモジュールは受信されたパケットタイプに基づいてARPキャッシュへ更新を送信する。
[ARP protocol and ARP cache module]
[Overview]
The following is a detailed description of the ARP protocol and ARP cache module. In one embodiment of the IT10G architecture, the ARP protocol module also supports the RARP protocol, but does not include the ARP cache itself. Since each module that can send a packet queries the ARP cache earlier than this, this common resource is separated from this ARP module. The ARP protocol and ARP cache module send updates to the ARP cache based on the received packet type.

ARP特性リスト:
・ARP回答を発生することによりARPリクエストに応答できる。
・ARPキャッシュに応答してARPリクエストを発生できる。
・複数のIPアドレスに対するARP回答を与えることができる(マルチホームホスト/ARP代理)。
・ターゲットとする(ユニキャスト)ARPリクエストを発生できる。
・不法のアドレスをフィルタリングする。
・整列されたARPデータをプロセッサへ転送する。
・無料のARPを行うことができる。
・CPUは自動ARP回答発生をバイパスし、ARPデータを例外ハンドラへダンプしてもよい。
・CPUは(バイパスモードのとき)カスタムARP回答を発生してもよい。
・ネットワーク状態に応じて、ARPパケットの可変の優先順位を有する。
ARP property list:
-It is possible to respond to an ARP request by generating an ARP reply.
An ARP request can be generated in response to the ARP cache.
-ARP replies can be given for multiple IP addresses (multihomed host / ARP proxy).
A target (unicast) ARP request can be generated.
• Filter illegal addresses.
Transfer the aligned ARP data to the processor.
・ Free ARP can be done.
The CPU may bypass the automatic ARP reply generation and dump the ARP data to the exception handler.
• The CPU may generate a custom ARP answer (when in bypass mode).
Depending on network conditions, it has variable priority of ARP packets.

RARP特性リスト:
・IPアドレスをリクエストする。
・特定のIPアドレスをリクエストする。
・RARPリクエストは例外ハンドラへハンドオフされる。
・不規則なRARP回答を管理する。
・整列されたRARPデータをプロセッサまで送る。
・CPUはカスタムRARPリクエストおよび回答を発生できる。
RARP property list:
-Request an IP address.
Request a specific IP address.
• The RARP request is handed off to the exception handler.
• Manage irregular RARP responses.
Send the aligned RARP data to the processor.
The CPU can generate custom RARP requests and answers.

ARPキャッシュ特性:
・ダイナミックARPテーブルサイズ、
・自動的に更新されたARPエントリ情報、
・送信者のハードウェアアドレスが変化したときの割込み、
・ARPデータを混雑収集する能力、
・重複したIPアドレス検出および割込み生成、
・ARPモジュールを介するARPリクエスト能力、
・静的なARPエントリのサポート、
・静的なARPエントリがダイナミックARPデータにより置換されることを可能にする選択肢、
・ARP代理のサポート、
・ARPエントリの構成可能な満了時間。
(CPUはこのコンテキストではホストコンピュータCPUまたはオンチッププロセッサのいずれであってもよい。)
ARP cache characteristics:
・ Dynamic ARP table size,
-Automatically updated ARP entry information,
-An interrupt when the sender's hardware address changes,
・ Ability to collect ARP data crowded,
・ Duplicate IP address detection and interrupt generation,
ARP request capability via the ARP module,
-Support for static ARP entries,
An option that allows static ARP entries to be replaced by dynamic ARP data;
・ ARP proxy support,
A configurable expiration time for the ARP entry.
(The CPU may be either a host computer CPU or an on-chip processor in this context.)

[ARPモジュールブロック図]
図10はARPモジュールの1構成の概略ブロック図である。
[ARP module block diagram]
FIG. 10 is a schematic block diagram of one configuration of the ARP module.

[ARPキャッシュモジュールブロック図]
図11はARPキャッシュブロックの1構成の概略ブロック図である。
[ARP cache module block diagram]
FIG. 11 is a schematic block diagram of one configuration of the ARP cache block.

[動作のARPモジュール理論]
[パケットの構文解析]
ARPモジュール100はARPとRARPパケットだけを処理する。モジュールはイーサネット(登録商標)受信モジュールから受信される準備完了信号を待機する。その信号が受信されたとき、入来するイーサネット(登録商標)フレームのフレームタイプがチェックされる。フレームタイプがARP/RARPではないならば、そのパケットは無視される。そうでなければモジュールは解析を開始する。
[ARP module theory of operation]
Packet parsing
The ARP module 100 processes only ARP and RARP packets. The module waits for a ready signal received from the Ethernet receiving module. When the signal is received, the frame type of the incoming Ethernet frame is checked. If the frame type is not ARP / RARP, the packet is ignored. Otherwise, the module starts parsing.

データは64ビットワードでイーサネット(登録商標)インターフェースから読取られる。ARPパケットは3.5ワードを取る。ARPタイプのパケットの最初のワードはほとんど静的な情報を含んでいる。ARPタイプのパケットの最初のワードの最初ン48ビットはハードウェアタイプ、プロトコルタイプ、ハードウェアアドレス長、およびプロトコルアドレス長を含んでいる。これらの受信された値はイーサネット(登録商標)でIPv4に対するARPリクエストで予測される値と比較される。受信された値が一致しないならば、データはさらに処理するために例外ハンドラへ送られる。そうでなければ、ARPモジュールは解析を継続する。ARPタイプのパケットの最初のワードの最後の16ビットは演算コードを含んでいる。ARPモジュールは演算コードを記憶し、これが有効であるか否か、即ち1、2または4であるかをチェックする。演算コードが有効ではないならば、データはさらに処理するために例外ハンドラへ送られる。そうでなければARPモジュールは解析を継続する。   Data is read from the Ethernet interface in 64-bit words. An ARP packet takes 3.5 words. The first word of an ARP type packet contains mostly static information. The first 48 bits of the first word of an ARP type packet include the hardware type, protocol type, hardware address length, and protocol address length. These received values are compared with the values expected in an ARP request for IPv4 over Ethernet. If the received values do not match, the data is sent to the exception handler for further processing. Otherwise, the ARP module continues analysis. The last 16 bits of the first word of an ARP type packet contain an operation code. The ARP module stores the operation code and checks whether it is valid, i.e., 1, 2 or 4. If the opcode is not valid, the data is sent to the exception handler for further processing. Otherwise, the ARP module continues analysis.

ARPタイプのパケットの第2のワードはソースイーサネット(登録商標)アドレスと、半分のソースIPアドレスを含んでいる。ARPモジュールは最初の48ビットをソースイーサネット(登録商標)アドレスレジスタへ記憶する。その後、ARPモジュールはこのフィールドが有効なソースイーサネット(登録商標)アドレスであるか否かをチェックする。アドレスはIT10Gネットワークスタックのアドレスと同一であってはならない。ソースアドレスが有効ではないならば、そのパケットは破棄される。パケットの最後の16ビットはその後、ソースIPアドレスレジスタの上半分中に記憶される。   The second word of the ARP type packet contains the source Ethernet address and half the source IP address. The ARP module stores the first 48 bits in the source Ethernet address register. The ARP module then checks whether this field is a valid source Ethernet address. The address must not be the same as the address of the IT10G network stack. If the source address is not valid, the packet is discarded. The last 16 bits of the packet are then stored in the upper half of the source IP address register.

ARPタイプのパケットの第3のワードはソースIPアドレスの第2の半分の部分とターゲットイーサネット(登録商標)アドレスとを含んでいる。ARPモジュールは最初の16ビットをソースIPアドレスレジスタの下半分に記憶し、記憶された値が有効なソースIPアドレスであるか否かをチェックする。アドレスはIT10Gハードウェアのアドレスまたは放送アドレスと同一であってはならない。またソースアドレスは同一のサブネットにあるべきである。ソースアドレスが有効ではないならば、ARPモジュールはそのパケットを破棄する。パケットがARP/RARP回答であるならば、ターゲットハードウェアアドレスをイーサネット(登録商標)アドレスと比較する。アドレスが一致しないならば、ARPモジュールはそのパケットを破棄する。そうでなければ、ARPモジュールは解析を継続する。   The third word of the ARP type packet contains the second half of the source IP address and the target Ethernet address. The ARP module stores the first 16 bits in the lower half of the source IP address register and checks whether the stored value is a valid source IP address. The address must not be the same as the IT10G hardware address or broadcast address. The source address should be in the same subnet. If the source address is not valid, the ARP module discards the packet. If the packet is an ARP / RARP reply, compare the target hardware address with the Ethernet address. If the addresses do not match, the ARP module discards the packet. Otherwise, the ARP module continues analysis.

ARPタイプのパケットの最後のワードの最初の32ビットだけがデータ(ターゲットIPアドレス)を含んでいる。ARPモジュールはターゲットIPアドレスをレジスタに記憶する。パケットが(ARPリクエストまたはRARPパケットと反対に)ARPパケットであるならば、ターゲットIPアドレスをIPアドレスと比較する。アドレスが一致しないならばこのパケットを破棄する。そうでなければ、このパケットがARPリクエストであるならば、ARP回答を発生する。これがRARP回答であるならば、割当てられたIPアドレスをRARPハンドラへ転送する。   Only the first 32 bits of the last word of an ARP type packet contain data (target IP address). The ARP module stores the target IP address in a register. If the packet is an ARP packet (as opposed to an ARP request or RARP packet), compare the target IP address with the IP address. If the addresses do not match, discard this packet. Otherwise, if this packet is an ARP request, an ARP reply is generated. If this is a RARP reply, transfer the assigned IP address to the RARP handler.

一度、すべてのアドレスデータが確認されると、ソースアドレスはARPキャッシュに転送される。   Once all address data is confirmed, the source address is transferred to the ARP cache.

[送信パケット]
ARPモジュールはパケットを3つのソース、即ちARPキャッシュ110(ARPリクエスト)、(ARP回答の)パーサ/FIFOバッファから内部に、(カスタムARP/RARPの)システム制御装置またはホストコンピュータからパケットを送信するためのリクエストを受信できる。この状態のために、優先順位―待ち行列のタイプがARP/RARPパケットの送信をスケジュールするのに必要である。
[Transmission packet]
The ARP module sends packets from three sources: the ARP cache 110 (ARP request), the parser / FIFO buffer (for ARP answers) internally, and the system controller (for custom ARP / RARP) or the host computer. Can receive requests. Because of this condition, priority-queue type is needed to schedule transmission of ARP / RARP packets.

送信リクエストは2以上のエントリが送信を希望するときを除いて、先着順サービスで待ち行列に置かれる。その場合、待ち行列に置かれている次のリクエストはその優先順位にしたがう。RARPリクエストは通常最高の優先順位を有し、ARPリクエストがそれに続く。ARP回答は通常最低の優先順位を有する。優先順位の使用によりデータトラフィックにしたがってリソースが共有されることができる。   Transmission requests are queued on a first-come-first-served basis, except when two or more entries wish to transmit. In that case, the next request in the queue will follow that priority. RARP requests usually have the highest priority, followed by ARP requests. ARP answers usually have the lowest priority. Resources can be shared according to data traffic through the use of priorities.

ARP回答が最高の優先順位を有する1つの状態が存在する。これはARP回答FIFOバッファが満たされているときに生じる。FIFOバッファが満杯であるとき、入来するARPリクエストは破棄され始め、それ故ARP回答はARPリクエストを再送信させることを避けるためにその時点で最高の優先順位を有するべきである。   There is one state in which the ARP answer has the highest priority. This occurs when the ARP reply FIFO buffer is full. When the FIFO buffer is full, incoming ARP requests will begin to be discarded, so the ARP reply should have the highest priority at that time to avoid having the ARP request retransmitted.

送信待ち行列が満たされているとき、1以上の送信リクエストが達成されFる(待ち行列から外される)までさらにリクエストは行われない。ARPモジュールが一杯になった待ち行列を検出したとき、送信アービタからの優先順位の増加をリクエストする。待ち行列には2つの状態、即ち一杯または一杯ではない状態しか存在しないので、このリクエスト信号は単一ビットであることができる。   When the transmission queue is full, no further requests are made until one or more transmission requests are achieved F (dequeued). When the ARP module detects a full queue, it requests an increase in priority from the sending arbiter. This request signal can be a single bit because there are only two states in the queue: full or not full.

送信アービタがARPモジュールを送信することを可能にするとき、ARP/RARPパケットは送信されるパケットのタイプにしたがってダイナミックに発生される。パケットのタイプは命令コードにより決定され、これは待ち行列の各エントリで記憶される。図12は送信待ち行列エントリフォーマットを示している。   When the sending arbiter allows sending the ARP module, ARP / RARP packets are generated dynamically according to the type of packet being sent. The packet type is determined by the instruction code, which is stored in each queue entry. FIG. 12 shows the transmission queue entry format.

[バイパスモード]
ARPモジュールは入来するパケットデータの自動処理をバイパスする選択肢を有している。バイパスフラグが設定されるとき、入来するARP/RARPデータは例外ハンドラバッファへ転送される。CPUはその後、バッファをアクセスし、データを処理する。バイパスモードであるとき、CPUはそれ自身でARP回答を発生し、データを送信スケジューラへ転送する。出力するARP/RARPパケットでカスタム化されることができるフィールドは、ソースIPアドレス、ソースイーサネット(登録商標)アドレス、ターゲットIPアドレス、命令コードである。すべての他のフィールドはイーサネット(登録商標)によってIPv4のARP/RARPで使用される標準的な値に一致し、ソースイーサネット(登録商標)アドレスはイーサネット(登録商標)インターフェースのアドレスに設定される。(CPUはこの文脈ではホストコンピュータまたはオンチッププロセッサであってもよい。)
注意:これらの他のARP/RARPフィールドの変更が必要であるならば、CPUは生のイーサネット(登録商標)フレーム自体を発生しなければならない。
[Bypass mode]
The ARP module has an option to bypass the automatic processing of incoming packet data. When the bypass flag is set, incoming ARP / RARP data is transferred to the exception handler buffer. The CPU then accesses the buffer and processes the data. When in bypass mode, the CPU generates its own ARP reply and transfers the data to the transmission scheduler. The fields that can be customized in the output ARP / RARP packet are a source IP address, a source Ethernet (registered trademark) address, a target IP address, and an instruction code. All other fields match the standard values used in IPv4 ARP / RARP by Ethernet and the source Ethernet address is set to the address of the Ethernet interface. (The CPU may be a host computer or an on-chip processor in this context.)
Note: If these other ARP / RARP field changes are required, the CPU must generate the raw Ethernet frame itself.

[ARPキャッシュの動作理論]
[ARPキャッシュへのARPエントリの付加]
ターゲットとするARPリクエストおよび回答(ダイナミック)を受信するとき、またはCPU(静的)によりリクエストされるときにARPが生成される。(CPUはこの文脈ではホストコンピュータまたはオンチッププロセッサであってもよい。)ダイナミックなエントリはARPリクエストまたは回答がインターフェースIPアドレスの1つに対して受信されるときに生成されるARPエントリである。ダイナミックエントリはユーザまたはホストコンピュータで動作するアプリケーションプログラムにより特定されるときに典型的には5乃至15分の限定された時間だけ存在する。静的エントリはユーザにより生成され、通常終了しないARPエントリである。
[Theory of ARP cache operation]
[Add ARP entry to ARP cache]
An ARP is generated when receiving a targeted ARP request and answer (dynamic) or when requested by the CPU (static). (The CPU may be a host computer or on-chip processor in this context.) A dynamic entry is an ARP entry that is generated when an ARP request or answer is received for one of the interface IP addresses. A dynamic entry typically exists for a limited time of 5 to 15 minutes as specified by an application program running on the user or host computer. Static entries are ARP entries that are created by the user and do not normally terminate.

新しいARPデータは2つのソース、即ちARPレジスタを介するCPUおよびARPパケットパーサから来る。入来するARPデータを可能な限り迅速に処理することが必要であるので、両者のソースが同時にARPエントリを付加するようにリクエストするとき、ダイナミックARPエントリは優先順位を有する。   New ARP data comes from two sources: the CPU and ARP packet parser via the ARP registers. Because it is necessary to process incoming ARP data as quickly as possible, dynamic ARP entries have priority when both sources request to add ARP entries at the same time.

一度、ARPデータソースが選択されると、IT10GハードウェアメモリのどこにARPエントリを記憶されるかを決定することを必要とする。これを行うために所定のIPアドレスをメモリ位置中にマップするために探索テーブル(LUT)を使用する。探索テーブルは256のエントリを含んでいる。各エントリは16ビット幅であり、メモリポインタおよびポインタ有効(PV)ビットを含んでいる。PVビットはポインタが有効なアドレス、即ちARPキャッシュにより割当てられるメモリブロックの開始アドレスを指しているか否かを決定するために使用される。図13は探索テーブルエントリフォーマットを示している。   Once the ARP data source is selected, it is necessary to determine where in the IT10G hardware memory the ARP entry is stored. To do this, a lookup table (LUT) is used to map a given IP address into a memory location. The search table contains 256 entries. Each entry is 16 bits wide and includes a memory pointer and pointer valid (PV) bits. The PV bit is used to determine whether the pointer points to a valid address, i.e. the starting address of a memory block allocated by the ARP cache. FIG. 13 shows a search table entry format.

LUTの何処からポインタを検索する必要があるかを決定するために、8ビットインデックスを使用する。このインデックスは32ビットIPアドレスの最後のオクテットから取られる。最後のオクテットを使用する理由は構内網(LAN)では、これがホスト間で最も変化するIPアドレス部分であるからである。   An 8-bit index is used to determine where in the LUT the pointer needs to be retrieved. This index is taken from the last octet of the 32-bit IP address. The reason for using the last octet is that in a local area network (LAN), this is the portion of the IP address that varies most between hosts.

一度、LUTの使用するスロットを決定すると、そのスロットに有効なポインタ(PV=“1”)が含まれているか否かをチェックする。有効なポインタが存在するならば、このインデックスに割当てられたメモリのブロックが存在することを意味し、ターゲットIPアドレスはそのブロックで発見されることができる。この点で、指向されているメモリのブロックが検索され、ターゲットIPアドレスが検索される。LUTがこのスロットに有効なポインタを含まないならば、メモリは内部メモリ、malloc1から割当てられなければならない。一度、メモリが割当てられると、割当てられたメモリの第1のワードのアドレスはLUTエントリのポインタフィールドに記憶される。   Once the slot used by the LUT is determined, it is checked whether or not a valid pointer (PV = "1") is included in the slot. If there is a valid pointer, it means that there is a block of memory assigned to this index, and the target IP address can be found in that block. At this point, the directed memory block is searched and the target IP address is searched. If the LUT does not contain a valid pointer for this slot, the memory must be allocated from internal memory, malloc1. Once the memory is allocated, the address of the first word of the allocated memory is stored in the pointer field of the LUT entry.

メモリを割当て、ポインタをLUTに記憶した後、必要なARPデータを記憶する必要がある。このARPデータはこれがキャッシュ探索中に正確なエントリであるか否かを決定するのに必要なIPアドレスを含んでいる。制御フィールドのセットもまた使用される。再試行カウンタは所定のIPアドレスで行われる複数のARPリクエスト試行の追跡を続けるために使用される。タイプフィールドはキャッシュエントリのタイプ(000=ダイナミックエントリ;001=静的エントリ;010=代理エントリ;011=ARPチェックエントリ)を示す。解決フラグはこのIPアドレスがイーサネット(登録商標)アドレスに適切に解決されていることを示す。有効なフラグはこのARPエントリが有効なデータを含んでいることを示す。注意;最初のARPリクエストが行われている間はエントリは有効であり解決されない。srcフィールドはARPエントリのソース(00=ダイナミックな加算、01=システムインターフェース、10=IPルータ、11=両システムインターフェースおよびIPルータの両者)を示している。インターフェースフィールドは多数のイーサネット(登録商標)インターフェースの使用を可能にするが、単一のインターフェース(0)にデフォルトする。後続する制御フィールドは以下のARPエントリを指すリンクアドレスである。リンクアドレスの上位桁ビット(MSB)は実際にはフラグlink_validである。link_validビットはこれに続く別のARPエントリが存在することを示している。最後の2つのフィールドはIPアドレスが解決されるイーサネット(登録商標)アドレスと、タイムスタンプである。タイムスタンプはARPアドレスが生成されたときを示し、エントリが満了しているか否かを決定するために使用される。図14はARPキャッシュエントリフォーマットの一例を示している。   After allocating memory and storing the pointer in the LUT, it is necessary to store the necessary ARP data. This ARP data contains the IP address needed to determine if this is an accurate entry during cache search. A set of control fields is also used. The retry counter is used to keep track of multiple ARP request attempts made at a given IP address. The type field indicates the type of cache entry (000 = dynamic entry; 001 = static entry; 010 = proxy entry; 011 = ARP check entry). The resolution flag indicates that this IP address is properly resolved to an Ethernet (registered trademark) address. A valid flag indicates that this ARP entry contains valid data. Note: While the first ARP request is made, the entry is valid and not resolved. The src field indicates the source of the ARP entry (00 = dynamic addition, 01 = system interface, 10 = IP router, 11 = both system interface and IP router). The interface field allows the use of multiple Ethernet interfaces, but defaults to a single interface (0). The control field that follows is a link address that points to the following ARP entry. The high-order bit (MSB) of the link address is actually the flag link_valid. The link_valid bit indicates that another ARP entry follows. The last two fields are an Ethernet address where the IP address is resolved and a time stamp. The time stamp indicates when the ARP address was generated and is used to determine whether the entry has expired. FIG. 14 shows an example of the ARP cache entry format.

256を超えるホストまたは多数のサブネットを有するLANでは、異なるIPアドレス間の衝突がLUTで生じる。換言すると、2以上のIPアドレスが同じLUTインデックスにマップされることができる。これはそのIPアドレスの最後のオクテットに所定の値を有する2以上のホストのためである。衝突に対処するため、ARPキャッシュは鎖を使用し、これについて次に説明する。   In a LAN with more than 256 hosts or multiple subnets, collisions between different IP addresses occur in the LUT. In other words, two or more IP addresses can be mapped to the same LUT index. This is for two or more hosts having a predetermined value in the last octet of the IP address. To deal with collisions, the ARP cache uses chains, which are described next.

LUTで探索を行い、エントリがそのスロットに既に存在することが分かったとき、メモリから指向されるARPエントリを検索する。ARPエントリのIPアドレスを検査し、これをターゲットIPアドレスと比較する。IPアドレスが一致するならば、単にエントリを更新できる。しかしながら、アドレスが一致しないならば、Link_ValidフラグとARPエントリの最後の16ビットを観察する。最後の16ビットは同一のLUTインデックスにマップする別のARPエントリを指向するリンクアドレスを含んでいる。Link_Validビットが主張されるならば、リンクアドレスフィールドを指向するARPエントリを検索する。再度エントリ中のIPアドレスがターゲットIPアドレスに比較される。一致が存在するならば、エントリは更新され、存在しないならば、探索プロセスは一致が発見されるかLink_Validビットが主張されなくなるまで(鎖中の後続するリンクで)継続する。   A search is performed on the LUT and when an entry is found to already exist in that slot, an ARP entry directed from memory is searched. Check the IP address of the ARP entry and compare it with the target IP address. If the IP addresses match, the entry can simply be updated. However, if the addresses do not match, observe the Link_Valid flag and the last 16 bits of the ARP entry. The last 16 bits contain the link address pointing to another ARP entry that maps to the same LUT index. If the Link_Valid bit is asserted, search for an ARP entry pointing to the link address field. Again, the IP address in the entry is compared with the target IP address. If there is a match, the entry is updated, and if not, the search process continues (with subsequent links in the chain) until a match is found or the Link_Valid bit is not asserted.

鎖の最後に到達し、一致が発見されないときには、新しいARPエントリが生成される。新しいARPエントリの生成はmalloc1メモリ制御装置によるメモリの割当てを必要とする。メモリの各ブロックは大きさが128バイトである。したがって、各ブロックは8ARPエントリを収容できる。ブロックの最後に到達したならば、新しいメモリブロックがmalloc1からリクエストされなければならない。   When the end of the chain is reached and no match is found, a new ARP entry is created. Creation of a new ARP entry requires allocation of memory by the malloc1 memory controller. Each block of memory is 128 bytes in size. Thus, each block can accommodate 8 ARP entries. If the end of the block is reached, a new memory block must be requested from malloc1.

前述したように、ユーザ(またはホストコンピュータで動作するアプリケーション)は静的または永久的なARPエントリを生成する選択肢を有している。ユーザはダイナミックARPデータが静的エントリを置換することを可能にする選択肢を有している。換言すると、静的ARPエントリが既に生成されているIPアドレスのためにARPデータが受信されるとき、その静的エントリは受信されたデータと置換されることができる。このアレンジメントの利点は静的エントリが古くなり、ダイナミックなデータを静的データに重ね書きすることを可能にし、より新しいARPテーブルを生じることである。IPからイーサネット(登録商標)に対するアドレスのマッピングが一定であり、例えばルータインターフェースのIPおよびイーサネット(登録商標)アドレスを記憶していることをユーザが確信しているならば、この更新能力はディスエーブルされる。ユーザはまたLANでのARP放送数を最小にするために静的エントリを保持するように選択することもできる。注意:ARP代理エントリはダイナミックARPデータにより重ね書きされることが絶対にできない。   As previously mentioned, the user (or application running on the host computer) has the option of creating a static or permanent ARP entry. The user has the option of allowing dynamic ARP data to replace static entries. In other words, when ARP data is received for an IP address for which a static ARP entry has already been generated, the static entry can be replaced with the received data. The advantage of this arrangement is that static entries become stale, allowing dynamic data to be overwritten on static data, resulting in a newer ARP table. This update capability is disabled if the user is confident that the IP to Ethernet address mapping is constant, eg, storing the router interface IP and Ethernet addresses. Is done. The user can also choose to keep a static entry to minimize the number of ARP broadcasts on the LAN. Note: ARP proxy entries can never be overwritten by dynamic ARP data.

[キャッシュのエントリの探索]
ARPキャッシュのエントリの探索はARPエントリの生成プロセスと類似したプロセスをたどる。探索はメモリが所定のインデックスに割当てられているか否かを決定するためにLUTを使用することにより開始する。メモリが割当てられているならば、メモリはエントリが発見される(キャッシュヒットが生じる)か、ゼロに設定されている(キャッシュの損失)link_validフラグを有するエントリに遭遇するまで検索される。
Search cache entries
Searching for an ARP cache entry follows a process similar to the process of creating an ARP entry. The search begins by using the LUT to determine whether memory is assigned to a given index. If memory is allocated, the memory is searched until an entry is found (causes a cache hit) or encounters an entry with the link_valid flag set to zero (cache loss).

キャッシュの損失が生じたならば、ARPリクエストが発生される。これは必要ならば、キャッシュの新しいARPエントリと、新しいLUTエントリを生成することを含んでいる。新しいARPエントリでは、ターゲットIPアドレスが記憶され、解決ビットはゼロに設定され、有効ビットは1に設定される。リクエストカウンタは同様にゼロに設定される。エントリはその後時間スタンプされ、ARPリクエストはARPモジュールに送られる。回答が1秒後に受信されないならば、リクエストカウンタはインクリメントされ、別のリクエストが送信される。3つのリクエストを送信し、回答を受信しなかった後、ターゲットIPを解決する試みは断念される。注意:再試行インターバルと、リクエスト再試行数はユーザによる構成が可能である。   If a cache loss occurs, an ARP request is generated. This includes creating a new ARP entry in the cache and a new LUT entry if necessary. In the new ARP entry, the target IP address is stored, the resolution bit is set to zero, and the valid bit is set to one. The request counter is similarly set to zero. The entry is then time stamped and the ARP request is sent to the ARP module. If no answer is received after 1 second, the request counter is incremented and another request is sent. After sending three requests and not receiving a reply, the attempt to resolve the target IP is abandoned. Note: The retry interval and the number of request retries are user configurable.

キャッシュの損失が生じたとき、リクエストモジュールは損失を通知される。これによりCPUまたはIPルータは現在のターゲットIPアドレスに対するARP回答を待機することを決定するか、別のIPアドレスの新しい探索を開始して現在のIPアドレスを待ち行列の後部に位置させる機会が与えられる。これは多数の接続の設定におけるキャッシュ損失の衝撃を最小にする。図15はARP探索プロセスを示すフロー図である。   When a cache loss occurs, the request module is notified of the loss. This allows the CPU or IP router to decide to wait for an ARP reply for the current target IP address, or to start a new search for another IP address and place the current IP address at the back of the queue. It is done. This minimizes the impact of cache loss on multiple connection settings. FIG. 15 is a flowchart showing the ARP search process.

一致するエントリが発見される(キャッシュヒット)ならば、解決されたイーサネット(登録商標)アドレスはARP探索をリクエストするモジュールに戻される。そうでなく、ターゲットIPアドレスがキャッシュで発見されず、すべてのARPリクエストの試行がタイムアウトであるならば、リクエストモジュールはターゲットIPアドレスが解決されなかったことを通知される。   If a matching entry is found (cache hit), the resolved Ethernet address is returned to the module requesting the ARP search. Otherwise, if the target IP address is not found in the cache and all ARP request attempts time out, the request module is notified that the target IP address has not been resolved.

注意:IPルータからのARP探索リクエストが失敗したとき、ルータはそのアドレスをさらに探索することを開始する前に最低20秒待たなければならない。   Note: When an ARP search request from an IP router fails, the router must wait at least 20 seconds before starting to search further for that address.

[キャッシュ初期化]
ARPキャッシュが初期化されるとき、幾つかのコンポーネントはリセットされる。探索テーブル(LUT)はすべてのPVビットをゼロに設定することによりクリアされる。現在使用されるすべてのメモリは割当てを解除され、malloc1メモリ制御装置へ解放されて戻される。ARP満了タイマもゼロに設定される。
[Cache initialization]
When the ARP cache is initialized, some components are reset. The lookup table (LUT) is cleared by setting all PV bits to zero. All currently used memory is deallocated and released back to the malloc1 memory controller. The ARP expiration timer is also set to zero.

初期化期間中、ARPリクエストは発生されない。またCPU(静止エントリ)から、或いは受信されたARPデータ(ダイナミックエントリ)からARPエントリを生成する試みは無視されるか破棄される。   During the initialization period, no ARP request is generated. Also, attempts to generate an ARP entry from the CPU (static entry) or from received ARP data (dynamic entry) are ignored or discarded.

[ARPエントリの満了]
ダイナミックARPエントリは限定された時間量だけARPキャッシュにのみ存在できる。これは任意のIPからイーサネット(登録商標)へのアドレスのマッピングが失効されることを防止する。古いアドレスのマッピングはLANがIPアドレスを割当てるためにDHCPを使用するか、装置のイーサネット(登録商標)インターフェースが通信セッション中に変更されるならば生じる。
[Expiration of ARP entry]
Dynamic ARP entries can only exist in the ARP cache for a limited amount of time. This prevents any IP-to-Ethernet address mapping from being invalidated. Old address mapping occurs if the LAN uses DHCP to assign an IP address or if the Ethernet interface of the device is changed during the communication session.

時間の追跡を維持するために16ビットカウンタが使用される。1Hzのクロック周波数で動作するカウンタが経過した秒数を追跡するために使用される。各ARPエントリはこのカウンタから取られる16ビットのタイムスタンプを含んでいる。このタイムスタンプはIPアドレスが適切に解決されるときに取られる。   A 16-bit counter is used to maintain time tracking. A counter operating at a clock frequency of 1 Hz is used to track the number of seconds that have elapsed. Each ARP entry contains a 16-bit timestamp taken from this counter. This time stamp is taken when the IP address is properly resolved.

ARPエントリの満了はARPキャッシュがアイドルであるとき、即ち探索またはリクエストが現在処理されないときに生じる。このとき8ビットカウンタはLUTを巡回し検索するために使用される。LUTの各スロットは有効なポインタを含んでいるか否かを見るためにチェックされる。ポインタが有効ならば、指向するメモリブロックが検索される。その後、そのブロック内の各エントリはそのタイムスタンプと現在の時間との差がARPエントリの最大寿命以上であるか否かを見るためにチェックされる。他のメモリブロックが第1のメモリブロックから鎖を外されるならば、これらのブロックに含まれるエントリもチェックされる。一度、所定のLUTインデックスに関連するすべてのエントリがチェックされると、次のLUTスロットがチェックされる。   The expiration of an ARP entry occurs when the ARP cache is idle, i.e. no search or request is currently being processed. At this time, the 8-bit counter is used to search and search the LUT. Each slot in the LUT is checked to see if it contains a valid pointer. If the pointer is valid, the memory block to which it points is retrieved. Each entry in the block is then checked to see if the difference between its timestamp and the current time is greater than or equal to the maximum lifetime of the ARP entry. If other memory blocks are unchained from the first memory block, the entries contained in these blocks are also checked. Once all entries associated with a given LUT index have been checked, the next LUT slot is checked.

エントリが満了されていることが発見されたならば、エントリ中の有効なビットはゼロに設定される。同一のメモリブロックにその他のエントリが存在しないならば、ブロックは割当てを解除されてmalloc1に戻される。割当てを解除されたブロックは所定のLUTスロットに関連する唯一のブロックであるならば、そのスロットのPVビットもゼロに設定される。   If it is found that the entry has expired, the valid bit in the entry is set to zero. If no other entry exists in the same memory block, the block is deallocated and returned to malloc1. If the deallocated block is the only block associated with a given LUT slot, the PV bit for that slot is also set to zero.

[ARP代理の実行]
ARPキャッシュは代理ARPエントリをサポートする。ARP代理は、この装置がLANトラフィックのルータとして作用するときまたはARPの問い合わせに応答できない装置がLANに存在するときに使用される。
[Execute ARP proxy]
The ARP cache supports proxy ARP entries. The ARP proxy is used when this device acts as a router for LAN traffic or when there is a device on the LAN that cannot respond to ARP queries.

ARP代理が使用可能になると、ARPモジュールはそのホストに属さないIPアドレスに対するリクエストをARPキャッシュまで通過する。ARPキャッシュはその後、ターゲットIPアドレスを検索するため探索を行う。一致を発見したならば、それが代理エントリであるか否かを決定するためにARPエントリのタイプフィールドを検査する。代理エントリであるならば、ARPキャッシュは対応するイーサネット(登録商標)アドレスをARPモジュールへ戻す。ARPモジュールはその後代理エントリで発見されたイーサネット(登録商標)アドレスをソースイーサネット(登録商標)アドレスとして使用してARP回答を生成する。注意:ARP代理探索は入来するARPリクエストに対してのみ行われる。   When the ARP proxy is enabled, the ARP module passes requests for IP addresses that do not belong to the host to the ARP cache. The ARP cache then searches to find the target IP address. If a match is found, the type field of the ARP entry is examined to determine if it is a proxy entry. If it is a proxy entry, the ARP cache returns the corresponding Ethernet address to the ARP module. The ARP module then generates an ARP reply using the Ethernet address found in the proxy entry as the source Ethernet address. Note: ARP proxy search is only performed for incoming ARP requests.

[重複IPアドレスの検出(ARPチェック)]
システム(ホストコンピュータとIT10Gハードウェア)が最初にネットワークに接続するとき、ユーザまたはホストコンピュータで動作するアプリケーションはネットワーク上の任意の他の装置がそのインターフェースに割当てられたIPアドレスの1つを使用しているか否かを試験するために無料のARPリクエストを行うべきである。同一のLAN上の2つの装置が同じIPアドレスを使用するならば、これは2つのホストの経路設定パケットについて問題を発生する。無料のARPリクエストはホスト固有のIPアドレスのリクエストである。問合せに対する回答が受信されないならば、LANにはIPアドレスを使用しているホストが他にないと仮定されることができる。
[Duplicate IP address detection (ARP check)]
When the system (host computer and IT10G hardware) first connects to the network, the user or application running on the host computer uses one of the IP addresses assigned to that interface by any other device on the network. A free ARP request should be made to test whether If two devices on the same LAN use the same IP address, this creates a problem for the two host routing packets. A free ARP request is a request for a host-specific IP address. If no answer to the query is received, it can be assumed that there are no other hosts on the LAN using IP addresses.

ARPチェックはARP探索を行う方法と類似の方法で開始される。唯一の違いはキャッシュは一度ARPリクエストが完了すると破棄されることである。回答が受信されないならば、エントリは除去される。回答が受信されるならば、ホストコンピュータにIPアドレスがLAN上の別の装置により使用されていることを通知するため割込みが発生され、エントリはキャッシュから除去される。   The ARP check is started in a manner similar to that of performing an ARP search. The only difference is that the cache is discarded once the ARP request is completed. If no answer is received, the entry is removed. If a reply is received, an interrupt is generated to notify the host computer that the IP address is being used by another device on the LAN, and the entry is removed from the cache.

[キャッシュアクセスの優先順位]
異なるタスクはARPキャッシュメモリに対するアクセスに関して異なる優先順位を有する。代理エントリの探索はARPリクエストに対する迅速な応答を必要とするために最高の優先順位を有する。第2の優先順位はダイナミックエントリをキャッシュに付加することであり、入来するARPパケットは非常に高いレートで受信され、再送信を避けるために可能な限り迅速に処理されなければならない。IPルータからのARP探索は次に高い優先順位を有し、それにホストコンピュータによる探索が続く。ARPエントリの手作業の生成は第2に低い優先順位を有する、満了キャッシュエントリは最低の優先順位を有し、キャッシュがARP探索を処理しないときまたは新しいエントリを生成しないときにはいつでも行われる。
[Cache access priority]
Different tasks have different priorities for access to the ARP cache memory. The search for proxy entries has the highest priority because it requires a quick response to the ARP request. The second priority is to add dynamic entries to the cache, and incoming ARP packets must be received at a very high rate and processed as quickly as possible to avoid retransmission. The ARP search from the IP router has the next highest priority, followed by the search by the host computer. Manual generation of ARP entries has the second lowest priority, expired cache entries have the lowest priority, and occur whenever the cache does not handle ARP searches or generate new entries.

[IPモジュール]
[概要]
UT10Gはすべてのタイプの受信されたパケットで自動解析するIPv4パケットを固有にサポートする。
[IP module]
[Overview]
The UT 10G inherently supports IPv4 packets that automatically parse on all types of received packets.

[IPモジュールのブロック図]
図16はIPモジュールブロックの1構成の概略ブロック図である。
[Block diagram of IP module]
FIG. 16 is a schematic block diagram of one configuration of the IP module block.

[IPサブモジュールの説明]
[IPパーサ]
IPパーサモジュール161は受信されたIPパケットを解析し、パケットを送信する場所を決定するように動作する。各受信されたIPパケットはTCP/UDPモジュールまたは例外ハンドラへ送信されることができる。
[Description of IP submodule]
[IP parser]
The IP parser module 161 operates to analyze the received IP packet and determine where to send the packet. Each received IP packet can be sent to a TCP / UDP module or an exception handler.

[IPヘッダフィールドの解析]
IPv4だけがIPモジュールにより受取られ解析され、それ故、このフィールドは処理される0×4に相違ない。IPv6パケットが検出されるならば、例外ハンドラにより例外として管理され処理される。0×4よりも小さいバージョンを有する任意のパケットは奇形(不法)として考慮され、そのパケットはドロップされる。
[Analysis of IP header field]
Only IPv4 is received and parsed by the IP module, so this field must be 0x4 processed. If an IPv6 packet is detected, it is managed and processed as an exception by the exception handler. Any packet with a version smaller than 0x4 is considered malformed (illegal) and the packet is dropped.

[IPヘッダ長]
IPヘッダ長フィールドは任意のIPオプションが存在するか否かを決定するために使用される。このフィールドは5以上でなければならない。それよりも小さいならば、パケットは奇形として考慮され、ドロップされる。
[IP header length]
The IP header length field is used to determine whether any IP options are present. This field must be 5 or greater. If it is smaller, the packet is considered malformed and dropped.

[IP TOS]
このフィールドは受信されたパケットにおいて解析または維持されない。
[IP TOS]
This field is not parsed or maintained in the received packet.

[パケットLen]
このフィールドは受信されたパケット中の総バイト数を決定し、次のレベルのプロトコルにそのデータセクションの最後が存在する場所を示すために使用される。このカウントの満了後で、ip_packet信号が主張を解除する前に受信されたすべてのデータバイトは埋め込みバイトであると仮定され、暗黙的に破棄される。
[Packet Len]
This field determines the total number of bytes in the received packet and is used to indicate where the end of the data section exists in the next level protocol. After this count expires, all data bytes received before the ip_packet signal releases the assertion are assumed to be embedded bytes and are silently discarded.

[パケットID、フラグ、断片化オフセット]
これらのフィールドはパケットの断片化解除に使用される。断片化されたIPパケットは専用のハードウェアにより処理されるか、または例外として扱われ、例外ハンドラにより処理されることができる。
[Packet ID, flag, fragmentation offset]
These fields are used for packet defragmentation. Fragmented IP packets can be processed by dedicated hardware or treated as exceptions and processed by exception handlers.

[TTL]
このフィールドは受信されたパケットにおいて解析または維持されない。
[TTL]
This field is not parsed or maintained in the received packet.

[PROT]
このフィールドは次にカプセル化されるプロトコルの決定に使用される。以下のプロトコルはハードウェアで十分にサポート(または別の実施形態では部分的にサポート)される。

Figure 0004875126
[PROT]
This field is used to determine the next encapsulated protocol. The following protocols are fully supported (or partially supported in other embodiments) in hardware.
Figure 0004875126

任意のその他のプロトコルが受信され、unsupport_prot特性が使用可能になるならば、パケットはホストコンピュータに送信されることができる。プロトコルフィルタは選択的にあるプロトコルを受信することを可能にされることができる。そうでなければパケットは暗黙的に破棄される。   If any other protocol is received and the unsupport_prot property is enabled, the packet can be sent to the host computer. A protocol filter can be selectively enabled to receive certain protocols. Otherwise, the packet is silently discarded.

[チェックサム]
このフィールドは解析または維持されない。これは単にチェックサムが正しいことを確実にするために使用される。チェックサムが不適切であることが判明したならば、すべての次の層に行くbad_checksum信号が主張される。これは応答されるまで主張の状態である。
[Checksum]
This field is not parsed or maintained. This is simply used to ensure that the checksum is correct. If the checksum is found to be inappropriate, the bad_checksum signal going to all next layers is asserted. This is the state of the claim until it is answered.

[ソースIPアドレス]
このフィールドは解析されTCP/UDP層へ送信される。
[Source IP address]
This field is parsed and sent to the TCP / UDP layer.

[目的地IPアドレス]
このフィールドは解析され、ローカルスタックが応答すべき有効なIPアドレスに対してチェックされる。これは1よりも多くのクロックサイクルを取り、この場合解析は継続されなければならない。パケットが誤って誘導されていることが判明したならば、bad_ip_add信号が主張される。これは応答されるまで主張の状態である。
[Destination IP address]
This field is parsed and checked against a valid IP address to which the local stack should respond. This takes more than one clock cycle, in which case the analysis must continue. If it is found that the packet has been misdirected, the bad_ip_add signal is asserted. This is the state of the claim until it is answered.

[IP ID発生アルゴリズム]
オンチッププロセッサは任意の16ビット値をIP_ID_Startレジスタへ書込むことによりIP IDシード値を設定できる。ID発生器はこの値を取り、異なるリクエスタにより使用されるIP IDを発生するために16ビットのマッピングを行う。オンチッププロセッサ、TCPモジュール、ICMPエコー回答発生器はすべてIPIDをリクエストできる。ID発生器の1構造のブロック図が図17に示されている。
[IP ID generation algorithm]
The on-chip processor can set the IP ID seed value by writing any 16-bit value to the IP_ID_Start register. The ID generator takes this value and performs a 16-bit mapping to generate an IP ID for use by different requesters. On-chip processors, TCP modules, and ICMP echo reply generators can all request an IPID. A block diagram of one structure of the ID generator is shown in FIG.

IP IDシードレジスタは新しいIP IDがリクエストされる毎にインクリメントされる。ビットマッパブロックはIP ID_Outバスが簡単なインクリメント値ではないようにIP ID_Reg値を再度アレンジする。   The IP ID seed register is incremented each time a new IP ID is requested. The bit mapper block re-arranges the IP ID_Reg value so that the IP ID_Out bus is not a simple increment value.

[IPインジェクタモジュール]
IPインジェクタモジュールはオンチッププロセッサからIPおよびTCPモジュールへパケットを注入するために使用される。IPインジェクタ制御レジスタはIPモジュールレジスタスペースに位置され、これらのレジスタはオンチッププロセッサによりプログラムされる。IPインジェクタのデータフローを示すブロック図が図18に示されている。
[IP injector module]
The IP injector module is used to inject packets from the on-chip processor to the IP and TCP modules. The IP injector control registers are located in the IP module register space and these registers are programmed by the on-chip processor. A block diagram showing the data flow of the IP injector is shown in FIG.

図から認められるように、IPインジェクタはIPモジュール下にデータを挿入できる。IP注入を使用するために、オンチッププロセッサはパケットが存在するメモリの開始アドレス、パケットの長さ、ソースMACアドレスでIPインジェクタモジュールをプログラムする。インジェクタモジュールはオンチッププロセッサのメモリからスタックへのパケットの送信を完了するときに割込みを発生する。   As can be seen, the IP injector can insert data under the IP module. To use IP injection, the on-chip processor programs the IP injector module with the start address of the memory where the packet resides, the length of the packet, and the source MAC address. The injector module generates an interrupt when it completes sending a packet from the memory of the on-chip processor to the stack.

[TCP/UDPモジュール]
[概要]
このセクションはTCPモジュールを説明し、これはTCPおよびUDP転送プロトコルを管理する。TCPモジュールは4つの主要なセクション、即ちソケット送信インターフェース、TCP送信インターフェース、TCP受信インターフェース、ソケット受信インターフェースに分割される。
[TCP / UDP module]
[Overview]
This section describes the TCP module, which manages TCP and UDP transport protocols. The TCP module is divided into four main sections: socket send interface, TCP send interface, TCP receive interface, and socket receive interface.

[特徴リスト]
以下はIT10GのTCP特性のリストである。
64Kソケットサポート TCPの適切でないサポート
スロースタート 高速再送信/高速度回復
選択可能なNagleアルゴリズム ウィンドウスケーリング
選択的なACK(SACK) ラップされたシーケンス番号に対する保護
(PAWS)
タイムスタンプサポート キープアライブタイマ
[ウィンドウスケーリング]
IT10Gはウィンドウスケーリングをサポートする。ウィンドウスケーリングはTCPウィンドウの規定を32ビットに拡大する拡張である。これはRFC1323セクション2(http://www.rfc-editor.org/rfc/rfc1323.txtを参照)に規定されている。ウィンドウスケール動作は3つの変数に基づいている。1つはTCP_Control1のSL_Win_Enビット(これはウィンドウスケールを使用可能にする)であり、2つ目はTCP_Control3のスライディングウィンドウスケール(これはスケーリングファクタを設定する)であり、最後のものはスケールされる値を決定するWCLAMPパラメータである。
[Feature list]
The following is a list of IT10G TCP characteristics.
64K socket support Inappropriate support for TCP Slow start Fast retransmission / Recovery Selectable Nagle algorithm Window scaling Selective ACK (SACK) Protection against wrapped sequence numbers
(PAWS)
Timestamp support Keepalive timer [Window scaling]
IT10G supports window scaling. Window scaling is an extension that expands the TCP window specification to 32 bits. This is specified in RFC 1323 section 2 (see http://www.rfc-editor.org/rfc/rfc1323.txt). Window scale behavior is based on three variables. One is the SL_Win_En bit of TCP_Control1 (this enables the window scale), the second is the sliding window scale of TCP_Control3 (which sets the scaling factor), and the last is the value to be scaled WCLAMP parameters that determine

SL_Win_Enビットなしに、ハードウェアはTCP−3方向のハンドシェイク中にTCPウィンドウスケールオプションを介してウィンドウスケーリングを交渉しようとしない。   Without the SL_Win_En bit, the hardware does not attempt to negotiate window scaling via the TCP window scale option during the TCP-3 direction handshake.

[TCPダンプモード]
TCPダンプモードはTCPダンプおよび他のパケット監視プログラムのような広く使用される診断プログラムに対するサポートを可能にするIT10Gハードウェアモードである。TCPダンプモードが使用可能になるとき、すべての受信されたパケットは例外としてホストに送信され、ハードウェアスタックから来るすべての出力されるTCP/UDPパケットは例外パケットとしてループバックされる。
[TCP dump mode]
The TCP dump mode is an IT10G hardware mode that enables support for widely used diagnostic programs such as TCP dumps and other packet monitoring programs. When TCP dump mode is enabled, all received packets are sent as exceptions to the host, and all outgoing TCP / UDP packets coming from the hardware stack are looped back as exception packets.

ドライバはネットワークモニタに対するこれらのパケットのコピーを作り、受信パケットを再度注入し、送信パケットを生のイーサネット(登録商標)フレームとして送信する。   The driver makes a copy of these packets to the network monitor, injects the received packet again, and sends the transmitted packet as a raw Ethernet frame.

[ホストACKモード]
ホストACKモードはホストコンピュータがデータをTCPセグメントから受信したときにTCP ACKだけを送信するIT10Gハードウェアモードである。ホストACKモードはデータセグメントを含んだMTXバッファのDMAがACKを送信前に完了するのを待機する。ホストコンピュータと統合ネットワークアダプタとの間をまたはその反対方向に通過するときにデータが破損する場合、ホストACKモードは付加的なデータの完全性を保証する。
[Host ACK mode]
The host ACK mode is an IT10G hardware mode in which only the TCP ACK is transmitted when the host computer receives data from the TCP segment. The host ACK mode waits for the MTX buffer DMA containing the data segment to complete before sending the ACK. The host ACK mode ensures additional data integrity if data is corrupted when passing between the host computer and the integrated network adapter or vice versa.

[タイムスタンプ]
IT10Gはタイムスタンプのサポートを行う。タイムスタンプはRFC1323(http://www/rfc-editor.org/rfc/rfc1323txtを参照)に規定されているTCPに対する強化である。タイムスタンプはTCPがRTT(ラウンドトリップ時間)測定を良好に計算することを可能にし、またPAWS(ラップされたシーケンスに対する保護)のサポートに使用される。
[Time stamp]
IT10G provides time stamp support. The time stamp is an enhancement to TCP defined in RFC 1323 (see http: //www/rfc-editor.org/rfc/rfc1323txt). The time stamp allows TCP to compute RTT (round trip time) measurements well and is used to support PAWS (protection against wrapped sequences).

[PAWS]
PAWS(ラップされたシーケンスに対する保護)はRFC1323(http://www/rfc-editor.org/rfc/rfc1323txtを参照)に規定されている。PAWSはTCP接続を破壊する古い重複セグメントに対する保護であり。これは高速度のリンクでは重要な特徴である。
[PAWS]
PAWS (protection against wrapped sequences) is specified in RFC 1323 (see http: //www/rfc-editor.org/rfc/rfc1323txt). PAWS is a protection against old duplicate segments that break TCP connections. This is an important feature for high speed links.

[TCPホスト再送信モード]
TCPホスト再送信モードは統合ネットワークアダプタに位置するバッファからではなく、ホストのメモリバッファからの直接にデータの再送信を可能にする。これは統合ネットワークアダプタにより必要とされるメモリ量が減少されることを許容する。
[TCP host retransmission mode]
The TCP host retransmission mode allows data to be retransmitted directly from the host's memory buffer rather than from a buffer located at the integrated network adapter. This allows the amount of memory required by the integrated network adapter to be reduced.

[初期シーケンス番号発生]
初期シーケンス番号発生は秘密保護される必要がある。RFC1948はRFC793のオリジナルの初期シーケンス番号仕様の弱点を指摘し、幾つかの代わりの方法を推薦している。統合ネットワークアダプタはRFV1948にしたがって動作する最適化された方法を使用するが、ハードウェアで構成するのに効率的である。
[Initial sequence number generation]
The initial sequence number generation needs to be protected. RFC 1948 points out the weaknesses of RFC 793's original initial sequence number specification and recommends several alternative methods. The integrated network adapter uses an optimized method that operates according to RFV 1948, but is efficient to configure in hardware.

[二重スタックモード]
二重スタックモードはネットワークアダプタに集積されるハードウェアTCP/IPスタックが協動してホストコンピュータのTCP/IPスタックを伴って動作することを可能にする。
[Double stack mode]
The dual stack mode allows the hardware TCP / IP stack integrated in the network adapter to work together with the host computer's TCP / IP stack.

二重スタックモードは統合ネットワークアダプタがそれと同一のIPアドレスを使用して並列に動作するソフトウェアスタックの共存をサポートすることを可能にする。   The dual stack mode allows the integrated network adapter to support the coexistence of software stacks operating in parallel using the same IP address.

二重スタックモードは統合ネットワークアダプタの2つの基本的なハードウェア機能を必要とする。第1のハードウェア機能はSYN状態メッセージモードである。SYN状態メッセージモードでは、任意の受信されたSYNは状態メッセージをホストコンピュータに対して発生し、SYN/ACKはホストコンピュータが適切な命令ブロックを統合ネットワークアダプタハードウェアへ返送するまで、統合ネットワークアダプタハードウェアにより発生されない。SYN状態メッセージモードが統合ネットワークアダプタで使用可能とならないならば、SYN/ACKは統合ネットワークアダプタにより自動的に発生され、状態メッセージは発生されない。   The dual stack mode requires two basic hardware functions of the integrated network adapter. The first hardware function is the SYN status message mode. In the SYN status message mode, any received SYN generates a status message to the host computer, and the SYN / ACK responds until the host computer returns the appropriate instruction block to the integrated network adapter hardware. Not generated by hardware. If the SYN status message mode is not enabled on the integrated network adapter, SYN / ACK is automatically generated by the integrated network adapter and no status message is generated.

二重スタックモードにより必要とされる第2のハードウェア機能は統合ネットワークアダプタ制御ブロックデータベースと一致しないTCPパケットが受信されるとき、統合ネットワークアダプタハードウェアからのRSTメッセージの抑制である。この場合、自動的にRSTを発生する代わりに、統合ネットワークアダプタハードウェアはホストコンピュータのソフトウェアTCP/IPスタックがこのパケットを例外パケットとして処理することを可能にするために、例外パケットとしてパケットをホストコンピュータへ送信しなければならない。   A second hardware function required by the dual stack mode is suppression of RST messages from the integrated network adapter hardware when a TCP packet that does not match the integrated network adapter control block database is received. In this case, instead of automatically generating an RST, the integrated network adapter hardware hosts the packet as an exception packet to allow the host computer's software TCP / IP stack to handle this packet as an exception packet. Must be sent to the computer.

[IP ID分割]
IP(インターネット・プロトコル)ID(インターネット識別)分割は二重スタックサポートパッケージの部分である。IP ID分割はホストコンピュータおよび統合ネットワークアダプタがIP IDのオーバーラップなしにIPアドレスを共有することを可能にする。IP ID分割がオフに切換えられたとき、統合ネットワークアダプタは全16ビットID範囲(0−255)を使用する。IP ID分割がオンに切換えられたとき、IP IDのビット[15]は1にされ、ホストコンピュータソフトウェアのTCP/IPスタックがIP ID範囲の半分を使用することを可能にする(即ち統合ネットワークアダプタは128−255を使用し、ホストコンピュータソフトウェアTCP/IPスタックはIP IDで0−127を使用する)。
[IP ID division]
IP (Internet Protocol) ID (Internet Identification) partitioning is part of the dual stack support package. IP ID partitioning allows host computers and integrated network adapters to share IP addresses without IP ID overlap. When IP ID split is switched off, the integrated network adapter uses the full 16-bit ID range (0-255). When IP ID split is switched on, IP ID bit [15] is set to 1, allowing the TCP / IP stack of the host computer software to use half of the IP ID range (ie, an integrated network adapter Uses 128-255, and the host computer software TCP / IP stack uses 0-127 in the IP ID).

[カスタムフィルタリング]
あるタイプのパケットの特別な動作を限定、承認または行うために使用されることができるカスタムフィルタを有する場所がハードウェアに幾つか存在する。イーサネット(登録商標)フィルタリングは以下の属性を取ることができる。
・プログラムされたユニキャストアドレスの受取り、
・放送パケットの受取り、
・マルチキャストパケットの受取り、
・ネットマスクにより特定される範囲内のアドレスの受取り、
・無差別モードを可能にする(すべてのパケットを容認する)。
[Custom filtering]
There are several locations in the hardware that have custom filters that can be used to limit, approve, or perform special operations on certain types of packets. Ethernet filtering can take the following attributes:
Receiving a programmed unicast address,
・ Receiving broadcast packets,
・ Receiving multicast packets,
・ Receiving addresses within the range specified by the netmask,
Enable promiscuous mode (accept all packets).

[VLANサポート]
VLANサポートは幾つかの最適化されたハードウェア素子からなる。1つのハードウェア素子は入力パケットからVLANヘッダ除去し、第2の最適化されたハードウェア素子はVLANタグが付された出力パケットを発生し、第3の最適化されたハードウェア素子は入力SYNフレームからVLANパラメータを生成し、第4の最適化されたハードウェア素子は例外パケットとUDPパケットのVLANタグ情報を通す。
[VLAN support]
VLAN support consists of several optimized hardware elements. One hardware element removes the VLAN header from the input packet, the second optimized hardware element generates an output packet tagged with a VLAN, and the third optimized hardware element is the input SYN. A VLAN parameter is generated from the frame, and the fourth optimized hardware element passes the VLAN tag information of the exception packet and the UDP packet.

[ジャンボフレームサポート]
ジャンボフレームは通常の1500バイトサイズのイーサネット(登録商標)フレームよりも大きい。ヘッダ情報に対して使用されるネットワーク帯域幅よりも小さいジャンボフレームはネットワークにおいて増加されたデータ処理能力を可能にする。統合ネットワークアダプタは9kバイトまでのジャンボフレームをサポートするために最適化されたハードウェアを使用する。
[Jumbo frame support]
The jumbo frame is larger than a normal 1500 byte Ethernet (registered trademark) frame. A jumbo frame that is smaller than the network bandwidth used for header information allows for increased data processing capacity in the network. The integrated network adapter uses hardware that is optimized to support jumbo frames up to 9 kbytes.

[SNMPサポート]
SNMPはネットワークおよびハードウェアアダプタ性能の統計が遠隔的に監視されることを可能にする上位レベルのプロトコルの形態である。
[SNMP support]
SNMP is a form of high-level protocol that allows network and hardware adapter performance statistics to be monitored remotely.

[MIBサポート]
統合ネットワークアダプタは多数の統計カウンタに対して最適化されたハードウェアサポートを含んでいる。これらの統計カウンタは標準的な管理情報ベース(MIB)により規定されている。各これらのSNMP MIBカウンタはネットワークおよび統合ネットワークアダプタで生じる(受信され、送信され、ドロップされたパケット)事象を追跡する。
[MIB support]
The integrated network adapter includes hardware support optimized for a number of statistical counters. These statistical counters are defined by a standard management information base (MIB). Each of these SNMP MIB counters tracks events that occur in the network and integrated network adapters (received, transmitted, dropped packets).

[メモリチェック]
メモリエラーチェックおよび補正(ECC)は部分的なチェックに類似している。しかしながら、パリティチェックが単一ビットエラーだけしか検出できない場合にも、ECCは単一ビットメモリエラーを検出および補正し、二重ビットエラーを検出できる。
[Memory check]
Memory error checking and correction (ECC) is similar to partial checking. However, even if the parity check can detect only a single bit error, the ECC can detect and correct a single bit memory error and detect a double bit error.

単一ビットエラーは最も普通であり、完全なバイトまたはワードを読取るときに不正確であるデータの単一ビットにより特徴付けされる。マルチビットエラーは同じバイトまたはワード内で2以上のビットがエラーである結果である。   Single bit errors are most common and are characterized by a single bit of data that is inaccurate when reading a complete byte or word. A multi-bit error is the result of two or more bits in error within the same byte or word.

ECCメモリは暗号化されたECCコードをデータと共に記憶するために追加ビットを使用する。データがメモリに書込まれるとき、ECCコードもまた記憶される。データが読み戻されるとき、記憶されたECCコードはデータが書込まれたときに発生されたECCコードと比較される。ECCコードが一致しないならば、データ中のどのビットがエラーであるかを決定できる。エラーのビットが“反転”され、メモリ制御装置が補正されたデータを解放する。エラーは“オンザフライ(on-the-fly)”で補正され、補正されたデータはメモリに戻されない。同じ破損データが再度読取られるならば、補正プロセスは反復される。   The ECC memory uses additional bits to store the encrypted ECC code along with the data. When data is written to memory, the ECC code is also stored. When the data is read back, the stored ECC code is compared with the ECC code generated when the data was written. If the ECC codes do not match, it can be determined which bits in the data are in error. The error bit is "inverted" and the memory controller releases the corrected data. Errors are corrected “on-the-fly” and the corrected data is not returned to memory. If the same corrupted data is read again, the correction process is repeated.

統合ネットワークアダプタはECCがアダプタ内のパケットデータおよび制御情報の両者を保護するためのフレキシブルな方法でプログラムされ選択されることを可能にする。   The integrated network adapter allows the ECC to be programmed and selected in a flexible way to protect both packet data and control information within the adapter.

[遺産モード]
遺産モードはトラフィックタイプにかかわりなくすべてのネットワークトラフィックがホストコンピュータへ送信されることを可能にする。これらのモードは統合ネットワークアダプタがハードウェアTCP/IPスタックがアダプタに存在しないかのように動作することを可能にし、モードはしばしばダンプNIC(ネットワークインターフェースカード)と呼ばれる。
[Heritage mode]
Legacy mode allows all network traffic to be sent to the host computer regardless of traffic type. These modes allow the integrated network adapter to operate as if a hardware TCP / IP stack is not present on the adapter, and the mode is often referred to as a dump NIC (network interface card).

[IP断片化]
IP断片化されたパケットの再組立ては統合ネットワークアダプタにより処理されない。IP断片化パケットは例外パケットとして通過され、ドライバ中で再度組立てられ、その後IP注入モードを介して統合ネットワークアダプタへ“再注入”される。
[IP fragmentation]
Reassembly of IP fragmented packets is not handled by the integrated network adapter. The IP fragmentation packet is passed as an exception packet, reassembled in the driver, and then “reinjected” to the integrated network adapter via the IP injection mode.

[IP注入]
IP注入モードはIPパケット(例えば再度組立てられたIP断片またはIPsecパケット)が統合ネットワークアダプタのハードウェアTCP/IPスタックに注入されることを可能にする。
[IP injection]
The IP injection mode allows IP packets (eg, reassembled IP fragments or IPsec packets) to be injected into the hardware TCP / IP stack of the integrated network adapter.

注入制御レジスタはIPパケットを統合ネットワークアダプタ内のTCP/IPスタックに注入するために使用される。注入制御レジスタの特徴はホストコンピュータが注入を制御し、IPパケットを統合ネットワークアダプタ内のハードウェアTCP/IPスタックに注入することを可能にする。注入制御レジスタはしたがってSYN、IPSec、または他のパケットの統合ネットワークアダプタへの注入を可能にする。注入制御レジスタもまたTCPダンプモード機能の一部である。   The injection control register is used to inject IP packets into the TCP / IP stack in the integrated network adapter. The injection control register feature allows the host computer to control injection and to inject IP packets into the hardware TCP / IP stack in the integrated network adapter. The injection control register thus allows injection of SYN, IPSec, or other packets into the integrated network adapter. The injection control register is also part of the TCP dump mode function.

[NAT、IPマスカレード、ポート転送]
NAT、IPマスカレード、ポート転送はポートのプログラム可能な範囲に入る特定されたタイプのUDPまたはTCPのすべてのパケットを例外パスに転送するポート範囲レジスタを介して統合ネットワークアダプタでサポートされる。ポートレジスタはある範囲のポートがNAT、IPマスカレード、ポート転送のようなネットワーク制御動作で使用されることを可能にする。
[NAT, IP masquerade, port forwarding]
NAT, IP masquerading, and port forwarding are supported by the integrated network adapter via a port range register that forwards all specified type UDP or TCP packets that fall into the programmable range of the port to the exception path. The port register allows a range of ports to be used in network control operations such as NAT, IP masquerading, and port forwarding.

[複数のIPアドレス]
統合ネットワークアダプタハードウェアはその固有のIPアドレスとして応答できるIPアドレスの16までの範囲をサポートする。これらのアドレス範囲はマスクを有するIPアドレスベースとしてアクセス可能である。これはIPアドレスがIPアドレスの範囲まで拡張されることを可能にする。これは統合ネットワークアダプタがマルチホーミングまたは複数のIPアドレスに応答する能力を行うことを可能にする。
[Multiple IP addresses]
The integrated network adapter hardware supports up to 16 ranges of IP addresses that can respond as its own IP address. These address ranges are accessible as an IP address base with a mask. This allows the IP address to be extended to the IP address range. This allows the integrated network adapter to perform multihoming or the ability to respond to multiple IP addresses.

[IPデバッグモード]
試験および制御ビットが統合ネットワークアダプタで使用可能になるとき、すべてのIPパケットは例外としてホストコンピュータへ送信される。このモードは診断目的用に設計される。
[IP debug mode]
When the test and control bits are available on the integrated network adapter, all IP packets are sent as exceptions to the host computer. This mode is designed for diagnostic purposes.

[時間待機状態]
時間待機は受動的なモードのTCP接続の最終状態であり、時間待機状態とその動作はRFC793に記載されており、http://www.rfc-editor.org/rfc/rfc793.txtを参照されたい。
[Time standby state]
Time standby is the final state of a passive mode TCP connection, and the time standby state and its operation are described in RFC 793, see http://www.rfc-editor.org/rfc/rfc793.txt I want.

[仮想ソケット]
統合ネットワークアダプタハードウェアは可変のソケット数または接続数をサポートし、現在の構成では645535までのソケットをサポートする。
Virtual socket
The integrated network adapter hardware supports a variable number of sockets or connections, and the current configuration supports up to 645535 sockets.

統合ネットワークアダプタはアダプタとホストコンピュータとの間の接続を転送するため(TOEと一体化される)最適化されたハードウェアサポートを行う。   The integrated network adapter provides optimized hardware support (integrated with the TOE) to transfer the connection between the adapter and the host computer.

統合ネットワークアダプタハードウェアがその最大容量に等しい接続を承認するとき、次のSYNは例外パケットとしてホストへ通過され、ホストはこの接続を処理することができる。この接続を開くためにホストに対する場合、ハードウェアのデータベースに一致しないTCPパケットがRSTに回答する代りに例外パケットととしてホストへ転送されることを可能にする二重スタックモードの一部分を使用するようにハードウェアを設定する必要があることに注意すべきである。   When the integrated network adapter hardware accepts a connection equal to its maximum capacity, the next SYN is passed to the host as an exception packet, and the host can handle this connection. For the host to open this connection, use a portion of the dual stack mode that allows TCP packets that do not match the hardware database to be forwarded to the host as exception packets instead of replying to the RST. Note that you need to configure the hardware.

[生存時間]
TTLすなわち生存時間はネットワークでのIPパケットの寿命をホップ数に限定するIPアドレスパラメータである(ホップはルータのような層3の装置を横切るジャンプである)。統合ネットワークアダプタハードウェアは出力するフレームに対してこの値を送信されたパケットの生存時間に限定するように設定する。さらに詳しい情報はhttp://www.faqs.org/rfcs/rfc791.htmlでRFC791のセクション生存時間を参照されたい。
[Survival time]
TTL or lifetime is an IP address parameter that limits the lifetime of IP packets in the network to the number of hops (a hop is a jump across layer 3 devices such as routers). The integrated network adapter hardware sets this value to be limited to the lifetime of the transmitted packet for the output frame. For more information, see RFC 791 section lifetime at http://www.faqs.org/rfcs/rfc791.html.

[キープアライブ]
キープアライブはRFC1122のセクション4.2.3.6に記載されている。http://www.faqs.org/rfcs/rfc1122.htmlを参照されたい。キープアライブはリンクを横切ってキープ・アライブ・パケットを周期的に送信することによりアイドル状態のTCP接続が接続状態を維持し、タイムアウトしないことを可能にする。
[Keep Alive]
Keepalives are described in section 4.2.3.6 of RFC1122. Refer to http://www.faqs.org/rfcs/rfc1122.html. Keepalive allows idle TCP connections to stay connected and not time out by periodically sending keepalive packets across the link.

[ToS]
TOSすなわちサービスのタイプはIPパケットを優先させるためにルータにより使用されることができるIPアドレスパラメータである。TOSパラメータはシステムおよびソケット層で調節可能である必要がある。送信のとき、統合ネットワークアダプタハードウェアは幾つかのレジスタを介してTOSを設定する。詳しい情報はhttp://www.faqs.org/rfcs/rfc791.htmlでRFC791のセクションのサービスのタイプを参照されたい。
[ToS]
TOS or type of service is an IP address parameter that can be used by the router to prioritize IP packets. TOS parameters need to be adjustable at the system and socket layers. On transmission, the integrated network adapter hardware sets the TOS via several registers. See http://www.faqs.org/rfcs/rfc791.html for more information on service types in the RFC791 section.

[QoS]
統合ネットワークアダプタハードウェアは送信されたデータのQoSを可能にするために4つの送信待ち行列をサポートする。各ソケットはQoS値を割当てられることができる。この値もまたVLAN優先順位レベルへマップされるために使用されることができる。
[QoS]
The integrated network adapter hardware supports four transmission queues to allow QoS of transmitted data. Each socket can be assigned a QoS value. This value can also be used to map to a VLAN priority level.

送信動作を要約すると、以下のようなものである。TCP送信データフローはソケット問い合わせモジュールで開始し、これは送信データ有効ビットテーブルを通過し、それらの送信データ有効ビットセットを有するエントリを探す。このようなエントリを発見したとき、ソケット問い合わせモジュールはソケットのユーザ優先順位レベルにしたがってそのエントリを4つの待ち行列の1つに配置する。優先順位レベル7または6を有するソケットは待ち行列リスト3へ置かれ、レベル5および4は待ち行列リスト2へ置かれ、レベル3および2は待ち行列リスト1へ置かれ、レベル1および0は待ち行列リスト0へ置かれる。   The transmission operation is summarized as follows. The TCP transmit data flow begins with a socket query module, which goes through the transmit data valid bit table and looks for entries with their transmit data valid bit set. When such an entry is found, the socket query module places the entry in one of four queues according to the socket's user priority level. Sockets with priority level 7 or 6 are placed in queue list 3, levels 5 and 4 are placed in queue list 2, levels 3 and 2 are placed in queue list 1, levels 1 and 0 are queued Placed in matrix list 0.

優先順位待ち行列を使用するこれらのQoS特性は送信トラフィックにしたがって多数のハードウェアモジュールの並列使用を可能にする。   These QoS characteristics using priority queues allow the parallel use of multiple hardware modules according to the transmitted traffic.

[フェイルオーバー]
ネットワークアダプタ間のフェイルオーバー(failover)はNO_SYNモードによりサポートされる。NO_SYNモードは接続を開始しようとせずにソケットが生成されることを可能にする。これにより統合ネットワークアダプタハードウェアのソケットおよびすべてのその関連するデータ構造が接続を行わずに生成されることができる。NO_SYNモードはソフトウェアTCP/IPスタックから、統合ネットワークアダプタへの別のカードまたは接続の移行からのフェイルオーバーのサポートを可能にする。
[Failover]
Failover between network adapters is supported by the NO_SYN mode. The NO_SYN mode allows a socket to be created without attempting to initiate a connection. This allows the integrated network adapter hardware socket and all its associated data structures to be created without a connection. The NO_SYN mode enables support for failover from a software TCP / IP stack to another card or connection transition from the integrated network adapter.

[トップレベルのブロック図]
図19はTCPモジュールの1構成のトップレベルのブロック図を示している。ソケット制御ブロック(CB)191は各ソケット接続に特有の情報、状態、パラメータ設定を含んでおり、仮想ソケット(VSOCK)アーキテクチャの最も重要またはキー部分を形成する。ロック機構は1つのモジュールがCBで動作しながら別のモジュールはそこで動作しないようにインストールされる。
[Top-level block diagram]
FIG. 19 shows a top-level block diagram of one configuration of the TCP module. A socket control block (CB) 191 contains information, status, and parameter settings specific to each socket connection and forms the most important or key part of the virtual socket (VSOCK) architecture. The locking mechanism is installed so that one module operates on the CB while the other module does not.

[TCP受信サブモジュール]
図20はTCP受信200データフローを示している。
[TCP reception sub-module]
FIG. 20 shows a TCP reception 200 data flow.

[概要]
正常なIPトラフィックでは、パケットは64ビットのTCP Rxデータパスを介して受信される。パケットヘッダはTCPパーサモジュールへ進み、パケットデータは受信データメモリ制御装置201へ経路設定される。IP断片化トラフィックでは、データはメモリブロックを介して受信され、ヘッダ情報は正常なパスを介して受信される。これによりIP断片化からのメモリブロックは受信データメモリ制御装置により書込まれるデータブロックに類似して見える。CPUデータもまた受信されたデータを受信データメモリ制御装置を介して注入するためにメモリブロックを使用する。このアーキテクチャは正常および断片化されたトラフィックの処理において最大のフレキシブル性を与え、これは断片化されたトラフィックをサポートしながら性能が正常なトラフィックに最適化されることを可能にする。
[Overview]
For normal IP traffic, the packet is received via a 64-bit TCP Rx data path. The packet header proceeds to the TCP parser module, and the packet data is routed to the received data memory controller 201. For IP fragmented traffic, data is received via the memory block and header information is received via the normal path. This makes the memory block from IP fragmentation look similar to the data block written by the received data memory controller. CPU data also uses memory blocks to inject received data through the received data memory controller. This architecture provides maximum flexibility in handling normal and fragmented traffic, which allows performance to be optimized for normal traffic while supporting fragmented traffic.

受信TCPパーサ202はヘッダ情報を解析し、パラメータをVSOCK203と受信状態ハンドラ204へ通過するように動作する。受信TCPパーサがデータをどうするかを知らないならば、これを例外ハンドラ205へ転送される。さらに受信TCPパーサはすべてのデータを例外ハンドラへ送るようにプログラムされることもできる。   The receive TCP parser 202 operates to analyze the header information and pass the parameters to the VSOCK 203 and the receive state handler 204. If the receiving TCP parser does not know what to do with the data, it is forwarded to the exception handler 205. In addition, the receiving TCP parser can be programmed to send all data to the exception handler.

VSOCKモジュールはローカルおよび遠隔IPと、ポートアドレスを取り、ポインタを制御ブロックへ戻す。   The VSOCK module takes local and remote IP and port addresses and returns a pointer to the control block.

NAT&IPマスカレードモジュール206は受信されたパケットがNATまたはIPマスカレードパケットであるか否かを決定する。イエスならば、そのパケットは生(完全なパケット)フォーマットでホストシステムまで通過される。   The NAT & IP masquerade module 206 determines whether the received packet is a NAT or IP masquerade packet. If yes, the packet is passed to the host system in raw (complete packet) format.

受信状態ハンドラは各接続の状態の追跡を維持し、したがってその制御ブロックを更新する。   The receive state handler keeps track of the state of each connection and therefore updates its control block.

[受信TCPパーサ]
受信TCPパーサはパケットヘッダ情報をIT10GネットワークスタックのTCP受信部分のその他のモジュールへ登録し、送信する。受信TCPパーサモジュールもまたCPU(オンチッププロセッサまたはホストコンピュータ)から受信ストリーム中へデータを注入することを必要とされるレジスタを含んでいる。CPUはメモリブロックをセットアップしなければならず、その後、受信TCPパーサレジスタに情報をプログラムする。受信TCPパーサはTCPヘッダの部分的なチェックサムを生成し、この部分的なチェックサムを受信データメモリ制御装置からの部分的なチェックサムへ付加し、結果的な完全なチェックサムをTCPヘッダのチェックサムと比較する。断片化されたパケットでは、受信TCPパーサは最後の断片中のIP断片化により送信されたチェックサムに対してTCPヘッダのチェックサムをチェックする。
[Receive TCP parser]
The reception TCP parser registers the packet header information with other modules in the TCP reception part of the IT10G network stack and transmits it. The receive TCP parser module also includes registers that are required to inject data from the CPU (on-chip processor or host computer) into the receive stream. The CPU must set up the memory block and then program the information into the receive TCP parser register. The receive TCP parser generates a partial checksum of the TCP header, appends this partial checksum to the partial checksum from the received data memory controller, and the resulting complete checksum of the TCP header. Compare with checksum. For fragmented packets, the receiving TCP parser checks the checksum of the TCP header against the checksum sent by IP fragmentation in the last fragment.

注意:IPモジュールはIP断片化ビットを設定し、第1のメモリブロックポインタ、最後のメモリブロックポインタ、インデックス、部分的なチェックサムを適切なパケット断片のデータストリーム中へ挿入しなければならない。またTCP受信は疑似ヘッダを計算するためにIPプロトコル情報を必要とする。   Note: The IP module must set the IP fragmentation bit and insert the first memory block pointer, last memory block pointer, index, and partial checksum into the appropriate packet fragment data stream. TCP reception also requires IP protocol information to calculate pseudo headers.

[受信データメモリ制御装置]
受信データメモリ制御装置はIPとTCPモジュール間の64ビットバスからのデータをRxDRAMのデータメモリブロックへ転送する。2つの転送モードが存在する。正常のモードはTCPデータをメモリブロックに記憶するために使用される。生のモードはパケット全体をメモリブロックに記憶するために使用される。生のモードはNAT/IPマスカレードに使用される。例外処理では、正常なモードはCBデータをCPUへ転送するためにレジスタと共に使用される。
[Received data memory controller]
The received data memory controller transfers data from the 64-bit bus between the IP and TCP modules to the RxDRAM data memory block. There are two transfer modes. The normal mode is used to store TCP data in the memory block. Raw mode is used to store the entire packet in a memory block. Raw mode is used for NAT / IP masquerading. In exception handling, the normal mode is used with a register to transfer CB data to the CPU.

[VSOCK]
VSOCKモジュールはローカルおよび遠隔IPとポートアドレスをパケットから通過し、ソケットオープンまたはTIME_WAIT(TW)制御ブロック(CB)ポインタを受信状態ハンドラへ戻す。VSOCKはIPおよびポートアドレスでハッシュ計算を実行し、開放/TW CB探索テーブル(LUT)207へのインデックスの役目をするハッシュ値を生成する。その位置でのLUTエントリは開放208またはTW209制御ブロックへのポインタを保持する。
[VSOCK]
The VSOCK module passes the local and remote IP and port address from the packet and returns a socket open or TIME_WAIT (TW) control block (CB) pointer to the receive state handler. VSOCK performs a hash calculation with the IP and port address and generates a hash value that serves as an index to the Open / TW CB Search Table (LUT) 207. The LUT entry at that position holds a pointer to the release 208 or TW209 control block.

開放/TW CB LUTからのポインタはゼロ以上のCBのリンクされたリストの最初の制御ブロックを指向しており、それぞれ異なるIPおよびポートアドレスを有するが、(ハッシュの衝突から生じる)同一のハッシュ番号を生じる。VSOCKはこの鎖を進み、一致が発見されるか鎖の最後に到達されるまで、パケットIPとポートアドレスを連鎖されたCB中のエントリと比較する。一致が発見されたならば、CBへのポインタは受信状態ハンドラへ通過される。鎖の最後に到達したならば、VSOCKはTCPパーサにエラーを通知する。   The pointer from the Open / TW CB LUT points to the first control block in the linked list of zero or more CBs, each with a different IP and port address, but the same hash number (resulting from a hash collision) Produce. VSOCK goes through this chain and compares the packet IP and port address with the entries in the chained CB until a match is found or the end of the chain is reached. If a match is found, a pointer to the CB is passed to the receive state handler. If the end of the chain is reached, VSOCK notifies the TCP parser of an error.

開放/TW CB LUTエントリに接続されるCBの鎖は開放CBとTIME_WAIT CBを含んでいる。開放CBは鎖の最初である。受信TCPMaxOpenCBperChainにより決定されるように最大数の開放CBが存在する。TW CBは開放CBの後に連鎖されている。鎖当り最大数のTW CBも存在する。開放CBは3方向のハンドシェイクが完了したときに生成され、HO CBは受信状態ハンドラにより開放CBへ移動される。TW CBは最後のACKがFINシーケンスで送信されたときに受信状態ハンドラにより開放CBから生成される。いずれのケースでももはや余地がないならば、エラーは受信状態ハンドラへ戻される。   The chain of CBs connected to the Open / TW CB LUT entry includes Open CB and TIME_WAIT CB. The open CB is the first in the chain. There is a maximum number of open CBs as determined by the incoming TCPMaxOpenCBperChain. The TW CB is chained after the open CB. There is also a maximum number of TW CBs per chain. The open CB is generated when the three-way handshake is completed, and the HO CB is moved to the open CB by the reception state handler. The TW CB is generated from the open CB by the reception status handler when the last ACK is sent in the FIN sequence. If there is no more room in either case, the error is returned to the receive state handler.

開放CBのCBキャッシュはLUTエントリからリンク数をプリセットのではなくさらに開放CBで構成される。キャッシュ中にあるときCBのビットが設定される。キャッシュはハッシュ/LUT動作に対して並列に検索される。図21はVSOCK/受信状態ハンドラの制御ブロックサーチ解決フローを示している。   The CB cache of the open CB is composed of open CBs instead of presetting the number of links from the LUT entry. The CB bit is set when in the cache. The cache is searched in parallel for hash / LUT operations. FIG. 21 shows a control block search solution flow of the VSOCK / reception status handler.

[Rcv状態ハンドラ]
SYNが受信されるならば、12ビットのハッシュは(17ビットハッシュを行い開放またはTIME_WAIT制御ブロックを検索する)VSOCKの呼出しに加えて行われ、目的地ポートは許可されたポートリストに対してチェックされる。ポートが可能にされ、VSOCKが一致する開放/TW CBを発見しないならば、ハッシュ結果はHO CBテーブルへのインデックスとして使用される。VSOCKが開放またはTIME_WAIT CBを発見するならば、Dup CBエラーがホストコンピュータへ送信されることができ、SYNはドロップされる。異なるIPおよびポートアドレスを有するエントリが既にHO CBテーブルに存在するならば、新しいパケット情報は古い情報に重ね書きされる。これはリソースがサービス(DOS)アタックのSYNフラッド否認に保持されることを可能にする。重ね書きはHO CBテーブルのエージングの必要性をなくす。既にSYN/ACKされた接続は暗黙的にドロップされることができる。CBへのポインタは受信状態ハンドラへ転送される。遠隔側(ローカル側はSYN/ACKではなくSYNを受信する)により開かれている接続だけがHO CBテーブルに入る。ローカル側により開かれている接続は開放CBにより追跡される。
[Rcv state handler]
If SYN is received, the 12-bit hash is made in addition to the VSOCK call (to open the 17-bit hash and search for the TIME_WAIT control block), and the destination port is checked against the allowed port list. Is done. If the port is enabled and VSOCK does not find a matching Open / TW CB, the hash result is used as an index into the HO CB table. If VSOCK discovers open or TIME_WAIT CB, a Dup CB error can be sent to the host computer and SYN is dropped. If an entry with a different IP and port address already exists in the HO CB table, the new packet information is overwritten on the old information. This allows resources to be held in a SYN flood denial of service (DOS) attack. Overwriting eliminates the need for aging of the HO CB table. An already SYN / ACKed connection can be implicitly dropped. The pointer to CB is transferred to the reception status handler. Only connections opened by the remote side (the local side receives SYN, not SYN / ACK) enter the HO CB table. Connections opened by the local side are tracked by the open CB.

ACKが受信されるならば、12ビットのハッシュが行われ、VSOCKが呼出される。12ビットのハッシュを介してHO CB中にヒットが存在するが、VSOCKは開放またはTW CBを発見しない場合、およびシーケンスおよびACK番号が有効である場合には、接続のための3方向のハンドシェイクは完全であり、CBは受信状態ハンドラにより開放CBテーブルへ転送される。VSOCKが開放またはTW CBを発見するが、12ビットハッシュとの一致がないならば、ACKは受信状態ハンドラにより有効なシーケンスとACK番号、および重複ACKをチェックされる。   If an ACK is received, a 12-bit hash is performed and VSOCK is called. A three-way handshake for the connection if there is a hit in the HO CB via a 12-bit hash, but VSOCK does not find an open or TW CB, and if the sequence and ACK number are valid Is complete and the CB is transferred to the open CB table by the reception state handler. If VSOCK finds an open or TW CB but does not match the 12-bit hash, the ACK is checked for a valid sequence and ACK number, and a duplicate ACK by the receive state handler.

一度、VSOCKモジュールが正しいソケットCBを発見すると、他の適切な情報が受信状態ハンドラにより読取られ更新される。TCPデータは大きい(2kバイト)または小さい(128バイト)メモリバッファに記憶される。単一のセグメントはメモリバッファをスパンできる。1つのサイズのバッファがなくなると、他のサイズが使用される。データが所定のソケットで受信されるとき、ソケットハッシュLUTのそのData_Availビットもまた設定される。   Once the VSOCK module finds the correct socket CB, other appropriate information is read and updated by the receive state handler. TCP data is stored in a large (2 kbytes) or small (128 bytes) memory buffer. A single segment can span the memory buffer. If there is no buffer of one size, the other size is used. When data is received at a given socket, its Data_Avail bit of the socket hash LUT is also set.

受信状態ハンドラがRSTパケットが必要とされることを決定するならば、受信状態ハンドラは適切なパラメータをRST発生器210へ転送する。SYN/ACKまたはACKが必要とされるならば、受信状態ハンドラはCBハンドルを受信・送信FIFOバッファ211へ送信する。   If the receive state handler determines that an RST packet is required, the receive state handler forwards the appropriate parameters to the RST generator 210. If SYN / ACK or ACK is required, the receive state handler sends a CB handle to the receive / send FIFO buffer 211.

[RST発生器]
RST発生器はMACアドレス、4つのソケットパラメータ、RST応答を必要とするパケットで受信されたシーケンス番号を取り、RSTパケットを構成する。RST発生器は最初にパケットを作成するためにMTXメモリからブロックをリクエストする。RSTパケットは常に40バイトの長さであるので、これらのパケットは任意のサイズのMTXブロックで適合する。RST発生器は常に利用可能な最小のブロック、通常は128バイトのブロックをリクエストする。RSTパケットは0×0000で固定されたそれらのIP IDと、(断片ビットではない)IPヘッダ中に設定されたそれらのDFビットを有している。
[RST generator]
The RST generator takes a MAC address, four socket parameters, a sequence number received in a packet that requires an RST response, and constructs an RST packet. The RST generator first requests a block from the MTX memory to create a packet. Since RST packets are always 40 bytes long, these packets fit in any size MTX block. The RST generator always requests the smallest available block, usually a 128 byte block. The RST packet has their IP ID fixed at 0x0000 and their DF bits set in the IP header (not the fragment bits).

RST発生器がRSTパケットを構成した後、RST発生器はRSTパケットを含んでいるMTXブロックの開始アドレスをRST送信待ち行列に記憶する。この待ち行列はM1メモリ中に形成されている。M1メモリのブロックはリクエストされ、それが一杯になるまで使用される。各M1ブロックの最後のエントリは使用される次のM1ブロックのアドレスを指向する。それ故、RST待ち行列はダイナミックに成長できる。MTXブロックアドレスが26ビットだけなので、RST発生器は一度にM1メモリの32ビットをアクセスする。この待ち行列の長さはM1メモリが利用可能である大きさに成長できる。待ち行列に対してさらに利用可能なメモリが存在しないならば、RST発生器は暗黙的にRCV状態ハンドラからのRSTパケットリクエストを破棄する。これは送信におけるRSTパケットのドロップに類似するネットワークの影響を有する。接続は存在しないので、これは性能に対して深刻に影響しない。   After the RST generator constructs the RST packet, the RST generator stores the start address of the MTX block containing the RST packet in the RST transmission queue. This queue is formed in the M1 memory. A block of M1 memory is requested and used until it is full. The last entry of each M1 block points to the address of the next M1 block to be used. Therefore, the RST queue can grow dynamically. Since the MTX block address is only 26 bits, the RST generator accesses 32 bits of M1 memory at a time. The length of this queue can grow to a size where M1 memory is available. If there is no more memory available for the queue, the RST generator implicitly discards the RST packet request from the RCV state handler. This has a network effect similar to dropping RST packets in transmission. This has no serious impact on performance since there are no connections.

RST送信待ち行列の出力はTCP送信パケットスケジューラに与えられる。RSTパケットが送信されたことを送信スケジューラがRST発生器へ示したとき、RSTパケットに使用されていたMTXブロックは解放される。M1メモリブロックのすべてのエントリが送信され、次のM1ブロックへのリンクアクセスが読取られるとき、M1メモリブロックは解放される。基本的なデータフローが図22に示されている。   The output of the RST transmission queue is given to the TCP transmission packet scheduler. When the transmission scheduler indicates to the RST generator that an RST packet has been transmitted, the MTX block used for the RST packet is released. When all entries of the M1 memory block are sent and the link access to the next M1 block is read, the M1 memory block is released. The basic data flow is shown in FIG.

[受信・送信FIFOバッファ]
受信・送信FIFOバッファは、受信状態ハンドラが受信されたパケットに応答して送信を必要とされることを決定したSYV/ACKとACKを待ち行列するために使用される。受信状態ハンドラは以下の情報を受信・送信FIFOバッファヘ通過する。
・ソケット情報を含むCBアドレス(16ビット)、
・CBタイプ(2ビット;00=半開、01=開放、10=Time_Wait)、
・送信されるメッセージタイプ(1ビット、0=SYN/ACK、1=ACK)。
[Receive / Transmit FIFO buffer]
The receive / send FIFO buffer is used to queue SYV / ACK and ACK that the receive state handler has determined that needs to be sent in response to the received packet. The reception status handler passes the following information to the reception / transmission FIFO buffer.
-CB address (16 bits) including socket information
CB type (2 bits; 00 = half open, 01 = open, 10 = Time_Wait),
• Message type to be transmitted (1 bit, 0 = SYN / ACK, 1 = ACK).

受信・送信FIFOバッファエントリは4バイトの長さであり、種々のメモリバッファに記憶される。現在、このバッファは4Kバイトを割当てられ、それは1Kエントリの深さの受信・送信FIFOバッファを提供する。受信・送信FIFOバッファの出力はSYN/ACK発生器に与えられる。   The receive / transmit FIFO buffer entries are 4 bytes long and are stored in various memory buffers. Currently, this buffer is allocated 4K bytes, which provides a 1K entry deep receive and transmit FIFO buffer. The output of the reception / transmission FIFO buffer is supplied to the SYN / ACK generator.

[SYN/ACK発生器]
SYN/ACK発生器212は受信・送信FIFOバッファから出力された情報を取り、半開、開放またはTime_Waitの特定されたCBからの他の適切な情報を探索し、SYN/ACKまたはACKの所望のパケットを作成する。SYN/ACK発生器は最初にパケットを作るためにMTXメモリからのブロックをリクエストする。SYN/ACKおよびACKパケットは常に40バイトの長さであるので、これらのパケットは常に任意のサイズのMTXブロックに適合する。SYN/ACK発生器は常に利用可能な最小のブロック、通常は128バイトのブロックをリクエストする。
[SYN / ACK generator]
The SYN / ACK generator 212 takes the information output from the receive / transmit FIFO buffer and searches for other appropriate information from the specified CB of half-open, open or Time_Wait, and the desired packet of SYN / ACK or ACK Create The SYN / ACK generator first requests a block from the MTX memory to create a packet. Since SYN / ACK and ACK packets are always 40 bytes long, these packets always fit any size MTX block. The SYN / ACK generator always requests the smallest available block, usually a 128 byte block.

SYN/ACK発生器がSYN/ACKまたはACKパケットを作成した後、SYN/ACK発生器は開始MTXブロックアドレスを16の深さの待ち行列へ置き、その後、その待ち行列はTCP送信パケットスケジューラへ供給する。受信・送信FIFOバッファがプログラム可能な高い透かし(water mark)を通過するならば、送信パケットスケジューラは状態を通知され、これらのパケットの送信優先順位を増加する。   After the SYN / ACK generator creates a SYN / ACK or ACK packet, the SYN / ACK generator places the starting MTX block address in a 16 deep queue, which then feeds the TCP transmit packet scheduler. To do. If the receive / transmit FIFO buffer passes a programmable high watermark, the transmit packet scheduler is notified of the status and increases the transmit priority of these packets.

[NATおよびIPマスカレード]
NATおよびIPマスカレードブロック206はVSOCKモジュールと並列して動作する。NATおよびIPマスカレードブロックは入来するパケットを復号し、それが予め特定されたNATまたはIPマスカレードポート範囲であるか否かを見る。イエスであるならば、これがNATパケットであることをVSOCKへ示すためにシグナリング機構が使用される。これが生じるとき、パケット全体は受信メモリバッファ中にあるように、記憶される。パケットは次に幾つかの点でホストシステムに転送される。ホストシステムのドライバはその後経路設定機能を行い、ヘッダパラメータを置換し、それを適切なネットワークインターフェースへ送信するように動作する。
[NAT and IP Masquerade]
The NAT and IP masquerade block 206 operates in parallel with the VSOCK module. The NAT and IP masquerade block decodes the incoming packet and sees if it is a pre-specified NAT or IP masquerade port range. If yes, a signaling mechanism is used to indicate to VSOCK that this is a NAT packet. When this occurs, the entire packet is stored as it is in the receive memory buffer. The packet is then forwarded to the host system at several points. The host system driver then performs the routing function and operates to replace the header parameters and send them to the appropriate network interface.

[例外ハンドラ]
例外ハンドラはIT10Gコアにより処理されないホストコンピュータへパケットを送信する。
[Exception handler]
The exception handler sends a packet to a host computer that is not processed by the IT10G core.

[サポート回路]
[rset発生]
rst信号はトップレベルのrset信号から同時に発生される。
[Support circuit]
[Rset occurrence]
The rst signal is generated simultaneously from the top level rset signal.

[tcp_in_rd発生]
tcp_in_rdはIPからの入力データをフリーズするために使用される。これはDRAM書込みリクエストが即座に承認されないときに主張される。またDRAMが小さいまたは大きいメモリブロックを使い果たした場合にも生じる。
[Tcp_in_rd generation]
tcp_in_rd is used to freeze input data from the IP. This is claimed when a DRAM write request is not immediately approved. It also occurs when the DRAM runs out of small or large memory blocks.

[ワードカウンタ]
ワードカウンタ、即ちword_cnt[12:0]はリセットおよびソフトウェアリセットではゼロである。これはtcp_in_rdがアクチブであり、ip_in_eofがアクチブでないときにインクリメントする。ip_in_data[63:0]の第1のワード中にゼロであり、第2のワード中は1である。これはip_in_eof後の第1のワードではゼロになり、有効なip_in_dataワード間ではゼロのままである。
[Word counter]
The word counter, word_cnt [12: 0], is zero at reset and software reset. This is incremented when tcp_in_rd is active and ip_in_eof is not active. Zero in the first word of ip_in_data [63: 0] and 1 in the second word. This will be zero for the first word after ip_in_eof and will remain zero between valid ip_in_data words.

[メモリブロック制御回路]
[保留メモリブロック]
メモリブロック制御回路は小さいおよび大きいメモリブロックを常に使用できるように維持する。これはデータがメモリブロックに書込まれなければならないときに遅延をほとんど起こさないことを確実にする。メモリブロック制御回路はまたデータの書込みと並行してブロックリクエストを行う。これらの保留メモリブロックはリセットから初期化される。
[Memory block control circuit]
[Pending memory block]
The memory block control circuit keeps small and large memory blocks always available. This ensures that there is little delay when data has to be written to the memory block. The memory block control circuit also makes a block request in parallel with the data writing. These pending memory blocks are initialized from reset.

[初期化およびメモリブロックのサイズ選択]
TCPまたはUDPセグメントのパラメータが初期化される。使用されるメモリブロックのサイズはIPからのTCP長の情報とパーサからのTCPヘッダ長の情報により決定される。データサイズ(TCP長−TCPヘッダ長)が小さいメモリブロックに適合するならば、保留の小さいメモリブロックが使用され、別の小さいメモリブロックは保留を補充するようにリクエストされる。そうでなければ、保留の大きいメモリブロックが使用され、別の大きいメモリブロックが保留を補充するようにリクエストされる。小さいメモリブロックが利用可能ではないならば、大きいメモリブロックが使用される。しかしながら大きいメモリブロックが必要とされるが利用可能ではないならば、小さいメモリブロックは使用されない。
[Initialization and memory block size selection]
TCP or UDP segment parameters are initialized. The size of the memory block to be used is determined by the TCP length information from the IP and the TCP header length information from the parser. If the data size (TCP length-TCP header length) fits into a small memory block, the reserved small memory block is used and another small memory block is requested to replenish the hold. Otherwise, the pending large memory block is used and another large memory block is requested to replenish the pending. If a small memory block is not available, a larger memory block is used. However, if a large memory block is required but not available, a small memory block is not used.

[整列されたTCPデータのメモリブロックへの書込み]
TCPヘッダ中に奇数のオプション半ワード(それぞれ32ビット幅)が存在するならば、TCPパケットのデータは整列され、データは64ビット境界で開始する。TCPパケットデータが整列されるならば、データがIPブロックから送信されるとき、TCPパケットデータは直接的にメモリブロックへ置かれることができる。セグメントに対する第2のブロックのアドレスはTCP状態マシーンに送信される。TCPセグメントに残されたデータと同様に、カウントはブロックに残されたスペースで維持される。メモリブロックが既に一杯であるならば、記録も維持されなければならない。TCPセグメントの最後に到達したとき、先のブロックが一杯であったならば、そのブロックは現在のブロックにリンクされなければならない。また現在のブロックヘッダ中のリンクはクリアされ、データ長およびデータの動作しているチェックサムはブロックヘッダに書込まれる。データ長はip_in_bytes_valのビットにより決定されるように、最後の64ビットワードのバイト数の関数である。TCPセグメントの最後になる前にブロックに余地がなくなったならば、データ長および動作しているチェックサムはブロックヘッダに書込まれ、ブロックが終了していることを示すフラグが設定される。TCPセグメントの残りのデータは大きいまたは小さい保留メモリブロックのいずれが使用されるかを決定するために使用される。ブロックサイズが尽きたならば、先の説明と同一のルールが使用される。最後のメモリブロックのアドレスはTCP状態マシーンに送信されなければならない。
[Write aligned TCP data to memory block]
If there are an odd number of optional halfwords (32 bits wide each) in the TCP header, the data in the TCP packet is aligned and the data starts on a 64-bit boundary. If the TCP packet data is aligned, the TCP packet data can be placed directly into the memory block when the data is sent from the IP block. The address of the second block for the segment is sent to the TCP state machine. Similar to the data left in the TCP segment, the count is maintained in the space left in the block. If the memory block is already full, the record must also be maintained. When the end of a TCP segment is reached, if the previous block is full, that block must be linked to the current block. Also, the link in the current block header is cleared and the data length and the checksum in which the data is operating are written into the block header. The data length is a function of the number of bytes in the last 64-bit word, as determined by the bits in ip_in_bytes_val. If the block runs out before the end of the TCP segment, the data length and the working checksum are written to the block header and a flag is set indicating that the block is finished. The remaining data in the TCP segment is used to determine whether large or small reserved memory blocks are used. If the block size is exhausted, the same rules as described above are used. The address of the last memory block must be sent to the TCP state machine.

[整列されていないTCPデータのメモリブロックへの書込み]
TCPセグメントのデータが整列されていない(ip_in_data[63:0]が2つの異なるメモリブロックへ書込まれるデータを含んでいる)ならば、IPブロックから第1のlo32ビットの半ワードを記憶するため、最初に余分のサイクルが存在しなければならず、それによってデータはメモリブロックで高い32ビットの半ワードとして書込まれることができる。IPブロックから次のバスサイクル中に高い32ビットの半ワードは、記憶された半ワードと同じサイクルの低い32ビット半ワードとして書込まれる。カウントおよびチェックサム計算もこの状態を処理するために調節されなければならない。そうでなければ整列されていないデータは整列されたデータと同一方法で処理され、既に説明したのと同一の終了ケースを有する。
[Write unaligned TCP data to memory block]
If the TCP segment data is not aligned (ip_in_data [63: 0] contains data to be written to two different memory blocks) to store the first lo32-bit halfword from the IP block First, there must be an extra cycle so that the data can be written in the memory block as a high 32 bit half word. During the next bus cycle from the IP block, the high 32-bit halfword is written as a low 32-bit halfword in the same cycle as the stored halfword. Count and checksum calculations must also be adjusted to handle this condition. Otherwise, the unsorted data is processed in the same manner as the sorted data and has the same end case as already described.

[メモリブロックへのUDPデータの書込み]
UDPデータは常に整列されるので、UDPデータはTCPの整列されたデータと同一方法で処理される。同一の終了ケースが適用される。
[Write UDP data to memory block]
Since UDP data is always aligned, UDP data is processed in the same way as TCP aligned data. The same end case applies.

[チェックサム計算]
チェックサムはREC1071に説明されているように計算される。チェックサム計算ブロックでは、チェックサムはデータについてのみ計算される。パーサはヘッダチェックサムを計算し、TCP状態マシーンは2つのチェックサムを結合し、チェックサムエラーを有するパケットにどのように対処するかを決定する。
[Checksum calculation]
The checksum is calculated as described in REC1071. In the checksum calculation block, the checksum is calculated only for the data. The parser calculates the header checksum, and the TCP state machine combines the two checksums to determine how to handle packets with checksum errors.

[固定したヘッダフィールドの解析]
[ワードカウンタ]
ワードカウンタ、即ちword_cnt[12:0]はリセットおよびソフトウェアリセットではゼロである。カウンタはtcp_in_rdがアクチブであり、ip_in_eofがアクチブでないときにインクリメントする。カウンタはip_in_data[63:0]の第1のワード中にゼロであり、第2のワード中は1である。カウンタはip_in_eof後の第1のワードではゼロになり、有効なip_in_dataワード間ではゼロのままである。
[Analysis of fixed header fields]
[Word counter]
The word counter, word_cnt [12: 0], is zero at reset and software reset. The counter increments when tcp_in_rd is active and ip_in_eof is not active. The counter is zero during the first word of ip_in_data [63: 0] and 1 during the second word. The counter is zero for the first word after ip_in_eof and remains zero between valid ip_in_data words.

[remote_jp_add[31:0]とlocal_ip_indx[3:0]のラッチ]
これらのラッチはリセットおよびソフトウェアリセットではゼロである。remote_jp_addはsrc_ip_add_valid、ip_in_dav、tcporudp_packetが主張されるときsrc_ip_add[31:0]からラッチされる。Local_jp_indxはdest_ip_add_valid、ip_in_dav、tcporudp_packetが主張されるときdest_ip_index[3:0]からラッチされる。両者は次のパケットで再ロードされるまで有効である。

Figure 0004875126
[Latch of remote_jp_add [31: 0] and local_ip_indx [3: 0]]
These latches are zero at reset and software reset. remote_jp_add is latched from src_ip_add [31: 0] when src_ip_add_valid, ip_in_dav, tcpportp_packet is asserted. Local_jp_indx is latched from dest_ip_index [3: 0] when dest_ip_add_valid, ip_in_dav, and tcpportp_packet are asserted. Both are valid until reloaded with the next packet.
Figure 0004875126

注意:フィールドはリセットおよびIPからの第1のワードでクリアまたは初期化される(括弧内)。
注意:ラッチはまたtcp_packet、udp_packet&ip_in_davにより適格になる。
Note: The field is cleared or initialized (in parentheses) with the first word from reset and IP.
Note: Latches are also qualified by tcp_packet, udp_packet & ip_in_dav.

[チェックサム、エラーチェック、随意選択的なヘッダフィールドの解析]
[チェックサム]
RFC1071チェックサムは、IPソースアドレス、IP目的地アドレス(インデックスではない)、8ビットのゼロが先行する(=0006の16進)8ビットタイプのフィールド、TCP長を含む疑似ヘッダと共に、ヘッダ長フィールドで規定されているようにヘッダで計算される。
[Checksum, error check, optional header field analysis]
[Checksum]
The RFC1071 checksum is an IP source address, an IP destination address (not an index), an 8-bit type field preceded by 8-bit zero (= hexadecimal of 0006), a header length field along with a pseudo header including the TCP length. Calculated in the header as specified in.

[ヘッダ長チェック]
一度、rx_tcp_hdr_lenフィールドが解析されると(ワードカウント>0001)、rx_tcp_hdr_lenフィールドはチェックされる。rx_tcp_hdr_lenフィールドは5よりも小さくすることはできず、または10に設定されるMAX_HDR_LENよりも大きくてはならない。そうであるならば、エラーrx_tcp_hdr_len信号が主張され、次のパケットの開始までその状態である。
[Header length check]
Once the rx_tcp_hdr_len field is parsed (word count> 0001), the rx_tcp_hdr_len field is checked. The rx_tcp_hdr_len field cannot be less than 5 or greater than MAX_HDR_LEN set to 10. If so, an error rx_tcp_hdr_len signal is asserted and is in that state until the start of the next packet.

[TCP長チェック]
IPからのIPペイロード長がチェックされる。IPペイロード長は(rx_tcp_header_lenがまだ有効でないときに使用される)20バイトよりも小さくはできず、rx_tcp_header_lenよりも小さくはできない。そうであるならば、エラーrx_tcp_hdr_len信号が主張され、次のパケットの開始までその状態である。
[TCP length check]
The IP payload length from the IP is checked. The IP payload length cannot be smaller than 20 bytes (used when rx_tcp_header_len is not yet valid) and cannot be smaller than rx_tcp_header_len. If so, an error rx_tcp_hdr_len signal is asserted and is in that state until the start of the next packet.

[随意選択的なヘッダフィールドの解析]
フィールドはリセットおよびIPブロックからの第1のワードでクリアされる。タイムスタンプ(10バイト+パッディング)、MSS(4バイト)、ウィンドウスケール(3バイト+パッディング)だけがサーチされる。20バイトだけのオプションが存在できるので、ヘッダ長は10の32ビット半ワードだけである(ワードカウント=0004)。
[Optional header field analysis]
The field is cleared on reset and the first word from the IP block. Only the time stamp (10 bytes + padding), MSS (4 bytes), and window scale (3 bytes + padding) are searched. Since an option of only 20 bytes can exist, the header length is only 10 32-bit half words (word count = 0004).

オプションは直接的な方法で解析される。オプションは第2の半分のワードカウント=2から開始し、32ビットに整列される。オプションの第1のバイトはオプションタイプを識別する。   Options are parsed in a straightforward way. Options start at the second half word count = 2 and are aligned to 32 bits. The first byte of the option identifies the option type.

タイムスタンプオプションが検出されるならば、rx_tcp_timestamp、rx_tcp_tx_echoおよびrx_tcp_timestamp_valがロードされる。   If a timestamp option is detected, rx_tcp_timestamp, rx_tcp_tx_echo and rx_tcp_timestamp_val are loaded.

MSSオプションが検出されるならば、rx_tcp_remote_mssおよびrx_tcp_remote_mss_valがロードされる。   If the MSS option is detected, rx_tcp_remote_mss and rx_tcp_remote_mss_val are loaded.

ウィンドウスケールオプションが検出されるならば、rx_tcp_remote_win_sclとrx_tcp_rem_win_scl_valがロードされる。   If the window scale option is detected, rx_tcp_remote_win_scl and rx_tcp_rem_win_scl_val are loaded.

これらは次のパケットの開始まで有効の状態である。   These are valid until the start of the next packet.

[ソケット受信サブモジュール]
ソケット受信サブモジュールはIT10Gと、受信されたデータのシステム(ホストコンピュータ)との間のインターフェースを処理する。図23はソケット受信データフローを示している。
[Socket Receive Submodule]
The socket receive submodule handles the interface between the IT 10G and the received data system (host computer). FIG. 23 shows a socket reception data flow.

ソケット受信サブモジュールプロセスは受信論理装置230で開始し、ソケット受信DAVビットマップテーブル231に1ビットを設定する。ソケット受信DAVビットマップテーブルは各64Kソケットに関連する1ビットを有する(それ故テーブルは8Kバイトである)。CBの位置を知ることにより、適切なビットが設定される。   The socket receive submodule process starts at the receive logic unit 230 and sets 1 bit in the socket receive DAV bitmap table 231. The socket receive DAV bitmap table has one bit associated with each 64K socket (hence the table is 8K bytes). By knowing the position of CB, the appropriate bit is set.

Socket_DAV問い合わせモジュール232はソケット受信DAVビットマップテーブルを連続して走査しているブロックである。Socket_DAV問い合わせモジュールが1セットビットを発見するとき、対応するCBアドレスを発生し、CB構造が有効なlink_listブロックを含んでいるか否かを見るためにCB構造をチェックする。有効なlink_listブロックは64ビットメモリアドレスと16ビット長からなる。CBが有効なlink_listブロックを有するならば、CBアドレスおよび有効なlink_list情報は2段のパイプラインレジスタ対を介してDMA Prepモジュール233へ通過される。Socket_DAVモジュールはまたCBの対応するビットをその時間にクリアする。CBが有効なlink_listブロックを含まないならば、データがそのソケットで利用可能であるが有効な転送ブロック情報がそのソケットに存在しないことをホストに通知するためにソケットに対して状態メッセージが発生される。この場合、ビットマップテーブルの対応するビットはまだクリアされていない。CBはこの場合にまた、link_listブロックに尋ねる状態メッセージをホストへ既に送出していることを知っていることまで更新されることができる。同じCBに対する多数の状態メッセージを送信しないので、このステップは必要である。有効なlink_listブロックが存在するならば、次のステップはCBおよび転送情報がDMA prepモジュールへ送信されることである。DMA prepモジュールはソケットデータバッファからデータを読取り、そのデータをDMAエンジンの2つのピンポン転送FIFOバッファ234のうちの一方へ転送するように動作する。このデータ転送が終了するとき、DMA prepモジュールは転送されるデータが存在するというリクエストを送信DMAエンジン235へ送信する。link_list情報はまた送信DMAエンジンに転送される。   The Socket_DAV inquiry module 232 is a block that continuously scans the socket reception DAV bitmap table. When the Socket_DAV query module finds one set bit, it generates a corresponding CB address and checks the CB structure to see if the CB structure contains a valid link_list block. A valid link_list block consists of a 64-bit memory address and a 16-bit length. If the CB has a valid link_list block, the CB address and valid link_list information are passed to the DMA Prep module 233 via a two-stage pipeline register pair. The Socket_DAV module also clears the corresponding bit in CB at that time. If the CB does not contain a valid link_list block, a status message is generated for the socket to notify the host that data is available on the socket but no valid transfer block information exists on the socket. The In this case, the corresponding bit in the bitmap table has not yet been cleared. The CB can also be updated in this case until it knows that it has already sent a status message to the host asking the link_list block. This step is necessary because it does not send multiple status messages for the same CB. If there is a valid link_list block, the next step is to send CB and transfer information to the DMA prep module. The DMA prep module operates to read data from the socket data buffer and transfer the data to one of the two ping-pong transfer FIFO buffers 234 of the DMA engine. When this data transfer ends, the DMA prep module sends a request to the transmit DMA engine 235 that there is data to be transferred. The link_list information is also transferred to the transmit DMA engine.

送信DMAエンジンがDMA prepモジュールからリクエストを得るとき、送信DMAエンジンは主要なDMAエンジン236にホストへのDMA転送を行いたいことを通知する。バスを許可されたとき、DMAエンジンはデータをピンポンバッファから読出し、それらをホストコンピュータへ送信する。DMA転送が終了するとき、ソケットに対するCBは更新され、データがホストコンピュータへ送信されていることを示す状態メッセージが発生される。   When the transmit DMA engine gets a request from the DMA prep module, the transmit DMA engine informs the main DMA engine 236 that it wants to perform a DMA transfer to the host. When the bus is granted, the DMA engine reads data from the ping-pong buffer and sends them to the host computer. When the DMA transfer ends, the CB for the socket is updated and a status message is generated indicating that data is being sent to the host computer.

状態メッセージ発生器237は状態メッセージを発生し、状態メッセージをメモリ(1Kバイト)の状態メッセージブロックへ書込むように動作するモジュールである。状態メッセージの発生リクエストは送信DMAエンジン、ソケットDAV問合せモジュール、またはCPUから来る。   The status message generator 237 is a module that operates to generate a status message and write the status message to a status message block in memory (1 Kbyte). The request to generate a status message comes from the sending DMA engine, the socket DAV inquiry module, or the CPU.

[ソケット送信サブモジュール]
ソケット送信サブモジュールはIT19Gとデータ送信用のシステムとの間のインターフェースを処理する。図24はソケット送信フローを示している。
[Socket transmission submodule]
The socket transmission submodule handles the interface between IT19G and the system for data transmission. FIG. 24 shows a socket transmission flow.

ソケット送信フローはホストからの命令ブロックリストの受取で開始する。コマンドブロックリストはDMA転送を介して受信され、コマンドリスト241へ位置される。ここからブロックは抽出され、コマンドパーサモジュール242により解析される。パーサにより理解されるコマンドが実行され、理解されないものはオンチッププロセッサへ転送される。   The socket transmission flow starts with receipt of a command block list from the host. The command block list is received via DMA transfer and is located in the command list 241. Blocks are extracted from there and analyzed by the command parser module 242. Commands understood by the parser are executed and those not understood are transferred to the on-chip processor.

コマンドがデータを転送するならば、link_list情報がCBアドレスと共にコマンドブロックから抽出され、転送待ち行列243へ位置される。   If the command transfers data, link_list information along with the CB address is extracted from the command block and placed in the transfer queue 243.

受信DMAエンジン244はこの転送待ち行列のエントリを外し、ホストコンピュータメモリからのデータ転送を実行する。データは1対のピンポンFIFOバッファ245へ置かれる。丁度受信されたデータに関連するCBアドレスはソケットXmtデータ制御モジュール246へ転送される。   The receive DMA engine 244 removes this transfer queue entry and executes data transfer from the host computer memory. The data is placed in a pair of ping-pong FIFO buffers 245. The CB address associated with the data just received is transferred to the socket Xmt data control module 246.

ソケットXmtデータ制御モジュールはピンポンFIFOバッファからデータを採取し、そのデータを送信ソケットデータメモリ248へ与える。ソケットXmtデータ制御モジュールはmalloctxメモリ割当て装置247からブロックアドレスを検索する。ソケットXmtデータ制御モジュールはまたソケットの優先順位レベルをソケットCBに問い合わせる。すべてのデータがデータバッファに転送されたとき、ソケットXmtデータ制御モジュールはCBアドレスを4つの内1つの優先順位待ち行列に与える。ソケットXmtデータ制御モジュールはまたソケットCBを新しいデータ送信カウント情報で更新する。   The socket Xmt data control module collects data from the ping-pong FIFO buffer and provides the data to the transmit socket data memory 248. The socket Xmt data control module retrieves the block address from the allocxx memory allocation unit 247. The socket Xmt data control module also queries the socket CB for the socket priority level. When all data has been transferred to the data buffer, the socket Xmt data control module provides a CB address to one of the four priority queues. The socket Xmt data control module also updates socket CB with new data transmission count information.

データがDMA受信FIFOバッファからソケットデータメモリへ転送されるとき、ランニングするチェックサムがそのときに行われる。チェックサムはブロック毎のベースで計算される。これは後でデータがその後再度読取られる必要がないときに送信待ち時間を減少することを助ける。   When data is transferred from the DMA receive FIFO buffer to the socket data memory, a running checksum is then performed. The checksum is calculated on a block-by-block basis. This helps to reduce transmission latency when the data does not need to be read again later.

[CB LUT]
[概要]
TCP受信論理装置はオープンソケット接続を発見するためにLUTを使用する。LUTは18ビットによる128Kの深さである。
[CB LUT]
[Overview]
TCP receive logic uses the LUT to discover open socket connections. The LUT is 128K deep with 18 bits.

[CB LUTとDRAMのインターフェース]
このセクションはmiscmemモジュールとNS DDRアービトレーションモジュールとの間のインターフェースを説明している。これはデータフローを説明し、インターフェース信号をリストし、必要なタイミングを詳細にしている。
[CB LUT and DRAM interface]
This section describes the interface between the miscmem module and the NS DDR arbitration module. This explains the data flow, lists the interface signals, and details the required timing.

[データフロー]
CB LUTはデータDRAMへの単一の読み書きのアクセスだけを行う。本発明の構成では、DRAMは外部であるが、メモリには代りにオンチップが設けられている。DRAMアクセスはDWORDにある。各LUTエントリは18ビットだけなので、DWORDの下部18ビットだけがCB LUTメモリインターフェースに送られる。
[data flow]
The CB LUT provides only a single read / write access to the data DRAM. In the configuration of the present invention, the DRAM is external, but the memory is provided with an on-chip instead. DRAM access is in DWORD. Since each LUT entry is only 18 bits, only the lower 18 bits of DWORD are sent to the CB LUT memory interface.

[TCP送信サブモジュール]
[概要]
TCP送信サブモジュールはデータ送信に対する次にサービスされるべきソケットを決定し、したがってソケットCBブロックを更新するように動作する。データフローは図25に示されている。
[TCP transmission submodule]
[Overview]
The TCP transmission submodule operates to determine the next socket to be serviced for data transmission and thus update the socket CB block. The data flow is shown in FIG.

TCP送信データフローはソケット問合せモジュールで開始する。ソケット問合せモジュールはXMT_DAVビットテーブルを走査し、それらの送信データの有効なビットセットを有するエントリを探す。ソケット問合せモジュールが設定された送信データの有効なビットセットを発見したとき、ソケット問合せモジュールはそのエントリをソケットのUse_Priorityレベルにしたがって4つのうちの1つの待ち行列へ位置させる。優先順位レベル7または6を有するソケットは待ち行列リスト3に位置され、レベル5および4は待ち行列リスト2に位置され、レベル3および2は待ち行列リスト1に位置され、レベル1および0は待ち行列リスト0に位置される。   The TCP transmission data flow starts with a socket query module. The socket query module scans the XMT_DAV bit table looking for entries with valid bit sets of their transmitted data. When the socket query module finds a valid bit set of the set transmit data, the socket query module places the entry in one of four queues according to the socket's Use_Priority level. Sockets with priority level 7 or 6 are located in queue list 3, levels 5 and 4 are located in queue list 2, levels 3 and 2 are located in queue list 1, and levels 1 and 0 are waits Located in matrix list 0.

これらのリストはすべてパケットスケジューラ251に供給する。パケットスケジューラは欠亡のない方法で優先順位キューからパケットを外すように動作する。パケットスケジューラはまた送出データパケットと、半分開いたサポートモジュールから発生されたSYN_ACKおよびRSTパケットとの間で調停する。   These lists are all supplied to the packet scheduler 251. The packet scheduler operates to remove packets from the priority queue in a non-destructive manner. The packet scheduler also arbitrates between outgoing data packets and SYN_ACK and RST packets generated from half-open support modules.

パケットスケジューラが次に送出されるパケットを決定するとき、パケットスケジューラはこの情報をソケット送信ハンドラ252へ転送する。ソケット送信ハンドラモジュールはソケットCB情報を読取り、パケットヘッダを発生し、CBを更新し、パケット送信情報を送信待ち行列253へ送信する。すべてのパケットヘッダがその後データバッファへ事前にペンディングされる別々のメモリバッファで発生される。これはまた送信されるデータがデータバッファの中間で開始する場合にも適用される。この場合、パケットヘッダデータバッファからの点は送信されるデータの第1のバイトを指す。ロック機構はこのモジュールが別のモジュールが同時に動作できる同一のソケットCBを変更しないために使用される。   The packet scheduler transfers this information to the socket send handler 252 when the packet scheduler determines the next packet to be sent. The socket transmission handler module reads the socket CB information, generates a packet header, updates the CB, and transmits the packet transmission information to the transmission queue 253. All packet headers are then generated in separate memory buffers that are pre-pended to the data buffer. This also applies when the data to be transmitted starts in the middle of the data buffer. In this case, the point from the packet header data buffer points to the first byte of data to be transmitted. The locking mechanism is used so that this module does not change the same socket CB that another module can operate at the same time.

送信待ち行列はマスター送信アービトレータへ送信されるでパケットの待ち行列を形成するように動作する。   The transmit queue operates to form a queue of packets as it is transmitted to the master transmit arbitrator.

[パケットスケジューラ]
パケットスケジューラは次に送出されるパケットを決定するように動作する。1構成のこのモジュールのブロック図が図26に示されている。
[Packet Scheduler]
The packet scheduler operates to determine the next packet to be sent. A block diagram of this module in one configuration is shown in FIG.

パケットスケジューリングプロセスは比較装置260によって、現在の状態にある待ち行列番号を取り、その待ち行列中に送信されるものがあるか否かを検査することにより開始する。待ち行列番号は待ち行列リストまたはTCP RCVパケットの一方を表すことができる。待機しているそのタイプのパケットが存在するならば、そのエントリが引出され、次に送信されるパケットとしてスケジュールされる。その待ち行列にパケットが存在しないならば、状態カウンタがインクリメントされ、次の待ち行列の状態がチェックされる。これは待ち行列番号が、送信の準備がされているパケットを有する待ち行列リスト(またはTCP受信パケット)に一致するか、または状態エントリの最終ビットが設定されるまで継続する。最終ビットが設定されているならば、状態カウンタはゼロ(0)にリセットする。   The packet scheduling process begins with the comparison device 260 taking the queue number in the current state and checking to see if there is anything to be sent in that queue. The queue number can represent either a queue list or a TCP RCV packet. If there is a packet of that type waiting, the entry is retrieved and scheduled as the next packet to be transmitted. If there are no packets in that queue, the status counter is incremented and the status of the next queue is checked. This continues until the queue number matches a queue list (or TCP received packet) with packets ready for transmission, or the last bit of the status entry is set. If the last bit is set, the status counter resets to zero (0).

待ち行列調停シーケンスはプログラム可能である。アプリケーションは最初にQueue_Stateレジスタを0×00に設定し、その後、待ち行列番号と最終ビットをQueue_Entryレジスタに書込むことにより待ち行列調停シーケンスを設定できる。Queue_Stateレジスタでフラットまたは急峻なビットを主張することにより設定されることができる2つの組込み式調停シーケンスが存在する。   The queue arbitration sequence is programmable. The application can set the queue arbitration sequence by first setting the Queue_State register to 0x00 and then writing the queue number and the last bit to the Queue_Entry register. There are two built-in arbitration sequences that can be set by asserting a flat or steep bit in the Queue_State register.

[フラットシーケンス]
フラットシーケンスはスケジューラが任意のリセット後に使用するデフォルトシーケンス状態である。フラットシーケンスはまたTシーケンスレジスタにseq_progフィールドを書込むことにより01に設定される。シーケンスを以下に示されている。
3−2−3−2−3X−1−3−2−3−X−2−3−1−3−X−2−3−2−3−D−X<反復>
ここで、3、2、1および0はそれぞれ待ち行列リストであり、XはTCP受信論理装置からのパケットである。この方式では、各リストは以下の帯域幅割当てを有する。

Figure 0004875126
[Flat sequence]
The flat sequence is the default sequence state that the scheduler uses after any reset. The flat sequence is also set to 01 by writing the seq_prog field to the T sequence register. The sequence is shown below.
3-2-3-2-3X-1-3-2-3-X-2-3-1-3-X-2-3-2-3-DX <Repetition>
Here, 3, 2, 1 and 0 are queue lists, respectively, and X is a packet from the TCP receiving logic device. In this scheme, each list has the following bandwidth allocation:
Figure 0004875126

[急峻なシーケンス]
プログラムされたフラットシーケンスの代りのものは急峻なシーケンスである。急峻なシーケンスは高い優先順位の待ち行列にさらに加重し、多数の高い優先順位のアプリケーションが同時に行われる場合に便利である。急峻なシーケンスはTシーケンスレジスタにseq_progフィールドを書込むことにより10に設定される。急峻なシーケンスを以下のとおりである。
3−3−2−3−3−2−X−3−3−1−3−3−2−3−X−3−2−3−3−1−3−3−X−2−3−3−2−3−3−0−X
このシーケンスのパーセンテージ帯域幅を以下に示す。

Figure 0004875126
[Steep sequence]
An alternative to a programmed flat sequence is a steep sequence. The steep sequence further weights the high priority queue and is useful when multiple high priority applications are run simultaneously. The steep sequence is set to 10 by writing the seq_prog field in the T sequence register. The steep sequence is as follows.
3-3-2-3-3-2-X-3-3-1-3-3-3-3-X-3-2-2-3-3-1-3-3-X-2-3- 3-2-3-3-0-X
The percentage bandwidth of this sequence is shown below.
Figure 0004875126

パケットスケジューラの使用は受信データトラフィックにしたがって、ハードウェアモジュールとリソースの共有を可能にする。   The use of a packet scheduler allows sharing of hardware modules and resources according to received data traffic.

[ハッシュアルゴリズム]
使用されるハッシュアルゴリズムは単一の17ビットハッシュ値を形成するためにソケットのローカルおよびピアポートと、ローカルおよびピアIPアドレスとを結合する。ハッシュアルゴリズムは簡単であるように設計され、それによって単一のクロックサイクルの結果を生じ、同様にハッシュLUT衝突を最小にするのに十分な拡散スペクトルである。ハッシュの等式を以下示す。
LP=ローカルポート、
PP=ピアポート、
LI=ローカルIPアドレス、
PIP=ピアIPアドレス
Hash[16:0]={({LP[7:0],LP[15:8]^PP},1’b0)^{1’b0,((LIP[15:8]^LIP[7:0])^(PIP[15:8]^PIP[7:0]))};
以下はハッシュに対して実行されるステップである。
・ローカルポートのバイトはスワップされる。
・新しいバイトのスワップされたローカルポートは16ビットのポート積を形成するためにピアポートによりXOR処理される。
・ローカルIPアドレスのMSBはローカルIPアドレスとLSBでXOR演算処理される。
・ピアIPアドレスのMSBはピアIPアドレスのLSBでXOR演算処理される。
・2つのIPアドレス積はIPワード積を形成するためにXOR演算処理される。
・ポート積は1ビットだけ左にシフトされ、17ビット値を形成するために0で埋められる。
・IPワード積には17ビット積を形成するために先行する0が添付される。
・新しい17ビットポート積とIPワード積は最終的なハッシュ値を形成するためにXOR演算処理される。
[Hash algorithm]
The hash algorithm used combines the local and peer ports of the socket with the local and peer IP addresses to form a single 17-bit hash value. The hash algorithm is designed to be simple, thereby producing a single clock cycle result, as well as sufficient spread spectrum to minimize hash LUT collisions. The hash equation is shown below.
LP = local port,
PP = peer port,
LI = local IP address,
PIP = peer IP address Hash [16: 0] = {({LP [7: 0], LP [15: 8] ^ PP}, 1′b0) ^ {1′b0, ((LIP [15: 8] ^ LIP [7: 0]) ^ (PIP [15: 8] ^ PIP [7: 0]))};
The following are the steps performed on the hash.
• Local port bytes are swapped.
The new byte swapped local port is XORed with the peer port to form a 16 bit port product.
The MSB of the local IP address is XORed with the local IP address and LSB.
The MSB of the peer IP address is XORed with the LSB of the peer IP address.
• Two IP address products are XORed to form an IP word product.
The port product is shifted left by 1 bit and padded with 0s to form a 17-bit value.
IP word products are accompanied by leading zeros to form a 17-bit product.
The new 17-bit port product and IP word product are XORed to form the final hash value.

このハッシュアルゴリズムは図27に示されている。   This hash algorithm is shown in FIG.

以下はハッシュアルゴリズムの一例である。   The following is an example of a hash algorithm.

LP=1024、
PP=0080、
LI=45.C3.E0.19、
PIP=23.D2.3F.A1
ポート積=0×2410^0×0080=0×2490
IP積=(0×45C3^0×E019)^(0×23D2^0×3FA1)=0×A5DA^0×1C73=0×B9A9
最終的なハッシュ={0×2490,0}^{0,0×79A9}=0×04920^0×0B9A9=0×0F089
半分オープンの制御ブロックLUTでは、12ビットのハッシュが使用される。この12ビットのハッシュ値は以下のように前述の式から得られる。
ハッシュ12[11:0]=ハッシュ17[16:5]^ハッシュ17[11:0]
ここで、ハッシュ17は先に規定された式である。
LP = 1024,
PP = 0080,
LI = 45. C3. E0.19,
PIP = 23. D2.3F. A1
Port product = 0 × 2410 ^ 0 × 0080 = 0 × 2490
IP product = (0 * 45C3 ^ 0 * E019) ^ (0 * 23D2 ^ 0 * 3FA1) = 0 * A5DA ^ 0 * 1C73 = 0 * B9A9
Final hash = {0 × 2490,0} ^ {0,0 × 79A9} = 0 × 04920 ^ 0 × 0B9A9 = 0 × 0F089
In a half-open control block LUT, a 12-bit hash is used. This 12-bit hash value is obtained from the above equation as follows.
Hash 12 [11: 0] = hash 17 [16: 5] ^ hash 17 [11: 0]
Here, the hash 17 is an expression defined earlier.

[ISNアルゴリズム]
[動作理論]
IT10Gで使用されるISNアルゴリズムはRFC1948に記載されているアルゴリズムに類似しており、4マイクロ秒ベースのタイマ、ホストシステムにより設定可能なランダムブート値、4つのソケットパラメータ(ポートおよびIPアドレス)を有している。関数は以下の形態を有する。
ISN=タイマ+F(boot_value,src_jp,dest_ip,src_port,dest_port)
ここでタイマは4マイクロ秒ベースの32ビットアップカウンタである。F()関数は関数FC()に基づいており、以下のように規定される。
FC(hv32,data32)= [(prev32<<B)^(prev32>>7)]^data32
最初に、hv32の値はシステム(ホストコンピュータ)からのランダムboot_valueに設定される。その後、リクエストされる各ISNに対して、hv32は以下のように計算される。
hv32=FC(prev32、src_ip)
hv32=FC(prev32、dest_ip)v
hv32=FC(prev32、{src_port,dest_port})
アルゴリズム全体のブロック図が図28に示されている。
[ISN algorithm]
[Theory of operation]
The ISN algorithm used in IT10G is similar to the algorithm described in RFC 1948, with a 4 microsecond-based timer, a random boot value configurable by the host system, and four socket parameters (port and IP address). is doing. The function has the following form.
ISN = timer + F (boot_value, src_jp, dest_ip, src_port, dest_port)
Here, the timer is a 32-bit up counter based on 4 microseconds. The F () function is based on the function FC () and is defined as follows.
FC (hv32, data32) = [(prev32 << B) ^ (prev32 >> 7)] ^ data32
Initially, the value of hv32 is set to a random boot_value from the system (host computer). Then, for each requested ISN, hv32 is calculated as follows:
hv32 = FC (prev32, src_ip)
hv32 = FC (prev32, dest_ip) v
hv32 = FC (prev32, {src_port, dest_port})
A block diagram of the entire algorithm is shown in FIG.

現在のアーキテクチャはISNを計算するために4クロックサイクルを取る。第1のサイクルでは、ソースIPアドレス(src_ip)はhv32を発生するためにフィードスルーされる。第2のクロックサイクルでは、目的地IPアドレスがフィードスルーされ、第3のクロックサイクルでは、ポート情報がフィードスルーされる。第4のクロックサイクルは最終的な関数値にインクリメントするタイマ値を付加するために使用される。レジスタAとレジスタBは第4のクロックサイクルでクロックされないことにも注意する。   The current architecture takes 4 clock cycles to calculate the ISN. In the first cycle, the source IP address (src_ip) is fed through to generate hv32. In the second clock cycle, the destination IP address is fed through, and in the third clock cycle, the port information is fed through. The fourth clock cycle is used to add an incrementing timer value to the final function value. Note also that registers A and B are not clocked in the fourth clock cycle.

[テストモード]
ISN試験モードはISNを診断目的で所定の番号に設定する1方法として与えられている。このテストモードは以下のように使用される。
0×00を0×1A06に書込む(TCP TX読取インデックスレジスタ)、
ISNのビット[7:0]を0×1A07に書込む、
0×01を0×1A06に書込む、
ISNのビット[15:8]を0×1A07に書込む、
0×02を0×1A06に書込む、
ISNのビット[23:16]を0×1A07に書込む、
0×03を0×1A06に書込む、
ISNのビット[31:24]を0×1A07に書込む、
0×04を0×1A06に書込む、
任意の値を0×1A07に書込む(テストモードを使用可能にする)。
[Test mode]
The ISN test mode is provided as one method for setting the ISN to a predetermined number for diagnostic purposes. This test mode is used as follows.
Write 0x00 to 0x1A06 (TCP TX read index register),
Write ISN bits [7: 0] to 0x1A07,
Write 0x01 to 0x1A06,
Write ISN bits [15: 8] to 0x1A07,
Write 0x02 to 0x1A06,
Write ISN bits [23:16] to 0x1A07,
Write 0x03 to 0x1A06,
Write ISN bits [31:24] to 0x1A07,
Write 0x04 to 0x1A06,
Write an arbitrary value to 0x1A07 (enable test mode).

前述のステップ#10での書込みはISNテストモードを使用可能にする。今特定されたISNは次回にISNがリクエストされるときに使用される。テストモードをクリアするために、0×05を0×1A06に書込み、任意の値を0×1A07に書込む。   The write in step # 10 described above enables the ISN test mode. The currently specified ISN is used the next time an ISN is requested. In order to clear the test mode, 0x05 is written to 0x1A06 and an arbitrary value is written to 0x1A07.

[ソケット制御ブロック構造]
[概要]
ソケット制御ブロックまたはCBは各ソケットに対する動作情報を含んでおり、CBメモリスペース中に存在する。CBはすべての状態情報、メモリポインタ、構成設定、ソケットに対するタイマ設定を含んでいる。これらのパラメータは種々のTCPサブモジュールにより更新されることができる。ロック機構は一度にただ1つだけのサブモジュールがソケットCBを変更できることを確実にする。IT10Gは半分オープン状態、設定された状態、閉じた状態であるソケットに対する異なるCB構造を使用する。
[Socket control block structure]
[Overview]
A socket control block or CB contains operational information for each socket and resides in the CB memory space. The CB contains all status information, memory pointers, configuration settings, and timer settings for the socket. These parameters can be updated by various TCP submodules. The locking mechanism ensures that only one submodule can change socket CB at a time. IT10G uses different CB structures for sockets that are half open, set, and closed.

[設定されたソケットの主要なTCP/UDP CB構造]
以下のテーブルは設定されたソケットのメモリの主要なTCP/UDP CB構造におけるすべてのフィールドをリストしている。また、以下に規定される付随TCP CB構造も存在する。

Figure 0004875126
[Key TCP / UDP CB structure of configured socket]
The following table lists all the fields in the main TCP / UDP CB structure of the configured socket memory. There is also an accompanying TCP CB structure defined below.
Figure 0004875126

[設定されたソケットの主要なCBフィールド規定]
[遠隔IPアドレス(アドレス0×00、32ビット)]
この32ビットフィールドは接続のための遠隔IPアドレスを表している。クライアントソケットでは、このフィールドはアプリケーションにより設定される。サーバソケットでは、このフィールドはSYNパケットで受信されるIPアドレスまたは受信されたUDPパケットのIPアドレスにより埋められる。
[Key CB field specification of the set socket]
[Remote IP address (address 0x00, 32 bits)]
This 32-bit field represents the remote IP address for connection. For client sockets, this field is set by the application. For server sockets, this field is filled with the IP address received in the SYN packet or the IP address of the received UDP packet.

[遠隔ポート(アドレス0×01 [31:16]、16ビット)]
このフィールドは接続のための遠隔ポート番号を表している。クライアントソケットでは、このフィールドは常にアプリケーションによって特定される。サーバソケットでは、このフィールドは常にSYNまたはUDPパケットで受信されるポート番号で埋められる。
[Remote port (address 0x01 [31:16], 16 bits)]
This field represents the remote port number for the connection. For client sockets, this field is always specified by the application. For server sockets, this field is always filled with the port number received in the SYN or UDP packet.

[ローカルポート(アドレス0×01 [15:0]、16ビット)]
このフィールドは接続のためのローカルポート番号を表している。クライアントソケットでは、このフィールドはアプリケーションにより特定されるか、ネットワークスタックにより自動的に生成される。サーバソケットでは、このフィールドは常にアプリケーションにより特定される。
[Local port (address 0x01 [15: 0], 16 bits)]
This field represents the local port number for connection. For client sockets, this field is specified by the application or automatically generated by the network stack. For server sockets, this field is always specified by the application.

[IPインデックス(アドレス0×02[31:28]、4ビット)]
このフィールドはソケットに対するホストインターフェースのIPアドレスのネットワークスタックIPアドレステーブルのインデックスを表しており、ネットワークスタックハードウェアにより埋められる。
[IP index (address 0x02 [31:28], 4 bits)]
This field represents an index of the network stack IP address table of the IP address of the host interface for the socket and is filled with the network stack hardware.

[ConnState(アドレス0×02[27:24]、4ビット)]
このフィールドは接続の現在状態を示し、以下のように復号する。

Figure 0004875126
[ConnState (address 0x02 [27:24], 4 bits)]
This field indicates the current state of the connection and is decoded as follows:
Figure 0004875126

[AX(アドレス0×02[23]、1ビット)]
このビットは受信されたACK状態メッセージモードが使用可能になることを示している。このモードでは、すべての目立ったデータを承認するACKが受信されたとき、状態メッセージが発生される。このモードはNagleアルゴリズムと共に使用される。
[AX (address 0x02 [23], 1 bit)]
This bit indicates that the received ACK status message mode is enabled. In this mode, a status message is generated when an ACK is received that acknowledges all outstanding data. This mode is used with the Nagle algorithm.

[SA(アドレス0×02[22]、1ビット)]
このビットは選択的なACKオプション(SACK)がこのソケットと共に使用されるべきであることを示している(0=SACKを使用してはならない、1=SACKを使用しなさい)。
[SA (address 0x02 [22], 1 bit)]
This bit indicates that a selective ACK option (SACK) should be used with this socket (0 = do not use SACK, 1 = use SACK).

[TS(アドレス0×02[21]、1ビット)]
このビットはタイムスタンプオプションがこのソケットにより使用されるべきであることを示している(0=タイムスタンプオプションを使用してはならない、1=タイムスタンプオプションを使用しなさい)。
[TS (address 0x02 [21], 1 bit)]
This bit indicates that the timestamp option should be used by this socket (0 = do not use the timestamp option, 1 = use the timestamp option).

[WS(アドレス0×02[20]、1ビット)]
このフラグはスライディングウィンドウオプションがTCPソケットに対して適切に交渉されていることを示している(0=WSオプションを使用してはならない、1=WSオプションが使用可能になる)。このビットはUDPソケットでは使用されない。
[WS (address 0x02 [20], 1 bit)]
This flag indicates that the sliding window option is properly negotiated for the TCP socket (0 = WS option should not be used, 1 = WS option will be enabled). This bit is not used for UDP sockets.

[ZW(アドレス0×02[19]、1ビット)]
このビットはソケットのピアウィンドウが0×0000であり、ソケットがゼロのウィンドウプローブ状態にあることを示している。
[ZW (address 0x02 [19], 1 bit)]
This bit indicates that the socket's peer window is 0x0000 and the socket is in a zero window probe state.

[AR(アドレス0×02[18]、1ビット)]
このビットはACKパケットが特定のソケットで送信されるときに設定される。これはACKパケットが送信されるときにクリアされる。
[AR (address 0x02 [18], 1 bit)]
This bit is set when an ACK packet is sent on a particular socket. This is cleared when an ACK packet is sent.

[CF(アドレス0×02[17]、1ビット)]
このビットは現在のCBが受信・送信FIFOバッファ待ち行列中にあり、したがって減少されることができないことを示している。一度、ソケットに対するACKが送信されると、TCP送信ブロックはOpen CBからTime_Wait CBへ移動する。
[CF (address 0x02 [17], 1 bit)]
This bit indicates that the current CB is in the receive / transmit FIFO buffer queue and therefore cannot be decremented. Once the ACK for the socket is transmitted, the TCP transmission block moves from Open CB to Time_Wait CB.

[CV(アドレス0×02[16]、1ビット)]
このビットはCBが有効な情報を含んでいることを示している。任意のCBの減少前に、このビットは常にクリアされる。
[CV (address 0x02 [16], 1 bit)]
This bit indicates that the CB contains valid information. This bit is always cleared before any CB decrements.

[RD(アドレス0×02[15]、1ビット)]
このビットはCB再送信時間が満了したが、優先順位待ち行列が一杯であるために再送信のために待ち行列されることができないことを示している。CBポーラがCBで主張されているこのビットを発見するとき、これは再送信時間フィールドを無視し、再送信のためにCBを処理する。このビットはCBが優先順位送信待ち行列に入ったときにクリアされる。
[RD (address 0x02 [15], 1 bit)]
This bit indicates that the CB retransmission time has expired but cannot be queued for retransmission because the priority queue is full. When the CB polar finds this bit claimed in the CB, it ignores the retransmission time field and processes the CB for retransmission. This bit is cleared when the CB enters the priority transmission queue.

[CBVer(アドレス0×02[14:12]、3ビット)]
これらのビットはCBのバージョンを示し、主にオンチッププロセッサにより使用され、それによって将来のハードウェアバージョンのCBのタイプを区別できる。このフィールドは0×1として現在規定されている。
[CBVer (address 0x02 [14:12], 3 bits)]
These bits indicate the CB version and are mainly used by the on-chip processor, thereby distinguishing the CB type of future hardware versions. This field is currently defined as 0x1.

[CBインターフェース(アドレス0×02[11:8]、4ビット)]
これらのビットはソケットの特定の物理的インターフェースを特定するために使用され、マルチポートアーキテクチャで使用される。単一ポートアーキテクチャでは、このフィールドは0×0で残されるべきである。
[CB interface (address 0x02 [11: 8], 4 bits)]
These bits are used to identify the specific physical interface of the socket and are used in multiport architectures. In a single port architecture, this field should be left at 0x0.

[SY(アドレス0×02[7]、1ビット)]
これらのビットはTW状態にありながら、ソケットがSYNパケットを受信したことを示している。このビットが設定され、その後ソケットでRSTを受信し、kill_tw_modeが0×00に設定されるならば、CBは直ぐに無視される。
[SY (address 0x02 [7], 1 bit)]
These bits indicate that the socket has received a SYN packet while in the TW state. If this bit is set and then a RST is received on the socket and kill_tw_mode is set to 0x00, the CB is immediately ignored.

[ST(アドレス0×02[6]、1ビット)]
このビットはTXの左および右のSACKフィールドが有効であることを示している。TCP受信論理装置が受信されたデータの穴に気づいたとき、TCP受信論理装置は穴の開始および終了アドレスをTXの左および右SACKフィールドへ位置させ、次に送信されるパケットがSACKオプションを含むべきであることを示すためにこのビットを設定する。これらのパラメータを含んだパケットが送信されるとき、このビットはクリアされる。
[ST (address 0x02 [6], 1 bit)]
This bit indicates that the left and right SACK fields of TX are valid. When the TCP receiving logic unit notices a hole in the received data, the TCP receiving logic unit positions the start and end addresses of the hole in the left and right SACK fields of the TX, and the next transmitted packet contains a SACK option. Set this bit to indicate that it should. This bit is cleared when a packet containing these parameters is sent.

[SR(アドレス0×02[5]、1ビット)]
このビットはRXの左および右のSACKフィールドが有効であることを示している。TCP受信論理装置がSACKオプションを受信したとき、TCP受信論理装置はSACK値の第1の対をRXの左および右SACKフィールドへ位置させ、このセクションが再送信される必要があることをTCP送信機に示すためにこのビットを設定する。セクションが再送信されるとき、このビットはクリアされる。
[SR (address 0x02 [5], 1 bit)]
This bit indicates that the left and right SACK fields of RX are valid. When the TCP receiving logic unit receives the SACK option, the TCP receiving logic unit positions the first pair of SACK values in the left and right SACK fields of the RX and indicates that this section needs to be retransmitted. Set this bit to indicate to the machine. This bit is cleared when the section is retransmitted.

[KA(アドレス0×02[4]、1ビット)]
TCPソケットでは、このビットはキープアライブタイマがこのソケットを使用されるべきであることを示している(0=キープアライブタイマを使用してはならない、1=キープアライブタイマを使用しなさい)。UDPソケットでは、このビットはチェックサムがチェックされるべきであるか否かを示している(1=チェックサムを使用可能にする、0=チェックサムを無視する)。
[KA (address 0x02 [4], 1 bit)]
For TCP sockets, this bit indicates that a keepalive timer should be used for this socket (0 = do not use keepalive timer, 1 = use keepalive timer). For UDP sockets, this bit indicates whether the checksum should be checked (1 = enable checksum, 0 = ignore checksum).

[DF(アドレス0×02[3]、1ビット)]
このビットはソケットに対するIPヘッダのDFビットの状態を表している。このビットが設定されるとき、パケットは任意のホップにより断片化されない。このビットはパスMTU発見のために使用される。
[DF (address 0x02 [3], 1 bit)]
This bit represents the state of the DF bit of the IP header for the socket. When this bit is set, the packet is not fragmented by any hops. This bit is used for path MTU discovery.

[VL(アドレス0×02[2]、1ビット)]
このビットはVLANタグが出力するイーサネット(登録商標)フレームに含まれるか否かを示している。このビットが主張されるならば、VLANタグ情報の4バイトはcb_tx_vian_priorityと、cb_tx_vidにより作られ、VLANタグ識別(固定された値)は後続するイーサネット(登録商標)アドレスフィールドに含まれる。
[VL (address 0x02 [2], 1 bit)]
This bit indicates whether it is included in the Ethernet (registered trademark) frame output by the VLAN tag. If this bit is asserted, the 4 bytes of VLAN tag information are created by cb_tx_vian_priority and cb_tx_vid, and the VLAN tag identification (fixed value) is included in the subsequent Ethernet address field.

[RE(アドレス0×02[1]、1ビット、TCP CB)]
このフラグはタイムアウト状態と、再送信が必要とされることを示すために使用される。データが再送信されるときにクリアされる。このビットはTCP CB用にのみ規定される。
[RE (address 0 × 02 [1], 1 bit, TCP CB)]
This flag is used to indicate a timeout condition and that a retransmission is required. Cleared when data is retransmitted. This bit is specified only for TCP CB.

[UP(アドレス0×02[1]、1ビット、UDP CB)]
このフラグはUDPポートがダイナミックに割当てられるか予め特定されているかを示すために使用される。ダイナミックに割当てられるならば、CBがデプリケートされるときに割当てを解除される。そうでなく予め特定されるならば、CBがデプリケートされるときポートアクションは行われない。このビットはUDP CBに対してのみ規定される。
[UP (address 0x02 [1], 1 bit, UDP CB)]
This flag is used to indicate whether the UDP port is dynamically assigned or pre-specified. If dynamically allocated, it will be deallocated when the CB is replicated. Otherwise, if specified in advance, no port action is taken when the CB is replicated. This bit is specified only for UDP CB.

[AD(アドレス0×02[0]、1ビット)]
このビットはソケットでの遅延されたACK送信でACKが待ち行列されることを示している。このビットはTCP RX論理装置で設定され、ACKが送信のためにCBポーラにより待ち行列されるときにクリアされる。
[AD (address 0x02 [0], 1 bit)]
This bit indicates that an ACK is queued for a delayed ACK transmission on the socket. This bit is set in the TCP RX logic unit and is cleared when the ACK is queued by the CB poller for transmission.

[TX ACK番号(アドレス0×03,32ビット)]
これはTCP接続の動作ACK番号である。これは受信されたTCP PSHパケットの予測されるSEQ番号を表している。TCPデータパケットが受信されるとき、SYN番号はこの番号に対してチェックされる。一致するか、受信されたSEQ番号+パケットの長さがこの番号をカバーするならば、データは受入れられる。この番号はネットワークスタックにより自動的に更新され、UDP接続に使用されない。
[TX ACK number (address 0x03, 32 bits)]
This is an operation ACK number for TCP connection. This represents the predicted SEQ number of the received TCP PSH packet. When a TCP data packet is received, the SYN number is checked against this number. If there is a match or the received SEQ number plus the length of the packet covers this number, the data is accepted. This number is automatically updated by the network stack and is not used for UDP connections.

[SEQ番号(アドレス0×4,32ビット)]
これはTCP接続の動作SEQ番号である。これはTCPパケットで使用されるSEQ番号を表しており、ネットワークスタックにより自動的に更新される。このフィールドはUDP接続に使用されない。
[SEQ number (address 0x4, 32 bits)]
This is the operation SEQ number of the TCP connection. This represents the SEQ number used in the TCP packet and is automatically updated by the network stack. This field is not used for UDP connections.

[キープアライブ時間0×05[31:24]、8ビット]
このフィールドはキープアライブトリガーが主張されるときの将来の時間を表している。この時間はパケットがソケットで送信される毎に、または純粋なACKパケットが受信される毎にリセットされる。その時間はここでは分の単位で表される。
[Keep-alive time 0x05 [31:24], 8 bits]
This field represents the future time when the keep-alive trigger is asserted. This time is reset every time a packet is sent on the socket or every time a pure ACK packet is received. The time is expressed here in minutes.

[LWinスケール(アドレス0×05[23:20]、4ビット)]
このフィールドは接続に使用されるローカルスライディングウィンドウスケールファクタを表している。有効値は0×00から0×0Eである。
[LWin scale (address 0x05 [23:20], 4 bits)]
This field represents the local sliding window scale factor used for the connection. Valid values are from 0x00 to 0x0E.

[RWinスケール(アドレス0×05[19:16]、4ビット)]
このフィールドはTCP SYNパケット中の遠隔端によりリクエストされるときのスライディングウィンドウスケールファクタを表している。有効値は0×00から0×0Eである。
[RWin scale (address 0x05 [19:16], 4 bits)]
This field represents the sliding window scale factor when requested by the remote end in the TCP SYN packet. Valid values are from 0x00 to 0x0E.

[遠隔MSS(アドレス0×05[15:0]、16ビット)]
このフィールドはTCP接続のためのSYNパケットで受信されたMSSを表している。これは遠隔端部が受けることができる最大のパケットサイズを示している。MSSオプションが受信されないならば、このフィールドは536(0×0218)にデフォルトされる。このフィールドはUDP接続に使用されない。
[Remote MSS (Address 0x05 [15: 0], 16 bits)]
This field represents the MSS received in the SYN packet for TCP connection. This indicates the maximum packet size that can be received by the remote end. If no MSS option is received, this field defaults to 536 (0x0218). This field is not used for UDP connections.

[PA(アドレス0×06[31]、1ビット)]
このビットはCBのポートが自動割当てされたことを示すために使用される。このビットが設定されるならば、CBをデプリケートするときが来ると、このビットはポートが割当てを解除される必要があるか否かを検査される。
[PA (address 0x06 [31], 1 bit)]
This bit is used to indicate that the CB port has been automatically assigned. If this bit is set, when it is time to replicate the CB, this bit is checked whether the port needs to be deallocated.

[優先順位(アドレス0×06[30:28]、3ビット)]
このフィールドはVLANタグに使用されるユーザの優先順位レベルを表している。このフィールドはまた送信スケジュール中のソケットのサービスレベルを表している。番号の数が高い程、優先順位は高くなる(7が最高で、0が最低)。このフィールドのデフォルト値は0×0であり、ソフトウェアにより設定されることができる。
[Priority (address 0x06 [30:28], 3 bits)]
This field represents the priority level of the user used for the VLAN tag. This field also represents the service level of the socket in the transmission schedule. The higher the number, the higher the priority (7 is the highest and 0 is the lowest). The default value for this field is 0x0 and can be set by software.

[VID(アドレス0×06[27:16]、12ビット)]
このフィールドはVLAGタグフレームで使用されるVLAG識別を表している。このフィールドのデフォルト値は0×000であり、ソフトウェアにより設定されることができる。ピアから開始される接続では、このフィールドはオープニングSYNパケットで受けられるVIDにより設定される。
[VID (address 0x06 [27:16], 12 bits)]
This field represents the VLAG identification used in the VLAG tag frame. The default value for this field is 0x000 and can be set by software. For connections initiated from the peer, this field is set by the VID received in the opening SYN packet.

[遠隔MACアドレス(アドレス0×06[15:0]−0×07,全部で48ビット)]
このフィールドはこのソケットで送信されているパケットの目的地MACアドレスを表している。ソケットが最初に設定されるとき、ARPキャッシュはこのアドレスで問合せられる。これが解決された後、アドレスはここに記憶され、さらにARPキャッシュの問合せは避けられる。CBがサーバソケットとして生成されるならば、このアドレスはSYNソケットに含まれる目的地MACアドレスから取られる。アドレスのビット[47:32]はCBアドレス0×6に記憶される。
[Remote MAC address (Address 0x06 [15: 0] -0x07, 48 bits in total)]
This field represents the destination MAC address of the packet being transmitted on this socket. When a socket is first set up, the ARP cache is queried with this address. After this is resolved, the address is stored here and further ARP cache queries are avoided. If the CB is created as a server socket, this address is taken from the destination MAC address contained in the SYN socket. Address bits [47:32] are stored in CB address 0 × 6.

[ローカルIPアドレス(アドレス0×08,32ビット)]
このフィールドはソケット接続に対するローカルIPアドレスを表している。クライアントソケットでは、このフィールドはアプリケーションにより特定される。サーバソケットでは、このフィールドはCBが半開きから開いた状態まで転移されるときに満杯にされる。
[Local IP address (address 0x08, 32 bits)]
This field represents the local IP address for the socket connection. For client sockets, this field is specified by the application. For server sockets, this field is filled when the CB is transitioned from half-open to open.

[RX ACK番号(アドレス0×09、32ビット)]
このフィールドはこのソケットに対してピアから受信された最近のACK番号を表している。これは任意の再試行がソケットで必要とされるか否かを決定するために使用される。これは送信されたパケットで使用されるシーケンス番号とは異なる番号であることに注意すべきである。
[RX ACK number (address 0x09, 32 bits)]
This field represents the most recent ACK number received from the peer for this socket. This is used to determine if any retries are needed on the socket. Note that this is a different number than the sequence number used in the transmitted packet.

[混雑ウィンドウ(cwnd)(アドレス0×0A[31:0]、32ビット)]
このフィールドはcwndパラメータを追跡する。cwndパラメータは混雑の回避およびスロースタートアルゴリズムで使用され、1MSSに初期化される。
[Congestion window (cwnd) (address 0x0A [31: 0], 32 bits)]
This field tracks the cwnd parameter. The cwnd parameter is used in the congestion avoidance and slow start algorithm and is initialized to 1MSS.

[HA(ホストACK)(アドレス0×0B[31]、1ビット)]
このビットはホスト_ACKモードがこのソケットでアクチブであることを示している。このモードでは、データACKはホストによりトリガーされ、データが受信されるときに自動的に送信されない。
[HA (Host ACK) (Address 0x0B [31], 1 bit)]
This bit indicates that Host_ACK mode is active on this socket. In this mode, the data ACK is triggered by the host and is not automatically transmitted when data is received.

[SS(送信されるRX DAV状態)(アドレス0×0B[30]、1ビット)]
このビットはCBに対するRX DAV状態メッセージがオンチッププロセッサに送信されたことを示している。ビットはデータがホストにDMAされたときをクリアする。
[SS (RX DAV state to be transmitted) (address 0x0B [30], 1 bit)]
This bit indicates that an RX DAV status message for CB has been sent to the on-chip processor. The bit clears when data is DMAed to the host.

[ソケットタイプ(アドレス0×0B[29:27]、3ビット)]
このフィールドは以下の表にしたがって制御ブロックにより表されるソケットのタイプを示している。

Figure 0004875126
[Socket type (address 0x0B [29:27], 3 bits)]
This field indicates the type of socket represented by the control block according to the following table.
Figure 0004875126

示されていないすべての他の復号は将来使用するために保留されている。UDPの生のモードでは、アプリケーションにはUDPデータと共に遠隔IPアドレスおよびUDPヘッダ情報が与えられている。UDPの正常モードでは、データ部分だけがアプリケーションに与えられる。   All other decryptions not shown are reserved for future use. In UDP raw mode, the application is given a remote IP address and UDP header information along with UDP data. In the normal mode of UDP, only the data part is given to the application.

[MI(アドレス0×0B[26]、1ビット)]
このビットはデータが現在、ソケット受信メモリブロック中に存在しないことを示すために使用される。
[MI (address 0x0B [26], 1 bit)]
This bit is used to indicate that data is not currently present in the socket receive memory block.

[RX終了メモリブロックポインタ(アドレス0×0B[25:0]、26ビット)]
このフィールドは受信データが書込まれた最後のMRXバッファのアドレスを表している。これはソケットに使用される次のメモリブロックをリンクするために使用される。
[RX end memory block pointer (address 0x0B [25: 0], 26 bits)]
This field represents the address of the last MRX buffer in which received data has been written. This is used to link the next memory block used for the socket.

[RX開始メモリブロックポインタ(アドレス0×0C[25:0]、26ビット)]
このフィールドはホストに送信される次のMRXバッファのアドレスを表している。
[RX start memory block pointer (address 0x0C [25: 0], 26 bits)]
This field represents the address of the next MRX buffer sent to the host.

[HD(アドレス0×0C[26]、1ビット)]
このビットはホストへDMAされるデータが残留し、RX DMA状態メッセージがまだ送信されていないことを示している。TCP RX論理装置はRX DMA動作をスケジュールするときにこのビットを設定し、RX DMAの行われた状態メッセージをリクエストするときにTCP RX論理装置によりクリアされる。このビットはFIN対状態メッセージタイミング発行を容易にすることに使用されている。
[HD (address 0x0C [26], 1 bit)]
This bit indicates that there is data left to be DMAed to the host and no RX DMA status message has been sent yet. The TCP RX logical unit sets this bit when scheduling an RX DMA operation and is cleared by the TCP RX logical unit when requesting an RX DMA done status message. This bit is used to facilitate the FIN vs. status message timing issue.

[ISPECモード(アドレス0×0C[30:27]、4ビット)]
これらのビットはこのソケット接続で送信されたパケットで可能にされるIPSECモードを示している。復号を以下の表で示されている。

Figure 0004875126
[ISPEC mode (address 0x0C [30:27], 4 bits)]
These bits indicate the IPSEC mode enabled for packets sent on this socket connection. Decoding is shown in the table below.
Figure 0004875126

設定されるビットがないならば、ソケットで使用されるIPSECはない。   If no bit is set, there is no IPSEC used on the socket.

[AB(ACK Req ペンディング)(アドレス0×0C[31]、1ビット)]
このビットはTCP受信論理装置からTCP送信論理装置へのACKリクエストが保留中であることを示している。それはTCPデータパケットが受信されるときに設定され、データのACKが送信されるときにクリアされる。このビットが依然として設定されながら別のデータパケットが受信されるならば、別のACKがリクエストされないで、受信されたACK数が更新される。
[AB (ACK Req Pending) (Address 0x0C [31], 1 bit)]
This bit indicates that an ACK request from the TCP receiving logic device to the TCP sending logic device is pending. It is set when a TCP data packet is received and cleared when a data ACK is sent. If another data packet is received while this bit is still set, another ACK is not requested and the number of received ACKs is updated.

[HR(ホスト再送信ソケット)(アドレス0×0D[30]、1ビット)]
このビットはこのソケットがiSCSIアプリケーションであることを示している。
[HR (host retransmission socket) (address 0x0D [30], 1 bit)]
This bit indicates that this socket is an iSCSI application.

[AS(アドレス0×0D[30]、1ビット)]
このビットはこのソケットがオンチッププロセッサソケットアプリケーションであることを示している。
[AS (address 0x0D [30], 1 bit)]
This bit indicates that this socket is an on-chip processor socket application.

[DA(アドレス0×0D[29]、1ビット)]
このビットは重複ACKのために再送信を行ったことを示している。これは再送信されたパケットが送信されるときに設定される。受信されたACKポインタを進めるACKを獲得するときクリアされる。重複ACK再送信後、新しいデータに対するACKを得るとき、cwnd=ssthresh(高速度回復アルゴリズムの一部)を設定する。このビットはワード0×14でDSビットと共に使用される。失われたセグメントの再送信は一度だけ行われるので2つのビットを必要とする。
[DA (address 0x0D [29], 1 bit)]
This bit indicates that retransmission was performed due to a duplicate ACK. This is set when a retransmitted packet is transmitted. Cleared when acquiring an ACK that advances the received ACK pointer. Set cwnd = ssthresh (part of high speed recovery algorithm) when ACK for new data is obtained after duplicate ACK retransmission. This bit is used with the DS bit in word 0x14. The retransmission of the lost segment is done only once and requires two bits.

[R0(アドレス0×0D[28]、1ビット)]
このビットは再送信時間フィールドが有効(0=無効、1=有効)であることを示している。
[R0 (address 0x0D [28], 1 bit)]
This bit indicates that the retransmission time field is valid (0 = invalid, 1 = valid).

[RV(アドレス0×0D[27]、1ビット)]
このビットは再送信時間フィールドが有効(0=無効、1=有効)であることを示している。
[RV (address 0x0D [27], 1 bit)]
This bit indicates that the retransmission time field is valid (0 = invalid, 1 = valid).

[TP(アドレス0×0D[26]、1ビット)]
このビットは時間を定められたパケットが現在経過中であることを示している。RTOオプションが使用可能にならない場合のみ使用される。
[TP (address 0x0D [26], 1 bit)]
This bit indicates that a timed packet is currently in progress. Used only if the RTO option is not enabled.

[次のTXメモリブロックポインタ(アドレス0×0D[25:0]、26ビット)]
このフィールドは送信される次のMTXバッファのアドレスを表している。
[Next TX memory block pointer (address 0x0D [25: 0], 26 bits)]
This field represents the address of the next MTX buffer to be transmitted.

[MSS_S(2ビット,ワード0×0E[31:30])]
これらのビットはSYNパケットで使用されるMSSサイズを特定するために使用される。有効な設定を以下示す。

Figure 0004875126
[MSS_S (2 bits, word 0 × 0E [31:30])]
These bits are used to specify the MSS size used in the SYN packet. The valid settings are shown below.
Figure 0004875126

[シリーウィンドウサイズ(アドレス0×0E[29:0]、30ビット)]
このフィールドはTCP RXハードウェアにより追跡されるときの動作ウィンドウサイズを表している。このウィンドウは実際のウィンドウサイズを維持し、MSSよりも大きいときのみ実際のウィンドウに転送される。
[Series window size (address 0x0E [29: 0], 30 bits)]
This field represents the operating window size as tracked by the TCP RX hardware. This window maintains the actual window size and is transferred to the actual window only when it is larger than the MSS.

[RX DMAカウント(アドレス0×0F[31:16]、アドレス0×12[31:24]24ビット)]
このフィールドは最後のRX DMA状態メッセージ移行にRX DMAを介してホストへ送信されるバイト数を表している。カウントのMSBはアドレス0×12に記憶される。
[RX DMA count (address 0x0F [31:16], address 0x12 [31:24] 24 bits)]
This field represents the number of bytes sent to the host via RX DMA for the last RX DMA status message transition. The MSB of the count is stored at address 0x12.

[ホストバッファオフセットポインタ(アドレス0×0F[15:0]、16ビット)]
このフィールドはRX DMAが使用されている現在のホストメモリバッファへのオフセットを表している。
[Host buffer offset pointer (address 0x0F [15: 0], 16 bits)]
This field represents the offset into the current host memory buffer where RX DMA is used.

[ウィンドウクランプ(アドレス0×10[31:0]、32ビット)]
このフィールドはソケット接続で可能にされた最大の広告されたウィンドウを表している。
[Window clamp (address 0x10 [31: 0], 32 bits)]
This field represents the largest advertised window enabled on the socket connection.

[RXリンクリストアドレス(アドレス0×11[31:0]、32ビット)]
これはRX DMA動作に使用されるRXリンクリストのオンチッププロセッサメモリアドレスである。
[RX link list address (address 0x11 [31: 0], 32 bits)]
This is the on-chip processor memory address of the RX link list used for RX DMA operations.

[RX送信限度(アドレス0×12[15:0]、16ビット)]
これはRX DMA転送の転送限度である。RX DMA状態メッセージはこの限度に到達されると発生される。各DMA転送後に状態メッセージを必要とするCBに対しては、この限度は0×0001に設定されるべきである。
[RX transmission limit (address 0x12 [15: 0], 16 bits)]
This is the transfer limit for RX DMA transfers. An RX DMA status message is generated when this limit is reached. For CBs that require a status message after each DMA transfer, this limit should be set to 0x0001.

[RXリンクリストエントリ(アドレス0×12[23:16]、8ビット)]
これはRX DMAリンクリストのエントリ数である。
[RX link list entry (address 0x12 [23:16], 8 bits)]
This is the number of entries in the RX DMA link list.

[K(キープアライブトリガーされた)(アドレス0×13[31]、1ビット)]
このビットは現在のCBがキープアライブ状態にあることを示すために使用される。このビットはキープアライブタイマがCBで満了するときに設定され、キーブアライブが他の側がなくなった(消滅した)ことを発見したためにCBが割当てを解除されるとき、またはキープアライブプローブ(ACKパケット)に対する応答を受信するときにTCP−RXによりクリアされる。
[K (keep-alive triggered) (address 0x13 [31], 1 bit)]
This bit is used to indicate that the current CB is in a keep alive state. This bit is set when the keep alive timer expires on the CB, when the CB is deallocated because the keep alive discovers that the other side has disappeared (has disappeared), or a keep alive probe (ACK packet) Cleared by TCP-RX when a response to is received.

[DupAck(アドレス0×13[30:28]、3ビット)]
このフィールドは重複されたACKがいくつ受信されたかを追跡する。このパラメータは高速再送信アルゴリズムに使用される。
[DupAck (address 0x13 [30:28], 3 bits)]
This field tracks how many duplicate ACKs have been received. This parameter is used for fast retransmission algorithms.

[再試行/プローブ(アドレス0×13[27:24]、4ビット)]
このフィールドは特定のパケットに対して送出される再試行数を追跡する。これはまた送信されたウィンドウプローブの数の追跡を維持するために使用される。後者の数は適切なウィンドウのプローブ送信インターバルが使用されることができるために必要とされる。
[Retry / Probe (Address 0x13 [27:24], 4 bits)]
This field tracks the number of retries sent for a particular packet. This is also used to keep track of the number of window probes transmitted. The latter number is required so that an appropriate window probe transmission interval can be used.

[利用可能なTXデータ(アドレス0×13[23:0]、24ビット)]
このフィールドはソケットで送信されるのに利用可能なデータの総量を表している。
[Available TX data (address 0x13 [23: 0], 24 bits)]
This field represents the total amount of data available to be sent on the socket.

[ソケットチャンネル番号(アドレス0×14[31:24]、8ビット)]
これはソケットチャンネルの番号である。状態メッセージがホストに返送されるとき、このチャンネルは使用される待ち行列を特定する。
[Socket channel number (address 0x14 [31:24], 8 bits)]
This is the socket channel number. When a status message is sent back to the host, this channel specifies the queue to be used.

[SX(アドレス0×14[23]、1ビット)]
このビットはSACK再送信が必要であることを示している。これはSACK再送信が送出されるときに再送信モジュールにより設定されクリアされる。
[SX (address 0x14 [23], 1 bit)]
This bit indicates that SACK retransmission is required. This is set and cleared by the retransmission module when a SACK retransmission is sent.

[FX(アドレス0×14[23]、1ビット)]
このビットはFINパケットがこのソケットで送出されていることを示している。これはTCP TX論理装置により設定される。
[FX (address 0x14 [23], 1 bit)]
This bit indicates that a FIN packet is being sent out on this socket. This is set by the TCP TX logic unit.

[DA(アドレス0×14[19]、1ビット)]
このビットはソケットが重複ACK状態にあることを示している。このビットは重複ACK閾値に到達するときに設定される。ピアACKが新しいデータのときにクリアされる。
[DA (address 0x14 [19], 1 bit)]
This bit indicates that the socket is in a duplicate ACK state. This bit is set when the duplicate ACK threshold is reached. Cleared when peer ACK is new data.

[UM(アドレス0×14[18]、1ビット)]
このビットはピアの広告されたウィンドウがMSSの2倍を超えたことを示している。このビットが設定されるならば、データはMSSサイズの最大でMTXに記憶される。ビットが設定されないならば、データはMSSの4分の1の最大で記憶される。
[UM (address 0x14 [18], 1 bit)]
This bit indicates that the advertised window of the peer has exceeded twice the MSS. If this bit is set, the data is stored in MTX at the maximum MSS size. If the bit is not set, the data is stored with a maximum of one quarter of the MSS.

[UC(アドレス0×14[17]、1ビット)]
このビットは次のCBリンクフィールドの制御ブロックのタイプがUDP CBであることを示している。
[UC (address 0x14 [17], 1 bit)]
This bit indicates that the control block type of the next CB link field is UDP CB.

[TW(アドレス0×14[16]、1ビット)]
このビットは次のCBリンクフィールドの制御ブロックのタイプがTW CBであることを示している。
[TW (address 0x14 [16], 1 bit)]
This bit indicates that the control block type of the next CB link field is TW CB.

[次のCBリンク(アドレス0×14[15:0]、16ビット)]
このフィールドは次にリンクされたCBのCBメモリアドレスを表している。このCBはこのソケットと同一のハッシュ値を有する。VSOCKサブモジュールはこれがCBを同じハッシュ値に連結するときにこのフィールドを満たす。
[Next CB link (address 0x14 [15: 0], 16 bits)]
This field represents the CB memory address of the next linked CB. This CB has the same hash value as this socket. The VSOCK submodule fills this field when it concatenates CB to the same hash value.

[RXウィンドウサイズ(アドレス0×15[31:16]、16ビット)]
このフィールドはスライディングウィンドウスケールファクタにより調節されない遠隔端部の広告されたウィンドウを表している。
[RX window size (address 0x15 [31:16], 16 bits)]
This field represents the advertised window at the remote end that is not adjusted by the sliding window scale factor.

[IP TTL(アドレス0×15[15:8]、8ビット)]
このフィールドはソケットのIPヘッダで使用されるTTLを表している。
[IP TTL (address 0x15 [15: 8], 8 bits)]
This field represents the TTL used in the socket IP header.

[IP TOS(アドレス0×15[7:0]、8ビット)]
このフィールドはソケット接続のためにIPヘッダで使用されるTOSフィールド設定を表している。これはアプリケーションにより設定されることができる随意選択的なパラメータである。TOSパラメータが特定されないならば、このフィールドは0×00にデフォルトする。
[IP TOS (address 0x15 [7: 0], 8 bits)]
This field represents the TOS field setting used in the IP header for socket connection. This is an optional parameter that can be set by the application. If no TOS parameter is specified, this field defaults to 0x00.

[RXタイムスタンプ/時間を定められたシーケンス番号(アドレス0×16、32ビット)]
一度に1つのセグメントをタイミングを定めるとき、このフィールドは時間を定められたパケットのシーケンス番号を記憶するために使用される。このシーケンス番号をカバーするACKが受信されるとき、RTTはそのパケットに対して得られることができる。このパケットが送信されたときのタイムスタンプは最後の送信フィールドのローカルタイムスタンプ中に記憶される。タイムスタンプオプションが使用可能になるとき、このフィールドはTCPパケットで受信されるタイムスタンプを記憶するために使用される。
[RX timestamp / time-determined sequence number (address 0x16, 32 bits)]
When timing one segment at a time, this field is used to store the sequence number of the timed packet. When an ACK covering this sequence number is received, the RTT can be obtained for that packet. The time stamp when this packet was transmitted is stored in the local time stamp of the last transmission field. When the timestamp option is enabled, this field is used to store the timestamp received in the TCP packet.

[平滑な平均導出(アドレス0×17、32ビット)]
このフィールドはRFC793に特定されたファンヤコブソンアルゴリズムを使用して計算されるような往復時間測定の平滑化された平均導出を表している。
[Smooth average derivation (address 0x17, 32 bits)]
This field represents the smoothed average derivation of the round trip time measurement as calculated using the Fan Jacobson algorithm specified in RFC793.

[スロースタート閾値(ssthresh)(アドレス0×18、32ビット)]
このフィールドはssthreshパラメータを追跡する。ssthreshパラメータは混雑回避アルゴリズムに対して使用され、0×0000FFFFに初期化される。
[Slow start threshold (ssthresh) (address 0 × 18, 32 bits)]
This field tracks the ssthresh parameter. The ssthresh parameter is used for the congestion avoidance algorithm and is initialized to 0x0000FFFF.

[平滑なRTT(アドレス0×19、32ビット)]
このフィールドはRFC793中で特定されたファンヤコブソンアルゴリズムを使用して計算されるような平滑化された往復時間値を表している。
[Smooth RTT (address 0x19, 32 bits)]
This field represents a smoothed round trip time value as calculated using the Fan Jacobson algorithm specified in RFC793.

[再送信タイムスタンプ(アドレス0×1B、16ビット)]
このフィールドは再送信がソケットで必要とされるときの将来の時間を表すために使用されている。
[Retransmission time stamp (address 0x1B, 16 bits)]
This field is used to represent future times when retransmissions are required on the socket.

[TX左SACK(アドレス0×1C、32ビット)]
このフィールドはシーケンス内データ後に受信されたシーケンス外データの第1のアイランドの第1のバイトのシーケンス番号(最低のシーケンス番号)を表している。
[TX left SACK (address 0x1C, 32 bits)]
This field represents the sequence number (lowest sequence number) of the first byte of the first island of the out-of-sequence data received after the in-sequence data.

[TX右SACK(アドレス0×1D、32ビット)]
このフィールドはシーケンス内データ後に受信されたシーケンス外データの第1のアイランドの最後のバイトのシーケンス番号(最高のシーケンス番号)に1を足した数を表している。
[TX right SACK (address 0x1D, 32 bits)]
This field represents the number obtained by adding 1 to the sequence number (highest sequence number) of the last byte of the first island of the out-of-sequence data received after the in-sequence data.

[RX左SACK(アドレス0×1E、32ビット)]
このフィールドは受信されたパケットのSACKオプションにより報告されたシーケンス外データの第1のアイランドの第1のバイトのシーケンス番号を表している。
[RX left SACK (address 0x1E, 32 bits)]
This field represents the sequence number of the first byte of the first island of out-of-sequence data reported by the SACK option of the received packet.

[RX右SACK(アドレス0×1F、32ビット)]
このフィールドは受信されたパケットのSACKオプションにより報告されたシーケンス外データの第1のアイランドの最後のバイトのシーケンス番号に1を足した数を表している。
[RX right SACK (address 0x1F, 32 bits)]
This field represents the number of the sequence number of the last byte of the first island of out-of-sequence data reported by the SACK option of the received packet plus one.

[設定されたソケット添付CB構造]]
以下の表は設定されたソケットのメモリの添付CB構造のすべてのフィールドをリストしている。

Figure 0004875126
[Set socket attached CB structure]
The following table lists all the fields of the attached CB structure of the configured socket memory.
Figure 0004875126

[設定されたソケット添付CBフィールド定義]
[RX左SACKメモリアドレス(アドレス0×0[23:0]、24ビット)]
このフィールドはSACKアイランドのブロックのリンクされたリストの第1のMRXメモリブロックの第1のアドレスを表している。
[Socket attached CB field definition]
[RX left SACK memory address (address 0x0 [23: 0], 24 bits)]
This field represents the first address of the first MRX memory block in the linked list of blocks in the SACK island.

[RX右SACKメモリアドレス(アドレス0×1[23:0]、24ビット)]
このフィールドはSACKアイランドのブロックのリンクされたリストの最後のMRXメモリブロックの第1のアドレスを表している。
[RX right SACK memory address (address 0 × 1 [23: 0], 24 bits)]
This field represents the first address of the last MRX memory block in the linked list of blocks in the SACK island.

[SACKブロックカウント(アドレス0×0−0×1[31:24]、16ビット)]
このフィールドはソケットにより使用されるメモリブロック数を表している。
[SACK block count (address 0x0-0x1 [31:24], 16 bits)]
This field represents the number of memory blocks used by the socket.

[書込まれたRXバイト(アドレス0×2−0×3、64ビット)]
このフィールドはソケットのMRSメモリに書込まれるバイトの総数を表している。最下位桁ワードはアドレス0×2に記憶され、最上位桁ワードはアドレス0×3に記憶される。
[RX RX written (address 0x2-0x3, 64 bits)]
This field represents the total number of bytes written to the socket's MRS memory. The least significant digit word is stored at address 0x2, and the most significant digit word is stored at address 0x3.

[送信されたTXバイト(アドレス0×4−0×5、64ビット)]
このフィールドはソケットで送信されるバイトの総数を表している。最下位桁ワードはアドレス0×4に記憶され、最上位桁ワードはアドレス0×5に記憶される。
[TX byte transmitted (address 0x4-0x5, 64 bits)]
This field represents the total number of bytes sent on the socket. The least significant digit word is stored at address 0x4 and the most significant digit word is stored at address 0x5.

[iS(アドレス0×6[31]、1ビット)]
このビットはCBがiCSIソケットとして使用されていることを示している。
[IS (address 0 × 6 [31], 1 bit)]
This bit indicates that CB is used as an iCSI socket.

[MD(アドレス0×6[30]、1ビット)]
このビットはCBが受信されたバッファリストに対するMDLを使用していることを示している。
[MD (address 0x6 [30], 1 bit)]
This bit indicates that CB is using MDL for the received buffer list.

[DS(アドレス0×6[29]、1ビット)]
このビットはソケットで重複したACKを受信したことを示している。これは重複のACKを処理する論理装置により設定される。重複のACKが受信され、このビットが既に設定されるならば、失われたセグメントは再送信されない。これは主要なオープンCB構造のワード0×0DのDAビットと共に使用される。これらの2つのビットの状態テーブルを以下に示す。

Figure 0004875126
[DS (address 0x6 [29], 1 bit)]
This bit indicates that a duplicate ACK has been received at the socket. This is set by the logic unit that handles duplicate ACKs. If a duplicate ACK is received and this bit is already set, the lost segment is not retransmitted. This is used with the DA bit of the word 0x0D in the main open CB structure. The state table for these two bits is shown below.
Figure 0004875126

[更新されないiSCSIシード(IN)(アドレス0×6[28]、1ビット)]
このビットはiSCSIメモリブロックが処理されるときにdavscanモジュールにより設定され、そのブロックのシードが保存されるときにクリアされる。ビットはハードウェアによってCRCシードのローカルコピーが更新されていないことをホストに示すように主張される。ホストがCRCシードをリセットしたいとき、このビットを最初にプローブする必要がある。ビットが主張されるならば、ソケットにSeed_Clrd_by_Hostビットを設定する必要がある。CRCシードのローカルコピーをホストにより書かれた新しい値で更新するときに、ハードウェアはこのビットをクリアする。
[Non-updated iSCSI seed (IN) (address 0x6 [28], 1 bit)]
This bit is set by the davscan module when an iSCSI memory block is processed and cleared when the seed for that block is saved. A bit is asserted to indicate to the host that the local copy of the CRC seed has not been updated by the hardware. When the host wants to reset the CRC seed, this bit needs to be probed first. If the bit is asserted, it is necessary to set the Seed_Clrd_by_Host bit on the socket. The hardware clears this bit when updating the local copy of the CRC seed with a new value written by the host.

[ホストによりクリアされた(CH)iSCSIシード(アドレス0×6[27]、1ビット)]
このビットは新しい値をCB ANDのCBのiSCSIシードに書込むときにホストにより設定され、INビットが設定される。davscanモジュールはこのビットが設定されることを観察するとき、iSCSIシードとCBのこのビットをクリアする。
[(CH) iSCSI seed cleared by host (address 0x6 [27], 1 bit)]
This bit is set by the host when writing a new value into the CB iSCSI seed of CB AND, and the IN bit is set. When the davscan module observes that this bit is set, it clears this bit in the iSCSI seed and CB.

[MDL転送長(アドレス0×6[15:0]、16ビット)]
このフィールドはMDL DMA転送がどの程度の長さであるべきかを示すために使用される。通常、RX_MDL IBを発生したRX_DAV状態メッセージで報告されたのと同じ長さである。
[MDL transfer length (address 0x6 [15: 0], 16 bits)]
This field is used to indicate how long an MDL DMA transfer should be. Usually the same length as reported in the RX_DAV status message that generated the RX_MDL IB.

[IPSECハッシュ(アドレス0×7[31:0]、31ビット)]
このフィールドはソケットの接続で使用されるすべてのSAエントリのハッシュ値を表している。
[IPSEC hash (address 0x7 [31: 0], 31 bits)]
This field represents the hash value of all SA entries used in the socket connection.

[最後の未承認シーケンス番号(アドレス0×8、32ビット)]
このフィールドはピアからの、最後の未承認されたシーケンス番号を表している。この相対は計算を記憶するためタイムスタンプで使用される。
[Last unapproved sequence number (address 0x8, 32 bits)]
This field represents the last unapproved sequence number from the peer. This relative is used in the timestamp to store the calculation.

[iSCSI FIMインターバル(アドレス0×9[31:16]、16ビット)]
このフィールドはiSCSI接続のためのFIMインターバルを表している。これはバイト数として記憶される。
[ISCSI FIM interval (address 0x9 [31:16], 16 bits)]
This field represents the FIM interval for iSCSI connection. This is stored as a number of bytes.

[iSCSI FIMオフセット(アドレス0×9[15:0]、16ビット)]
このフィールドは次のFIM挿入までのバイト数を表している。
[ISCSI FIM offset (address 0x9 [15: 0], 16 bits)]
This field represents the number of bytes until the next FIM insertion.

[iSCSI CRCシード(アドレス0×A、32ビット)]
このフィールドは受信されたiSCSIデータのCRCシードを表している。
[ISCSI CRC seed (address 0xA, 32 bits)]
This field represents the CRC seed of the received iSCSI data.

[IPSECオーバーヘッド(アドレス0×B[7:0]、8ビット)]
このフィールドはIPSECヘッダ(および過剰なIPヘッダ)が1つのパケットで占める二重ワード数(4バイト)に関するオーバーヘッドを表している。この情報はパケットに置かれることができるデータ量を決定するときに使用される。
[IPSEC overhead (address 0xB [7: 0], 8 bits)]
This field represents the overhead related to the double word count (4 bytes) occupied by one packet by the IPSEC header (and excessive IP header). This information is used when determining the amount of data that can be placed in the packet.

[iSCSI FIMエネーブル [FE](アドレス0×B[8]、1ビット)]
このビットはFIMサポートがCBで必要とされるか否かを示す(0=FMディスエーブル、1=FIMエネーブル)。
[ISCSI FIM Enable [FE] (Address 0xB [8], 1 bit)]
This bit indicates whether FIM support is required in the CB (0 = FM disabled, 1 = FIM enabled).

[MRXバッファ(アドレス0×B[31:16]、16ビット)]
このフィールドはソケットにより現在使用されているMRXバッファの数を表している。この数がMRXバッファ限度(全般的な設定)に到達するとき、これ以上データパケットはソケットで受けられない。
[MRX buffer (address 0 × B [31:16], 16 bits)]
This field represents the number of MRX buffers currently used by the socket. When this number reaches the MRX buffer limit (general setting), no more data packets are accepted on the socket.

[DAVバッファ長(アドレス0×C[15:0]、16ビット)]
このフィールドはDAV状態メッセージに対して使用されるバッファ長を示している。
[DAV buffer length (address 0xC [15: 0], 16 bits)]
This field indicates the buffer length used for DAV status messages.

[RX送信FIN状態メッセージ[SM](アドレス0×C[16]、1ビット)]
このビットはRX FIN受信状態メッセージがCBで送信されるべきであることを示している。
[RX transmission FIN status message [SM] (address 0 × C [16], 1 bit)]
This bit indicates that an RX FIN receive status message should be sent on the CB.

[RX送信DAV状態メッセージ[SV](アドレス0×C[17]、1ビット)]
このビットはRX DAV状態メッセージがCBに対して送信されるべきことを示している。
[RX transmission DAV status message [SV] (address 0 × C [17], 1 bit)]
This bit indicates that an RX DAV status message should be sent to the CB.

[RX DMA状態メッセージのペンディング[DP](アドレス0×C[18]、1ビット)]
このビットはRX DMAが行った状態メッセージがCBでペンディング中であることを示している。
[RX DMA status message pending [DP] (address 0xC [18], 1 bit)]
This bit indicates that a status message made by RX DMA is pending in CB.

[最後のDMA[LD](アドレス0×C[19]、1ビット)]
このビットはホストバッファセグメントの最後のDMAが送信されていることを示している。このDMAの完了時、RX DMA状態メッセージが発生される。
[Last DMA [LD] (Address 0xC [19], 1 bit)]
This bit indicates that the last DMA of the host buffer segment is being transmitted. Upon completion of this DMA, an RX DMA status message is generated.

[FIN状態メッセージのペンディング[FP](アドレス0×C[20]、1ビット)]
このビットはFIN状態メッセージがペンディングであることを示している。これはMRXメモリにデータが残留するが現在進行中のDMAがないときに設定される。これはDMAがスタートし、SVビットが設定するときにクリアされる。
[FIN status message pending [FP] (address 0xC [20], 1 bit)]
This bit indicates that the FIN status message is pending. This is set when data remains in the MRX memory but no DMA is currently in progress. This is cleared when the DMA starts and the SV bit is set.

[リセットペンディング[RP](アドレス0×C[21]、1ビット)]
このビットはリセット状態メッセージがペンディングであり、RX DMA状態メッセージ後に送信されるべきであることを示している。これはMRXメモリにデータが残留するが現在進行中のDMAがないときに設定される。これはDMAが開始し、SVビットが設定するときにクリアされる。
[Reset Pending [RP] (Address 0xC [21], 1 bit)]
This bit indicates that the reset status message is pending and should be sent after the RX DMA status message. This is set when data remains in the MRX memory but no DMA is currently in progress. This is cleared when the DMA starts and the SV bit is set.

[送信リセットメッセージ[RM](アドレス0×C[22]、1ビット)]
このビットはRSTパケットが受信され、tcprxstaとdavscanモジュール間でのみ使用される。
[Transmission reset message [RM] (address 0 × C [22], 1 bit)]
This bit is only used between the tcprxsta and davscan modules when an RST packet is received.

[TWへのオープン[OT](アドレス0×C[23]、1ビット)]
このビットはソケットが待機時間状態に転移され、待機時間転送プロセスへのオープンが完了されたことを示す。このビットはdavscanにより設定され、rxcbupd.vにより読取られる。
[Open to TW [OT] (Address 0xC [23], 1 bit)]
This bit indicates that the socket has transitioned to the wait time state and has opened to the wait time transfer process. This bit is set by davscan, rxcbupd. read by v.

[ゼロウィンドウタイムスタンプ(アドレス0×C[31:24]、16ビット)]
このフィールドは次のゼロウィンドウプローブを送信する将来のタイムスタンプを示している。
[Zero window time stamp (address 0xC [31:24], 16 bits)]
This field indicates a future time stamp for sending the next zero window probe.

[TXトンネルAHハンドル(アドレス0×D[15:0]、16ビット)]
このフィールドはソケットに関連するTXトンネルAH SA(セキュリティ関連)ハンドルを表している。
[TX tunnel AH handle (address 0xD [15: 0], 16 bits)]
This field represents the TX tunnel AH SA (security related) handle associated with the socket.

[TXトンネルESPハンドル(アドレス0×D[31:16]、16ビット)]
このフィールドはソケットに関連するTXトンネルAH ESP SA(セキュリティ関連)を表している。
[TX tunnel ESP handle (address 0xD [31:16], 16 bits)]
This field represents the TX tunnel AH ESP SA (security related) associated with the socket.

[TX転送AHハンドル(アドレス0×E[15:0]、16ビット)]
このフィールドはソケットに関連するTX転送AH SA(セキュリティ関連)ハンドルを表している。
[TX transfer AH handle (address 0xE [15: 0], 16 bits)]
This field represents the TX transfer AH SA (security related) handle associated with the socket.

[TX転送ESPハンドル(アドレス0×E[31:16]、16ビット)]
このフィールドはソケットに関連するTX転送ESP SA(セキュリティ関連)を表している。
[TX transfer ESP handle (address 0 × E [31:16], 16 bits)]
This field represents the TX transfer ESP SA (security related) associated with the socket.

[iSCSIバイト0−1−2(アドレス0×F[23:0]、各8ビット)]
これらのバイトはiSCSI CRC計算の非整列バイトを表している。
[ISCSI bytes 0-1-2 (address 0xF [23: 0], 8 bits each)]
These bytes represent unaligned bytes of the iSCSI CRC calculation.

[SBVal(アドレス0×F[25:24]、2ビット)]
このフィールドは有効であるiSCSIバイト[2:0]を示すために使用される。
[SBVal (address 0 × F [25:24], 2 bits)]
This field is used to indicate a valid iSCSI byte [2: 0].

[Max RXウィンドウ(アドレス0×10[15:0]、16ビット)]
このフィールドはピアにより広告された最大のウィンドウを表している。これはMTXデータパッキング限度で使用されるパラメータを決定するために使用される。
[Max RX window (address 0x10 [15: 0], 16 bits)]
This field represents the largest window advertised by the peer. This is used to determine the parameters used in the MTX data packing limit.

[ローカルMSS(アドレス0×10[31:16]、16ビット)]
このフィールドはSYNまたはSYN/ACKパケットで使用されるローカルMSS値を表している。これはウィンドウサイズの調節に使用される。
[Local MSS (Address 0x10 [31:16], 16 bits)]
This field represents the local MSS value used in the SYN or SYN / ACK packet. This is used to adjust the window size.

[最後のCWND更新(アドレス0×11[31:16]、16ビット)]
このフィールドはcwndが更新された最後のタイムスタンプを表し、この情報はそれがssthreshよりも大きいときにcwndを増加するために使用される。
[Last CWND update (address 0x11 [31:16], 16 bits)]
This field represents the last timestamp that cwnd was updated, and this information is used to increase cwnd when it is greater than ssthresh.

[DMA ID(アドレス0×12[3:0]、4ビット)]
このフィールドはCBに対するDMA IDを表している。このフィールドはTCP TX DMAがリクエストされる毎にインクリメントされる。xmtcbwrモジュールがDMA転送のパッキングを終了したとき、MDA IDがCBにあるものと一致するならば、DMA_Pendingビットは(xmtcbwrにより)クリアされる。
[DMA ID (address 0x12 [3: 0], 4 bits)]
This field represents the DMA ID for the CB. This field is incremented each time TCP TX DMA is requested. When the xmtcbwr module finishes packing the DMA transfer, the DMA_Pending bit is cleared (by xmtcbwr) if the MDA ID matches that in CB.

[DMAペンディング(アドレス0×12[4]、1ビット)]
このフィールドはTX DMAがこのソケットでペンディングであることを示している。このビットはTX DMAをリクエストするときにsockregsにより設定され、TX DMA IDが丁度、CBのTX_DMAに一致するときにxmtcbwr.vによりクリアされる。
[DMA pending (address 0x12 [4], 1 bit)]
This field indicates that TX DMA is pending on this socket. This bit is set by sockregs when requesting TX DMA, and when the TX DMA ID exactly matches CB's TX_DMA, xmtcbwr. Cleared by v.

[結合されたCB構造]
CBメモリでは、ソケットCBは1つの連続したメモリブロックとして記憶される。フォーマットを以下の表で示す。

Figure 0004875126
[Combined CB structure]
In the CB memory, the socket CB is stored as one continuous memory block. The format is shown in the following table.
Figure 0004875126

[半分開かれたソケットの主要なCB構造]
以下の表は、半分開かれたソケットのメモリの主要なCB構造を規定している。

Figure 0004875126
[Main CB structure of half-open socket]
The following table defines the main CB structure of half-open socket memory.
Figure 0004875126

[半分開かれたソケットの主要なCBフィールドの定義]
[遠隔IPアドレス(32ビット、ワード0×0[31:0])]
これは接続の遠隔端部のIPアドレスである。IPアドレスのビット[31:16]はワード0×0に記憶され、ビット[15:0]はワード0×1に記憶される。
[Definition of the main CB field of a half-open socket]
[Remote IP address (32 bits, word 0x0 [31: 0])]
This is the IP address of the remote end of the connection. Bits [31:16] of the IP address are stored in word 0x0 and bits [15: 0] are stored in word 0x1.

[遠隔ポート(16ビット、ワード0×0[47:32])]
これは接続の遠隔端部のポートアドレスである。
[Remote port (16 bits, word 0x0 [47:32])]
This is the port address at the remote end of the connection.

[ローカルポート(16ビット、ワード0×0[63:48])]
これは接続のローカル端部のポートアドレスである。
[Local port (16 bits, word 0x0 [63:48])]
This is the port address at the local end of the connection.

[ローカルIPインデックス(4ビット、ワード0×1[15:12])]
これはこの接続に使用されるローカルIPアドレスのインデックスである。この値はIPモジュールによって完全なIPアドレスおよび対応するMACアドレスへ解かれる。
[Local IP index (4 bits, word 0 × 1 [15:12])]
This is an index of the local IP address used for this connection. This value is resolved by the IP module into a complete IP address and corresponding MAC address.

[接続状態(4ビット、ワード0×1[11:8])]
これは接続の現在の状態であり、以下のように復号される。

Figure 0004875126
[Connection status (4 bits, word 0 × 1 [11: 8])]
This is the current state of the connection and is decoded as follows:
Figure 0004875126

[RxACK(1ビット、ワード0×1[7])]
このビットはRX ACK状態メッセージモードが使用可能になることを示している。このモードでは、すべての目立ったデータを承認するACKが受信されるとき、状態メッセージが発生される。
[RxACK (1 bit, word 0 × 1 [7])]
This bit indicates that RX ACK status message mode is enabled. In this mode, a status message is generated when an ACK is received that acknowledges all outstanding data.

[SACK(1ビット、ワード0×1[6])]
このビットは遠隔端部がそのSYNパケットでSACKオプションを送信したことを示している。
[SACK (1 bit, word 0 × 1 [6])]
This bit indicates that the remote end has sent a SACK option in its SYN packet.

[RxTS(1ビット、ワード0×1[5])]
このビットは遠隔端部がタイムスタンプオプションを送信し、受信されたタイムスタンプフィールドが半分開かれた添付制御ブロックで有効であることを示している。
[RxTS (1 bit, word 0 × 1 [5])]
This bit indicates that the remote end has sent a time stamp option and the received time stamp field is valid in an attachment control block that is half open.

[WinSc(1ビット、ワード0×1[4])]
このビットは遠隔端部がウィンドウスケールオプションを送信したことを示している。
[WinSc (1 bit, word 0 × 1 [4])]
This bit indicates that the remote end has sent a window scale option.

[RxMSS(1ビット、ワード0×1[3])]
このビットは遠隔端部がMSSオプションを送信し、遠隔MSSフィールドが有効であることを示している。
[RxMSS (1 bit, word 0 × 1 [3])]
This bit indicates that the remote end has sent an MSS option and the remote MSS field is valid.

[ACKRq(1ビット、ワード0×1[2])]
このビットはACKがこのソケットに対してリクエストされることを示している。これは設定制御ブロックで類似のビットが重複しているが、ここでは使用されないことを意味している。
[ACKRq (1 bit, word 0 × 1 [2])]
This bit indicates that an ACK is requested for this socket. This means that similar bits are duplicated in the configuration control block but are not used here.

[CBinFF(1ビット、ワード0×1[1])]
このビットはこのCBがRxからTXへのFF待ち行列にあるが故に、まだ消滅されることができないことを示している。
[CBinFF (1 bit, word 0 × 1 [1])]
This bit indicates that this CB cannot be cleared yet because it is in the Rx to TX FF queue.

[CBVal(1ビット、ワード0×1[0])]
このビットは半分開かれたCBが有効であることを示している。
[CBVal (1 bit, word 0 × 1 [0])]
This bit indicates that a half-open CB is valid.

[CBバージョン(4ビット、ワード0×1[31:28])]
これらのビットはCBのバージョンを示している。このフィールドは現在0×1に規定されている。
[CB version (4 bits, word 0x1 [31:28])]
These bits indicate the CB version. This field is currently defined as 0x1.

[TXインターフェース(4ビット、ワード0×1[27:24])]
これらのビットは発信するSYNが来るインターフェースを示している。
[TX interface (4 bits, word 0x1 [27:24])]
These bits indicate the interface from which the outgoing SYN is coming.

[IPSEC(1ビット、ワード0×1[23])]
このビットはHO CBがIPSEC保護されたパケットで使用されていることを示している。この場合、このHO CBに一致しない受信されたSYNが破棄される。
[IPSEC (1 bit, word 0 × 1 [23])]
This bit indicates that HO CB is used in an IPSEC protected packet. In this case, the received SYN that does not match this HO CB is discarded.

[MSSサイズ(2ビット、ワード0×1[22:21])]
これらのビットはSYN/ACKパケットで使用されるMSSサイズを特定するために使用される。有効な設定を以下示す。

Figure 0004875126
[MSS size (2 bits, word 0 × 1 [22:21])]
These bits are used to specify the MSS size used in the SYN / ACK packet. The valid settings are shown below.
Figure 0004875126

[KA(1ビット、ワード0×1[20])]
このビットはキープアライブタイマがこのソケットで使用されるべきであることを示している。
[KA (1 bit, word 0 × 1 [20])]
This bit indicates that the keepalive timer should be used on this socket.

[DF(1ビット、ワード0×1[19])]
このビットはIPヘッダの断片化されてはならないビットを特定するために使用される。
[DF (1 bit, word 0 × 1 [19])]
This bit is used to identify bits that should not be fragmented in the IP header.

[VLANV(1ビット、ワード0×1[18])]
このビットはVLANフィールドが有効であることを示している。
[VLANV (1 bit, word 0 × 1 [18])]
This bit indicates that the VLAN field is valid.

[再送信(1ビット、ワード0×1[17])]
このビットは再送信がこのソケットで必要とされていることを示している。
[Retransmission (1 bit, word 0x1 [17])]
This bit indicates that a retransmission is required on this socket.

[RxURG(1ビット、ワード0×1[16])]
このビットはURGビットが受信されたパケットで設定されたことを示している。
[RxURG (1 bit, word 0 × 1 [16])]
This bit indicates that the URG bit is set in the received packet.

[ACK(32ビット、ワード0×1[63:32])]
これは送信されたパケットで使用されるACK数である。
[ACK (32 bits, word 0 × 1 [63:32])]
This is the number of ACKs used in the transmitted packet.

[SEQ(32ビット、ワード0×2[31:0])]
これは送信されたパケットで使用される動作シーケンス番号である。
[SEQ (32 bits, word 0 × 2 [31: 0])]
This is the operation sequence number used in the transmitted packet.

[SAオーバーヘッド(8ビット、ワード0×2[47:40])]
このフィールドは(二重ワード数で)CBのIPSECオーバーヘッドを記憶するために使用される。
[SA overhead (8 bits, word 0x2 [47:40])]
This field is used to store the IPSEC overhead of the CB (in double word number).

[ローカルWinScale(4ビット、ワード0×2[39:36])]
このフィールドは接続に使用されるローカルスライディングウィンドウスケールファクタを表している。有効な値は0×00から0×0Eである。
[Local WinScale (4 bits, word 0 × 2 [39:36])]
This field represents the local sliding window scale factor used for the connection. Valid values are 0x00 to 0x0E.

[遠隔WinScale(4ビット、ワード0×2[35:32])]
このフィールドはTCP SYNパケットの遠隔端部によりリクエストされるようなスライディングウィンドウスケールファクタを表している。有効な値は0×00から0×0Eである。
[Remote WinScale (4 bits, word 0x2 [35:32])]
This field represents the sliding window scale factor as requested by the remote end of the TCP SYN packet. Valid values are 0x00 to 0x0E.

[遠隔MSS(16ビット、ワード0×2[63:48])]
このフィールドはTCP接続に対するSYNパケットで受信されるMSSを表している。これは遠隔端部が受けることのできる最大のパケットサイズを示している。MSSオプションが受信されないならば、このフィールドは536(0×0218)にデフォルトされる。このフィールドはUDP接続に使用されない。
[Remote MSS (16 bits, word 0x2 [63:48])]
This field represents the MSS received in the SYN packet for the TCP connection. This indicates the maximum packet size that the remote end can accept. If no MSS option is received, this field defaults to 536 (0x0218). This field is not used for UDP connections.

[VLAN優先順位(3ビット、ワード0×3[14:12])]
このフィールドはVLANタグに使用されるユーザ優先順位レベルを表している。それはまた送信スケジュール中のソケットに対するサービスレベルも表す。数が高いほど、優先順位は高い(7が最大であり0が最低である)。このフィールドに対するデフォルト値は0×0であり、ソフトウェアにより設定されることができる。
[VLAN priority (3 bits, word 0 × 3 [14:12])]
This field represents the user priority level used for the VLAN tag. It also represents the service level for the socket in the transmission schedule. The higher the number, the higher the priority (7 is the highest and 0 is the lowest). The default value for this field is 0x0 and can be set by software.

[VLAN VID(12ビット、ワード0×3[11:0])]
このフィールドはVLANタグフレームで使用されるVLAN識別を表している。このフィールドのデフォルト値は0×000であり、ソフトウェアにより設定可能である。ピアから開始される接続では、このフィールドはオープニングSYNパケットで受信されるVIDにより設定される。
[VLAN VID (12 bits, word 0x3 [11: 0])]
This field represents the VLAN identification used in the VLAN tag frame. The default value of this field is 0x000 and can be set by software. For connections initiated from the peer, this field is set by the VID received in the opening SYN packet.

[遠隔MACアドレス(48ビット、ワード0×3[63:16])]
これらのフィールドはこのソケットで送信されているパケットに対する目的地MACアドレスを表している。ソケットが最初に設定されるとき、ARPキャッシュはこのアドレスに対して問合せられる。解決された後、アドレスはここに記憶され、それによりこれ以上のARPキャッシュ問合せを防止する。CBがサーバソケットとして生成されるならば、このアドレスはSYNパケットに含まれる目的MACアドレスから取られる。
[Remote MAC address (48 bits, word 0x3 [63:16])]
These fields represent the destination MAC address for the packet being sent on this socket. When the socket is first set up, the ARP cache is queried for this address. After being resolved, the address is stored here, thereby preventing further ARP cache queries. If the CB is generated as a server socket, this address is taken from the destination MAC address contained in the SYN packet.

[受信されたタイムスタンプ(32ビット、ワード0×4[31:0])]
これは受信されたパケットに含まれるタイムスタンプである。
[Received timestamp (32 bits, word 0x4 [31: 0])]
This is a time stamp included in the received packet.

[ローカルタイムスタンプ(32ビット、ワード0×4[63:32])]
これはこのソケットに対して送信された最後のパケットのタイムスタンプである。
[Local time stamp (32 bits, word 0x4 [63:32])]
This is the timestamp of the last packet sent for this socket.

[TTL(8ビット、ワード0×5[15:8])]
これは接続に使用されるTTLである。SYN/ACKが発生されるとき、このパラメータはIPルータにより与えられ、この位置に記憶される。ソケットが設定された状態に転移するとき、この情報はオープン制御ブロックに通過される。
[TTL (8 bits, word 0 × 5 [15: 8])]
This is the TTL used for the connection. When SYN / ACK is generated, this parameter is provided by the IP router and stored in this location. When the socket transitions to the configured state, this information is passed to the open control block.

[TOS(8ビット、ワード0×5[7:0])]
これは接続に使用されるTTLである。SYN/ACKが発生されているとき、このパラメータはIPルータにより与えられ、この位置に記憶される。ソケットが設定された状態に転移するとき、この情報はオープン制御ブロックに通過される。
[TOS (8 bits, word 0 × 5 [7: 0])]
This is the TTL used for the connection. When SYN / ACK is being generated, this parameter is provided by the IP router and stored at this location. When the socket transitions to the configured state, this information is passed to the open control block.

[SYN/ACK再試行数(4ビット、ワード0×5[19:16])]
このフィールドは特定のソケットに対して送信されるSYN/ACK再試行数を追跡する。再試行数がプログラムされた最大値に到達するならば、ソケットはデプリケートされる。
[SYN / ACK retry count (4 bits, word 0 × 5 [19:16])]
This field tracks the number of SYN / ACK retries sent for a particular socket. If the number of retries reaches the programmed maximum value, the socket is replicated.

[IPSECモード(4ビット、ワード0×5[31:28])]
このフィールドはソケットに対してアクチブなIPSECモードを示すために使用される。このフィールドの復号を以下示す。

Figure 0004875126
[IPSEC mode (4 bits, word 0x5 [31:28])]
This field is used to indicate an active IPSEC mode for the socket. Decoding of this field is shown below.
Figure 0004875126

[ローカルIPアドレス(32ビット、ワード0×5[63:32])]
このフィールドはSYNパケットで受信された目的地IPアドレスを記憶するために使用される。これはソケット接続のためのローカルIPアドレスを表している。
[Local IP address (32 bits, word 0x5 [63:32])]
This field is used to store the destination IP address received in the SYN packet. This represents the local IP address for socket connection.

[TXトンネルAH SAハンドル(16ビット、ワード0×6[15:0])]
このフィールドはCBに対して(適用可能であるならば)TXトンネルAH SAハンドルを記憶するために使用される。
[TX tunnel AH SA handle (16 bits, word 0x6 [15: 0])]
This field is used to store the TX tunnel AH SA handle (if applicable) for the CB.

[TXトンネルESP SAハンドル(16ビット、ワード0×6[31:16])]
このフィールドはCBに対して(適用可能であるならば)TXトンネルESP SAハンドルを記憶するために使用される。
[TX tunnel ESP SA handle (16 bits, word 0x6 [31:16])]
This field is used to store the TX tunnel ESP SA handle for the CB (if applicable).

[SAハッシュ(31ビット、ワード0×6[63:32])]
このフィールドはCBに対するSAハッシュを記憶するために使用される。
[SA hash (31 bits, word 0 × 6 [63:32])]
This field is used to store the SA hash for the CB.

[TX転送AH SAハンドル(16ビット、ワード0×7[15:0])]
このフィールドはCBに対して(適用可能であるならば)TX転送AH SAハンドルを記憶するために使用される。
[TX transfer AH SA handle (16 bits, word 0x7 [15: 0])]
This field is used to store the TX forwarding AH SA handle (if applicable) for the CB.

[TX転送ESP SAハンドル(16ビット、ワード0×7[31:16])]
このフィールドはCBに対して(適用可能であるならば)TX転送ESP SAハンドルを記憶するために使用される。
[TX transfer ESP SA handle (16 bits, word 0x7 [31:16])]
This field is used to store the TX transfer ESP SA handle for the CB (if applicable).

[ローカルMSS(16ビット、ワード0×7[47:32])]
このフィールドは接続で使用されるローカルMSS値を記憶するために使用される。これはシリ−ウィンドウシンドロームを避けるためにウィンドウサイズを調節するのに必要とされる。
[Local MSS (16 bits, word 0x7 [47:32])]
This field is used to store the local MSS value used in the connection. This is required to adjust the window size to avoid the serial window syndrome.

[待機時間CB構造]
以下の表はTime_Wait状態のソケットのメモリのCB構造を規定している。

Figure 0004875126
[Standby time CB structure]
The following table defines the CB structure of the memory of the socket in the Time_Wait state.
Figure 0004875126

[待機時間CBフィールド定義]
[遠隔IPアドレス(アドレス0×00、32ビット)]
この32ビットフィールドは接続のための遠隔IPアドレスを表している。クライアントソケットでは、このフィールドはアプリケーションにより設定される。サーバソケットでは、このフィールドはSYNパケットで受信されたIPアドレスまたは受信されたUDPパケットのIPアドレスにより満たされる。
[Standby time CB field definition]
[Remote IP address (address 0x00, 32 bits)]
This 32-bit field represents the remote IP address for connection. For client sockets, this field is set by the application. For server sockets, this field is filled with the IP address received in the SYN packet or the IP address of the received UDP packet.

[遠隔ポート(アドレス0×01[31:16]、16ビット)]
このフィールドは接続のための遠隔ポート番号を表している。クライアントソケットではこのフィールドは常にアプリケーションにより特定される。サーバソケットでは、このフィールドはSYNまたはUDPパケットで受信されたポート番号で満たされる。
[Remote port (address 0x01 [31:16], 16 bits)]
This field represents the remote port number for the connection. For client sockets, this field is always specified by the application. For server sockets, this field is filled with the port number received in the SYN or UDP packet.

[ローカルポート(アドレス0×01[15:0]、16ビット)]
このフィールドは接続のためのローカルポート番号を表している。クライアントソケットでは、このフィールドはアプリケーションにより特定されるか、ネットワークスタックにより自動的に生成される。サーバソケットでは、このフィールドは常にアプリケーションにより特定される。
[Local port (address 0x01 [15: 0], 16 bits)]
This field represents the local port number for connection. For client sockets, this field is specified by the application or automatically generated by the network stack. For server sockets, this field is always specified by the application.

[IPインデックス(アドレス0×02[31:28]、4ビット)]
このフィールドはソケットのホストインターフェースにおけるIPアドレスのネットワークスタックIPアドレステーブルのインデックスを表しており、ネットワークスタックハードウェアにより満たされる。
[IP index (address 0x02 [31:28], 4 bits)]
This field represents the network stack IP address table index of the IP address at the socket host interface and is filled by the network stack hardware.

[ConnState(アドレス0×02[27:24]、4ビット)]
このフィールドは現在の接続状態を示しており、以下のように復号する。

Figure 0004875126
[ConnState (address 0x02 [27:24], 4 bits)]
This field indicates the current connection state and is decoded as follows.
Figure 0004875126

[RX(アドレス0×02[23]、1ビット)]
このビットはRX ACK状態メッセージモードが使用可能になることを示している。このモードはTW CBに対しては意味がない。
[RX (address 0x02 [23], 1 bit)]
This bit indicates that RX ACK status message mode is enabled. This mode has no meaning for TW CB.

[SA(アドレス0×02[22]、1ビット)]
このビットは選択的なACKオプション(SACK)がこのソケットで使用されるべきであることを示している(0=SACKを使用してはならない、1=SACKを使用する)。
[SA (address 0x02 [22], 1 bit)]
This bit indicates that a selective ACK option (SACK) should be used on this socket (0 = do not use SACK, 1 = use SACK).

[TS(アドレス0×02[21]、1ビット)]
このビットはタイムスタンプオプションがこのソケットで使用されるべきであることを示している(0=タイムスタンプオプションを使用してはならない、1=タイムスタンプオプションを使用する)。
[TS (address 0x02 [21], 1 bit)]
This bit indicates that a timestamp option should be used on this socket (0 = do not use timestamp option, 1 = use timestamp option).

[WS(アドレス0×02[20]、1ビット)]
このフラグはスライディングウィンドウオプションがTCPソケットに対して適切に交渉していることを示している(0=WSオプションを使用してはならない、1=WSオプションが使用可能になる)。このビットはUDPソケットで使用されない。
[WS (address 0x02 [20], 1 bit)]
This flag indicates that the sliding window option is negotiating properly for the TCP socket (0 = do not use WS option, 1 = enable WS option). This bit is not used for UDP sockets.

[MS(アドレス0×02[19]、1ビット)]
このビットはCBの遠隔MSSフィールドが有効であることを示している。MSSはワード5[15:0]に位置されている。
[MS (address 0x02 [19], 1 bit)]
This bit indicates that the CB's remote MSS field is valid. The MSS is located in word 5 [15: 0].

[AR(アドレス0×02[18]、1ビット)]
このビットはACKパケットが特定のソケットで送信されるときを設定される。これはACKパケットが送信されているときクリアされる。
[AR (address 0x02 [18], 1 bit)]
This bit is set when an ACK packet is sent on a particular socket. This is cleared when an ACK packet is being sent.

[CF(アドレス0×02[17]、1ビット)]
このビットはまだデプリケートされることができないように、現在のCBが受信・送信FIFOバッファ待ち行列にあることを示している。一度、ソケットのACKが送信されると、TCP送信ブロックはオープンCBからTime_Wait CBへ移動する。
[CF (address 0x02 [17], 1 bit)]
This bit indicates that the current CB is in the receive and transmit FIFO buffer queue so that it cannot be yet replicated. Once the socket ACK is sent, the TCP send block moves from the open CB to the Time_Wait CB.

[CVI(アドレス0×02[16]、1ビット)]
このビットはCBが有効な情報を含んでいることを示している。任意のCBをデプリケートする前に、このビットは常にクリアされる。
[CVI (address 0x02 [16], 1 bit)]
This bit indicates that the CB contains valid information. This bit is always cleared before any CB is replicated.

[CBVer(アドレス0×02[15:12]、4ビット)]
これらのビットはCBのバージョンを示しており、ハードウェアの将来のバージョンのCBを弁別するためにオンチッププロセッサにより使用される。このフィールドは現在0×1として規定される。
[CBVer (address 0x02 [15:12], 4 bits)]
These bits indicate the CB version and are used by the on-chip processor to discriminate future versions of the CB in hardware. This field is currently defined as 0x1.

[CBインターフェース(アドレス0×02[11:8]、4ビット)]
このビットはソケットに対する特定の物理的なインターフェースを特定するために使用され、マルチポートアーキテクチャで使用される。単一ポートアーキテクチャでは、このフィーは0×0で残されるべきである。
[CB interface (address 0x02 [11: 8], 4 bits)]
This bit is used to identify a specific physical interface to the socket and is used in a multiport architecture. In a single port architecture, this fee should be left at 0x0.

[KA(アドレス0×02[4]、1ビット)]
このビットはキープアライブタイマがこのソケットと共に使用されるべきであることを示している(0=キープアライブタイマを使用してはならない、1=キープアライブタイマを使用する)。
[KA (address 0x02 [4], 1 bit)]
This bit indicates that a keep-alive timer should be used with this socket (0 = do not use keep-alive timer, 1 = use keep-alive timer).

[DF(アドレス0×02[3]、1ビット)]
このビットはソケットに対するIPヘッダのDFビットの状態を表している。設定されるとき、パケットは任意のホップにより断片化されない。このビットはパスMTU発見に使用される。
[DF (address 0x02 [3], 1 bit)]
This bit represents the state of the DF bit of the IP header for the socket. When set, the packet is not fragmented by any hops. This bit is used for path MTU discovery.

[VL(アドレス0×02[2]、1ビット)]
このビットはVLANタグが出力するイーサネット(登録商標)フレームに含まれるか否かを示している。それが主張されるならば、cb_tx_vlan_priorityおよびcb_tx_vidにより作られるVLANタグ情報の4バイトとVLANタグ識別(固定した値)が含まれ、それにイーサネット(登録商標)アドレスフィールドが後続する。
[VL (address 0x02 [2], 1 bit)]
This bit indicates whether it is included in the Ethernet (registered trademark) frame output by the VLAN tag. If it is claimed, 4 bytes of VLAN tag information created by cb_tx_vlan_priority and cb_tx_vid and the VLAN tag identification (fixed value) are included, followed by the Ethernet address field.

[RE(アドレス0×02[1]、1ビット)]
このフラグはタイムアウト状態および再送信が必要であることを示すために使用される。それはデータが再送信されるときにクリアされる。
[RE (address 0x02 [1], 1 bit)]
This flag is used to indicate a timeout condition and that a retransmission is required. It is cleared when data is retransmitted.

[UR(アドレス0×02[0]、1ビット)]
このビットは緊急のデータが受信されたことを示している。これはアプリケーションがこの受信された緊急データポインタを読取るまで(または読取ったことを示すまで)主張される。
[UR (address 0x02 [0], 1 bit)]
This bit indicates that urgent data has been received. This is claimed until the application reads (or indicates that it has read) this received emergency data pointer.

[ACK番号(アドレス0×03、32ビット)]
これはTCP接続のための動作ACK番号である。これは受信されたTCP PSHパケットの予測されたSEQ数を表している。TCPデータパケットが受信されるとき、SYN数はこの数に対してチェックされる。これが一致するか、受信されたSEQ数+パケット長がこの数をカバーするならば、データは受取られる。この数はネットワークスタックにより自動的に更新され、UDP接続には使用されない。
[ACK number (address 0x03, 32 bits)]
This is an operation ACK number for TCP connection. This represents the predicted number of SEQs in the received TCP PSH packet. When a TCP data packet is received, the SYN number is checked against this number. If this matches, or if the received SEQ number + packet length covers this number, the data is received. This number is automatically updated by the network stack and is not used for UDP connections.

[SEQ数(アドレス0×4,32ビット)]
これはTCP接続のための動作SEQ数である。これはTCPパケットで使用されるSEQ数を表しており、ネットワークスタックにより自動的に更新される。このフィールドはUDPソケットには使用されない。
[Number of SEQ (address 0x4, 32 bits)]
This is the number of operation SEQ for TCP connection. This represents the number of SEQ used in the TCP packet and is automatically updated by the network stack. This field is not used for UDP sockets.

[IPSECモード(アドレス0×5[30:27]、4ビット)]
このフィールドはソケットでアクチブなIPSECモードを示すために使用される。このフィールドの復号について以下示す。

Figure 0004875126
[IPSEC mode (address 0x5 [30:27], 4 bits)]
This field is used to indicate the IPSEC mode active on the socket. Decoding of this field is shown below.
Figure 0004875126

[ソケットタイプ(アドレス0×05[26:24]、3ビット)]
このフィールドは以下の表にしたがって制御ブロックにより表されるソケットのタイプを示している。

Figure 0004875126
[Socket type (address 0x05 [26:24], 3 bits)]
This field indicates the type of socket represented by the control block according to the following table.
Figure 0004875126

[LWinScale(アドレス0×05[23:20]、4ビット)]
このフィールドは接続に使用されるローカルスライディングウィンドウスケールファクタを表している。
[LWinScale (address 0x05 [23:20], 4 bits)]
This field represents the local sliding window scale factor used for the connection.

[RWinScale(アドレス0×05[19:16]、4ビット)]
このフィールドはTCP SYNパケットの遠隔端部によりリクエストされるときのスライディングウィンドウスケールファクタを表している。
[RWinScale (address 0x05 [19:16], 4 bits)]
This field represents the sliding window scale factor as requested by the remote end of the TCP SYN packet.

[ローカルウィンドウ(アドレス0×05[15:0]、16ビット)]
このフィールドはTCPローカルスライディングウィンドウフィールドで広告されたウィンドウの16ビットを表している。
[Local window (address 0x05 [15: 0], 16 bits)]
This field represents 16 bits of the window advertised in the TCP local sliding window field.

[優先順位(アドレス0×06[30:28]、3ビット)]
このフィールドはVLANタグに対して使用されるユーザ優先順位レベルを表している。また送信スケジュール化中のソケットに対するサービスレベルを表している。数が高い程、優先順位は高くなる(7が最高であり、0が最低である)。このフィールドのデフォルト値は0×0であり、ソフトウェアにより設定されることができる。
[Priority (address 0x06 [30:28], 3 bits)]
This field represents the user priority level used for the VLAN tag. It also represents the service level for a socket that is being scheduled for transmission. The higher the number, the higher the priority (7 is the highest and 0 is the lowest). The default value for this field is 0x0 and can be set by software.

[VID(アドレス0×06[27:16]、12ビット)]
このフィールドはVLANタグフレームで使用されるVLAN識別を表している。このフィールドのデフォルト値は0×000であり、ソフトウェアにより設定可能である。ピアから開始される接続では、このフィールドはオープニングSYNパケットで受信されるVLAN識別により設定される。
[VID (address 0x06 [27:16], 12 bits)]
This field represents the VLAN identification used in the VLAN tag frame. The default value of this field is 0x000 and can be set by software. For connections initiated from the peer, this field is set by the VLAN identification received in the opening SYN packet.

[遠隔MACアドレス(アドレス0×06[15:0]−0×07、全部で48ビット)]
このフィールドはこのソケットで送信されているパケットの目的地MACアドレスを表している。ソケットが最初に設定されるとき、ARPキャッシュはこのアドレスを問合せられる。解決後、さらにARPキャッシュの問合せを避けるようにアドレスはここに記憶される。CBがサーバソケットとして生成されるならば、このアドレスはSYNパケットに含まれる目的地MACアドレスから取られる。アドレスのビット[47:32]はCBアドレス0×6に記憶される。
[Remote MAC address (Address 0x06 [15: 0] -0x07, 48 bits in total)]
This field represents the destination MAC address of the packet being transmitted on this socket. When the socket is first set up, the ARP cache is queried for this address. After resolution, the address is stored here to avoid further ARP cache queries. If the CB is generated as a server socket, this address is taken from the destination MAC address contained in the SYN packet. Address bits [47:32] are stored in CB address 0 × 6.

[ローカルIPアドレス(アドレス0×8、32ビット)]
このフィールドはソケット接続のローカルIPアドレスを表している。
[Local IP address (address 0x8, 32 bits)]
This field represents the local IP address of the socket connection.

[遠隔タイムスタンプ(アドレス0×09、32ビット)]
これは受信されたパケットに含まれるタイムスタンプである。
[Remote time stamp (address 0x09, 32 bits)]
This is a time stamp included in the received packet.

[TW生成タイムスタンプ(アドレス0×A、32ビット)]
これはCBが時間待機状態を入ったときのタイムスタンプである。
[TW generation time stamp (address 0xA, 32 bits)]
This is a time stamp when the CB enters the time waiting state.

[トンネルAHハンドル(アドレス0×B[31:24]、アドレス0×C[31:24]、16ビット)]
これはCBに対するトンネルAH SAハンドルである。これはCBのトンネルAH(TA)ビットが設定されるときにも有効である。
[Tunnel AH handle (address 0xB [31:24], address 0xC [31:24], 16 bits)]
This is the tunnel AH SA handle for CB. This is also effective when the CB tunnel AH (TA) bit is set.

[順方向リンク(アドレス0×B[23:0]、24ビット)]
検索チェーンの次のCBのリンクである。
[Forward link (address 0xB [23: 0], 24 bits)]
This is the link of the next CB in the search chain.

[トンネルESPハンドル(アドレス0×D[31:24]、アドレス0×E[31:24]、16ビット)]
これはCBに対するトンネルESP SAハンドルである。これはCBのトンネルESP(TE)ビットが設定されるときにも有効である。
[Tunnel ESP handle (address 0xD [31:24], address 0xE [31:24], 16 bits)]
This is the tunnel ESP SA handle for CB. This is also valid when the CB tunnel ESP (TE) bit is set.

[順方向エージリンク(アドレス0×D[23:0]、24ビット)]
検索チェーンのエージによる次のCBに対するリンクである。
[Forward age link (address 0xD [23: 0], 24 bits)]
A link to the next CB by the age of the search chain.

[逆方向エージリンク(アドレス0×E[23:0]、24ビット)]
検索チェーンのエージによる先のCBに対するリンクである。
[Reverse age link (address 0xE [23: 0], 24 bits)]
A link to the previous CB by the age of the search chain.

[転送AHハンドル(アドレス0×F[15:0]、16ビット)]
これはCBに対する転送AH SAハンドルである。これはCBの転送AH(NA)ビットが設定されるときにも有効である。
[Transfer AH handle (address 0xF [15: 0], 16 bits)]
This is the forwarding AH SA handle for CB. This is also effective when the CB transfer AH (NA) bit is set.

[転送ESPハンドル(アドレス0×F[31:16]、16ビット)]
これはCBに対する転送ESP SAハンドルである。これはCBの転送ESP(NE)ビットが設定されるときにも有効である。
[Transfer ESP handle (address 0xF [31:16], 16 bits)]
This is the forwarding ESP SA handle for CB. This is also effective when the CB transfer ESP (NE) bit is set.

[TCP混雑制御サポート]
[概要]
IT 10Gはスロースタート、混雑防止、高速再送信、高速度回復アルゴリズム、ウィンドウスケーリング、ハードウェアの順序が乱れているパケットの再順序付けを実行する。さらにIT 10Gは1よりも多数のセグメントが一度に時間を定められることを可能にするラウンドトリップ時間TCPオプションをサポートする。これらの特徴は高速度ネットワークで必要とされる。
[TCP congestion control support]
[Overview]
IT 10G performs slow start, congestion prevention, fast retransmission, fast recovery algorithm, window scaling, and reordering of packets whose hardware is out of order. In addition, IT 10G supports a round trip time TCP option that allows more than one segment to be timed at a time. These features are required in high speed networks.

[ラウンドトリップ時間の測定]
IT 10Gは2つの方法でラウンドトリップ時間(RTT)を測定することができる。伝統的な方法では、時間測定はTCP PSHパケットからパケットのACKが受信されるときまで行われる。時間を定められたパケットのシーケンス番号はCB中の時間を定められたパケットフィールドのシーケンス番号に記憶され、パケットのタイムスタンプはCBの最後の送信フィールドのタイムスタンプ中に記憶される。時間を定められたパケットのACKが受信されるとき、現在のタイムスタンプと記憶されたタイムスタンプとの間のデルタは往復時間RTTである。ACKが受信されるとき、ソケットCB中のRTO [1]ビットは次のパケットが時間を定められることを示すためにクリアされる。
[Measurement of round trip time]
IT 10G can measure round trip time (RTT) in two ways. In traditional methods, time measurements are taken from the TCP PSH packet until the packet ACK is received. The sequence number of the timed packet is stored in the sequence number of the timed packet field in the CB, and the time stamp of the packet is stored in the time stamp of the last transmission field of the CB. When an ACK for a timed packet is received, the delta between the current timestamp and the stored timestamp is the round trip time RTT. When an ACK is received, the RTO [1] bit in socket CB is cleared to indicate that the next packet is timed.

RTオプションがオープニングTCPハンドシェ−クで交渉されるとき、RT測定は受信された各ACKから取られることができる。   When the RT option is negotiated in the opening TCP handshake, RT measurements can be taken from each received ACK.

ラウンドトリップ時間測定を行うために使用される方法にかかわりなく。その値をとり再送信タイムアウト(RTO)値を決定する論理フローは同じである。この論理は図29に示されている。   Regardless of the method used to make the round trip time measurement. The logic flow that takes that value and determines the retransmission timeout (RTO) value is the same. This logic is shown in FIG.

スケールされ平滑されたRTT、平均偏差、RTOはすべてソケットCB中に記憶される。   The scaled and smoothed RTT, mean deviation, RTO are all stored in the socket CB.

[スロースタートアルゴリズム]
スロースタートはRFC1122に最初に記載されたTCP混雑制御機構であり、さらにRFC2001のhttp;//www.rfc-editor.org/rfc/rfc1122.txtと、http;//www.rfc-editor.org/rfc/rfc2001.txtに記載されている。
[Slow start algorithm]
Slow start is a TCP congestion control mechanism first described in RFC 1122, and also http://www.rfc-editor.org/rfc/rfc1122.txt and http; // www.rfc-editor.org of RFC2001. It is described in /rfc/rfc2001.txt.

スロースタートは送信中の多数のデータセグメントを一度にゆっくりと上昇させる。最初にスロースタートは肯定応答(ACK)を予測する前に(最大のセグメントサイズの2倍または2*MSSの現在のウィンドウcwndに対応する)2つのデータセグメントのみを送信させなければならない。それぞれの成功ACKを受信したとき、送信機はcwndが受信機の広告ウィンドウに等しくなるまで1MSSだけcwndを増加できる(したがって1よりも多数のセグメントの送信を可能にする)。   Slow start slowly raises multiple data segments being transmitted at once. Initially the slow start must have only two data segments transmitted (corresponding to the current segment cwnd of twice the maximum segment size or 2 * MSS) before predicting an acknowledgment (ACK). Upon receiving each successful ACK, the transmitter can increase cwnd by 1 MSS until cwnd equals the receiver's advertising window (thus allowing transmission of more than 1 segment).

スロースタートは新しいデータ接続で常に開始され、時には、データトラフィックの渋滞が生じたときに接続の途中で起動される。スロースタートは事を再度行わせるために使用される。   Slow start always starts with a new data connection, and is sometimes triggered in the middle of the connection when data traffic jams occur. Slow start is used to get things done again.

ネットワークスタックはTCP接続毎にスロースタートアルゴリズムをサポートする。このアルゴリズムは混雑ウィンドウパラメータ(cwnd)を使用し、それはソケットが最初に設定されるとき1MSSに初期化される。   The network stack supports a slow start algorithm for each TCP connection. This algorithm uses a congestion window parameter (cwnd), which is initialized to 1 MSS when the socket is first set up.

スロースタートアルゴリズムはソケットが最初に設定されるときを示し、1つのパケットだけが送出されることができ、パケットのACKが受信されるまでさらにデータが送信されることができないことを示す。ACKが受信されるとき、cwndは1MSSだけ増加され、これは2つまでのパケットが送信されることを可能にする。ACKが受信される毎に、cwndは1MSSだけ増加される。   The slow start algorithm indicates when the socket is first set up, indicating that only one packet can be sent and no more data can be sent until an ACK for the packet is received. When an ACK is received, cwnd is incremented by 1 MSS, which allows up to 2 packets to be transmitted. Each time an ACK is received, cwnd is incremented by 1 MSS.

これはcwndがピアからの広告されたウィンドウサイズを超えるまで継続する。ネットワークスタックは常に最小のcwndと広告されたウィンドウを送信する。   This continues until cwnd exceeds the advertised window size from the peer. The network stack always sends the advertised window with the minimum cwnd.

ネットワークスタックがICMPソース消滅メッセージを受信するならば、cwndを1MSSへリセットする。しかしながら、スロースタート閾値変数(ssthresh)はどの同一値に維持される。   If the network stack receives an ICMP source extinction message, it resets cwnd to 1MSS. However, the same slow start threshold variable (ssthresh) is maintained.

[混雑防止アルゴリズム]
ネットワークスタックはピアからの最小のcwndと広告されたウィンドウの送出を維持する。混雑防止アルゴリズムはまたスロースタート閾値変数(ssthresh)を使用し、これは0×FFFFに初期化される。
[Congestion prevention algorithm]
The network stack keeps sending the minimum advertised advertised window from the peer. The congestion prevention algorithm also uses a slow start threshold variable (ssthresh), which is initialized to 0xFFFF.

混雑がタイムアウトにより検出されたとき、ssthreshは現在の送信ウィンドウ(最小のcwndとピアの広告ウィンドウ)の半分に設定される。この値がMSSの2倍よりも小さいならば、この値が代わりに使用される。またcwndは1MSSに設定される。   When congestion is detected due to timeout, ssthresh is set to half of the current transmission window (minimum cwnd and peer advertising window). If this value is less than twice the MSS, this value is used instead. Cwnd is set to 1 MSS.

新しいデータが肯定応答されるとき、cwndはそれがssthresh(それ故の名称)よりも大きくなるまで1MSSだけ増加される。その後、cwndは1/cwndだけ増加される。これは混雑防止フェーズである。   When new data is acknowledged, cwnd is incremented by 1 MSS until it is greater than ssthresh (hence the name). Thereafter, cwnd is increased by 1 / cwnd. This is the congestion prevention phase.

[高速再送信および高速度回復アルゴリズム]
高速再送信は最初に実験プロトコルとしてRFC112に記載され、RFC2001で形式化され、http;//www.rfc-editor.org/rfc/rfc1122.txtと、http;//www.rfc-editor.org/rfc/rfc2001.txtを参照することができる。
[High-speed retransmission and high-speed recovery algorithm]
Fast retransmission is first described in RFC 112 as an experimental protocol, formalized in RFC 2001, http; // www.rfc-editor.org/rfc/rfc1122.txt, and http; // www.rfc-editor.org You can refer to /rfc/rfc2001.txt.

高速再送信は送信者が標準的なタイムアウトを待機する代わりにホールを迅速に埋めることを可能にするために順序が乱れたセグメントが受信されるとき、直ちにACKを発生する。   Fast retransmission generates an ACK immediately when an out-of-order segment is received to allow the sender to quickly fill the hole instead of waiting for a standard timeout.

高速再送信は受信機が3つの重複したACKを受けるときに呼び出される。高速再送信が呼び出されるとき、送信者はホールを埋めようとする。重複するACKはセグメントのACKおよびウィンドウ広告値が相互に一致するときに重複すると考えられている。   Fast retransmission is invoked when the receiver receives three duplicate ACKs. When fast retransmission is invoked, the sender tries to fill the hole. Duplicate ACKs are considered duplicates when segment ACKs and window advertisement values match each other.

ネットワークスタックが重複するACKを受信するとき、パケットがドロップすることが強く示される。n個の重複パケットが受信されるとき、ドロップされたセグメントは再送信タイマがまだ満了されていなくても直ちに再送信される。これは高速再送信アルゴリズムである。再送信前に受信されなければならない重複するACKの数nはTCP_Dup_ACKレジスタ(0×36)を介して設定され、3にデフォルトされる。   It is strongly indicated that packets are dropped when the network stack receives duplicate ACKs. When n duplicate packets are received, the dropped segment is immediately retransmitted even if the retransmission timer has not yet expired. This is a fast retransmission algorithm. The number n of duplicate ACKs that must be received before retransmission is set via the TCP_Dup_ACK register (0x36) and defaults to 3.

特定され多数の重複するACKが受信されるとき、ssthreshは再度混雑防止アルゴリズムのケースのように現在のウィンドウサイズの半分に設定されるが、このとき、cwndはssthresh+(3*MSS)に設定される。このことは重複したACKの受信後、スロースタートではなく混雑防止アルゴリズムに戻ることを確実にする。別の重複するACKが受信される毎に、cwndは1MSSだけ増加される。これは高速度回復アルゴリズムである。   When a specified number of duplicate ACKs are received, ssthresh is again set to half the current window size as in the case of the congestion prevention algorithm, but at this time cwnd is set to ssthresh + (3 * MSS) The This ensures that after receiving a duplicate ACK, it will return to the congestion prevention algorithm rather than a slow start. Each time another duplicate ACK is received, cwnd is incremented by 1 MSS. This is a high speed recovery algorithm.

新しいデータに対するACKが受信されるとき、cwndはssthreshに設定される。   When an ACK for new data is received, cwnd is set to ssthresh.

[動作の再送信理論]
論理の再送信サポートは3つの位置、即ちデータが送信される位置、受信されたACKを処理する位置、CBポーラ中の位置に存在する。
[Operation retransmission theory]
Logical retransmission support exists in three locations: the location where data is transmitted, the location where received ACKs are processed, and the location in the CB poller.

[データ送信]
データを送信するとき、送信論理装置は関連するCBの再送信有効ビットを観察する。ビットが設定されていないならば、有効な再送信時間が記憶されていないことを暗示しており、(CBに)現在記憶されているRTOは現在のタイムスタンプに付加される。結果的な時間はパケットに対する再送信時間である。この時間はCBに記憶され、CBの再送信有効ビットが設定される。
[Data transmission]
When sending data, the sending logic unit observes the retransmission valid bit of the associated CB. If the bit is not set, it implies that a valid retransmission time is not stored, and the currently stored RTO (in CB) is appended to the current timestamp. The resulting time is the retransmission time for the packet. This time is stored in the CB, and the retransmission valid bit of the CB is set.

再送信有効ビットが既にCBで設定されているならば、それはソケットに現在目立ったデータが存在し、再送信時間がここで更新される必要はないことを意味する。   If the retransmission valid bit is already set in the CB, it means that there is currently outstanding data in the socket and the retransmission time does not need to be updated here.

送信されているデータバッファがタイムアウトによるものであり、したがって再送信であるならば、CBの再送信時間は常に更新され、CBに記憶されているRTOもまた調節される(2重にされる)。   If the data buffer being sent is due to a timeout and therefore a retransmission, the retransmission time of the CB is always updated and the RTO stored in the CB is also adjusted (duplicated). .

[ACK処理]
TCP RXモジュールがACKを受信するとき、(含まれるならば)ACKのタイムスタンプと共にTXモジュールへ通知を送信する。TXモジュールはRTOの更新にこの情報を使用する。ACKが再送信されたパケットに応答するならば、この更新は行われない。パケットが再送信されたか否かの指示はMTXメモリ中のデータバッファヘッダ中に維持される。
[ACK processing]
When the TCP RX module receives an ACK, it sends a notification to the TX module with an ACK timestamp (if included). The TX module uses this information to update the RTO. If the ACK responds to the retransmitted packet, this update is not performed. An indication of whether the packet has been retransmitted is maintained in a data buffer header in the MTX memory.

それが計算された後、新しいRTOが必要とされるならば、CBに記憶される。ソケットにおいて任意の目立ったデータが検出されるならば、新しい再送信時間はまた新しいRTOを現在のタイムスタンプに付加することにより計算され、これもまたCBに記憶される。   After it is calculated, if a new RTO is needed, it is stored in the CB. If any conspicuous data is detected in the socket, the new retransmission time is also calculated by appending a new RTO to the current timestamp, which is also stored in the CB.

[CBポーラ]
CBポーラはアクチブブロックを探しているすべてのCBを循環する。CBポーラがアクチブブロックを発見するとき、CBポーラは再送信有効ビットを検査する。再送信有効ビットが設定されるならば、CBポーラは再送信時間を比較する。CBポーラが再送人時間が満了していることを発見するならば、CBポーラはCBの再送信ビット(即ちデータ送信機がどのようにしてパケットが再送信されたパケットであることを知るか)を主張し、CBを優先順位待ち行列の1つに位置させる。
[CB polara]
The CB polar circulates all CBs looking for an active block. When the CB polar finds an active block, the CB polar checks the retransmission valid bit. If the retransmission valid bit is set, the CB poller compares the retransmission times. If the CB poller finds that the retransmit time has expired, the CB poller retransmits the CB bit (ie, how the data transmitter knows that the packet is a retransmitted packet). And place CB in one of the priority queues.

[MSS選択]
[概要]
このセクションはMSSオプションがどのようにして得られるかの概要を示す。
[MSS selection]
[Overview]
This section gives an overview of how MSS options are obtained.

[初期セットアップ]
TCPトランザクションを使用可能にする前に、ホストは以下のパラメータおよび設定をセットアップすべきである。
[Initial setup]
Before enabling TCP transactions, the host should set up the following parameters and settings:

・レジスタ0×1A4A−0×1A4Bで使用されるデフォルトのローカルではないMSS、
・レジスタ0×1A4C−0×1A4Dで使用されるデフォルトのローカルMSS。
The default non-local MSS used in registers 0x1A4A-0x1A4B,
Default local MSS used in registers 0x1A4C-0x1A4D.

[選択アルゴリズム]
2つのうち任意の接続に使用されるMSS値を選択するとき、TCPエンジンはIPルータに問い合わせる。目的地ルートがゲートウェイを通過するならば、ローカルではないMSSが使用される。
[Selection algorithm]
When selecting the MSS value to be used for any of the two connections, the TCP engine queries the IP router. If the destination route passes through the gateway, a non-local MSS is used.

[TCPオプション]
[概要]
以下の説明はサポートされるTCPオプションおよびそれらのフォーマットの概要である。サポートされる4つのオプションは、
・MSS、
・ウィンドウスケーリング、
・タイムスタンプ、
・SACKである。
[TCP option]
[Overview]
The following description is an overview of the supported TCP options and their formats. The four supported options are:
・ MSS,
Window scaling,
·Time stamp,
-SACK.

[MSSオプション]
このオプションは常に送信される。使用される実際のMSS値は既に説明されたアルゴリズムにしたがって決定される。MSSオプションのフォーマットは図30に示されている。
[MSS option]
This option is always sent. The actual MSS value used is determined according to the algorithm already described. The format of the MSS option is shown in FIG.

[ウィンドウスケーリングオプション]
このオプションはSl_Win_EnビットがTCP_Controlレジスタ中で設定される限り、SYNパケットで常に送信される。このオプションはこれがSYN/ACK応答を発生するSYNパケットに含まれる場合のみSYN/ACKパケットで送信される。このオプションのフォーマットは図31に示されている。このオプションはこれが4バイト境界で整列するように常にNOPバイトにより先行されることに注意する。
[Window scaling option]
This option is always sent in a SYN packet as long as the Sl_Win_En bit is set in the TCP_Control register. This option is sent in a SYN / ACK packet only if it is included in a SYN packet that generates a SYN / ACK response. The format of this option is shown in FIG. Note that this option is always preceded by a NOP byte so that it is aligned on a 4-byte boundary.

[タイムスタンプオプション]
このオプションはタイムスタンプオプションが使用可能になるならばSYNパケットで常に送信され、タイムスタンプオプションが使用可能になるか否かにかかわりなく、オプションがSYN/ACK応答を発生するSYNパケットに含まれる場合にのみSYN/ACKパケットで送信される。オプションのフォーマットは図32に示されている。このオプションはこれが4バイト境界で整列するように常に2つのNOPバイトにより先行されることに注意する。
[Timestamp option]
This option is always sent in a SYN packet if the timestamp option is enabled, and if the option is included in a SYN packet that generates a SYN / ACK response, regardless of whether the timestamp option is enabled. Only in SYN / ACK packets. An optional format is shown in FIG. Note that this option is always preceded by two NOP bytes so that it is aligned on a 4-byte boundary.

[選択的なACK(SACK)オプション]
選択的な肯定応答(SACK)はTCPがホール(失われたデータパケット)を含むデータを承認することを可能にし、ドロップ後のすべてのデータではなく失われたデータの再送信を可能にする。この特徴はRFC2018に記載されている。
[Selective ACK (SACK) option]
Selective Acknowledgment (SACK) allows TCP to acknowledge data containing holes (lost data packets) and allows retransmission of lost data rather than all data after dropping. This feature is described in RFC2018.

このオプションはSACK_EnビットがTCP_Controlレジスタに設定される限り、SYNおよびSYN/ACKパケットで常に送信される。SACKは2つの異なるTCPオプションの種類を使用する。一方のオプションの種類はSYNパケットで使用され、その他のオプションの種類はデータパケットで使用される。オプションのフォーマットは図33と34に示されている。   This option is always sent in SYN and SYN / ACK packets as long as the SACK_En bit is set in the TCP_Control register. SACK uses two different TCP option types. One option type is used in the SYN packet, and the other option type is used in the data packet. An optional format is shown in FIGS.

[MTXバッファヘッダフォーマット]
[概要]
このセクションはMTXデータバッファ毎の開始で使用されるヘッダフォーマットを記載している。ヘッダはチェックサム、シーケンス番号、次のリンク等のようなバッファに含まれるデータについての情報を含んでいる。ヘッダフォーマットはTCPとUDPで異なっている。
[MTX buffer header format]
[Overview]
This section describes the header format used at the start of each MTX data buffer. The header contains information about the data contained in the buffer such as the checksum, sequence number, next link, etc. The header format is different between TCP and UDP.

[TCPのキープアライブタイマ]
[概要]
このセクションではTCP接続に使用されるキープアライブタイマを説明する。このセクションはこの特徴がIT 10Gネットワークスタックで実行される態様についての動作理論を含んでいる。
[TCP keep-alive timer]
[Overview]
This section describes the keep-alive timer used for TCP connections. This section contains the theory of operation for how this feature is implemented in the IT 10G network stack.

[キープアライブパラメータ]
以下のパラメータはネットワークスタックのキープアライブ特性で使用される。

Figure 0004875126
[Keep-alive parameters]
The following parameters are used in the network stack keep-alive characteristics.
Figure 0004875126

[動作理論]
デフォルトにより、キープアライブタイマはソケットでディスエーブルされル。ソケットが生成されるとき、ホストはSocket_Configurationレジスタ中のKeep_Aliveビットを設定するオプションを有する。このビットが設定され、ソケットパラメータが与えられるならば、キープアライブ特性はそのソケットで使用可能になる。
[Theory of operation]
By default, the keep-alive timer is disabled on the socket. When the socket is created, the host has the option of setting the Keep_Alive bit in the Socket_Configuration register. If this bit is set and a socket parameter is given, the keepalive property is enabled on that socket.

一度、ソケットが設定されると、keep_aliveタイムスタンプはCB(ワード0×05)中に維持される。このタイムスタンプはソケットがアイドルであると考えられている将来の時間を表す。パケットがソケットで送信される毎に、またはパケットがソケットに到着するとき、このタイムスタンプは更新される。更新されたタイムスタンプは現在動作している分のカウンタと(Keep_Alive_Timerレジスタ(0×1A3A)を介してホストにより入力されるような)keep_alive時間の合計である。   Once the socket is set up, the keep_alive timestamp is maintained in the CB (word 0x05). This timestamp represents the future time when the socket is considered idle. This time stamp is updated each time a packet is sent on the socket or when the packet arrives at the socket. The updated timestamp is the sum of the currently running counter and the keep_alive time (as entered by the host via the Keep_Alive_Timer register (0x1A3A)).

CBポーラモジュールはキープアライブ特性を有する各CBの分が一度使用可能になるとキープアライブタイムスタンプをチェックする。CBポーラモジュールが現在の自由動作している分カウンタに一致するタイムスタンプを有するソケットを発見するならば、CBポーラモジュールはそのソケットで送信されるキープアライブプローブをスケジュールする。CBポーラモジュールはデータ送信待ち行列にCBを行列させ、Kビット(CBのワード0×0Bのキープアライブ再試行ビット)を設定することによりこれを行う。CBポーラモジュールはまたCBのキープアライブ再試行フィールド(ワード0×13)を0×1に設定する。送信待ち行列が一杯であるならば、CBポーラモジュールは次の分チェック中にCBポーラを再度トリガーするためにCBのkeep_aliveタイムスタンプをインクリメントする。   The CB polar module checks the keep alive time stamp once each CB with keep alive characteristics is available. If the CB polar module finds a socket with a time stamp that matches the current free running minute counter, the CB polar module schedules a keep alive probe to be sent on that socket. The CB polar module does this by queuing the CB into the data transmission queue and setting the K bit (the CB word 0x0B keep-alive retry bit). The CB polar module also sets the CB keepalive retry field (word 0x13) to 0x1. If the transmission queue is full, the CB polar module increments the CB's keep_alive timestamp to trigger the CB poller again during the next minute check.

データパケット発生器が設定されているKビットを有するCBに遭遇するとき、データパケット発生器はシーケンス番号が通常設定されるよりも1だけ低い値に設定されるシーケンス番号を有する1バイトPSHパケットを送出する。データ発生器はまたCBのキープアライブタイムスタンプを現在の自由動作している分カウントプラスキープアライブ再試行インターバルで更新する。これが依然として動作中(アクチブ)であるならば、正確な予測されたシーケンス番号を有するACKをピアに返送させる。   When the data packet generator encounters a CB with the K bit set, the data packet generator will send a 1-byte PSH packet with a sequence number set to a value one lower than the sequence number normally set. Send it out. The data generator also updates the CB's keep alive timestamp with the current free running count plus the keep alive retry interval. If this is still active (active), it causes the peer to return an ACK with the correct predicted sequence number.

ピアがアクチブであり、応答を送信するならば、TCP−RXモジュールはCB中のKビットをクリアし、再試行カウントを0×0にリセットし、キープアライブタイムスタンプを更新する。   If the peer is active and sends a response, the TCP-RX module clears the K bit in the CB, resets the retry count to 0x0, and updates the keep alive timestamp.

ピアがキープアライブ再試行インターバル内に応答を送信しないならば、CBポーラは再度、以前の分のキープアライブタイムスタンプチェックを行っていたときのソケットに遭遇する。Kビットが既に設定されていることを観察するとき、キープアライブ再試行カウンタを1だけインクリメントし、データパケット送信のためにCBを再スケジュールする。   If the peer does not send a response within the keepalive retry interval, the CB poller again encounters the socket from which it was doing the previous minute keepalive timestamp check. When observing that the K bit is already set, the keep alive retry counter is incremented by 1 and the CB is rescheduled for data packet transmission.

CBポーラが再試行数が最大数に到達したことを発見したならば、CBポーラはホストコンピュータへ通知を送信し、ソケットをデプリケートする。   If the CB poller finds that the maximum number of retries has been reached, the CB poller sends a notification to the host computer and replicates the socket.

キープアライブプローブの送出コース中、ネットワークスタックはRSTパケットを受信し、これは適切にソケットを閉じることなくピアが再ブート(リセットまたは再スタート)されたことを意味する可能性が大きい。この場合、ソケットはデプリケートされる。   During the keep-alive probe delivery course, the network stack receives an RST packet, which most likely means that the peer has been rebooted (reset or restarted) without properly closing the socket. In this case, the socket is replicated.

別の可能性は、ネットワークスタックがキープアライブプローブ、例えば到達可能ではないネットワークのキープアライブプローブに応答してICMPエラーメッセージを受信することである。この状態は中間ルータがダウンすることにより生じる。この場合には、ICMPメッセージはオンチッププロセッサに送られる。複数のこれらのICMPメッセージの受信後、オンチッププロセッサはソケットCBを読取り、これがキープアライブ再試行状態であることを観察できる。オンチッププロセッサはその後、CBデプリケーションプロセスを起こすことができる。   Another possibility is that the network stack receives an ICMP error message in response to a keep-alive probe, eg, a network keep-alive probe that is not reachable. This condition occurs when the intermediate router goes down. In this case, the ICMP message is sent to the on-chip processor. After receiving a plurality of these ICMP messages, the on-chip processor can read the socket CB and observe that it is in a keep-alive retry state. The on-chip processor can then initiate a CB depletion process.

[TCP ACKモード]
[概要]
以下の説明はIT10Gネットワークスタックで有効なTCP ACKモードの詳細である。4つのモードのうちスタックが動作しているモードを決定する2つのビットが存在する。これらはTCP_Control1レジスタ中のDly_ACKビットと、Socket_configurationレジスタのHost_ACKビットである。演算マトリックスは以下の表に示されている。

Figure 0004875126
[TCP ACK mode]
[Overview]
The following description details the TCP ACK mode that is valid in the IT10G network stack. There are two bits that determine the mode in which the stack is operating among the four modes. These are the Dly_ACK bit in the TCP_Control1 register and the Host_ACK bit in the Socket_configuration register. The operation matrix is shown in the table below.
Figure 0004875126

[正常なACKモード]
このモードでは、データはそれらがNRX DRAMへ受信されるとすぐにACKされる。TCP受信論理装置はこれをRXからTXへのパケットFIFOバッファへ位置付けることによりACKをスケジュールする。ソケットCBのARビットはこのモードでは使用されない。これはTCPモジュールのデフォルトモードであり、TCP_Control1レジスタでDly_ACKビットの主張を解除することにより使用可能になる。これはすべてのソケットに適用するように全般的なTCP設定である。
[Normal ACK mode]
In this mode, data is ACKed as soon as they are received into the NRX DRAM. The TCP receive logic unit schedules the ACK by positioning it in the RX-to-TX packet FIFO buffer. The AR bit of socket CB is not used in this mode. This is the default mode of the TCP module and can be used by releasing the assertion of the Dly_ACK bit in the TCP_Control1 register. This is a general TCP setting to apply to all sockets.

[遅延されたACKモード]
このモードでは、データは直ちにACKされない。代りに、データがソケットに到着するとき、TCP受信論理装置はソケットCBにARビットを設定する。CBポーラモジュールはその後、ARビットセットを有するCBを観察するためすべてのアクチブCBを周期的に試験する。CBポーラがセットビットを発見するとき、CBポーラはそのソケットに対するACKをスケジュールする。ARビットを探すポーリングインターバルはDel_ACK_Waitレジスタを介して設定されることができ、2msのタイマ刻みに関して特定される。デフォルトインターバルは250msである。このモードはTCP_Control1レジスタ中のDly_ACKビットの主張により使用可能になる。それはまたすべてのソケットに適用するように全般的なTCP設定である。
[Delayed ACK mode]
In this mode, data is not immediately ACKed. Instead, when data arrives at the socket, the TCP receive logic sets the AR bit in socket CB. The CB polar module then periodically tests all active CBs to observe CBs with the AR bit set. When the CB poller finds a set bit, the CB poller schedules an ACK for that socket. The polling interval looking for the AR bit can be set via the Del_ACK_Wait register and is specified for a 2 ms timer step. The default interval is 250 ms. This mode is enabled by asserting the Dly_ACK bit in the TCP_Control1 register. It is also a general TCP setting to apply to all sockets.

[ホスト−正常ACKモード]
このモードでは、データはMRX DRAMへ受信されるときACKされない。代りにACKはデータがホストコンピュータへ送信された後にのみ送信され、ホストコンピュータはデータのACKコマンドを発生することによりデータの受信を承認する。IT 10GハードウェアがACKコマンドを受信するとき、CB、即ちソケットハンドルをHost_ACK_CBレジスタに書込む。この動作はRX−TXパケットFIFOバッファを介してACKパケットをスケジュールさせる。ソケットCBのARビットはこのモードで使用されない。このモードはSocket_Configurationレジスタ中でHost_ACKビットを主張することによりソケットベースにしたがって使用可能にすることができる。
[Host-normal ACK mode]
In this mode, data is not ACKed when received into the MRX DRAM. Instead, the ACK is sent only after the data is sent to the host computer, and the host computer acknowledges receipt of the data by generating a data ACK command. When the IT 10G hardware receives an ACK command, it writes CB, the socket handle, to the Host_ACK_CB register. This action schedules the ACK packet via the RX-TX packet FIFO buffer. The AR bit of socket CB is not used in this mode. This mode can be enabled according to socket base by asserting the Host_ACK bit in the Socket_Configuration register.

[ホスト遅延されたACKモード]
このモードでは、データは直ちにACKされない。代りに、データは受信後、ホストコンピュータに送信され、ホストコンピュータはデータのACKコマンドを発生することによりデータの受信を承認する。IT 10GハードウェアがACKコマンドを受信するとき、CB、即ちソケットハンドルをHost_ACK_CBレジスタに書込む。この動作はソケットのCB中のARビットを設定させる。CBポーラモジュールが次のACKポーリングサイクルにおいてすべてのARビットをチェックするとき、CBポーラはACKをそのソケットに対して送出されるようにスケジュールする。Del_ACK_Waitレジスタを介して特定されるCBポーリングサイクルはARビットのポーリングインターバルだけを特定し、データをホストコンピュータへ最初に送信してホストコンピュータがそのデータに応答するのを待機することによって生じる遅延を考慮しないことに注意すべきである。それ故、このモードが使用されるならば、ACKポーリングインターバルはデフォルト250msよりも低いある値に設定されることが示唆される。最適なインターバルはACKコマンドを発生するホストコンピュータのターンアラウンド時間に依存している。
[Host delayed ACK mode]
In this mode, data is not immediately ACKed. Instead, after the data is received, it is transmitted to the host computer, which acknowledges receipt of the data by generating an ACK command for the data. When the IT 10G hardware receives an ACK command, it writes CB, the socket handle, to the Host_ACK_CB register. This action causes the AR bit in the socket CB to be set. When the CB poller module checks all AR bits in the next ACK polling cycle, the CB poller schedules an ACK to be sent out for that socket. The CB polling cycle specified via the Del_ACK_Wait register specifies only the AR bit polling interval and takes into account the delay caused by first sending data to the host computer and waiting for the host computer to respond to that data. Note that not. Therefore, if this mode is used, it is suggested that the ACK polling interval is set to some value lower than the default 250 ms. The optimum interval depends on the turnaround time of the host computer that generates the ACK command.

[ホスト再送信モード]
[概要]
IT 10GネットワークスタックはそのローカルデータバッファからまたはホストメモリからTCPデータを再送信するように設計されている。この説明はネットワークスタックが後者のモードで動作しているときの動作の詳細である。ホストメモリから再送信する利点はローカル送信バッファメモリの量が最小に維持されることができることである。これはデータがワイヤで送信されるとすぐに、MXデータバッファブロックがリリースされるからである。欠点はホストメモリ再送信をサポートするために、より多くのホストメモリと、ホストCPUサイクルと、待ち時間がかかることである。
[Host resend mode]
[Overview]
The IT 10G network stack is designed to retransmit TCP data from its local data buffer or from host memory. This description details the operation when the network stack is operating in the latter mode. The advantage of retransmitting from host memory is that the amount of local transmit buffer memory can be kept to a minimum. This is because the MX data buffer block is released as soon as the data is transmitted over the wire. The disadvantage is that it takes more host memory, host CPU cycles, and latency to support host memory retransmission.

[ホスト再送信モードエネーブル]
ホスト再送信モードはSocket_Configuration2レジスタでHost_Retransビットを主張することによりソケットベースにしたがって使用可能にすることができる。このモードは任意のACK動作モードと共に使用されることができる。
[Enable host resend mode]
Host retransmission mode can be enabled according to socket base by asserting the Host_Retrans bit in the Socket_Configuration2 register. This mode can be used with any ACK mode of operation.

[ホスト再送信モード動作理論]
ホスト再送信モードで動作するとき、ホストCPUはシーケンス番号の追跡を続けるように動作する。ホストメモリからDMAされた各データセクションでは、最初の128ビットがデータブロックに対するヘッダを形成する。
[Host retransmission mode operation theory]
When operating in host retransmit mode, the host CPU operates to keep track of the sequence number. In each data section DMAed from the host memory, the first 128 bits form the header for the data block.

ホストは各データ転送の最初の128ビットとしてこのヘッダに書込まなければならない。ヘッダのビット[127:64]は最初の64ビットワードをDMAされるべきであり、それに続いてヘッダのビット[63:0]、その後、最初のデータバイトが後続する。   The host must write to this header as the first 128 bits of each data transfer. Header bits [127: 64] should be DMAed with the first 64-bit word, followed by header bits [63: 0], followed by the first data byte.

IT10Gハードウェアがデータパケットを発生するとき、これはソケットCBからの代わりのデータバッファヘッダのシーケンス番号を取る。IT10Gハードウェアはその後、通常のようにパケットを形成し、そのデータパケットをワイヤで送信する。パケットの転送後、MTXデータバッファは直ちにフリーにされる。   When the IT10G hardware generates a data packet, it takes the sequence number of the alternate data buffer header from socket CB. The IT10G hardware then forms the packet as usual and sends the data packet over the wire. After the transfer of the packet, the MTX data buffer is immediately freed.

データのACKがピアから受信されるとき、ホストコンピュータはデータを受信したCBと、受信されたSCK番号について、状態メッセージを介して通知される。この情報により、ホストコンピュータはホストコンピュータメモリからのデータをフリーにするためにクリアされるときを決定できる。   When an ACK for data is received from the peer, the host computer is notified via the status message about the CB that received the data and the received SCK number. With this information, the host computer can determine when the data from the host computer memory is cleared to free.

再送信タイマは正常状態下で、依然としてソケットCB中で使用される。再送信タイマが満了するとき、状態メッセージが対応するソケットハンドルと共にホストコンピュータへ送信される。ホストコンピュータはその後、まだACKされていないメモリ中に存在する最も古いデータのDMA転送をスケジュールする。   The retransmission timer is still used in socket CB under normal conditions. When the retransmission timer expires, a status message is sent to the host computer along with the corresponding socket handle. The host computer then schedules a DMA transfer of the oldest data present in memory that has not yet been acknowledged.

[ピアゼロのウィンドウケース]
[概要]
時には、TCP接続のピア側は受信バッファスペースを使い果たす。この場合には、ピアは0×0000のウィンドウサイズを広告する。ピアウィンドウは常にTCP受信セクションによりソケットCBへ書込まれる。受信論理装置が0×0000のウィンドウサイズを検出するとき、これはCBフラグワード(ワード0×02のビット[19])にZWビットを設定する。次にデータがこのソケットで送信される時、TCP送信論理装置は設定されているZWビットを発見し、データの送出の代りに、正しくないシーケンス番号を有する1バイトデータパケットを送出する。シーケンス番号は正しいシーケンス番号よりも1だけ小さい。このデータパケットはキープアライブプローブパケットのように見える。この正しくないデータパケットに応答して、ピアは更新されたウィンドウサイズを有するACKパケットを送信しなければならない。1バイトデータパケットの送信後、CBzero_windowプローブカウントは1だけインクリメントされ(ワード0×13のビット[27:24])、次のzero_windowプローブが送信されるべきときにCB zero_win_timestamp(ワード0×0Cのビット[31:26])が書込まれる。
[Pier Zero Window Case]
[Overview]
Sometimes the peer side of a TCP connection runs out of receive buffer space. In this case, the peer advertises a window size of 0x0000. The peer window is always written to socket CB by the TCP receive section. When the receiving logic unit detects a window size of 0x0000, it sets the ZW bit in the CB flag word (word 0x02 bit [19]). The next time data is sent on this socket, the TCP send logic will find the ZW bit that is set and send a 1-byte data packet with an incorrect sequence number instead of sending the data. The sequence number is one less than the correct sequence number. This data packet looks like a keep-alive probe packet. In response to this incorrect data packet, the peer must send an ACK packet with the updated window size. After sending a 1-byte data packet, the CBzero_window probe count is incremented by 1 (word 0x13 bits [27:24]), and when the next zero_window probe is to be sent, CB zero_win_timestamp (bits of word 0x0C) [31:26]) is written.

[Zero_Window Timestamp]
このフィールドは次のzero_windowプローブが送信されるべきときを決定するために使用される。zero_windowプローブが送信される度に、プローブカウントはインクリメントされ、タイムスタンプは更新される。送信論理装置は送信されたプローブ数だけzero_window_intervalカウントをシフトし、この時間を現在の自由に動作している秒タイマへ付加することにより次のzero_window timestampを決定する。結果的なタイムスタンプは次のプローブが送信される将来の時間を表す。それ故、3秒のデフォルト値により、プローブは0、3、6、12、24、48、60秒のインターバルで送出される。一度インターバルが60秒に達すると、キャップされる。
[Zero_Window Timestamp]
This field is used to determine when the next zero_window probe should be sent. Each time a zero_window probe is sent, the probe count is incremented and the timestamp is updated. The transmitting logic unit shifts the zero_window_interval count by the number of probes transmitted and adds this time to the current free-running second timer to determine the next zero_window timestamp. The resulting time stamp represents a future time when the next probe is transmitted. Therefore, with a default value of 3 seconds, the probe is delivered at intervals of 0, 3, 6, 12, 24, 48, 60 seconds. Once the interval reaches 60 seconds, it is capped.

CBポーラモジュールでは、論理装置はX秒毎にすべてのアクチブなCB ZWビットをポールし、ここでXはzero_window_intervalカウントである。CBポーラがZWビットの設定されているCBを発見するとき、CBポーラはzero_window timestampを読取り、そのタイムスタンプを自由動作する第2のタイマと比較する。これらが一致するならば、ゼロウィンドウプローブは送信されるように待ち行列される。キープアライブプローブと異なって、送信されるゼロウィンドウプローブの数に制限はない。   In the CB polar module, the logic unit polls all active CB ZW bits every X seconds, where X is the zero_window_interval count. When the CB poller finds a CB with the ZW bit set, the CB poller reads the zero_window timestamp and compares its timestamp with a second timer that runs freely. If they match, the zero window probe is queued for transmission. Unlike keep alive probes, there is no limit to the number of zero window probes transmitted.

[ウィンドウのオープン]
ピアのウィンドウが最終的に開くとき、ピアは任意のACK(ウィンドウ告示)を送信するか、またはピアはACKの開いたウィンドウがゼロウィンドウプローブに応答することを示す。TCP受信論理装置はその後、CBのピアのウィンドウを更新する。次にCBがzero_windowプローブで現れるとき、CBポーラはウィンドウが開かれていることを観察する。CBポーラはその後ZWビットをクリアし、規則的なデータ転送をスケジュールする。zero_window再試行の数もまた0×0にリセットされる。
[Open window]
When the peer's window eventually opens, the peer either sends an arbitrary ACK (window announcement) or the peer indicates that the open window of the ACK responds to a zero window probe. The TCP receiving logic then updates the CB peer window. The next time the CB appears with the zero_window probe, the CB poller observes that the window is open. The CB polar then clears the ZW bit and schedules regular data transfer. The number of zero_window retries is also reset to 0x0.

[ナグル動作]
[概要]
このセクションはナグル(Nagle)アルゴリズムのIT10Gハードウェアサポートを説明する。このアルゴリズムはTCP接続が転移中にACKされていないデータを有するときにデータが承認されるまで小さいセグメントが送信されることができないことを述べている。
[Naggle operation]
[Overview]
This section describes IT10G hardware support for the Nagle algorithm. This algorithm states that when a TCP connection has unacknowledged data during transition, a small segment cannot be sent until the data is acknowledged.

[ナグル送信IB]
別々の送信命令ブロックがナグルアルゴリズムの使用で与えられる。これらの命令ブロック(IB)はこれらが主張されたIBコードのmsbを持たない点を除いて通常の非ナグルIBに類似している。32ビットアドレスのナグル送信IBは0×81であり、64ビットアドレスのコードは0×82である。ナグル送信IBはこれらがHWによりパースされるときソケットCBのR×ACKビットが主張される点を除いて通常の送信IBと同一方法で動作する。通常の送信IBの処理はこれが設定されるならば、このビットをクリアする。
[Nagle transmission IB]
A separate send command block is given using the Nagle algorithm. These instruction blocks (IBs) are similar to regular non-naggle IBs except that they do not have the claimed IB code msb. The 32-bit address nagle transmission IB is 0 × 81, and the 64-bit address code is 0 × 82. Nagle transmission IBs operate in the same way as normal transmission IBs, except that when they are parsed by HW, the RxACK bit of socket CB is asserted. Normal transmission IB processing clears this bit if this is set.

[RxACKビット]
これはソケットCBに存在するビットであり、Socket_Confg1レジスタ中でビット[3]を主張することによりアプリケーションを介して設定されることができる。設定のとき、このビットはACKが受信されるときにすべての目立ったデータを承認したというRX_ACK状態メッセージを発生させる。この状態は受信されたACK番号がソケットにより使用されるSEQ番号に一致するときに満たされる。状態メッセージコードは受信されたACKに対して0×16である。
[RxACK bit]
This is a bit present in the socket CB and can be set via the application by asserting bit [3] in the Socket_Config1 register. When set, this bit generates an RX_ACK status message that all outstanding data has been acknowledged when an ACK is received. This state is satisfied when the received ACK number matches the SEQ number used by the socket. The status message code is 0x16 for the received ACK.

規則的な送信IBがIT10Gハードウェアにより処理されるとき、またはRxACK状態メッセージが送信されるとき、或いはソケットCBのビットを手作業でクリアするアプリケーションによって、RxACK状態ビットはクリアされる。最後のケースは診断目的だけのために行われる。   The RxACK status bit is cleared when a regular send IB is processed by the IT10G hardware, or when an RxACK status message is sent, or by an application that manually clears the socket CB bit. The last case is done for diagnostic purposes only.

[MTXデータ記憶]
[概要]
このセクションはデータがMTXバッファに記憶されることのできるサイズをTOEが決定するために使用するアルゴリズムを説明する。これは1つのMTXバッファが1つのTCPパケットに対応するときに送信されるTCPパケットのサイズに影響する。
[MTX data storage]
[Overview]
This section describes the algorithm that the TOE uses to determine the size at which data can be stored in the MTX buffer. This affects the size of the TCP packet transmitted when one MTX buffer corresponds to one TCP packet.

[MSS対4分の1MSS(または最大の半分のピアウィンドウ)]
ピアの広告されたウィンドウがMSSの2倍を超えるならば、(CB位置0×05に記憶されるような)ソケットMSSサイズはいくつのバイトがMTXバッファに記憶されることができるかについてのソケット決定ファクタとして使用される。ピアの広告されたウィンドウが2倍のMSSレベルに到達しないならば、MTXバッファに記憶されたバイトの最大数は(構成にしたがって)MSSの4分の1またはピアの最大の広告されたウィンドウの半分である。この比較を維持するビットはCBワード0×14のビット[18]である。
[MSS vs. 1/4 MSS (or maximum half peer window)]
If the peer's advertised window exceeds twice the MSS, the socket MSS size (as stored in CB location 0x05) is the socket on how many bytes can be stored in the MTX buffer. Used as a decision factor. If the peer advertised window does not reach twice the MSS level, then the maximum number of bytes stored in the MTX buffer is (depending on the configuration) one quarter of the MSS or the maximum advertised window of the peer. It is half. The bit that maintains this comparison is bit [18] of the CB word 0x14.

[パケットオーバーヘッド]
(構成に応じて)MSS、またはMSSの4分の1或いはピアの最大のウィンドウ値の半分から、固定したバイトオーバーヘッドが控除される。このオーバーヘッドはパケットヘッダバイト、IPSECオーバーヘッドを含んでいる。
[Packet overhead]
A fixed byte overhead is deducted from the MSS or a quarter of the MSS or half of the peer's maximum window value (depending on the configuration). This overhead includes packet header bytes and IPSEC overhead.

[CBサイズ限度対バッファサイズ]
(構成に応じて)MSS、またはMSSの4分の1或いはピアの最大のウィンドウ値の半分のいずれを使用するかを決定し、パケットオーバーヘッドを控除した後、論理装置は利用可能なバッファの種類を観察する。128バイトのバッファだけが利用可能であるならば、これは記憶サイズを限定する。また上記計算後、データサイズが依然として大きいMTXバッファサイズよりも大きいならば、パケットサイズは再度MTXバッファサイズにより限定されることができる。
[CB size limit vs. buffer size]
After deciding whether to use the MSS, or a quarter of the MSS or half of the peer's maximum window value (depending on the configuration), and deducting the packet overhead, the logical unit is the type of buffer available Observe. This limits storage size if only a 128 byte buffer is available. Also, after the above calculation, if the data size is still larger than the large MTX buffer size, the packet size can be limited again by the MTX buffer size.

[IPルータ]
[IPルータ特徴]
・デフォルトルート能力を提供する。
・多数のホストIPアドレスに対するルートを提供する。
・ホスト特定およびネットワーク特定ルートを提供する。
・ICMP再誘導後、ルートをダイナミックに更新する。
・IP放送アドレスを処理する(限定され、サブネット再誘導され、ネットワーク誘導された放送)。
・IPループバックアドレスを処理する。
・IPマルチキャストアドレスを処理する。
[IP router]
[IP router characteristics]
Provide default route capability.
Provide routes for multiple host IP addresses.
Provide host specific and network specific routes.
• Dynamically update routes after ICMP redirect.
• Process IP broadcast addresses (limited, subnet redirected, network guided broadcasts).
Process the IP loopback address.
Process IP multicast addresses.

[モジュールブロック図]
図35はIPルータの概略ブロック図である。
[Module block diagram]
FIG. 35 is a schematic block diagram of an IP router.

[IPルータの動作理論]
[ルートのリクエスト]
ローカルホストがIPパケットを送信しようとするとき、そのパケットを送信する場所、即ち構内ネットワークの別のホストか、外部ネットワークか、ローカルホスト自体であるかを決定しなければならない。これは出力するIPパケットを適切なホストへ誘導するIPルータのタスクである。
[Theory of IP router operation]
[Request route]
When a local host wants to send an IP packet, it must decide where to send the packet: another host on the local network, the external network, or the local host itself. This is an IP router task that guides an output IP packet to an appropriate host.

モジュールがルートをリクエストするとき、送信モジュールはパケットの目的地IPアドレスをIPルータへ送る。IPルータはターゲットのIPアドレスをIPルートリストに記憶されている目的地のリストと比較する。一致が見つかったならば、IPルータは適切なイーサネット(登録商標)アドレスを解決しようとする。IPルータはこの解決を、ARPキャッシュ中の目的地IPアドレスに対するARP検索をリクエストすることにより行う。目的地イーサネット(登録商標)アドレスが解決されるならば、イーサネット(登録商標)アドレスは送信モジュールへ戻され、このイーサネット(登録商標)アドレスを出力するイーサネット(登録商標)フレームの目的地として使用する。   When the module requests a route, the sending module sends the destination IP address of the packet to the IP router. The IP router compares the target IP address with the list of destinations stored in the IP route list. If a match is found, the IP router will attempt to resolve the appropriate Ethernet address. The IP router performs this resolution by requesting an ARP search for the destination IP address in the ARP cache. If the destination Ethernet address is resolved, the Ethernet address is returned to the sending module and used as the destination of the Ethernet frame that outputs this Ethernet address. .

ルート情報は3つの別々のコンポーネント、即ちデフォルトルートレジスタ351、カスタムルートリスト352、ルート可能ではないアドレスキャッシュ353により与えられる。これらのコンポーネントはルートリクエストが与えられるときに同時にすべて待ち行列される。   Route information is provided by three separate components: a default route register 351, a custom route list 352, and a non-routable address cache 353. These components are all queued simultaneously when a route request is given.

[デフォルトルート]
パケットの目的地はローカルまたは外部として説明されることができる。ローカルな目的地は送信ホストとして同一の構内ネットワークに取り付けられる。外部目的地は送信ホストの構内ネットワークとは別のネットワークに属す。
[Default route]
The destination of the packet can be described as local or external. The local destination is attached to the same local network as the sending host. The external destination belongs to a network other than the sending host's local network.

出力するパケット目的地IPアドレスが構内ネットワークに取り付けられたホストに属すことが分かったとき、IPルータは解決された目的地Ipアドレスをその対応するイーサネット(登録商標)アドレスに設定しようと試みるためにARPを使用する。目的地IPアドレスが外部ネットワークに属すことが決定されたならば、IPルータは出力するパケットを外部ネットワークへ中継するために使用するゲートウェイホストを決定しなければならない。一度、ゲートウェイホストが選択されると、出力するIPパケットはそれらの目的地イーサネット(登録商標)アドレスとしてゲートウェイホストのイーサネット(登録商標)アドレスを使用する。   When the outgoing packet destination IP address is found to belong to a host attached to the local network, the IP router tries to set the resolved destination IP address to its corresponding Ethernet address. Use ARP. If it is determined that the destination IP address belongs to the external network, the IP router must determine the gateway host to be used to relay outgoing packets to the external network. Once a gateway host is selected, outgoing IP packets use the gateway host's Ethernet address as their destination Ethernet address.

ルートがパケット目的地IPアドレスに対して発見されることができない場合、そのパケットはデフォルトルートにより特定されるゲートウェイホストを使用しなければならない。デフォルトルートは他に所定の目的地IPアドレスに対して発見されることができるルートがないときにのみ使用される。   If a route cannot be found for the packet destination IP address, the packet must use the gateway host specified by the default route. The default route is only used when no other route can be found for a given destination IP address.

ARPキャッシュへのアクセス数を最小にするため、IPルータはデフォルトルートが設定されるときにデフォルトゲートウェイイーサネット(登録商標)アドレスをキャッシュする。デフォルトゲートウェイイーサネット(登録商標)アドレスはARPキャッシュのダイナミックエントリがキャッシュされることを可能にされる時間量に等しい最大時間量だけキャッシュされる。   To minimize the number of accesses to the ARP cache, the IP router caches the default gateway Ethernet address when a default route is set. The default gateway Ethernet address is cached for a maximum amount of time equal to the amount of time that a dynamic entry in the ARP cache is allowed to be cached.

[放送およびマルチキャスト目的地]
目的地IPアドレスが放送またはマルチキャストIPアドレスであるとき、ARP探索が必要とされる。代りに目的地イーサネット(登録商標)アドレスはIPアドレスのタイプに応じて発生される。IP放送アドレス(255.255.255.255)に対して設定された目的地IPアドレスを有するパケットはイーサネット(登録商標)放送アドレス(FF:FF:FF:FF:FF:FF)に送信される。マルチキャストIPアドレス(244.x.x.x)に設定された目的地IPアドレスを有するパケットはマルチキャストIPアドレスから計算されるそれらの目的地イーサネット(登録商標)アドレスを有する。
[Broadcast and multicast destinations]
When the destination IP address is a broadcast or multicast IP address, an ARP search is required. Instead, the destination Ethernet address is generated according to the type of IP address. A packet having the destination IP address set for the IP broadcast address (255.255.255.255) is transmitted to the Ethernet (registered trademark) broadcast address (FF: FF: FF: FF: FF: FF). Packets with the destination IP address set to the multicast IP address (244.xxx) have their destination Ethernet address calculated from the multicast IP address.

[静的ルート]
デフォルトルートに加えて、IPルータは目的地IPアドレスを特別なイーサネット(登録商標)インターフェースまたはゲートウェイホストへマップするために静的ルートの生成を可能にする。IPルートエントリは目的地IPアドレス、ネットマスク、ゲートウェイIPアドレスを含んでいる。ネットマスクは目的地IPアドレスの範囲をIPルートエントリ内に記憶されている目的地IPアドレスと一致させるために使用される。ネットマスクはまた特別なホストのルートとネットワークのルートとの間の弁別を可能にする。ゲートウェイIPアドレスはARPを介して目的地イーサネット(登録商標)アドレスを解くときに使用される。
Static route
In addition to the default route, the IP router allows the generation of a static route to map the destination IP address to a special Ethernet interface or gateway host. The IP route entry includes a destination IP address, a netmask, and a gateway IP address. The netmask is used to match the destination IP address range with the destination IP address stored in the IP route entry. Netmasks also allow discrimination between special host routes and network routes. The gateway IP address is used when resolving the destination Ethernet (registered trademark) address via ARP.

IPルートリスト中に多数のルートを有することが可能であるので、IPルートエントリはダイナミックに割当てられたメモリ(この構造ではm1メモリと呼ばれる)に記憶される。各IPルートエントリは128ビットを使用する。各エントリの最後の32ビットは何等のデータも記憶しないで、64ビット境界に沿ってIPルートエンジンを整列するためにパッディングとして使用される。各IPルートエントリのフォーマットは図36に示されている。   Since it is possible to have multiple routes in the IP route list, IP route entries are stored in dynamically allocated memory (called m1 memory in this structure). Each IP route entry uses 128 bits. The last 32 bits of each entry do not store any data and are used as padding to align the IP route engine along a 64-bit boundary. The format of each IP route entry is shown in FIG.

IPルートリストは分類されたリンクリストとして構成される。IPルートがIPルートリストに付加されるので、これらはそれらのネットマスクにしたがって順序付けされ、最上位の特定のIPルートはリストの正面で現れ、最下位の特定のネットマスクを有するIPルートはリストの最後に置かれる。IPルートエントリのルートポインタフィールドはm1メモリアドレスを含み、そこでは次のIPルートエントリはm1メモリで発見されることができる。ルートポインタフィールドの第1(最上位)ビットはm1メモリアドレスが有効であり現在のものに続くルートが存在するか否かを決定するためのフラグとして使用される。ルートポインタフィールドのポインタ有効ビットが主張されないならば、IPルートリストにはさらにIPルートは存在せず、IPルートリストの最後に到達する。   The IP route list is configured as a classified link list. Since IP routes are added to the IP route list, they are ordered according to their netmask, with the highest specific IP route appearing in front of the list and the IP route with the lowest specific netmask listed. Placed at the end of. The route pointer field of the IP route entry contains the m1 memory address, where the next IP route entry can be found in the m1 memory. The first (most significant) bit of the route pointer field is used as a flag to determine whether the m1 memory address is valid and there is a route following the current one. If the pointer valid bit in the route pointer field is not asserted, there are no more IP routes in the IP route list and the end of the IP route list is reached.

目的地IPアドレスが放送またはマルチキャストIPアドレスであることが決定されないならば、IPルートリストは一致するIPルートエントリに対して検索される。一致がIPルートリストで見つからないならば、デフォルトルートがゲートウェイ情報を提供するために使用される。   If it is not determined that the destination IP address is a broadcast or multicast IP address, the IP route list is searched for a matching IP route entry. If no match is found in the IP route list, the default route is used to provide gateway information.

IPルータはまた多数の物理的およびループバックインターフェースの使用を可能にする。IPルートエントリのインターフェースIDフィールドを使用して、IPルータは出力するパケットをIT10Gの特定のイーサネット(登録商標)インターフェースへ誘導できる。インターフェースIDフィールドはまたARPリクエストを適切なイーサネット(登録商標)インターフェースへ導くために使用される。   IP routers also allow the use of multiple physical and loopback interfaces. Using the interface ID field of the IP route entry, the IP router can direct outgoing packets to a specific Ethernet interface of IT10G. The interface ID field is also used to route ARP requests to the appropriate Ethernet interface.

[ループバックアドレス]
目的地IPアドレスがIT10Gに属すか、ループバックIPアドレス(127.x.x.x)であるならば、出力するパケットはIT10Gにフィードバックされることが想定される。ループバック目的地に対するIPルータはIPルートリスト中に記憶されている。IT10Gに割当てられていないIPアドレスもまたループバックアドレスとして構成されることができる。このローカル再誘導を可能にするために、IPルートエントリのインターフェースIDフィールドは0×8に設定されなければならない。そうでなければ、IPルートエントリのインターフェースIDフィールドはイーサネット(登録商標)インターフェース(0×0、0×1、0×2など)の1つに設定されなければならない。
[Loopback address]
If the destination IP address belongs to IT10G or is a loopback IP address (127.xxx), it is assumed that an output packet is fed back to IT10G. The IP router for the loopback destination is stored in the IP route list. An IP address that is not assigned to the IT 10G can also be configured as a loopback address. In order to allow this local redirection, the interface ID field of the IP route entry must be set to 0x8. Otherwise, the interface ID field of the IP route entry must be set to one of the Ethernet interfaces (0x0, 0x1, 0x2, etc.).

[ルートの生成]
新しいIPルートはシステムインターフェース(例えばホストコンピュータ)から来る。システムインターフェースにより生成されるIPルートは静的ルートであり、これらがシステムインターフェースにより除去されるまでテーブルに残ることを意味している。システムインターフェースはIPルータモジュールレジスタインターフェースを介してルートを付加および除去する。
Generate route
The new IP route comes from the system interface (eg host computer). The IP routes generated by the system interface are static routes, meaning that they remain in the table until they are removed by the system interface. The system interface adds and removes routes via the IP router module register interface.

ICMP再誘導メッセージはIPパケットが正しくないゲートウェイホストへ送信されているときに送信される。ICMP再誘導メッセージは通常不正確に導かれたIPパケットに対して使用されるための正しいゲートウェイホストの情報を含んでいる。ICMP再誘導メッセージが受信されるとき、そのメッセージはシステムインターフェースにより処理される。システムインターフェースはIPルータのレジスタインターフェースを介してルートリストを更新し、既存のIPルートを更新し、または新しいIPルートを生成することに従事する。   An ICMP redirect message is sent when an IP packet is being sent to an incorrect gateway host. ICMP redirect messages usually contain the correct gateway host information to be used for incorrectly derived IP packets. When an ICMP redirect message is received, the message is processed by the system interface. The system interface is engaged in updating the route list via the IP router's register interface, updating existing IP routes, or creating new IP routes.

[ローカルネットワークのホストへのルーティング]
ローカルイーサネット(登録商標)ネットワークの他のホストへ直接パケットを導くために、IT10Gサブネットマスクを有するIPルートが生成されなければならない。このルートのゲートウェイとして別のホストを特定する代りに、ゲートウェイIPアドレスはこのルートがローカルネットワークを横切って直接的な接続を行うことを示すため0.0.0.0に設定されなければならない。
Routing to local network hosts
In order to direct packets directly to other hosts in the local Ethernet network, an IP route with an IT10G subnet mask must be created. Instead of identifying another host as the gateway for this route, the gateway IP address must be set to 0.0.0.0 to indicate that this route has a direct connection across the local network.

[ルートリクエストシグナリング]
各送信モジュールはルートをリクエストするためにIPルータへのその固有のインターフェースを有する。ルートのリクエストおよび受信に使用されるシグナリングは図37に示されている。
[Route Request Signaling]
Each sending module has its own interface to the IP router to request a route. The signaling used for requesting and receiving routes is shown in FIG.

モジュールがIPルートをリクエストするとき、リクエストするモジュールはルートリクエスト信号(例えばTCP_Route_Req)を主張し、目的地IPアドレス(図21のTCP_Trgt_IP)をIPルータへ提供する。一度IPルータが供給されたIPアドレスのためのルートを発見すると、IPルータはルートダン信号を主張し、目的地イーサネット(登録商標)アドレスを出力する。route_valid信号はIPルートが適切に発見された場合に送信モジュールに示すために使用される。ルートダン信号が主張されるときにroute_valid信号が主張されるならば、有効なルートが発見された。route_valid信号が主張されないならば、これはルーティングが成功しなかったことを意味する。このルーティングの失敗はデフォルトルートセットをもたないか。一致するIPルートエントリにより供給されるゲートウェイがダウンしており、ARPリクエストに応答しない等の幾つかの原因によるものである。ルート故障の場合には、送信モジュールは待機し、後に再度ルートを解決しようとするか、現在の接続試行を中止することに従事する。   When a module requests an IP route, the requesting module asserts a route request signal (eg, TCP_Route_Req) and provides a destination IP address (TCP_Trgt_IP in FIG. 21) to the IP router. Once the IP router finds a route for the supplied IP address, the IP router asserts a routed signal and outputs the destination Ethernet address. The route_valid signal is used to indicate to the sending module when an IP route is properly discovered. If the route_valid signal is asserted when the rootdan signal is asserted, a valid route has been found. If the route_valid signal is not asserted, this means that routing was not successful. Does this routing failure have a default route set? This is due to several causes such as the gateway supplied by the matching IP route entry is down and not responding to the ARP request. In the event of a route failure, the sending module waits and later tries to resolve the route again or engages in aborting the current connection attempt.

IPルートがホストまたはゲートウェイのIPアドレスに対するイーサネット(登録商標)アドレスを解くためにARP探索を必要とするとき、そのIPアドレスがARPキャッシュで発見されないならば遅延が生じる可能性がある。キャッシュの損失があるとき、即ちターゲットIPアドレスがARPキャッシュにエントリをもたないとき、ARPキャッシュはIPルータに損失を通知する。IPルータはその後、IPルートをリクエストした送信モジュールにARPキャッシュ損失が生じたという信号を送る。この時点で、送信モジュールは現在の接続の設定の遅延を選択するか、接続待ち行列の次の接続の設定を試みて、別のルートをリクエストしようとする。送信モジュールがIPルータへのルートリクエストを有しても、ARP探索は継続する。ARP探索のターゲットがアクチブであり、IT10GからのARPリクエストに応答するならば、ターゲットIPアドレスの解決されたイーサネット(登録商標)アドレスは後に使用される可能性があるためにARPキャッシュに付加される。注意:IPルータは多数の目立ったARPリクエストを有することができる。   When an IP route requires an ARP search to resolve an Ethernet address for a host or gateway IP address, there may be a delay if that IP address is not found in the ARP cache. When there is a cache loss, ie when the target IP address has no entry in the ARP cache, the ARP cache notifies the IP router of the loss. The IP router then sends a signal to the sending module that requested the IP route that an ARP cache loss has occurred. At this point, the sending module attempts to request another route by selecting a delay in setting up the current connection or trying to set up the next connection in the connection queue. Even if the transmission module has a route request to the IP router, the ARP search continues. If the target of the ARP search is active and responds to an ARP request from IT10G, the resolved Ethernet address of the target IP address is added to the ARP cache for possible later use. . Note: An IP router can have many outstanding ARP requests.

[個々のルートの表示]
静的ルートの生成後、ユーザは2つの方法でルートテーブルに記憶されたエントリを読み返すことができる。ユーザが所定のルートのターゲットIPアドレスを知っているならば、Show_Routeコマンドコードがそのルートのネットマスクおよびゲートウェイの表示のために使用されることができる。
Show individual routes
After generating the static route, the user can read back the entries stored in the route table in two ways. If the user knows the target IP address for a given route, the Show_Route command code can be used to display the netmask and gateway for that route.

ルートテーブル内のすべてのエントリを表示するため、Show_Indexコマンドが使用されることができる。Route_Indexレジスタを使用して、システムインターフェースは特殊性の順序でルートをアクセスしてもよい。さらに特別な(ホスト)ルートが最初に表示され、その後に特別性の少ない(ネットワーク)ルートが続く。例えばroute_index0×001を有するIPルートエントリはIPルートリストで最も特別なルートである。注意:デフォルトはインデックスゼロ(0×0000)に記憶される。Route_Foundレジスタはルートが適切に発見された場合に主張され、ルートデータはRoute_Trgt、Route_Mask。Route_Gwレジスタに記憶される。   The Show_Index command can be used to display all entries in the route table. Using the Route_Index register, the system interface may access routes in order of specificity. More special (host) routes are displayed first, followed by less specific (network) routes. For example, an IP route entry having route_index0 × 001 is the most special route in the IP route list. Note: The default is stored at index zero (0x0000). The Route_Found register is asserted when a route is properly found, and the route data is Route_Trgt and Route_Mask. Stored in the Route_Gw register.

[解決不能な目的地のキャッシング]
IPルータが目的地ホスト/ゲートウェイに対するイーサネット(登録商標)アドレスを解くことができないとき、ルータは20秒間、その目的地IPアドレスをキャッシュする。その時間中に、ルータがこれらのうちの1つのキャッシュされた解決不能な目的地に対するリクエストを受信するならば、IPルータは直ちにルート故障を有するルートをリクエストしているモジュールに応答する。この解決不能な目的地のキャッシングはアクセス数を共有されたm1メモリに減少することを目的としており、ここでARPキャッシュエントリが記憶される。解決不能な目的地のキャッシングは冗長ARPリクエストを避けるようにも動作する。注意:解決されないアドレスがキャッシュされる時間量はUnres_Cash_Timeレジスタを介してユーザ構成可能である。
[Caching of unresolvable destinations]
When the IP router cannot resolve the Ethernet address for the destination host / gateway, the router caches the destination IP address for 20 seconds. During that time, if the router receives a request for one of these cached unresolvable destinations, the IP router immediately responds to the module requesting the route with the route failure. This unresolvable destination caching aims to reduce the number of accesses to the shared m1 memory, where ARP cache entries are stored. Unresolvable destination caching also works to avoid redundant ARP requests. Note: The amount of time that unresolved addresses are cached is user configurable via the Unres_Cash_Time register.

[システム例外ハンドラ]
[概要]
以下の説明はシステム例外ハンドラの詳細である。このモジュールはIT10Gハードウェアが直接に処理できないデータが存在するときにはいつでも呼び出される。これは未知のイーサネット(登録商標)タイプのパケット、IGMPパケット、TCPまたはIPオプションなどであってもよい。それぞれのこれらの例外の場合、主要なパーサは例外ケースを検出するときシステム例外ハンドラを動作可能にする。システム例外ハンドラモジュールはデータを記憶し、処理される例外データが存在することをシステムインターフェース(典型的にはホストコンピュータで動作するアプリケーション)に通知し、データをシステムインターフェースへ送るように動作する。
[System exception handler]
[Overview]
The following description details the system exception handler. This module is called whenever there is data that the IT10G hardware cannot process directly. This may be an unknown Ethernet type packet, an IGMP packet, a TCP or IP option, or the like. For each of these exceptions, the main parser enables the system exception handler when detecting an exception case. The system exception handler module stores data, notifies the system interface (typically an application running on the host computer) that there is exception data to be processed, and operates to send the data to the system interface.

[例外ハンドラブロック図]
図38は例外ハンドラの1構成の概略ブロック図である。
[Exception handler block diagram]
FIG. 38 is a schematic block diagram of one configuration of the exception handler.

[例外ハンドラの動作理論]
例外メモリはオンチッププロセッサメモリの一部である。例外パケットを発生できる各ソースモジュールはそれら固有の例外バッファ開始アドレスと例外バッファ長レジスタとを有する。このモジュールはFIFOバッファに例外パケットを与え、それをオンチッププロセッサメモリに記憶するように待ち行列する。exception_fifo_full信号は例外FIFOバッファが一杯であることを示すために各呼モジュールへフィードバックされる。このモジュールは一度にただ1つの例外パケットをサービスすることができる。後続する例外パケットが受信される場合、これは先のパケットがメモリに記憶されるまで保持される。
[Theory of exception handler operation]
The exception memory is part of the on-chip processor memory. Each source module that can generate an exception packet has its own exception buffer start address and exception buffer length register. This module provides an exception packet to the FIFO buffer and queues it for storage in on-chip processor memory. The exception_fifo_full signal is fed back to each call module to indicate that the exception FIFO buffer is full. This module can service only one exception packet at a time. If a subsequent exception packet is received, this is held until the previous packet is stored in memory.

例外パケットはオンチッププロセッサメモリに記憶されるので、ホストコンピュータアクセスはこのモジュールを通して与えられない。   Since exception packets are stored in on-chip processor memory, host computer access is not granted through this module.

[メモリアロケータ1]
[概要]
このセクションではIPモジュール、ARPキャッシュ、ルートテーブル、オンチッププロセッサにサービスするために使用されるメモリアロケータ(malloc1)について説明する。このアロケータは最初にM1メモリをディスクリートなブロックに分割し、それらをリクエストのときに割当て、フリーにされたブロックをスタックに戻すように動作する。
[Memory allocator 1]
[Overview]
This section describes the memory allocator (malloc1) used to service the IP module, ARP cache, route table, and on-chip processor. This allocator operates by first dividing the M1 memory into discrete blocks, allocating them on request, and putting freed blocks back on the stack.

[動作理論]
malloc1はその動作を開始する前に入力された2つのパラメータを有する必要がある。これらはM1のメモリブロックの全体のサイズと、各メモリブロックのサイズである。1つのみのメモリサイズがこのアロケータでサポートされる。
[Theory of operation]
Malloc1 needs to have two parameters entered before starting its operation. These are the overall size of the M1 memory block and the size of each memory block. Only one memory size is supported by this allocator.

これらのパラメータの入力後、システムはM1_ControlレジスタでM1_Enableビットを主張する。これが生じたとき、アロケータはM1メモリブロックの上部から開始してブロックアドレスの埋め込みを開始する。即ちM1メモリブロックが全体で4Kバイトの深さであり、ブロックサイズが512バイトであるならば、M1メモリマップは図39に示されているように見える。   After entering these parameters, the system asserts the M1_Enable bit in the M1_Control register. When this happens, the allocator starts embedding the block address starting from the top of the M1 memory block. That is, if the M1 memory block is 4K bytes in total and the block size is 512 bytes, the M1 memory map will appear as shown in FIG.

4つのアドレスがM1ブロックアドレスに対してM1アドレス位置毎に維持されている。開始ブロックアドレスをメモリに維持することに加えて、Malloc1はまた16エントリキャッシュを含んでいる。初期化時に、第1の16アドレスはそのキャッシュに維持される。ブロックがリクエストされるとき、これらはキャッシュから取り出される。キャッシュ数がゼロに到達するとき、4つのアドレス(1つのメモリ読取)はメモリから読取られる。同様に、キャッシュがアドレスで満杯であるときにはいつでも。4つのアドレスはメモリに書き戻される。これはアロケータが最初にM1メモリからアドレスを読取った後にのみ実施する。   Four addresses are maintained for each M1 address location with respect to the M1 block address. In addition to maintaining the starting block address in memory, Malloc1 also includes a 16 entry cache. At initialization, the first 16 addresses are maintained in the cache. When blocks are requested, they are fetched from the cache. When the cache number reaches zero, four addresses (one memory read) are read from memory. Similarly, whenever the cache is full of addresses. The four addresses are written back to memory. This is done only after the allocator first reads the address from the M1 memory.

[TX/RX/CB/SAメモリアロケータ]
[概要]
このセクションではソケット送信(malloctx)、ソケット受信(mallocrx)、制御ブロック(malloccb)、SA(mallcsa)メモリで使用されるメモリアロケータを説明する。これらのアロケータはリクエスト時にメモリブロックを割当て、フリーにされたブロックをスタックに戻し、メモリを使用するため調停するように動作する。
[TX / RX / CB / SA memory allocator]
[Overview]
This section describes memory allocators used in socket send (malloctx), socket receive (malloccrx), control block (mallocb), and SA (mallsa) memory. These allocators operate to allocate memory blocks upon request, return freed blocks to the stack, and arbitrate to use memory.

[動作理論]
mallocはその動作の開始前に入力された幾つかのパラメータを有する必要がある。これらはMPメモリスペース内の開始および終了アドレスポインタ位置、および各メモリスペース内の各利用可能なブロックを表すビットマップである。2つのサイズのブロック、即ち128バイトと2kバイトがソケットデータメモリで利用可能である。CBメモリは固定した128バイトブロックを有する。すべてのアロケータもまた各メモリサイズのブロックアドレスに対して8エントリキャッシュを利用する。
[Theory of operation]
Malloc needs to have some parameters entered before the start of its operation. These are bitmaps representing the starting and ending address pointer locations in the MP memory space and each available block in each memory space. Two sizes of blocks are available in socket data memory: 128 bytes and 2k bytes. The CB memory has a fixed 128 byte block. All allocators also use an 8-entry cache for each memory size block address.

これらのパラメータの入力後、システムは制御レジスタ中のエネーブルビットを主張する。アロケータはその後メモリブロックを割当て、および割当て解除を開始することができる。   After entering these parameters, the system asserts the enable bit in the control register. The allocator can then allocate memory blocks and initiate deallocation.

[デフォルトメモリマップ]
図40は一体化されたネットワークスタックデータメモリの256Mバイトのメモリを想定したサンプルメモリマップを示しており、即ちMRXとMTXは共通の物理的メモリバンクを共有している。現在の構成はMRXとMTXの両者で外部DDR DRAMを使用するが、別の構成では、これらのメモリをオンチップで配置するか異なるタイプのメモリ(例えばSRAM)を使用することも可能である。
[Default memory map]
FIG. 40 shows a sample memory map assuming 256 Mbytes of integrated network stack data memory, ie MRX and MTX share a common physical memory bank. The current configuration uses external DDR DRAM for both MRX and MTX, but in other configurations it is possible to place these memories on-chip or to use different types of memory (eg SRAM).

[ネットワークスタックデータDDRブロック図]
ネットワークスタックデータDDR DRAMは送信および受信データバッファとオンチッププロセッサとの間で共用されている。データのブロック図のフローは図41に示されている。
[Network stack data DDR block diagram]
Network stack data DDR DRAM is shared between the transmit and receive data buffers and the on-chip processor. The flow of the data block diagram is shown in FIG.

データDDR DRAMアービトレータ411は異なるリソース間で共用されるDDR DRAMへのアクセスを調停するように動作する。全体的なDDR DRAM412もオンチッププロセッサのメモリスペースへマップされるメモリである。   Data DDR DRAM arbitrator 411 operates to arbitrate access to DDR DRAM shared between different resources. The overall DDR DRAM 412 is also memory that is mapped into the memory space of the on-chip processor.

[MTX DRAMインターフェースおよびデータフロー]
[概要]
以下の説明はmalloctxモジュールとデータDDR調停モジュールとの間のインターフェースの概要である。データフローを説明し、インターフェース信号をリストし、必要なタイミングの詳細を説明する。
[MTX DRAM interface and data flow]
[Overview]
The following description is an overview of the interface between the malloctx module and the data DDR arbitration module. Describes the data flow, lists interface signals, and details the required timing.

[データフロー]
3つの異なるアクセスタイプはMTX DRAMでサポートされる。これらはバースト書込み、バースト読取、単一アクセスである。malloctx413はこれらのサイクルタイプのそれぞれに対する異なるソースからのリクエストを調停するが、すべての3つのサイクルはデータDDRアービトレータから同時にリクエストされる。mtxarbサブユニットのブロック図が図42に示されている。
[data flow]
Three different access types are supported in MTX DRAM. These are burst write, burst read, single access. Malloctx 413 arbitrates requests from different sources for each of these cycle types, but all three cycles are requested simultaneously from the data DDR arbitrator. A block diagram of the mtxarb subunit is shown in FIG.

MTXメモリに書込まれるデータは最初にFIFOバッファに書込まれ、それからDDR DRAMにバースト書込みされる。   Data to be written to the MTX memory is first written to the FIFO buffer and then burst written to the DDR DRAM.

[RX DRAMインターフェースおよびデータフロー]
[概要]
このセクションはmallocrx414と受信ソケットデータDRAM制御装置との間のインターフェースを説明している。これはデータフローを説明し、インターフェース信号をリストし、必要なタイミングの詳細を示している。
[RX DRAM interface and data flow]
[Overview]
This section describes the interface between mallocrx 414 and the receive socket data DRAM controller. This describes the data flow, lists interface signals, and shows the required timing details.

[データフロー]
受信DRAMでは、最高の優先順位がメモリに書込まれているデータに与えられる。これはネットワークスタックがネットワークインターフェースから受信されているデータに追いつかなければならないためである。DRAMへの書き込みは最初にFIFOバッファへ行われる。すべてのデータがFIFOバッファへ書込まれると、制御装置はそれをDRAMへバースト書込みする。ジャンボフレームでは、TCP受信論理装置はバースト書込みリクエストを2Kサイズのチャンクへ分割する。
[data flow]
In the receiving DRAM, the highest priority is given to the data written in the memory. This is because the network stack must keep up with data being received from the network interface. Writing to the DRAM is first done to the FIFO buffer. When all the data is written to the FIFO buffer, the controller burst writes it to the DRAM. In jumbo frames, the TCP receiving logic unit divides burst write requests into 2K sized chunks.

DRAMからバースト読取されるデータでは、DRAM制御装置はメモリを読取り、PCI制御装置へ供給する1対のピンポンFIFOバッファへリクエストされたデータを書込む。これらのFIFOバッファはDRAMクロックからPCIクロックドメインへデータレートを移行するため必要とされる。   For data that is burst read from DRAM, the DRAM controller reads the memory and writes the requested data to a pair of ping-pong FIFO buffers that feed the PCI controller. These FIFO buffers are needed to move the data rate from the DRAM clock to the PCI clock domain.

[ネットワークスタックDDRブロック図]
ネットワークスタックDDRはCB、雑メモリ、SAメモリ間で共有される。データのブロック図のフローは図43に示されている。
[Network stack DDR block diagram]
The network stack DDR is shared among CB, miscellaneous memory, and SA memory. The flow of the data block diagram is shown in FIG.

NS DDRアービトレータは異なるリソース間で共用されたDDRへのアクセスを調停するように動作する。   The NS DDR arbitrator operates to arbitrate access to DDR shared between different resources.

[MCB DRAMインターフェースおよびデータフロー]
[概要]
このセクションはmalloccbモジュールとNS DDR調停モジュールとの間のインターフェースについて説明する。これはデータフローを示し、インターフェース信号をリストし、必要なタイミングの詳細を説明する。
[MCB DRAM interface and data flow]
[Overview]
This section describes the interface between the mallocb module and the NS DDR arbitration module. This shows the data flow, lists interface signals, and details the required timing.

[データフロー]
2つの異なるアクセスタイプがMCB DRAMに対してサポートされる。これらはバースト読取り、単一アクセスである。malloccbはこれらのサイクルタイプのそれぞれに対して異なるソースからのリクエストを調停するが、両者のサイクルはNS DDRアービトレータから同時にリクエストされる可能性がある。mcbarbサブユニットのブロック図は図44に示されている。
[data flow]
Two different access types are supported for MCB DRAM. These are burst read, single access. Mallocb arbitrates requests from different sources for each of these cycle types, but both cycles may be requested from the NS DDR arbitrator at the same time. A block diagram of the mcbarb subunit is shown in FIG.

[ネットワークスタックメモリマップ]
図45はネットワークスタックのデフォルトメモリマップを示している。示されているアドレスはバイトアドレスである。
[Network stack memory map]
FIG. 45 shows a default memory map of the network stack. The address shown is a byte address.

[雑メモリ]
[概要]
以下の説明は512Kバイトの雑メモリバンクの詳細である。このメモリは以下列挙する目的で使用される。
・半分開いた制御ブロック(メイン)、
・TCPポート認証テーブル、
・UDPソースポート使用テーブル、
・TCPソースポート使用テーブル、
・待機時間制御ブロック割当てテーブル、
・設定された制御ブロック割当てテーブル、
・TXメモリブロック割当てテーブル(128および2Kビットブロックの両者)、
・RXメモリブロック割当てテーブル(128および2Kビットブロックの両者)、
・TCP RXからTXへのパケットのFIFOバッファ、
・ソケットデータの有効なビットマップ、
・サーバポート情報、
・SAエントリ割当てテーブル。
[Miscellaneous memory]
[Overview]
The following description is a detail of a 512 Kbyte miscellaneous memory bank. This memory is used for the purposes listed below.
-Half-open control block (main),
TCP port authentication table,
・ UDP source port usage table,
TCP source port usage table,
-Wait time control block allocation table,
・ Set control block allocation table,
TX memory block allocation table (both 128 and 2K bit blocks),
RX memory block allocation table (both 128 and 2K bit blocks),
FIFO buffer for packets from TCP RX to TX,
A valid bitmap of socket data,
Server port information,
SA entry allocation table.

[メモリ組織および性能]
雑メモリはCBメモリと共用される。大部分のリソースはアクセスで最小にするために256ビットワードのデータをアクセスする。
[Memory organization and performance]
The miscellaneous memory is shared with the CB memory. Most resources access 256-bit words of data to minimize access.

[記憶されたデータの定義]
[半分開いた制御ブロック]
これらは半分開いたTCP接続に対する制御ブロックである。各制御ブロックは大きさが64バイトであり、全体で4Kの制御ブロックが存在する。それ故、半分開いた制御ブロックに必要なバイト数は4K×64=256Kバイトである。
[Definition of stored data]
[Half-open control block]
These are control blocks for half-open TCP connections. Each control block is 64 bytes in size, and there are 4K control blocks in total. Therefore, the number of bytes required for a half-open control block is 4K × 64 = 256K bytes.

[TCPポート認証テーブル]
このテーブルは接続を受け入れるために認証されるTCPポートの追跡を維持する。64Kの可能なポートのそれぞれの1ビットを維持する。それ故、このテーブルは64K/8=8Kバイトを使用する。代わりの構成では、TCPポート認証テーブルおよびUDPおよびTCPソースポート使用テーブルがホストコンピュータに維持されることができる。
[TCP port authentication table]
This table keeps track of the TCP ports that are authenticated to accept connections. Maintain one bit for each of the 64K possible ports. Therefore, this table uses 64K / 8 = 8K bytes. In an alternative configuration, a TCP port authentication table and a UDP and TCP source port usage table can be maintained on the host computer.

[UDPソースポート使用テーブル]
このテーブルはローカルに初期化される接続に使用されるソースポートに利用可能なUDPPポートを追跡する。64Kの可能なポートのそれぞれの1ビットを維持する。それ故、このテーブルは64K/8=8Kバイトを使用する。このテーブルはローカルUDPサービスポートおよび使用されることができるポートを含むべきではない。
[UDP source port usage table]
This table keeps track of the available UDPP ports for the source ports used for locally initialized connections. Maintain one bit for each of the 64K possible ports. Therefore, this table uses 64K / 8 = 8K bytes. This table should not include local UDP service ports and ports that can be used.

[TCPソースポート使用テーブル]
このテーブルはローカルに初期化される接続に使用されるソースポートに利用可能なポート数を追跡する。64Kの可能なポートのそれぞれの1ビットを維持する。それ故、このテーブルは64K/8=8Kバイトを使用する。
[TCP source port usage table]
This table keeps track of the number of ports available for source ports used for locally initialized connections. Maintain one bit for each of the 64K possible ports. Therefore, this table uses 64K / 8 = 8K bytes.

[待機時間制御ブロック割当てテーブル]
これは待機時間制御ブロックの割当てテーブルである。32Kの待機時間制御ブロックのそれぞれの1ビットを維持する。それ故、この割当てテーブルは32K/8=4Kバイトを使用する。このモジュールは全部で16ビットデータバスを使用する。
[Wait time control block allocation table]
This is a waiting time control block allocation table. Maintain one bit of each of the 32K wait time control blocks. Therefore, this allocation table uses 32K / 8 = 4K bytes. This module uses a 16-bit data bus in total.

[設定された制御ブロック割当てテーブル]
これは設定された制御ブロックの割当てテーブルである。64Kの制御ブロックのそれぞれの1ビットを維持する。それ故、この割当てテーブルは64K/8=8Kバイトを使用する。
[Set control block allocation table]
This is a set control block allocation table. Maintain one bit of each of the 64K control blocks. Therefore, this allocation table uses 64K / 8 = 8K bytes.

[TXソケットデータバッファブロック割当てテーブル]
このテーブルは2Kバイトのブロック割当てテーブルと128Kバイトのブロック割当てテーブルから作られ、それらはダイナミックに割当てられた送信データバッファメモリで使用される。各タイプのブロック数は構成可能であるが、結合された割当てテーブルの両者のサイズは72Kバイトに固定される。これは最大で475Kの128バイトブロックを可能にする。このレベルで、2Kバイトブロックの数は98Kである。
[TX socket data buffer block allocation table]
This table is made up of a 2 Kbyte block allocation table and a 128 Kbyte block allocation table, which are used in the dynamically allocated transmit data buffer memory. The number of blocks of each type is configurable, but the size of both of the combined allocation tables is fixed at 72K bytes. This allows for a maximum of 475K 128 byte blocks. At this level, the number of 2K byte blocks is 98K.

[RXソケットデータバッファブロック割当てテーブル]
このテーブルは2Kバイトのブロック割当てテーブルと128Kバイトのブロック割当てテーブルから作られ、それらはダイナミックに割当てられた受信データバッファメモリで使用される。各タイプのブロック数は構成可能であるが、結合された割当てテーブルの両者のサイズは72Kバイトに固定される。これは最大で475Kの128バイトブロックを可能にする。このレベルで、2Kバイトブロックの数は98Kである。
[RX socket data buffer block allocation table]
This table is made up of a 2 Kbyte block allocation table and a 128 Kbyte block allocation table, which are used in the dynamically allocated receive data buffer memory. The number of blocks of each type is configurable, but the size of both of the combined allocation tables is fixed at 72K bytes. This allows for a maximum of 475K 128 byte blocks. At this level, the number of 2K byte blocks is 98K.

[TCP RX FIFOバッファ]
このFIFOバッファはTCP受信論理装置からTCP送信論理装置へのパケット送信リクエストの追跡を維持するために使用される。各TCP RX FIFOバッファエントリは、全部で4バイト(4つのフラグ、26ビットアドレス、2つの未使用ビット)で幾つかの制御フラグおよび制御ブロックアドレスから作られる。このTCP RX FIFOバッファは1024ワードの深さであり、それ故1024×4=4Kバイトを必要とする。
[TCP RX FIFO buffer]
This FIFO buffer is used to keep track of packet transmission requests from the TCP receiving logic to the TCP sending logic. Each TCP RX FIFO buffer entry is made up of several control flags and control block addresses with a total of 4 bytes (4 flags, 26-bit address, 2 unused bits). This TCP RX FIFO buffer is 1024 words deep and therefore requires 1024 × 4 = 4K bytes.

[ソケットデータの利用可能なビットマップ]
このビットマップはホストシステムに送信される準備がされているデータを有する64Kソケットを表している。各ソケットで1ビットを維持する。それ故、このビットマップは64K/8=4Kバイトを使用する。
[Available bitmap of socket data]
This bitmap represents a 64K socket with data ready to be sent to the host system. One bit is maintained in each socket. This bitmap therefore uses 64K / 8 = 4K bytes.

[SAエントリ割当てテーブル]
これはSAエントリの割当てテーブルである。各64K SAエントリで1ビットを維持する。それ故、この割当てテーブルは64K/8=4Kバイトを使用する。
[SA entry allocation table]
This is an SA entry allocation table. One bit is maintained for each 64K SA entry. Therefore, this allocation table uses 64K / 8 = 4K bytes.

[サーバポート情報]
このデータベースはLISTEN状態で開かれているTCPポートに対するパラメータ情報の記憶に使用される。これらのサーバポートはこれらが開かれるまでそれらに関連するCBをもたないので、ポート特定パラメータはこの領域に維持される。各ポートエントリは2バイトからなり、64Kの可能なポートが存在する。それ故、このデータベースは64K×2=128Kバイトを必要とする。
[Server port information]
This database is used to store parameter information for TCP ports opened in LISTEN state. Because these server ports do not have a CB associated with them until they are opened, port specific parameters are maintained in this area. Each port entry consists of 2 bytes and there are 64K possible ports. Therefore, this database requires 64K × 2 = 128K bytes.

[雑メモリマップ]
雑メモリに使用されるメモリマップは構成可能である。デフォルト設定は図46に示されている。ブロックはスケールされない。
[Miscellaneous memory map]
The memory map used for miscellaneous memory is configurable. The default settings are shown in FIG. The block is not scaled.

[雑メモリの動作理論]
[モジュールの初期化]
CPUが雑メモリアービトレータを起動する前に初期化する必要があることはほとんどない。デフォルトメモリマップが使用されるならば、CPUはMisc_Mem_ControlレジスタでMM_Enableビットを主張することによりアービトレータを使用可能にできる。
[Miscellaneous memory operation theory]
[Module initialization]
It is rarely necessary for the CPU to initialize before starting the miscellaneous memory arbitrator. If the default memory map is used, the CPU can enable the arbitrator by asserting the MM_Enable bit in the Misc_Mem_Control register.

非デフォルトメモリマップが使用されるならば、すべてのベースアドレスレジスタはアービトレータが使用可能になる前に初期化されなければならない。プログラムされたベースアドレスが任意のオーバーラップするメモリ領域を発生しないことを確実にすることがホストコンピュータソフトウェアの役目である。これをチェックするハードウェアは与えられない。   If a non-default memory map is used, all base address registers must be initialized before the arbitrator can be used. It is the responsibility of the host computer software to ensure that the programmed base address does not generate any overlapping memory areas. No hardware is provided to check this.

[CPUアクセス]
CPUは雑メモリの任意の位置をアクセスできる。これは最初にMM_CPU_Addレジスタ(0×1870−0×1872)へのアドレスにおいてプログラミングし、バイトを読取るかMM_CPU_Dataレジスタ(0×1874)へ書込むことによってこれを行う。アドレスレジスタはデータレジスタがアクセスされる毎に自動的にインクリメントする。
[CPU access]
The CPU can access any location in the miscellaneous memory. This is done by first programming at the address to the MM_CPU_Add register (0x1870-0x1872) and reading bytes or writing to the MM_CPU_Data register (0x1874). The address register automatically increments each time the data register is accessed.

[MIBサポート]
[概要]
このセクションではIT10Gネットワークスタックに組込まれたMIBサポートを説明する。これはレジスタの定義、動作理論、MIBが何に使用されるかの概要を含んでいる。
[MIB support]
[Overview]
This section describes the MIB support built into the IT10G network stack. This includes register definitions, theory of operation, and an overview of what MIBs are used for.

[SNMPおよびMIBの前置き]
SNMPはSNMP管理局がネットワーク接続された装置の統計およびその他の情報を得ることを可能にし、装置が構成されることを可能にする管理プロトコルである。装置で動作するソフトウェアはエージェントと呼ばれる。エージェントはUDPソケットの上部で動作し、SNMP管理局からのリクエストを処理する。エージェントはまたある事象が装置で生じたときにSNMP管理局へトラップを送信することもできる。SNMP RFCは、共にグループ化されるとき管理情報ベース(MIB)と呼ばれる標準的な情報オブジェクトのセットを文書化している。ベンダはまたRFCで規定されている応用可能な標準的MIBに加えて、これらがサポートする固有のMIBも規定することができる。
[Preface of SNMP and MIB]
SNMP is a management protocol that allows an SNMP management station to obtain statistics and other information about networked devices and allows the devices to be configured. Software that runs on the device is called an agent. The agent runs on top of the UDP socket and processes requests from the SNMP management station. The agent can also send a trap to the SNMP management station when an event occurs on the device. The SNMP RFC documents a standard set of information objects called Management Information Base (MIB) when grouped together. Vendors can also define the specific MIBs they support in addition to the applicable standard MIBs specified in the RFC.

標準的なMIBは特定されるタイプの大部分の装置が提供しなければならない情報を規定する。幾つかの情報はSNMPエージェントソフトウェアにより完全に処理されることができ、残りはオペレーティングシステム、ドライバおよび装置からの幾らかのレベルのサポートを必要とする。SNMPサポートは主要な転送可能物、ハードウェア、埋設されたソフトウェア、ドライバの3つのすべてで行われる。   Standard MIBs specify the information that most devices of a specified type must provide. Some information can be completely processed by the SNMP agent software, the rest requires some level of support from the operating system, drivers and devices. SNMP support is provided by all three main transferables, hardware, embedded software, and drivers.

大部分のケースでは、ハードウェアサポートはハードウェアで構成するネットワーク化層に関連するあるカウンタの統計的な情報収集に限定される。割込みもまたある事象でトリガーされることができる。埋設されたソフトウェアの開発はまたICMP、例外処理等のソフトウェアで実行される層に対するカウンタをサポートする。さらに、埋設されたソフトウェアはARPテーブルエントリ、TCP/UDPソケット状態、およびその他の非カウンタ統計データのような事柄について報告できるようにハードウェアにより生成されたデータベースに問い合わせることができる。ドライバのサポートは、関連するオブジェクトをSNMPエージェントに戻すことができるAPIへ埋設されたプラットフォームをインターフェースし、SNMPエージェントの幾らかのレベルの構成を可能にすることに焦点が置かれる。   In most cases, hardware support is limited to the collection of statistical information on certain counters associated with the networking layer comprising hardware. Interrupts can also be triggered by certain events. Embedded software development also supports counters for layers implemented in software, such as ICMP and exception handling. In addition, embedded software can query a database generated by hardware to report on things such as ARP table entries, TCP / UDP socket status, and other non-counter statistics. Driver support is focused on interfacing an embedded platform to an API that can return related objects back to the SNMP agent, allowing some level of configuration of the SNMP agent.

[MMUおよびタイマモジュール]
[概要]
以下の説明は汎用目的のタイマとシステムで使用されるMMUの概要を提供する。
[MMU and timer module]
[Overview]
The following description provides an overview of MMUs used in general purpose timers and systems.

[CPUタイマ]
先のタイマからカスケードされるか独立している4つの汎用目的の32ビットタイマが設けられる。すべてのタイマはシングルショットまたはループモードで動作されることができる。さらに、各タイマにより使用される前に主要なコアクロックを分割することのできるクロックプリスケーラが設けられる。これは最小のコード変化を異なるコアクロック周波数に対して可能にする。
[CPU timer]
Four general purpose 32-bit timers are provided that are cascaded or independent of the previous timer. All timers can be operated in single shot or loop mode. In addition, a clock prescaler is provided that can divide the main core clock before being used by each timer. This allows minimal code changes for different core clock frequencies.

[タイマテストモード]
各個々のタイマは対応するタイマ制御レジスタにTimer_Testビットを主張することによりテストモードにされることができる。このモードが起動されると、32ビットカウンタは8ビットクロックデバイダ設定の3つのlsbにしたがって異なるレートで増加する。
[Timer test mode]
Each individual timer can be put into test mode by asserting the Timer_Test bit in the corresponding timer control register. When this mode is activated, the 32-bit counter is incremented at different rates according to the three lsb of the 8-bit clock divider setting.

[オンチッププロセッサMMU]
オンチッププロセッサはプロセッサの4Gバイトメモリスペースを異なる領域に分割するためにMMUを使用する。各領域はベースアドレスとアドレスマスクで個々に特定されることができる。領域はまたオーバーラップしてもよいが、この場合共用されたメモリ領域から読み返されるデータは予測不可能である。
[On-chip processor MMU]
On-chip processors use the MMU to divide the processor's 4 Gbyte memory space into different regions. Each area can be individually specified by a base address and an address mask. The areas may also overlap, but in this case the data read back from the shared memory area is unpredictable.

[オンチッププロセッサDRAMインターフェースおよびデータフロー]
[概要]
このセクションではオンチッププロセッサとネットワークスタック(NS)データDDR調停モジュールとの間のインターフェースを説明する。これはデータフローを示し、インターフェース信号をリストし、必要なタイミングを詳細に説明する。
[On-chip processor DRAM interface and data flow]
[Overview]
This section describes the interface between the on-chip processor and the network stack (NS) data DDR arbitration module. This shows the data flow, lists the interface signals, and details the required timing.

[データフロー]
3つの異なるアクセスタイプがオンチッププロセッサDRAMでサポートされる。これらはバースト書込み、バースト読取、単一アクセスである。さらに、連続する単一アクセスがDRAMを放棄せずにオンチッププロセッサにより行われるようにロックが適用されることができる。オンチッププロセッサメモリのアービトレータはこれらのサイクルタイプのそれぞれで異なるソースからのリクエストを調停するが、すべての3つのサイクルはNS DDRアービトレータから同時にリクエストされる。レジスタビットを介して使用可能にする必要があるとき、オンチッププロセッサ自体だけがロック特性を使用すると仮定される。
[data flow]
Three different access types are supported by the on-chip processor DRAM. These are burst write, burst read, single access. Furthermore, a lock can be applied so that successive single accesses are made by the on-chip processor without giving up the DRAM. The on-chip processor memory arbitrator arbitrates requests from different sources in each of these cycle types, but all three cycles are requested simultaneously from the NS DDR arbitrator. When it needs to be enabled via register bits, it is assumed that only the on-chip processor itself uses the lock feature.

[命令/状態ブロックの動作理論]
[概要]
以下の説明は、ホスト、オンチッププロセッサ、ネットワークスタック間を通過する命令ブロック(IB)と状態ブロック(SB)の動作理論の概要である。それはまたMDLの概念をカバーする。
[Operation theory of instruction / state block]
[Overview]
The following description outlines the theory of operation of the instruction block (IB) and state block (SB) passing between the host, on-chip processor, and network stack. It also covers the concept of MDL.

個々のIBおよびSBは待ち行列に連結される。IB待ち行列とSB待ち行列が存在する。各待ち行列はホストコンピュータコンポーネントとオンチッププロセッサコンポーネントとを有する。また、各IB待ち行列は関連するSB待ち行列を有する。一致するIBとSB待ち行列は共にチャンネルを形成する。これは図47に示されている。   Individual IBs and SBs are linked to a queue. There are IB queues and SB queues. Each queue has a host computer component and an on-chip processor component. Each IB queue also has an associated SB queue. Matching IB and SB queues together form a channel. This is illustrated in FIG.

注意:すべての状態および命令待ち行列の長さは16バイトの倍数でなければならず、DWORD整列される。 Note: All state and instruction queue lengths must be multiples of 16 bytes and are DWORD aligned.

好ましい実施形態は4つのチャンネルをサポートする。各待ち行列(IBとSBの両者)では、待ち行列記述子が存在する。これらの記述子は待ち行列の長さと共に、待ち行列の存在する場所と、読取および書込みポインタを詳細に示している。各待ち行列は円形のFIFOバッファとして扱われる。各待ち行列を規定するパラメータはホストメモリ利用を構成するパラメータに対してホストレジスタインターフェース中のレジスタと、オンチッププロセッサメモリ利用を規定する全般的なネットワークスタックレジスタスペースのレジスタに分割される。待ち行列記述子のフォーマットは以下のテーブルで示されている。ここでリストされているアドレスオフセットは待ち行列記述子レジスタの開始に関連する。   The preferred embodiment supports four channels. In each queue (both IB and SB) there is a queue descriptor. These descriptors detail the location of the queue and the read and write pointers along with the length of the queue. Each queue is treated as a circular FIFO buffer. The parameters that define each queue are divided into registers in the host register interface for the parameters that make up host memory usage, and general network stack register space registers that define on-chip processor memory usage. The format of the queue descriptor is shown in the following table. The address offset listed here is relative to the start of the queue descriptor register.

命令ブロック待ち行列の処理フローは図48に示されている。これはまたIBパーサモジュールとの関連も示している。   The processing flow of the instruction block queue is shown in FIG. This also shows the association with the IB parser module.

[SBパシング]
ネットワークスタックと、オンチッププロセッサと、ホストコンピュータとの間を通過する状態ブロックのデータフローを示すブロック図が図49に示されている。
[SB passing]
A block diagram showing the data flow of the state block passing between the network stack, the on-chip processor, and the host computer is shown in FIG.

SBタイマ閾値は統合ネットワークアダプタハードウェア中の主要な割込み集約機構である。割込み集約は統合ネットワークアダプタとホストコンピュータとの間の割り込みの数を減らし、割り込みの減少またはその集合はデータ処理能力を増加する。   The SB timer threshold is the primary interrupt aggregation mechanism in the integrated network adapter hardware. Interrupt aggregation reduces the number of interrupts between the integrated network adapter and the host computer, and the reduction or collection of interrupts increases data processing capabilities.

HWは一般的なSBをオンチッププロセッサへ送信し、ソケット特定SBを直接的にホストコンピュータへ送信できる。ホストコンピュータの状態メッセージはソケット設定、RX DMA、CB_Create、Socket_RST状態メッセージを含んでいる。   The HW can send a general SB to the on-chip processor and send a socket specific SB directly to the host computer. Host computer status messages include socket set, RX DMA, CB_Create, Socket_RST status messages.

[HWからホストへのSB]
ソケット特定事象が生じるとき、CBの所有者はソケットCB構造中のHSビットを検査することにより決定される。ソケットがホストコンピュータに属すならば、CBチャンネル番号もCBから読取られる。そのチャンネル番号は事象通知と共にHW状態メッセージ発生装置(statgenモジュール)491へ送信される。
[SB from HW to host]
When a socket specific event occurs, the owner of the CB is determined by examining the HS bit in the socket CB structure. If the socket belongs to the host computer, the CB channel number is also read from the CB. The channel number is transmitted to the HW status message generator (statgen module) 491 together with the event notification.

statgenモジュールは適切なSBを形成し、そのSBを4つのうちの1つのDMA FIFOバッファ492へ位置させる。これらのFIFOバッファは物理的にオンチッププロセッサメモリ中に位置し、オンチッププロセッサSB FIFOバッファアドレスとオンチッププロセッサSB FIFOバッファ長とにより特定される。   The statgen module forms the appropriate SB and places the SB in one of the four DMA FIFO buffers 492. These FIFO buffers are physically located in the on-chip processor memory and are identified by the on-chip processor SB FIFO buffer address and the on-chip processor SB FIFO buffer length.

[HWからオンチッププロセッサへのSB]
非ソケット特定事象、即ち例外イーサネット(登録商標)パケットが生じるとき、statgenモジュールは適切なSBを発生し、それをオンチッププロセッサメモリに規定される1つの状態メッセージ待ち行列に送信する。割込みはstatgen_intが使用可能になるならば、このときにオンチッププロセッサに対して発生されることができる。ハードウェアからオンチッププロセッサへ規定されるただ1つの状態メッセージ待ち行列だけが存在し、すべてのSBはこの1つの待ち行列へ行く。
[SB from HW to on-chip processor]
When a non-socket specific event, ie an exception Ethernet packet, occurs, the statgen module generates an appropriate SB and sends it to one status message queue defined in the on-chip processor memory. An interrupt can be generated to the on-chip processor at this time if statgen_int becomes available. There is only one status message queue defined from hardware to the on-chip processor, and all SBs go to this one queue.

SB待ち行列は実際にオンチッププロセッサメモリに存在する。エントリがこのメモリ領域に書込まれるとき、それらはSTAT_READ_DATAレジスタ(ネットワークスタック全般レジスタ0×005C−0×005F)を介して読取られるように自動的にオンチッププロセッサのレジスタFIFOバッファへ引き込まれる。オンチッププロセッサはまたどのぐらいの量のデータが0×005AでSTAT_FIFO_FILLEDレジスタを読取ることにより利用可能であるかを見るためにポールすることもできる。このレジスタは待ち行列で利用可能な二重ワード数を戻す。   The SB queue actually exists in the on-chip processor memory. As entries are written to this memory area, they are automatically pulled into the on-chip processor's register FIFO buffer to be read via the STAT_READ_DATA register (network stack general register 0x005C-0x005F). The on-chip processor can also poll to see how much data is available at 0x005A by reading the STAT_FIFO_FILLED register. This register returns the number of double words available in the queue.

[オンチッププロセッサからホストコンピュータへのSB]
オンチッププロセッサがSBをホストのSB待ち行列の1つへ送信することを必要とするとき、これをstatgen(状態発生)ハードウェアモジュールを介して送信する。この場合、オンチッププロセッサはそのメモリにSBを発生し、このSBの開始アドレス、SBのチャンネル番号、statgenモジュールに送信されるCBの長さをプログラムする。HWはその後、SB(または複数のSB)をホストへの適切なSB待ち行列へ転送する。このようにしてオンチッププロセッサとHWからのSBはSB DMAエンジン493を供給する同一のSB待ち行列中で混合される。
[SB from on-chip processor to host computer]
When the on-chip processor needs to send an SB to one of the host's SB queues, it sends it via a statgen hardware module. In this case, the on-chip processor generates an SB in its memory and programs the start address of this SB, the channel number of the SB, and the length of the CB sent to the statgen module. The HW then forwards the SB (or SBs) to the appropriate SB queue to the host. In this way, the SBs from the on-chip processor and HW are mixed in the same SB queue supplying the SB DMA engine 493.

オンチッププロセッサはSBが割込みを介してまたは状態ビットのポーリングにより適切なSB待ち行列へ転送されたことを通知されることができる。この機能の任意のパラメータを書込む前に、オンチッププロセッサはstatgenモジュールが任意の先のSBリクエストの転送を完了していることを確実にすべきであり、即ちオンチッププロセッサはSBビットがstatgenコマンドレジスタで主張されていないことを確証すべきである。   The on-chip processor can be notified that the SB has been transferred to the appropriate SB queue via an interrupt or by polling status bits. Before writing any parameters of this function, the on-chip processor should ensure that the statgen module has completed the transfer of any previous SB request, i.e. the on-chip processor has the SB bit set to statgen. It should be confirmed that it is not claimed in the command register.

[MDL処理]
MDL(メモリ記述子リスト)は最初にホストコンピュータメモリからDDR DRAMのオンチッププロセッサメモリへDMAされる。オンチッププロセッサはMDL DDRアドレスに基づいて、MDLハンドルをホストへ戻す。
[MDL processing]
The MDL (Memory Descriptor List) is first DMAed from the host computer memory to the DDR DRAM on-chip processor memory. The on-chip processor returns an MDL handle to the host based on the MDL DDR address.

MDLハンドル、MDLへのオフセット、転送長を含んでいるSendMDL32/64IBはIBパーサにより解析され、以下の動作を行う。   The Send MDL 32 / 64IB including the MDL handle, the offset to the MDL, and the transfer length is analyzed by the IB parser and performs the following operations.

MDLの第1のエントリを読取り、特定されたオフセットがこのエントリ内であるかを理解する。この決定をオフセットと第1のMDLエントリの長さと比較することにより行う。   Read the first entry in the MDL and understand if the specified offset is within this entry. This determination is made by comparing the offset with the length of the first MDL entry.

第1のMDLのエントリ内に入らないならば、次のMDLエントリを読取る。最終的に正しいMDLエントリを発見するとき、これはMDL中のアドレスを使用してTX DMA転送を待ち行列する。転送はオフセットが開始する点から多数のMDLエントリに及ぶ。   If it does not fall within the first MDL entry, the next MDL entry is read. When it finally finds the correct MDL entry, it queues a TX DMA transfer using the address in the MDL. The transfer spans a number of MDL entries from the point where the offset begins.

オンチッププロセッサがIBを獲得するとき、オンチッププロセッサはオフセットをソケットCBにプログラムする。CBがこの情報を獲得するとき、これはデータをDMAできる。代りに、ホストコンピュータが意外に早くオフセットを知るならば、オフセットを意外に早くCBへプログラムできる。   When the on-chip processor acquires IB, the on-chip processor programs the offset into socket CB. When the CB gets this information, it can DMA the data. Alternatively, if the host computer knows the offset unexpectedly early, the offset can be programmed into the CB unexpectedly early.

RX DMA状態メッセージが発生される前に、DMAされなければならないバイト数を特定する転送閾値は依然としてMDLモードで応用可能である。   The transfer threshold specifying the number of bytes that must be DMAed before the RX DMA status message is generated is still applicable in MDL mode.

[命令ブロックおよび状態メッセージ]
[概要]
以下の説明は命令ブロックおよび状態メッセージフォーマットの詳細である。ホストはIT10Gハードウェアへコマンドを転送するためにIBを使用し、IT10Gハードウェアは情報をオンチッププロセッサとホストコンピュータへ転送するために状態ブロックを使用する。
[Instruction block and status message]
[Overview]
The following description details the instruction block and status message format. The host uses the IB to transfer commands to the IT10G hardware, and the IT10G hardware uses status blocks to transfer information to the on-chip processor and the host computer.

[命令ブロック構造]
ハードウェアが直接解析する唯一のIBは種々の形態のSend_Commandである。
[Instruction block structure]
The only IB that the hardware directly analyzes is the various forms of Send_Command.

[HW解析された命令]
これらの命令はデータを送信し、所定のソケットの受信パラメータを閉じるかポストするようにIT10Gハードウェアにリクエストするために使用される。TCP、UDP、32ビットおよび64ビットホストコンピュータメモリアドレシングを処理するためにSEND命令には4つの形態がある。
[HW analyzed instruction]
These instructions are used to send data and request the IT10G hardware to close or post the receive parameters for a given socket. There are four forms of the SEND instruction to handle TCP, UDP, 32-bit and 64-bit host computer memory addressing.

[iSCSIサポート]
IT10Gの1実施形態はiSCSI PDUヘッダをアセンブルするためにホストコンピュータを使用するが、別の実施形態ではiSCSI PDUをアセンブルし処理するためにIT10Gハードウェアとオンチッププロセッサを使用する。両実施形態を以下説明する。
[ISCSI support]
One embodiment of IT10G uses a host computer to assemble the iSCSI PDU header, while another embodiment uses IT10G hardware and an on-chip processor to assemble and process the iSCSI PDU. Both embodiments are described below.

[iSCSIサポート]
[概要]
このセクションはiSCSI PDUヘッダをアセンブルするためにホストコンピュータを使用するIT10GのiSCSIのハードウェアサポートを説明している。IT10Gハードウェアは送信および受信のためにiSCSI CRCの計算をオフロードし、ハードウェアは送信のために固定したインターバルのマーカ(FIM)を使用してiSCSIフレーミングを行う。フレーミングは現在受信用にはサポートされない。
[ISCSI support]
[Overview]
This section describes IT10G iSCSI hardware support using a host computer to assemble the iSCSI PDU header. IT10G hardware offloads the calculation of iSCSI CRC for transmission and reception, and hardware performs iSCSI framing using a fixed interval marker (FIM) for transmission. Framing is not currently supported for reception.

[動作理論]
iSCSIプロトコルはハードウェア機能の定義の規範的な文書であるIETF iSCSIインターネット草案に規定されている。iSCSIプロトコルはTCP/IPバイトストリームで伝送されるプロトコルデータユニット(PDU)中のSCSIコマンドをカプセル化する(SCSIコマンドはコマンド記述子ブロックまたはCDBである)。SCSIコマンドは幾つかの標準で文書化されている。ハードウェアはiSCSIヘッダセグメントとiSCSIデータセグメントをホストiSCSIドライバから受取り、iSCSI PDUを送信するように準備する。ハードウェアはiSCSI PDUを受信し、iSCSI CRCを計算し、その結果をホストiSCSIドライバへ送付する。
[Theory of operation]
The iSCSI protocol is specified in the IETF iSCSI Internet Draft, which is a normative document for defining hardware functions. The iSCSI protocol encapsulates SCSI commands in protocol data units (PDUs) transmitted in a TCP / IP byte stream (a SCSI command is a command descriptor block or CDB). SCSI commands are documented in several standards. The hardware receives the iSCSI header segment and the iSCSI data segment from the host iSCSI driver and prepares to send an iSCSI PDU. The hardware receives the iSCSI PDU, calculates the iSCSI CRC, and sends the result to the host iSCSI driver.

ハードウェアは主としてiSCSI PDUの外部フォーマットに関連され、これはiSCSIヘッダセグメントとiSCSIデータセグメントとを含んでいる。iSCSI PDUは必要な基本ヘッダセグメント(BHS)と、それに続くゼロ以上の追加ヘッダセグメント(AHS)と、それに続くゼロ以上のデータセグメントからなる。iSCSI CRCはオプショナルであり、ヘッダダイジェストおよびデータダイジェストとしてiSCSI PDUに含まれる。説明された構成はiSCSIヘッダおよびデータが別々にされ、ホストコンピュータに付加的なメモリコピーを必要とせずに、ホストコンピュータメモリにコピーされることを可能にする。   The hardware is primarily related to the external format of the iSCSI PDU, which includes an iSCSI header segment and an iSCSI data segment. An iSCSI PDU consists of a required basic header segment (BHS) followed by zero or more additional header segments (AHS) followed by zero or more data segments. The iSCSI CRC is optional and is included in the iSCSI PDU as a header digest and a data digest. The described arrangement allows the iSCSI header and data to be separated and copied to the host computer memory without requiring an additional memory copy on the host computer.

[iSCSI送信]
[概要]
iSCSI送信データパスのブロック図が図50に示されている。
[ISCSI transmission]
[Overview]
A block diagram of the iSCSI transmit data path is shown in FIG.

[iSCSI制御モジュール]
iSCSI制御モジュール501はTX DMAエンジンモジュール502、CBアクセスモジュール503、Statgenモジュール504から制御信号を受信する。
[ISCSI control module]
The iSCSI control module 501 receives control signals from the TX DMA engine module 502, the CB access module 503, and the Statgen module 504.

iSCSI制御モジュールは制御信号をCBアクセスモジュール503、iSCSI CRC計算モジュール505、FIM挿入モジュール506へ提供する。iSCSI制御モジュールは任意のiSCSI CRCワードと任意のマーカを含んでいるiSCSI PDU長を計算し、iSCSI CRCワードと任意のマーカを含んでいるiSCSI PDU長をXMTCTL MUXモジュールへ提供する。   The iSCSI control module provides control signals to the CB access module 503, the iSCSI CRC calculation module 505, and the FIM insertion module 506. The iSCSI control module calculates an iSCSI PDU length that includes an arbitrary iSCSI CRC word and an optional marker, and provides the iSCSI PDU length that includes the iSCSI CRC word and an optional marker to the XMTCTL MUX module.

ホストiSCSIドライバはホストメモリ中で完全なiSCSI PDUヘッダをアセンブルする。ホストiSCSIドライバはその後、32ビットアドレスまたは64ビットアドレスのいずれが必要とされるかに応じて、TCP送信32iSCSI IBまたはYCP送信64iSCSIIBを生成する。ホストiSCSIはその後、TCP送信iSCSI IBを送信し、これはオンチッププロセッサにより受信される。ホストiSCSIドライバがTCP送信iSCSI IBをオンチッププロセッサに送信する効果は、iSCSI PDUをホストコンピュータメモリのバッファの連結されたリストへDMA転送することを開始するようにiSCSI制御モジュールに命令することである。   The host iSCSI driver assembles a complete iSCSI PDU header in host memory. The host iSCSI driver then generates a TCP send 32 iSCSI IB or a YCP send 64 iSCSISCIB, depending on whether a 32-bit address or a 64-bit address is required. The host iSCSI then sends a TCP send iSCSI IB, which is received by the on-chip processor. The effect of the host iSCSI driver sending the TCP send iSCSI IB to the on-chip processor is to instruct the iSCSI control module to begin DMA transfer of the iSCSI PDUs to the linked list of buffers in the host computer memory. .

BHS、任意のAHS、任意のデータセグメントを含んでいるiSCSI PDUはTCP送信32iSCSI IBまたはTCP送信64iSCSI IBを使用して転送される。   ISCSI PDUs containing BHS, optional AHS, optional data segments are transferred using TCP send 32 iSCSI IB or TCP send 64 iSCSI IB.

iSCSI PDUが完全に単一のDMA転送中に含まれないならば、iSCSI PDUヘッダセグメントの最後またはiSCSI PDUデータセグメントの最後にiSCSIを挿入しなければならないiSCSI CRC計算モジュールを設計することは困難である。   If the iSCSI PDU is not completely contained in a single DMA transfer, it is difficult to design an iSCSI CRC calculation module that must insert the iSCSI at the end of the iSCSI PDU header segment or at the end of the iSCSI PDU data segment. is there.

iSCSI PDUが48バイト(BHS)程度に小さいとき、各iSCSI PDUに対して単一のIBを使用するオーバーヘッドは単一のDMA転送に対するiSCSI PDUを合体し、その後再度処理するためにiSCSI PDUを分離するオーバーヘッドよりも大きくない。   When the iSCSI PDU is as small as 48 bytes (BHS), the overhead of using a single IB for each iSCSI PDU coalesces the iSCSI PDU for a single DMA transfer and then separates the iSCSI PDU for further processing. Is no bigger than overhead.

第1の転送ブロックは1つの完全なiSCSI PDUヘッダまたは複数のヘッダ、即ち0、1、またはそれより多くのAHSにより後続されるBHSでなければならず、すべてのヘッダは第1の転送ブロックに含まれる。   The first transport block must be one complete iSCSI PDU header or multiple headers, ie BHS followed by 0, 1, or more AHS, all headers in the first transport block included.

CRC計算モジュールがiSCSI PDUヘッダの最後にiSCSI ヘッダCRCを挿入することができるように、第1の転送ブロックが1つの完全なiSCSI PDUヘッダまたは複数のヘッダであることが必要である。   It is necessary that the first transport block is one complete iSCSI PDU header or multiple headers so that the CRC calculation module can insert the iSCSI header CRC at the end of the iSCSI PDU header.

iSCSI制御モジュールはTCP送信32iSCSI IBまたはTCP送信64iSCSI IBが少なくとも一つの転送ブロックを含んでいることをチェックすべきである。これは正しい動作では必要な条件である。この条件が満たされないならば、エラーであり、モジュールは適格に欠ける。   The iSCSI control module should check that the TCP send 32 iSCSI IB or the TCP send 64 iSCSI IB contains at least one transport block. This is a necessary condition for correct operation. If this condition is not met, it is an error and the module is not eligible.

iSCSI制御モジュールはDMA転送を行うことを許可するようにDMAエンジンモジュールにリクエストすることによりiSCSI PDUのDMA転送を開始する。DMA転送を行うためのiSCSI制御モジュールのリクエストが受入れられるとき、iSCSI制御モジュールはDMAエンジンへのアクセスをロックされる。DMAエンジンはiSCSI IB中のすべての転送ブロックがサービスされるまでロックされる。iSCSI IBのすべての転送ブロックはすべてのiSCSIヘッダおよびiSCSIデータ情報がDMAによりホストメモリからハードウェアへ転送されるときにサービスされる。DMAエンジンはすべてのiSCSIヘッダおよびiSCSIデータ情報がDMAによりホストメモリからハードウェアへ転送されるときにiSCSI制御モジュールに信号を送る。   The iSCSI control module initiates the DMA transfer of the iSCSI PDU by requesting the DMA engine module to allow the DMA transfer. When an iSCSI control module request to perform a DMA transfer is accepted, the iSCSI control module is locked access to the DMA engine. The DMA engine is locked until all transfer blocks in the iSCSI IB are serviced. All transfer blocks of the iSCSI IB are serviced when all iSCSI header and iSCSI data information is transferred from host memory to hardware by DMA. The DMA engine signals the iSCSI control module when all iSCSI header and iSCSI data information is transferred from host memory to hardware by DMA.

iSCSI制御モジュールはFIMおよびCRC動作の実行を容易にし、iSCSIログイン相を考慮するためにDMAエンジンへのアクセスをロックされる。   The iSCSI control module facilitates execution of FIM and CRC operations and is locked access to the DMA engine to allow for iSCSI login phase.

iSCSI IB、iSCSI CRC選択ビット1およびiSCSI CRC選択ビット0の2ビットは、iSCSI CRC計算モジュールがiSCSIヘッダまたはiSCSIデータまたはその両者またはその両者以外のiSCSI CRCを計算すべきであるならば、iSCSI制御モジュールに信号を送るためにホストiSCSIドライバにより設定される。これらの2つのiSCSI CRC選択ビットは1および0の任意の組合せを取ってもよい。   Two bits, iSCSI IB, iSCSI CRC select bit 1 and iSCSI CRC select bit 0, are used for iSCSI control if the iSCSI CRC calculation module should calculate iSCSI CRCs other than the iSCSI header and / or iSCSI data. Set by the host iSCSI driver to send signals to the module. These two iSCSI CRC selection bits may take any combination of 1 and 0.

iSCSI IBは、ホストメモリ中のバッファのリンクリスト(LL)に対応し、転送ブロックとして知られている、アドレス及び長さの対のセットを含んでいる。ホストメモリのバッファのリンクされたリストはiSCSIヘッダおよびiSCSIデータ情報を記憶する。TCP送信iSCSI IBに含まれている転送ブロックはバッファのリンクされたリストを介してiSCSIヘッダとiSCSIデータを見つける場所についてのiSCSI制御モジュール情報を提供する。各iSCSI IBの第1の転送ブロックがホストメモリのiSCSIヘッダを指し、iSCSI IB中の残りの転送ブロックがホストメモリのiSCSIデータを指している。   The iSCSI IB corresponds to a linked list (LL) of buffers in host memory and includes a set of address and length pairs known as transfer blocks. A linked list of buffers in the host memory stores iSCSI header and iSCSI data information. The transport block included in the TCP send iSCSI IB provides iSCSI control module information about where to find the iSCSI header and iSCSI data via a linked list of buffers. The first transfer block of each iSCSI IB points to the iSCSI header of the host memory, and the remaining transfer blocks in the iSCSI IB point to the iSCSI data of the host memory.

iSCSI制御モジュールはCRCワードを含むがマーカを除外するiSCSI PDU長を取り、任意のCRCワードと任意のマーカを含んでいるiSCSI PDUの長さを計算する。XMTCTL MUXモジュールはXMTCTLモジュールにXMTCTLモジュールへ入力されるデータの長さを提供するためのCRCワードとマーカを含んだiSCSI PDUの長さを必要する。 The iSCSI control module takes the iSCSI PDU length that includes the CRC word but excludes the marker, and calculates the length of the iSCSI PDU that includes the optional CRC word and the optional marker. The XMTCTL MUX module requires the length of the iSCSI PDU including CRC words and markers to provide the XMTCTL module with the length of the data input to the XMTCTL module.

XMTCTL MUXモジュールはiSCSI PDUをMTXバッファに記憶する前に、任意のCRCワードと任意のマーカを含んでいるPDU長を必要とする。   The XMTCTL MUX module requires a PDU length that includes any CRC word and any marker before storing the iSCSI PDU in the MTX buffer.

iSCSI制御モジュールはTCP送信32iSCSI IBまたはTCP送信64iSCSI IBに含まれ、任意のCRCワードを含むが任意のマーカを除外するiSCSI PDU長を使用することによりiSCSI PDUの長さを計算する。   The iSCSI control module is included in the TCP send 32 iSCSI IB or TCP send 64 iSCSI IB and calculates the length of the iSCSI PDU by using the iSCSI PDU length that includes any CRC word but excludes any marker.

任意のCRCワードと任意のマーカを含んでいるPDU長の計算には以下の情報を使用する。
・FIMインターバル、バイト中のマーカインターバル、
・現在のFIMカウント、最後のマーカが挿入され、ソケットCBに記憶された以降のバイト数、
・TCP送信32iSCSI IBまたはTCP送信64iSCSI IBに含まれ、CRCワードを含むがマーカを除外するPDU長。
The following information is used to calculate the PDU length containing an arbitrary CRC word and an optional marker.
-FIM interval, marker interval in bytes,
The current FIM count, the number of bytes since the last marker was inserted and stored in socket CB,
A PDU length that is included in a TCP transmission 32 iSCSI IB or a TCP transmission 64 iSCSI IB and includes a CRC word but excludes a marker.

2つのカウンタ、即ちPDU長カウンタとマーカカウンタを使用して、任意のCRCワードおよび任意のマーカを含んでいるPDU長の計算は以下に等しい。
1.マーカカウンタをゼロに初期化する。
2.PDU長カウンタを現在のFIMカウントに初期化する。
3.PDU長カウンタを任意のCRCワードを含むが任意のマーカを除外するPDU長に対してチェックする。
4.PDU長カウンタが任意のCRCワードを含むが任意のマーカを除外するPDU長よりも大きいならば、ループを出る。
5.FIMインターバルをPDU長カウンタへ付加し、マーカカウンタを1だけ増加する。
6.ステップ3へ進む。
7.マーカカウントから計算されるマーカの長さを付加することにより任意のCRCワードと任意のマーカを含んでいるPDU長を計算する。
Using two counters, a PDU length counter and a marker counter, the calculation of the PDU length containing any CRC word and any marker is equal to:
1. Initialize the marker counter to zero.
2. Initialize the PDU length counter to the current FIM count.
3. Check the PDU length counter for PDU lengths that include any CRC word but exclude any markers.
4). If the PDU length counter is greater than the PDU length containing any CRC word but excluding any markers, the loop is exited.
5. Add the FIM interval to the PDU length counter and increment the marker counter by one.
6). Go to step 3.
7). A PDU length including an arbitrary CRC word and an arbitrary marker is calculated by adding the length of the marker calculated from the marker count.

[別のFIMアルゴリズム]
1.total_marker_lengthをゼロに初期化する。
2.length_counterを次のマーカ(FIM_interval−current_FIM_count)に初期化する。
3.length_counter>PDU_lengthであるならば、ステップ7へ進む。
4.marker_sizeだけ、total_marker_lenをインクリメントする。
5.length_counter=length_counter+FIM_interval。
6.ステップ3へ進む。
7.xmitctlはtotal_marker_len+PDUサイズを得る。
[Another FIM algorithm]
1. Initialize total_marker_length to zero.
2. The length_counter is initialized to the next marker (FIM_interval-current_FIM_count).
3. If length_counter> PDU_length, go to step 7.
4). The total_marker_len is incremented by the marker_size.
5. length_counter = length_counter + FIM_interval.
6). Go to step 3.
7). xmitctl obtains total_marker_len + PDU size.

マーカが正確にPDUの後に入り、現在のFIMカウント=0であるケースを正確に処理することを確実にしなければならないならば、最終マーカを位置させなければならないことに注意する。   Note that the last marker must be located if it must be ensured that the marker accurately follows the PDU and correctly handles the case where the current FIM count = 0.

前述の計算では、
FIMインターバルはCBから来る。
Current_FIM_countはCBから来る。
total_marker_lengthはFIM挿入モジュールに対する時間変数である。
length_counterはFIM挿入モジュールの時間変数である。
marker_sizeはバイトによるFIMマーカの全体のサイズである。
In the above calculation,
The FIM interval comes from CB.
Current_FIM_count comes from CB.
total_marker_length is a time variable for the FIM insertion module.
length_counter is a time variable of the FIM insertion module.
marker_size is the overall size of the FIM marker in bytes.

図51はiSCSI送信フローチャートを示している。   FIG. 51 shows an iSCSI transmission flowchart.

[iSCSI CRC計算モジュール]
DMA TXモジュールはiSCSIヘッダセグメントとiSCSIデータセグメントからなるiSCSI CRC計算モジュールへiSCSI PDUを提供する。
[ISCSI CRC calculation module]
The DMA TX module provides iSCSI PDUs to an iSCSI CRC calculation module that consists of an iSCSI header segment and an iSCSI data segment.

任意の挿入されたCRCワードを含んでいるPDUであるiSCSI CRC計算モジュールからの出力はFIM挿入モジュールへ与えられる。   The output from the iSCSI CRC calculation module, which is a PDU containing any inserted CRC word, is provided to the FIM insertion module.

iSCSI CRC計算モジュールはiSCSI PDUヘッダとiSCSI PDUデータとの両者に対してiSCSI CRC値を計算する。   The iSCSI CRC calculation module calculates an iSCSI CRC value for both the iSCSI PDU header and the iSCSI PDU data.

CRC計算モジュールはiSCSI PDUヘッダの最後またはiSCSI PDUデータの最後またはその両者またはその両者以外にiSCSI CRCを挿入する。iSCSI CRCの計算はTCP送信iSCSI IBのiSCSI CRC選択ビット1とiSCSI選択ビット0により制御され指示される。   The CRC calculation module inserts the iSCSI CRC at the end of the iSCSI PDU header, the end of the iSCSI PDU data, or both, or both. The calculation of the iSCSI CRC is controlled and indicated by the iSCSI CRC selection bit 1 and the iSCSI selection bit 0 of the TCP transmission iSCSI IB.

CRC計算モジュールへの入力は第1の転送ブロックでは0、1、またはより多くのAHSが後続するBHSであり、第2の転送ブロックでは0または1のデータセグメントが後続するBHSである。   The input to the CRC calculation module is a BHS followed by 0, 1 or more AHS in the first transport block, and a BHS followed by 0 or 1 data segments in the second transport block.

DMAエンジンは転送ブロックの境界のiSCSI計算モジュールに信号を送らなければならない。iSCSI計算モジュールは第1の転送ブロックが開始し終了する場所と、最後の転送ブロックが終了する場所を知らなくてはならない。iSCSIヘッダCRCはヘッダCRCが使用可能になるならば、常に第1の転送ブロックの最後にiSCSI PDUを挿入される。iSCSIデータCRCはデータCRCが使用可能になるならば、常に最後の転送ブロックの最後にiSCSI PDUを挿入される。   The DMA engine must send a signal to the iSCSI calculation module at the boundary of the transfer block. The iSCSI calculation module must know where the first transfer block starts and ends and where the last transfer block ends. The iSCSI header CRC is always inserted with an iSCSI PDU at the end of the first transport block if the header CRC becomes available. The iSCSI data CRC is always inserted with an iSCSI PDU at the end of the last transport block if the data CRC becomes available.

IBの第1の転送ブロックが完全なiSCSIヘッダ(BHSプラス0、1またはより多くのAHS)であることは臨界的である。   It is critical that the first transport block of the IB is a complete iSCSI header (BHS plus 0, 1 or more AHS).

[FIM挿入モジュール]
FIM挿入モジュールは固定したインターバルのマーカ(FIM)をiSCSI PDU中に挿入し、これは固定したインターバルのマーカをiSCSI送信ストリーム中へ挿入することに等しい。
[FIM insertion module]
The FIM insertion module inserts a fixed interval marker (FIM) into the iSCSI PDU, which is equivalent to inserting a fixed interval marker into the iSCSI transmission stream.

FIM挿入モジュールがアクチブであるときFIM挿入モジュールはマーカだけを挿入する。FIM挿入モジュールは現在のiSCSIソケット(iSCSIソケットCB)に対応するCBでFIMが設定されるときのみアクチブである。   When the FIM insertion module is active, the FIM insertion module inserts only the marker. The FIM insertion module is only active when FIM is set in the CB corresponding to the current iSCSI socket (iSCSI socket CB).

FIM挿入モジュールは各iSCSIソケットに対してiSCSI CRC計算モジュールにより挿入されることのできる任意のCRCバイトを含んでいる各iSCSIストリームの4バイトワード数のカウントの追跡を維持できなければならない。FIM挿入モジュールはiSCSIソケットCB中に2つのFIM値、即ちFIMインターバルと現在のFIMカウントを記憶することにより4バイトのワード数の追跡を維持する。これらの各フィールド、FIMインターバルと現在のFIMカウントは4バイトワードで測定される。   The FIM insertion module must be able to keep track of the count of the 4-byte word number of each iSCSI stream that contains any CRC bytes that can be inserted by the iSCSI CRC calculation module for each iSCSI socket. The FIM insertion module keeps track of the 4-byte word count by storing two FIM values in the iSCSI socket CB, namely the FIM interval and the current FIM count. Each of these fields, the FIM interval and the current FIM count are measured in 4 byte words.

FIMインターバルと現在のFIMカウントは16ビットフィールドで記憶されることができる。   The FIM interval and current FIM count can be stored in a 16-bit field.

FIMインターバルまたは現在のFIMカウントがオーバーフローするならば、適格な故障機構が存在すべきである。   If the FIM interval or current FIM count overflows, there should be a qualified failure mechanism.

iSCSIログイン相を含むiSCSI接続セットアップを使用可能にするために、マーカが使用されるならば、マーカの挿入はiSCSIログイン相の末尾の後の第1のマーカインターバルでのみ開始される。しかしながら、マーカの含有および除外機構がiSCSIログイン相の長さを知らずに動作することを可能にするために、第1のマーカはマーカのないインターバルがマーカを含んでいるかのようにiSCSI PDUストリームに置かれる。したがってすべてのマーカは次式により与えられるバイト位置でiSCSI PDUストリーム中に現れる。
[(MI+8)*n−8]
ここでMI=FIM(マーカ)インターバルであり、n=整数である。
If a marker is used to enable an iSCSI connection setup that includes the iSCSI login phase, then marker insertion will only begin at the first marker interval after the end of the iSCSI login phase. However, in order to allow the marker inclusion and exclusion mechanism to operate without knowing the length of the iSCSI login phase, the first marker is in the iSCSI PDU stream as if the marker-free interval included the marker. Placed. Thus, all markers appear in the iSCSI PDU stream at the byte position given by:
[(MI + 8) * n-8]
Here, MI = FIM (marker) interval, and n = integer.

一例として、マーカインターバルが512バイトであり、iSCSIログイン相がバイト1003で終了するならば(第1のiSCSIの位置されたバイトは0である)、第1のマーカはそのストリームのバイト1031の後に挿入される。   As an example, if the marker interval is 512 bytes and the iSCSI login phase ends with byte 1003 (the first iSCSI positioned byte is 0), the first marker is after byte 1031 of the stream. Inserted.

iSCSI PDUストリームはiSCSIインターネット草案に規定されているが、インターネット草案で使用される用語はTCPストリームである。FIMはマーカ自体を除くTCPストリームのiSCSIにより位置されるあらゆるバイトを含んでいるペイロードバイトストリームカウンティングを使用する。これはTCPがカウントするがiSCSIにより開始されない任意のバイトを除外する。   The iSCSI PDU stream is defined in the iSCSI Internet draft, but the term used in the Internet draft is a TCP stream. FIM uses payload byte stream counting that includes every byte located by the iSCSI of the TCP stream except the marker itself. This excludes any bytes that TCP counts but does not start with iSCSI.

ホストiSCSIドライバはiSCSI FIMインターバルコマンドブロックを発生することにより、iSCSIソケットCBのFIMインターバルと初期FIMカウントを初期化する。オンチッププロセッサはiSCSI FIMインターバルコマンドブロックを受信する。オンチッププロセッサはFIMインターバルをソケット特定TX_FIM_Intervalレジスタと、iSCSIソケットCBのFIMインターバルフィールドへ書込む。オンチッププロセッサは初期FIMカウントをソケット特定TX_FIM_COUNTレジスタと、iSCSIソケットCBの現在のFIMカウントへ書込む。   The host iSCSI driver initializes the FIM interval and initial FIM count of the iSCSI socket CB by generating an iSCSI FIM interval command block. The on-chip processor receives the iSCSI FIM interval command block. The on-chip processor writes the FIM interval to the socket specific TX_FIM_Interval register and the FIM interval field of the iSCSI socket CB. The on-chip processor writes the initial FIM count to the socket specific TX_FIM_COUNT register and the current FIM count of the iSCSI socket CB.

ホストiSCSIドライバはiSCSIセットFIM状態コマンドブロックを発生することによりiSCSIソケットCBのFIM状態を制御する。オンチッププロセッサはiSCSIセットFIM状態コマンドブロックを受信する。オンチッププロセッサはその後、FIM状態をiSCSIソケットCB中のFIMONビットに書込む。   The host iSCSI driver controls the FIM state of the iSCSI socket CB by generating an iSCSI set FIM state command block. The on-chip processor receives the iSCSI set FIM status command block. The on-chip processor then writes the FIM state to the FIMON bit in the iSCSI socket CB.

FIMインターバル、初期FIMカウント、FIM状態の初期化後、FIM挿入モジュールはiSCSI IBを待機する初期化状態にある。   After initialization of the FIM interval, initial FIM count, and FIM state, the FIM insertion module is in an initialization state waiting for iSCSI IB.

FIMがアクチブでありながら、現在のiSCSIソケットに対するFIM状態、FIMカウント、またはFIMインターバルを変化しようとする試みはエラーである。   An attempt to change the FIM state, FIM count, or FIM interval for the current iSCSI socket while FIM is active is an error.

FIM挿入モジュールがiSCSI IBを待機している状態にあり、iSCSI IBが受信されるとき、FIM挿入モジュールはソケットCB中のFIMONビットと現在のFIMカウントを読取る。iSCSIソケットCB中のFIMONビットが設定されるならば、FIM挿入モジュールはアクチブである。FIM挿入モジュールがアクチブであるならば、FIM挿入モジュールはFIMインターバルカウンタをiSCSIソケットCBからの現在のFIMカウントに設定する。FIM挿入モジュールがアクチブではないならば、FIM挿入モジュールはiSCSI IBを待機する状態に戻る。   When the FIM insertion module is waiting for the iSCSI IB and an iSCSI IB is received, the FIM insertion module reads the FIMON bit in socket CB and the current FIM count. If the FIMON bit in iSCSI socket CB is set, the FIM insertion module is active. If the FIM insertion module is active, the FIM insertion module sets the FIM interval counter to the current FIM count from iSCSI socket CB. If the FIM insertion module is not active, the FIM insertion module returns to waiting for iSCSI IB.

FIM挿入モジュールは今や、CRC計算モジュールから受信されたデータの各4バイトワードをカウントする状態にある。iSCSI PDU中の各4バイトワードがiSCSI CRC計算モジュールにより挿入される任意のCRCバイトを含んでいるFIM挿入モジュールにより受信された後、FIM挿入モジュールは1だけFIMインターバルカウンタをデクリメントする。FIM挿入モジュールはその後、各4バイトワードをカウントする状態に戻る。   The FIM insertion module is now in a state of counting each 4-byte word of data received from the CRC calculation module. After each 4-byte word in the iSCSI PDU is received by the FIM insertion module that includes any CRC bytes inserted by the iSCSI CRC calculation module, the FIM insertion module decrements the FIM interval counter by one. The FIM insertion module then returns to counting each 4-byte word.

各4バイトワードをカウントする状態にありながらFIM挿入モジュールがiSCSIソケットからのデータの走査を完了するとき、FIM挿入モジュールは現在のFIMインターバルカウンタ値を現在のiSCSIソケットCBの現在のFIMカウントへ保存する。FIM挿入モジュールはiSCSI IB中のすべての転送ブロックがサービスされたときiSCSIソケットからのデータの走査を完了する。この点で、FIM挿入モジュールはiSCSI IBを待機する状態にある。   When the FIM insertion module completes scanning data from the iSCSI socket while counting each 4-byte word, the FIM insertion module saves the current FIM interval counter value to the current FIM count of the current iSCSI socket CB. To do. The FIM insertion module completes scanning of data from the iSCSI socket when all transport blocks in the iSCSI IB have been serviced. At this point, the FIM insertion module is ready for iSCSI IB.

各4バイトワードをカウントする状態にありながら、FIMインターバル挿入モジュールはFIMインターバルカウンタがゼロに到達するときiSCSI PDU中にマーカを挿入する。iSCSI PDU中にマーカを挿入した後、FIM挿入モジュールはFIMインターバルカウンタをFIMインターバルへリセットし、ソケットCBから読取り、その後、4バイトワードをカウントする状態に戻る。   While in the state of counting each 4-byte word, the FIM interval insertion module inserts a marker in the iSCSI PDU when the FIM interval counter reaches zero. After inserting a marker in the iSCSI PDU, the FIM insertion module resets the FIM interval counter to the FIM interval, reads from socket CB, and then returns to counting 4 byte words.

マーカは、次のiSCSI PDUヘッダまでiSCSIストリームでスキップするバイト数に等しい次のiSCSI PDU開始ポインタを含んでいる。FIM挿入モジュールは各マーカに対する次のiSCSI PDU開始ポインタを計算しなければならない。次のiSCSI PDU開始ポインタを計算するため、FIM挿入モジュールは現在のPDUのバイト数をカウントし、現在のiSCSI PDUの開始から現在のiSCSI PDUバイトカウントであるマーカ挿入点までを測定しなければならない。現在のiSCSI PDUのバイト数をカウントするため、FIM挿入モジュールはiSCSI PDUバイトカウンタを使用する。現在のiSCSI PDUバイトカウントに加えて、FIM挿入モジュールは現在のPDUヘッダの開始に関して次のiSCSI PDUヘッダの開始位置を知らなければならない。次のiSCSI PDUヘッダの開始と、現在のiSCSI PDUヘッダの開始との差は現在のiSCSI PDU長に等しい。FIM挿入モジュールは以下のようにして次のiSCSI PDU開始ポインタを計算する。
次のiSCSI PDU開始ポインタ=現在のiSCSI PDU長−現在のiSCSI PDUバイトカウント
次のiSCSI PDU開始ポインタは32ビットの長さである。
The marker includes a next iSCSI PDU start pointer equal to the number of bytes to skip in the iSCSI stream up to the next iSCSI PDU header. The FIM insertion module must calculate the next iSCSI PDU start pointer for each marker. To calculate the next iSCSI PDU start pointer, the FIM insertion module must count the number of bytes in the current PDU and measure from the start of the current iSCSI PDU to the marker insertion point that is the current iSCSI PDU byte count. . To count the number of bytes in the current iSCSI PDU, the FIM insertion module uses an iSCSI PDU byte counter. In addition to the current iSCSI PDU byte count, the FIM insertion module must know the start position of the next iSCSI PDU header with respect to the start of the current PDU header. The difference between the start of the next iSCSI PDU header and the start of the current iSCSI PDU header is equal to the current iSCSI PDU length. The FIM insertion module calculates the next iSCSI PDU start pointer as follows.
Next iSCSI PDU start pointer = current iSCSI PDU length-current iSCSI PDU byte count The next iSCSI PDU start pointer is 32 bits long.

iSCSIインターネット草案はPDUデータセグメントサイズに対して交渉された最大値MaxRecvPDUDataSizeを512バイトから((224**)−1)バイト(16777216−1バイトまたは約16Mバイト)までに規定する。   The iSCSI Internet Draft specifies the maximum value MaxRecvPDUDataSize negotiated for the PDU data segment size from 512 bytes to ((224 **)-1) bytes (16777216-1 bytes or about 16 Mbytes).

(バイトで測定された)現在のiSCSI PDU長は少なくとも25ビットであるべきである。   The current iSCSI PDU length (measured in bytes) should be at least 25 bits.

FIM挿入モジュールに任意のCRCワードを含むが任意のマーカを除外するiSCSI PDU長を与える方法が幾つか存在する。FIMモジュールにPDU長を提供する1つの方法はiSCSIホストドライバがPDU長を計算する方法である。   There are several ways to give the FIM insertion module an iSCSI PDU length that includes any CRC word but excludes any marker. One way to provide the PDU length to the FIM module is for the iSCSI host driver to calculate the PDU length.

iSCSIホストドライバは48バイト(BHS長)+総AHS長+データセグメント長の和として、iSCSI PDUヘッダCRCまたはiSCSI PDUデータCRCを除外する現在のiSCSI PDU長を計算する。   The iSCSI host driver calculates the current iSCSI PDU length excluding the iSCSI PDU header CRC or iSCSI PDU data CRC as the sum of 48 bytes (BHS length) + total AHS length + data segment length.

総AHS長とデータセグメント長は既にこれらがBHSに含まれるときソフトウェアで計算されなければならない。   The total AHS length and data segment length must be calculated in software when they are already included in the BHS.

ホストiSCSIドライバはその後、任意のCRCワードを含むがマーカを除外する現在のiSCSI PDU長を計算する。任意のCRCワードを含むがマーカを除外する現在のiSCSI PDU長は、iSCSI PDUヘッダCRCまたはiSCSI PDUデータCRCを除外するiSCSI PDU長に等しく、iSCSI PDUヘッダCRCが使用可能になるならば+4バイト、iSCSIデータCRCが使用可能になるならば+4バイトに等しい。   The host iSCSI driver then calculates the current iSCSI PDU length that includes any CRC word but excludes the marker. The current iSCSI PDU length that includes any CRC word but excludes the marker is equal to the iSCSI PDU length that excludes the iSCSI PDU header CRC or iSCSI PDU data CRC, +4 bytes if the iSCSI PDU header CRC is enabled, Equal to +4 bytes if iSCSI data CRC becomes available.

ホストiSCSIドライバはTCP送信32iSCSI IBまたはTCP送信64iSCSI IBに任意のCRCワードを含むがマーカを除外する現在のiSCSI PDU長を挿入する。TCP送信32iSCSI IBとTCP送信64iSCSI IBの説明を参照されたい。   The host iSCSI driver inserts the current iSCSI PDU length that includes any CRC word but excludes the marker into the TCP send 32 iSCSI IB or TCP send 64 iSCSI IB. See the description of TCP send 32 iSCSI IB and TCP send 64 iSCSI IB.

[XMTCTL Muxモジュール]
XMTCTL muxモジュールはDMA Tx FIFOバッファからTCPデータを受信し、FIM挿入モジュールからiSCSIデータを受信する。
[XMTCTL Mux module]
The XMTCTL mux module receives TCP data from the DMA Tx FIFO buffer and receives iSCSI data from the FIM insertion module.

XMTCTL muxモジュールはデータをDMA TX FIFOバッファまたはFIM挿入モジュールからXMTCTLモジュールへ提供する。   The XMTCTL mux module provides data from the DMA TX FIFO buffer or FIM insertion module to the XMTCTL module.

機能:XMTCTL muxモジュールはXMTCTLモジュールへのデータ入力を多重化するように動作する。   Function: The XMTCTL mux module operates to multiplex the data input to the XMTCTL module.

XMTCTL muxモジュールはデータ長をXMTCTLモジュールへ提供する。   The XMTCTL mux module provides the data length to the XMTCTL module.

iSCSIデータの長さはCRC計算モジュールにより挿入される任意のCRCバイトを含まなければならない。   The length of iSCSI data must include any CRC bytes inserted by the CRC calculation module.

iSCSIデータの長さはFIM挿入モジュールにより挿入される任意のマーカも含まなければならない。   The length of iSCSI data must also include any markers inserted by the FIM insertion module.

XMTCTLモジュールはMSS等に基づいて、データをTCPパケットの適切な寸法に分離するために入力データのサイズを使用する。XMTCTLモジュールはMTXメモリバッファに記憶された適切なサイズのパケットを生成する。各MTXバッファは別々のTCPパケットに対応する。   The XMTCTL module uses the size of the input data to separate the data into the appropriate dimensions of the TCP packet, based on MSS or the like. The XMTCTL module generates an appropriately sized packet stored in the MTX memory buffer. Each MTX buffer corresponds to a separate TCP packet.

XMTCTL muxモジュールはデータを128ビット幅のフォーマットのXMTCTLモジュールへ提供する。データはdav/grantハンドシェイクを使用してXMTCTLモジュールへ送られる。   The XMTCTL mux module provides data to the XMTCTL module in a 128 bit wide format. Data is sent to the XMTCTL module using the dav / grant handshake.

[iSCSI受信]
[概要]
受信DMAエンジンはiSCSI受信データパスを含んでいる。受信DMAデータパスはiSCSI CRCを計算し、最後のiSCSI CRCをiSCSI CRCメッセージを有するRX DMA状態を介してホストiSCSIドライバへ通過する。
[ISCSI reception]
[Overview]
The receive DMA engine includes an iSCSI receive data path. The receive DMA data path computes the iSCSI CRC and passes the last iSCSI CRC to the host iSCSI driver via the RX DMA state with the iSCSI CRC message.

[iSCSI受信の動作理論]
ハードウェアはiSCSI CRCの計算をオフロードする。ホストiSCSIドライバはiSCSI CRC機構の正しい動作を確実にするために受信データパスを制御する。
[Theory of iSCSI reception operation]
The hardware offloads the iSCSI CRC calculation. The host iSCSI driver controls the receive data path to ensure correct operation of the iSCSI CRC mechanism.

iSCSI CRC情報は2つの場所でハードウェアとホストiSCSIドライバとの間で転送される。最後のiSCSI CRCはハードウェアからホストiSCSIドライバへ送信されたiSCSI CRCメッセージを有するRX DMA状態の一部分である。iSCSI CRCシードはホストiSCSIドライバからハードウェアへ送信されるTCP受信iSCSI32IBとTCP受信iSCSI64IBの両者の一部分である。   iSCSI CRC information is transferred between the hardware and the host iSCSI driver in two places. The last iSCSI CRC is part of the RX DMA state with the iSCSI CRC message sent from the hardware to the host iSCSI driver. The iSCSI CRC seed is a part of both the TCP receiving iSCSI 32IB and the TCP receiving iSCSI 64IB transmitted from the host iSCSI driver to the hardware.

ホストiSCSIドライバはiSCSI CRC計算機構が正しく動作するように維持するためにTCP受信iSCSI32IBとTCP受信iSCSI64IB中に正確なサイズのバッファをポストしなければならない。   The host iSCSI driver must post a correctly sized buffer in the TCP receive iSCSI 32IB and TCP receive iSCSI 64IB to keep the iSCSI CRC calculation mechanism working properly.

iSCSI記録相中、ホストiSCSIドライバは正常のTCPソケットと同じ方法でiSCSIソケットを扱う。iSCSI記録相が完了するとき、iSCSI接続はフル特徴相に入る。   During the iSCSI recording phase, the host iSCSI driver handles the iSCSI socket in the same way as a normal TCP socket. When the iSCSI recording phase is complete, the iSCSI connection enters the full feature phase.

iSCSI接続がフル特徴相に入るとき、接続はiSCSIヘッダまたはiSCSIデータ或いはその両者中にiSCSI CRC情報を含んでいる可能性のあるiSCSI PDUを転送する準備が整っている。   When an iSCSI connection enters the full feature phase, the connection is ready to transfer iSCSI PDUs that may contain iSCSI CRC information in the iSCSI header and / or iSCSI data.

RX DMAエンジンはTCP受信iSCSI32IBとTCP受信iSCSI64IBにより特定される散乱集合リストからiSCSI CRCメッセージを有するRX DMA状態を介して計算される最後のiSCSI CRCを送信する。   The RX DMA engine sends the last iSCSI CRC calculated via the RX DMA state with the iSCSI CRC message from the scatter set list specified by the TCP receive iSCSI 32IB and TCP receive iSCSI64IB.

一度、iSCSI記録相が完了すると、ホストiSCSI CRCドライバはiSCSI PDUヘッダの正しいサイズの受信バッファをポストする。ホストiSCSIドライバはその後、iSCSI PDUヘッダを解析する。ホストiSCSIドライバはその後、データセグメントが存在するならばiSCSI PDUデータセグメントの正しいサイズの受信バッファをポストする。ホストiSCSIドライバはそれぞれ次のiSCSI PDUデータセグメントの正しいサイズのバッファをポストし続ける。DMAエンジンは各iSCSI PDUヘッダセグメントとiSCSI PDUデータセグメントのiSCSI CRCを計算する。   Once the iSCSI recording phase is complete, the host iSCSI CRC driver posts the correct size receive buffer in the iSCSI PDU header. The host iSCSI driver then parses the iSCSI PDU header. The host iSCSI driver then posts the correct size receive buffer for the iSCSI PDU data segment if the data segment exists. Each host iSCSI driver continues to post the correct size buffer for the next iSCSI PDU data segment. The DMA engine calculates the iSCSI CRC for each iSCSI PDU header segment and iSCSI PDU data segment.

iSCSI PDUヘッダの場合、ホストiSCSIドライバはiSCSI基本ヘッダセグメント(BHS)サイズ(48バイト)と、ヘッダCRCがiSCSIログイン相中に交渉するならばiSCSI PDU CRC(4バイト)の和のサイズをポストする。BHSはその後、存在するならば後続のiSCSI PDUヘッダを含むDMAにより転送される。   For an iSCSI PDU header, the host iSCSI driver posts the iSCSI basic header segment (BHS) size (48 bytes) and the size of the sum of the iSCSI PDU CRC (4 bytes) if the header CRC is negotiated during the iSCSI login phase. . The BHS is then transferred by the DMA containing the subsequent iSCSI PDU header if present.

BHSのDMA転送が完了するとき、iSCSI CRCメッセージを有するRX DMA状態はハードウェアにより計算される最終的なiSCSI CRCの残りを含む。ホストiSCSIドライバはハードウェアにより計算される最終的なiSCSI CRCの残りを含むiSCSI CRCメッセージを有するRX DMA状態を受信する。ホストiSCSIドライバはその後、その値がこのiSCSI多項式の予測される余りに一致することを確実にするためにRX DMA状態の最後のiSCSI CRCをチェックする。ヘッダCRCがiSCSI記録相中に交渉されないならば、ホストiSCSIドライバはiSCSI CRCメッセージを有するRX DMA状態で戻された最後のiSCSI CRCの残りを無視する。   When the BHS DMA transfer is complete, the RX DMA state with the iSCSI CRC message contains the remainder of the final iSCSI CRC calculated by the hardware. The host iSCSI driver receives an RX DMA state with an iSCSI CRC message that includes the remainder of the final iSCSI CRC calculated by hardware. The host iSCSI driver then checks the last iSCSI CRC in the RX DMA state to ensure that its value matches the expected remainder of this iSCSI polynomial. If the header CRC is not negotiated during the iSCSI recording phase, the host iSCSI driver ignores the remainder of the last iSCSI CRC returned in the RX DMA state with the iSCSI CRC message.

BHSには追加ヘッダセグメント(AHS)が後続する。BHSのバイト4はTotalAHSLength、即ちAHSの全長を含んでいる。AHSを含み、それ故長さが48バイトを超えるiSCSI PDUヘッダの場合、ホストiSCSIドライバはAHSに対する付加的なTCP受信iSCSI32IBまたはTCP受信iSCSI64IBを発生する。   The BHS is followed by an additional header segment (AHS). Byte 4 of the BHS contains TotalAHSLength, ie the total length of AHS. For iSCSI PDU headers that contain AHS and therefore have a length greater than 48 bytes, the host iSCSI driver generates an additional TCP receive iSCSI 32IB or TCP receive iSCSI 64IB for the AHS.

iSCSI CRCが使用可能になるならば、ホストiSCSIドライバは算出されたiSCSI CRC値を、TCP 受信iSCSI32IBまたはTCP受信iSCSI64IB中のiSCSI CRCシードフィールドを使用してシードする。iSCSI CRCシードフィールドの使用はiSCSI PDUヘッダCRCの残りが正確にチェックされることを可能にする。   If iSCSI CRC is enabled, the host iSCSI driver seeds the calculated iSCSI CRC value using the iSCSI CRC seed field in the TCP receive iSCSI 32IB or TCP receive iSCSI 64IB. The use of the iSCSI CRC seed field allows the rest of the iSCSI PDU header CRC to be checked correctly.

iSCSI CRC計算の継続が必要とされない場合、TCP 受信iSCSI32IBまたはTCP受信iSCSI64IB中のiSCSI CRCシードはゼロに設定されなければならない。   If continuation of the iSCSI CRC calculation is not required, the iSCSI CRC seed in the TCP receive iSCSI 32IB or TCP receive iSCSI 64IB must be set to zero.

iSCSI PDUのデータセクションに対してiSCSI CRCをリクエストするとき、ホストiSCSIドライバはiSCSI CRCを記憶するための余分な4バイトデータバッファを特定しなければならない。この4バイトデータバッファは最終転送ブロックとして挿入され、TCP受信iSCSI32IBまたはTCP受信iSCSI64IBでリンクリストの最後に余分な4バイトを効率的に付加する。4バイトのデータバッファはiSCSI PDUデータセグメントのiSCSI CRCがiSCSI PDUデータストリーム外で転送されることを可能にする。4バイトバッファの使用は図52に示されている。   When requesting an iSCSI CRC for a data section of an iSCSI PDU, the host iSCSI driver must specify an extra 4-byte data buffer to store the iSCSI CRC. This 4-byte data buffer is inserted as a final transfer block, and an extra 4 bytes are efficiently added to the end of the link list in TCP reception iSCSI 32IB or TCP reception iSCSI 64IB. The 4-byte data buffer allows the iSCSI CRC of the iSCSI PDU data segment to be transferred outside the iSCSI PDU data stream. The use of a 4-byte buffer is illustrated in FIG.

[RX DMAの動作理論]
ホストドライバはハードウェアからRX DAV状態メッセージを受信するときに利用可能なRXデータが存在することを知っている。このRX DAV状態メッセージの通知は通常のTCP接続と同じである。RX DAV状態メッセージ中のCBハンドルはiSCSIに関連するCBを指している。ホストドライバはその後、RXデータを記憶するようにバッファを割当て、総リンクリストバッファサイズはホストドライバが受信することを予測するデータ量プラス予測されるならばCRCに等しくなければならない(図52参照)。またiSCSI PDUはそのフォーマットにあることが予測されるので、総バッファサイズは常にdword境界で整列されなければならない。ホストドライバはまたCRCシードを32’hffffffffに初期化しなければならない。
[Operation theory of RX DMA]
The host driver knows that there is RX data available when receiving the RX DAV status message from the hardware. The notification of the RX DAV status message is the same as a normal TCP connection. The CB handle in the RX DAV status message points to the CB associated with iSCSI. The host driver then allocates a buffer to store RX data, and the total linked list buffer size must be equal to the amount of data that the host driver expects to receive plus the CRC if predicted (see FIG. 52). . Also, since the iSCSI PDU is expected to be in that format, the total buffer size must always be aligned on dword boundaries. The host driver must also initialize the CRC seed to 32'hffffffff.

RX DMA動作が行われるとき、ハードウェアは最初にソケットCBの付属からiSCSI CRCシードを抽出する。ハードウェアはまたメインCB構造からホスト再送信(HR)ビットを抽出する。HRビットはこれがiSCSIソケットであるか否かを他のハードウェアへ示す。ハードウェアはその後、データを転送しながら新しいCRCを計算する。   When an RX DMA operation is performed, the hardware first extracts the iSCSI CRC seed from the socket CB attachment. The hardware also extracts host retransmission (HR) bits from the main CB structure. The HR bit indicates to other hardware whether this is an iSCSI socket or not. The hardware then calculates a new CRC while transferring data.

データストリームはPDUヘッダまたはデータセグメントに対する予測されるiSCSI CRC値を含んでも含まなくてもよい。データストリームがiSCSI CRCダイジェストを含まないならば、ハードウェアにより計算されるiSCSI CRCは動作しているiSCSI CRCとしてCBの付属へ記憶して戻される。RX−DMA状態メッセージは発生されてもされなくてもよい。RX DMA状態メッセージが発生されるならば、状態メッセージはこの動作しているiSCSI CRCを含む。データストリームがiSCSI CRCダイジェストをその終端部に含んでいるならば、iSCSI CRCハードウェアはiSCSI CRCダイジェスト(これは予測されるiSCSI CRC値である)を含んでいるPDUセグメントにわたってiSCSI CRCを計算する。PDUセグメントは破損せず、iSCSI CRCダイジェストが正確ならば、ハードウェアにより計算される最終的なiSCSI CRC値は常に固定したiSCSI CRCの余りに等しい。   The data stream may or may not include the expected iSCSI CRC value for the PDU header or data segment. If the data stream does not contain an iSCSI CRC digest, the iSCSI CRC calculated by the hardware is stored back to the CB attachment as a working iSCSI CRC. The RX-DMA status message may or may not be generated. If an RX DMA status message is generated, the status message contains this working iSCSI CRC. If the data stream contains an iSCSI CRC digest at its end, the iSCSI CRC hardware computes an iSCSI CRC over the PDU segment that contains the iSCSI CRC digest (which is the expected iSCSI CRC value). If the PDU segment is not corrupted and the iSCSI CRC digest is correct, the final iSCSI CRC value calculated by the hardware is always equal to the remainder of the fixed iSCSI CRC.

一度すべてのポストされたバッファリストが埋められると、Statgenモジュールは最後のiSCSI CRCの余りを含むiSCSI CRCメッセージを有するRX DMA状態を発生する。   Once all posted buffer lists are filled, the Statgen module generates an RX DMA state with an iSCSI CRC message that includes the remainder of the last iSCSI CRC.

オンチッププロセッサはTCP受信iSCSI32IBまたはTCP受信iSCSI64IBを処理するように動作する。IBの処理中、オンチッププロセッサは新しいCRC計算の開始を示すために32’hffffffffである可能性があるiSCSI CRCシード、または先のRX DMA状態メッセージからのiSCSI CRCシードをソケットCBの付属へ書込む。このようにしてiSCSI CRCシードの書込みはiSCSI CRCの正しい値を設定する。   The on-chip processor operates to process TCP receive iSCSI 32IB or TCP receive iSCSI 64IB. During IB processing, the on-chip processor writes an iSCSI CRC seed that may be 32'hffffffff to indicate the start of a new CRC calculation, or an iSCSI CRC seed from a previous RX DMA status message to the socket CB attachment. Include. In this way, writing the iSCSI CRC seed sets the correct value for the iSCSI CRC.

標準的な受信32および受信64lbsを使用し、RX DMAエンジンにしたがう他の非iSCSI機構では、CRC機構は無視され、CRCシードは無意味であり、スキップされることができる。   For other non-iSCSI mechanisms that use standard receive 32 and receive 64 lbs and follow the RX DMA engine, the CRC mechanism is ignored and the CRC seed is meaningless and can be skipped.

RX DMA動作が行われる前、ピアは最終的にDMAによりホストメモリへ転送されるデータペイロードを含む1以上のTCPパケットを送信する。ピアのネットワークスタックの動作方法に応じて、iSCSIがすべてのPDUがdword境界でそれ自体整列することを必要としても、このペイロードは非dword整列される境界に分割されることができる。DMA動作は直接的に各TCPパケットのペイロードのサイズに一致しない。ペイロードが非dword整列されるならば、DMA動作は非dword整列され、この非dword整列されたデータストリームを通じてCRCを計算することが必要とされる。問題はiSCSI CRCハードウェアがすべてのデータがdword整列されることを予測することである。   Before an RX DMA operation is performed, the peer sends one or more TCP packets that contain a data payload that is ultimately transferred to the host memory by the DMA. Depending on how the peer's network stack operates, this payload can be divided into non-dword aligned boundaries even though iSCSI requires all PDUs to align themselves at dword boundaries. The DMA operation does not directly match the size of the payload of each TCP packet. If the payload is non-dword aligned, the DMA operation is non-dword aligned and it is required to calculate the CRC through this non-dword aligned data stream. The problem is that the iSCSI CRC hardware predicts that all data will be dword aligned.

iSCSI CRCハードウェアがこの窮地に遭遇するとき、非整列のデータストリームを通してiSCSI CRCを計算し続ける。最後に到達するとき、これは非二重ワード整列された1−3バイトをCBの付属へ記憶する。それはまた有効なバイト数も記憶する。例えばデータストリームが15バイトの長さであるならば、ハードウェアは最後の3バイトを記憶し、有効なバイト数は3である。データストリームが32バイトの長さであるならば、このデータストリームはdword整列されているので有効なバイト数は0である。CBの付属に記憶されている情報は検索され、次のDMA転送の前に挿入される。   As the iSCSI CRC hardware encounters this area, it continues to calculate the iSCSI CRC through the unaligned data stream. When it reaches the end, it stores 1-3 bytes of non-double word aligned to the CB's attachment. It also stores the number of valid bytes. For example, if the data stream is 15 bytes long, the hardware stores the last 3 bytes and the effective number of bytes is 3. If the data stream is 32 bytes long, the number of valid bytes is 0 because this data stream is dword aligned. The information stored in the CB attachment is retrieved and inserted before the next DMA transfer.

[iSCSI命令ブロック]
TCP送信iSCSI命令ブロック(IB)はiSCSIソケットを使用してiSCSI PDUを送信するために使用される。TCP送信iSCSI32IBの長さはこのIBがDMA転送で使用される1以上の転送ブロックを含むことができるので可変である。転送ブロックはアドレス(ヘッダまたはデータ)と転送長の対からなる。
[ISCSI instruction block]
The TCP send iSCSI command block (IB) is used to send iSCSI PDUs using an iSCSI socket. The length of the TCP transmission iSCSI 32IB is variable because this IB can contain one or more transfer blocks used in DMA transfer. A transfer block consists of a pair of address (header or data) and transfer length.

iSCSI CRC選択ビット1とiSCSI CRC選択ビット0はiSCSI制御モジュールによりiSCSI CRCの計算を決定する。iSCSI CRC選択ビット0=1ならば、iSCSI制御モジュールはiSCSIヘッダにわたってiSCSI CRCを計算する。iSCSI CRC選択ビット=1ならば、iSCSI制御モジュールはiSCSIデータにわたってiSCSI CRCを計算する。iSCSI CRC計算はiSCSIヘッダとiSCSIデータの両者、iSCSIデータのみ、iSCSIヘッダのみ、またはそれ以外にわたってiSCSI CRC計算エンジンにより行われることができる。   The iSCSI CRC selection bit 1 and the iSCSI CRC selection bit 0 determine the calculation of the iSCSI CRC by the iSCSI control module. If the iSCSI CRC selection bit 0 = 1, the iSCSI control module calculates the iSCSI CRC over the iSCSI header. If the iSCSI CRC select bit = 1, the iSCSI control module calculates the iSCSI CRC over the iSCSI data. The iSCSI CRC calculation can be performed by the iSCSI CRC calculation engine over both iSCSI header and iSCSI data, iSCSI data only, iSCSI header only, or otherwise.

iSCSIの総DMA長はiSCSI送信ブロックによりDMAされる必要のあるデータ全体の長さである。これは計算される必要のあるCRC長を含まない。   The total DMA length of iSCSI is the length of the entire data that needs to be DMAed by the iSCSI transmission block. This does not include the CRC length that needs to be calculated.

TCP送信iSCSI32IBの第1の転送ブロックのアドレスおよび転送長の対はホストメモリ中のiSCSIヘッダを指している。TCP送信iSCSI32IBの第2および任意のさらに別の転送ブロックはホストメモリ中のiSCSIデータを指している。   The address and transfer length pair of the first transfer block of the TCP transmission iSCSI 32IB points to the iSCSI header in the host memory. The second and optional further transfer blocks of the TCP send iSCSI 32IB point to the iSCSI data in the host memory.

BHSと任意のAHSと任意のデータセグメントを含んでいるiSCSI PDUはTCP送信32iSCSI IBまたはTCP送信64iSCSI IBを使用して転送される。   An iSCSI PDU containing a BHS, an optional AHS, and an optional data segment is transferred using a TCP send 32 iSCSI IB or a TCP send 64 iSCSI IB.

TCP送信iSCSI32IBの第1の転送ブロックは完全な単数または複数のiSCSI PDUヘッダ、0、1、またはより多くのAHSが後続するBHSでなければならず、すべての単数または複数のヘッダはTCP送信iSCSI32IBの第1の転送ブロックに含まれなければならない。   The first transport block of a TCP send iSCSI 32 IB must be a complete BHS followed by one or more iSCSI PDU headers, 0, 1, or more AHS, and all singular or multiple headers are TCP send iSCSI 32 IB Must be included in the first transfer block.

強調するために異なる方法で同じことを言うと、ホストiSCSIドライバはTCP送信iSCSI32IBでiSCSIヘッダセグメントを有する任意のiSCSIデータセグメントを含まなければならない。iSCSIデータセグメントはTCP送信iSCSI32IB中で、iSCSIヘッダセグメントとは別の転送ブロックに存在しなければならない。   To say the same in different ways to emphasize, the host iSCSI driver must include any iSCSI data segment with an iSCSI header segment in the TCP send iSCSI 32IB. The iSCSI data segment must be present in the TCP send iSCSI 32IB in a separate transport block from the iSCSI header segment.

TCP送信iSCSI32IBの各転送ブロックのホストメモリアドレスは32ビットである。64ビットアドレスが必要とされるならば、TCP送信iSCSI64IBが使用されるべきである。   The host memory address of each transfer block of the TCP transmission iSCSI 32IB is 32 bits. If a 64-bit address is required, TCP send iSCSI 64IB should be used.

明確に図示された3つの転送ブロックを有するTCP送信iSCSI32IBのフォーマットを以下説明する。   The format of a TCP send iSCSI 32IB having three transport blocks clearly illustrated is described below.

CRC選択ビット0とCRC選択ビット1は各転送ブロックの処理を同様にするために第1の転送ブロックの未使用部分ではなくIB中の別々のワードに記憶される。   CRC select bit 0 and CRC select bit 1 are stored in separate words in the IB rather than the unused portion of the first transfer block in order to make the processing of each transfer block similar.

TCP受信iSCSI32IBはiSCSIソケットで受信するのに使用されるようにバッファをポストするために使用される。   The TCP receive iSCSI 32IB is used to post a buffer to be used to receive on an iSCSI socket.

TCP受信iSCSI32IBの長さはこのIBがDMA転送に使用される随意選択的な数の転送ブロックからなるので可変である。TCP受信iSCSI32IBの転送ブロックはアドレスと転送長の対からなる。   The length of the TCP receive iSCSI 32IB is variable because this IB consists of an optional number of transfer blocks used for DMA transfer. The transfer block of the TCP reception iSCSI 32IB is composed of a pair of address and transfer length.

iSCSI CRCシードはDMAおよびiSCSI CRC計算が開始する前にiSCSI CRCエンジンをシードするために使用される。iSCSI CRCシードはiSCSI CRCがリクエストされるならば、32’hffffffffに設定されなければならない。iSCSI CRCがリクエストされないならば、シード値のセットは不適切である。   The iSCSI CRC seed is used to seed the iSCSI CRC engine before DMA and iSCSI CRC calculations begin. The iSCSI CRC seed must be set to 32'hffffffff if iSCSI CRC is requested. If the iSCSI CRC is not requested, the seed value set is inappropriate.

説明:iSCSI CRC計算が必要とされないならば、iSCSI CRCシードをゼロに設定する必要はない。   Description: If no iSCSI CRC calculation is required, there is no need to set the iSCSI CRC seed to zero.

TCP受信iSCSI32IB中の各転送ブロックのアドレス長は32ビットである。64ビットのアドレシングでは、TCP受信iSCSI64IBが使用されなければならない。   The address length of each transfer block in the TCP reception iSCSI 32IB is 32 bits. For 64-bit addressing, TCP receive iSCSI 64IB must be used.

[別のiSCSI構成]
先の説明はiSCSI PDUヘッダを組立てるためにホストコンピュータを使用するIT10Gの動作を詳細にしている。別の実施形態はIT10GハードウェアとオンチッププロセッサがiSCSI PDUを組立て処理することを可能にする。この別の実施形態を次に説明する。
[Another iSCSI configuration]
The above description details the operation of IT10G using a host computer to assemble the iSCSI PDU header. Another embodiment allows IT10G hardware and on-chip processors to assemble and process iSCSI PDUs. This alternative embodiment will now be described.

このセクションはオンチッププロセッサの使用によるiSCSIのハードウェアサポートを説明する。高レベルから、ハードウェアは送信されたパケットのCRCおよび固定したインターバルのマーカ(FIM)をオフロードする。受信されるデータパスでは、PDUヘッダをオンチッププロセッサまたはホストコンピュータへDMAし、PDUのデータセクションをホストへDMAする能力はCRCチェックと共にサポートされる。これはホストコンピュータで付加的なメモリコピーを必要とせずに、iSCSIヘッダとデータが別々にされ、ホストコンピュータメモリにコピーされることを可能にする。   This section describes iSCSI hardware support through the use of on-chip processors. From the high level, the hardware offloads the CRC and fixed interval marker (FIM) of the transmitted packet. In the received data path, the ability to DMA the PDU header to the on-chip processor or host computer and DMA the data section of the PDU to the host is supported along with a CRC check. This allows the iSCSI header and data to be separated and copied to the host computer memory without requiring an additional memory copy at the host computer.

[ヘッダ記憶装置(HSU)]
送信されるiSCSI PDUに対しては、オンチッププロセッサはそのメモリでパケットのヘッダを構築するように動作する。オンチッププロセッサは発生するiSCSI PDUの種類を示すためにホストコンピュータからiSCSI命令ブロック(IB)を受信する。PDUに関連するSCSIデータが存在する場合、バッファのリンクリストもIBを介して与えられる。
[Header storage device (HSU)]
For transmitted iSCSI PDUs, the on-chip processor operates to build the packet header in its memory. The on-chip processor receives an iSCSI command block (IB) from the host computer to indicate the type of iSCSI PDU generated. If there is SCSI data associated with the PDU, a linked list of buffers is also provided via the IB.

一度、オンチッププロセッサがPDUヘッダを発生すると、それはオンチッププロセッサメモリからMTXメモリ(送信データバッファ)へヘッダを転送するためにHSUモジュールを使用する。HSUはまた必要ならばヘッダのCRCも計算する。   Once the on-chip processor generates a PDU header, it uses the HSU module to transfer the header from the on-chip processor memory to the MTX memory (transmit data buffer). The HSU also calculates the header CRC if necessary.

PDUに関連するSCSIデータが存在しないならば、HSUモジュールが使用可能になるとすぐに、オンチッププロセッサメモリからMTXメモリへデータの転送を開始する。必要ならば、CRCもまた計算されFIMは挿入される。   If there is no SCSI data associated with the PDU, it begins to transfer data from on-chip processor memory to MTX memory as soon as the HSU module is available. If necessary, the CRC is also calculated and the FIM is inserted.

PDUで転送されるSCSIが存在するならば、DMAの2つのモード、即ちワンショットおよびリンクリストが与えられる。リンクリストモードが使用されるならば、HSUは第1のリンクリスト(LL)エントリを検索し、ホストDMA転送をリクエストする。DMAエンジンがHSUに第1の転送が終了したことを示すとき、HSUはARMメモリからMTXメモリへのヘッダの転送を開始する。丁度DMAされたデータはヘッダの最後に添付される。またこの時間中に、次のLLエントリが検索され、DMAはリクエストされる。一度HSUがホストDMA転送を承認されると、LLのすべてのエントリがサービスされるまで(少なくともTX側の)DMAエンジンへのアクセスをロックする。これはFIMおよびCRC論理装置がデータパスで実行することを容易にする。   If there is SCSI transferred in the PDU, two modes of DMA are given, one shot and link list. If link list mode is used, the HSU retrieves the first link list (LL) entry and requests a host DMA transfer. When the DMA engine indicates to the HSU that the first transfer has been completed, the HSU starts transferring the header from the ARM memory to the MTX memory. The data just DMAed is attached to the end of the header. Also during this time, the next LL entry is retrieved and the DMA is requested. Once the HSU is granted host DMA transfer, it locks access to the DMA engine (at least on the TX side) until all entries in the LL are serviced. This makes it easy for FIM and CRC logic units to run in the data path.

[CRC計算モジュール]
このモジュールはPDUヘッダとデータセクションの両者のCRC値を計算するように動作する。CRCはその後、対応するフィールドに添付される。このモジュールを供給するデータは(ヘッダデータに対しては)HSUを介してオンチッププロセッサメモリ、または(SCSIデータに対しては)DMA TX FIFOから来ることができる。CRC計算装置からの出力はFIMモジュールに与えられる。
[CRC calculation module]
This module operates to calculate CRC values for both the PDU header and the data section. The CRC is then attached to the corresponding field. The data providing this module can come from on-chip processor memory via HSU (for header data) or from DMA TX FIFO (for SCSI data). The output from the CRC calculator is provided to the FIM module.

[FIM挿入モジュール]
このモジュールはFIMをPDUへ挿入するように動作する。これは初期オフセット、インターバルカウント、PDU長をHSUユニットから受信する。FIMを挿入するとき、データの何等かのリパックが必要とされよう。このモジュールの別の機能は送信されるPDUの全長を決定することである。この長さはPDU+任意のCRCバイト+任意のFIMのプログラムされた長さである。この長さはその後、XMTCTLモジュールへ送られ、それはPDUを適切なサイズのTCPパケットに分割するように動作する。
[FIM insertion module]
This module operates to insert the FIM into the PDU. This receives the initial offset, interval count, and PDU length from the HSU unit. When inserting a FIM, some repacking of data will be required. Another function of this module is to determine the total length of transmitted PDUs. This length is the programmed length of PDU + any CRC byte + any FIM. This length is then sent to the XMTCTL module, which operates to break the PDU into appropriately sized TCP packets.

[XMTCTL Mux モジュール]
このモジュールはXMTCTLモジュールへ入力されるデータを多重化するように動作する。データはDMA TX FIFOバッファまたはFIM挿入モジュールから直接的である。いずれかのパスにより、多重化論理装置はパケットの全長を示し、また128ビット幅のフォーマットのデータを提供する。データはdav/grantハンドシェークを使用してXMTCTLモジュールヘ送られる。
[XMTCTL Mux module]
This module operates to multiplex data input to the XMTCTL module. Data is directly from the DMA TX FIFO buffer or FIM insertion module. With either path, the multiplexing logic unit indicates the total length of the packet and provides data in a 128 bit wide format. Data is sent to the XMTCTL module using a dav / grant handshake.

[iSCSI受信サポート]
[概要]
iSCSI受信データパスのブロック図が図53に示されている。
[ISCSI reception support]
[Overview]
A block diagram of the iSCSI receive data path is shown in FIG.

[TCPRXモジュール]
このモジュール531は受信されたTCPパケットを解析するように動作する。iSCSIパケットが到着するとき、これは128バイトまたは2KバイトバッファでMRXメモリに記憶されるので、任意の他のTCPデータと同様に最初に扱われる。ソケットのCBのビット(WORD 0×D、ビット[30])はこのソケットがホストまたはオンチッププロセッサにより所有されているか否かを示す。ソケットがオンチッププロセッサにより所有されているならば、データは自動的にホストにDMAされない。代りに状態メッセージが発生され、正常のネットワークスタック状態メッセージ待ち行列を介してオンチッププロセッサに送信される。
[TCPRX module]
This module 531 operates to analyze the received TCP packet. When an iSCSI packet arrives, it is stored first in the MRX memory with a 128 byte or 2K byte buffer, so it is treated first like any other TCP data. The socket CB bit (WORD 0xD, bit [30]) indicates whether this socket is owned by the host or on-chip processor. If the socket is owned by the on-chip processor, the data is not automatically DMAed to the host. Instead, status messages are generated and sent to the on-chip processor via the normal network stack status message queue.

[MRXメモリへのオンチッププロセッサのアクセス]
オンチッププロセッサがソケットにiSCSIデータが受信されていることを通知されたとき、CPUアドレスとmallocrxレジスタセットのデータレジスタを介してMRX中のデータを読取ることができる。オンチッププロセッサはその中のヘッダから受信されたPDUタイプを決定するためにMRXメモリ532を主に読取っていることが予測される。オンチッププロセッサがヘッダをそのメモリへ移動することを決定したならば、これはLDMAモジュールを使用する。データをホストへDMAおよびPDUすることを決定したならば、HDMAモジュール533を使用する。
[On-chip processor access to MRX memory]
When the on-chip processor is informed that the socket is receiving iSCSI data, the data in the MRX can be read via the CPU address and the data register of the mallocrx register set. It is expected that the on-chip processor is primarily reading the MRX memory 532 to determine the PDU type received from the header therein. If the on-chip processor decides to move the header to its memory, it uses the LDMA module. If it is decided to DMA and PDU data to the host, the HDMA module 533 is used.

[RXISCSIモジュール]
オンチッププロセッサがMRXメモリからそれ自身のローカルメモリへデータを移動しようと望んでいるとき、RXISCSIモジュールを使用する。データのCRCは選択的にこの転送中にチェックされる。動作が完了するとき、割込みまたは状態メッセージが発生される。
[RXISCSI module]
The RXISCSI module is used when the on-chip processor wants to move data from the MRX memory to its own local memory. The CRC of the data is selectively checked during this transfer. When the operation is complete, an interrupt or status message is generated.

データが多数のMRXバッファをスパンするならば、転送は2つのリクエストに分割されなければならない。この一例が図54に示されている。   If the data spans multiple MRX buffers, the transfer must be divided into two requests. An example of this is shown in FIG.

この場合、第1の転送はMRXソースアドレスとしてAdd1、転送長としてLength1によりプログラムされる。LAST_BLKビットもまた第1の転送用に設定されない。動作が完了するとき、部分的なCRC結果もまた状態メッセージ中に戻される。オンチッププロセッサはその後、ローカルDMA(LDAM)をAdd2およびLength2によりプログラムし、ヘッダ転送を終了するようにLAST__BLKビットを設定する。動作が連続しているならば、CRCシードはプログラムされる必要はない。そうでなければ、状態メッセージ中に戻されたCRCの部分的結果は第2の転送のためにCRCシードとしてプログラムされるべきではない。CRCバイトだけが第2のバッファに残留する場合、長さ0の転送は使用可能になったCRCチェックで使用されるべきである。   In this case, the first transfer is programmed with Add1 as the MRX source address and Length1 as the transfer length. The LAST_BLK bit is also not set for the first transfer. When the operation is complete, a partial CRC result is also returned in the status message. The on-chip processor then programs the local DMA (LDAM) with Add2 and Length2, and sets the LAST__BLK bit to end the header transfer. If the operation is continuous, the CRC seed need not be programmed. Otherwise, the CRC partial result returned in the status message should not be programmed as a CRC seed for the second transfer. If only CRC bytes remain in the second buffer, a zero length transfer should be used with the CRC check enabled.

[オンチッププロセッサで開始されたHDMA]
オンチッププロセッサが受信されたSCSIデータをホストへ送信しようと望むとき、それはホストDMA(HDMA)エンジンを転送長と共にMRXおよびホストメモリの両方に開始アドレスでプログラムする。代りに、オンチッププロセッサはバッファのリンクリストが位置されるそのメモリ中の位置を特定できる。
[HDMA started with on-chip processor]
When the on-chip processor wishes to send the received SCSI data to the host, it programs a host DMA (HDMA) engine with a transfer length in both MRX and host memory with a start address. Instead, the on-chip processor can identify the location in its memory where the linked list of buffers is located.

リンクリストは255までのエントリを含むことができる。DMA転送中、HDMAモジュールはCRC値をチェックするように随意選択的にプログラムされることができる。このオプションが使用可能になるならば、DMA転送長はCRCバイトを含んではならない。また、CRCチェックがリクエストされるとき、随意選択的なCRC開始シードはプログラムされることができる。   The linked list can contain up to 255 entries. During a DMA transfer, the HDMA module can optionally be programmed to check the CRC value. If this option is enabled, the DMA transfer length must not include CRC bytes. Also, an optional CRC start seed can be programmed when a CRC check is requested.

SCSIデータが多数のMRXバッファを横切って分割されるならば、ホストへのDMA転送は別々のリクエストに分割されなければならない。この状態は図55に示されている。   If the SCSI data is split across multiple MRX buffers, the DMA transfer to the host must be split into separate requests. This state is shown in FIG.

この場合、HDMAは最初に開始MRXメモリアドレスとしてのAdd1と、転送長としてのLength1とでプログラムされなければならない。Last_Host_Blkビットはまた第1の転送用に設定されてはならない。DMA動作が完了するとき、状態メッセージが発生される。CRCチェックもまたリクエストされるならば、状態メッセージはまた部分的なチェックサム値を戻す。オンチッププロセッサはその後、HDMAエンジンをAdd2およびLength2によってプログラムし、データ転送を終了するようにLAST_Host_Blkビットを設定する。これらの2つの転送が連続しているならば、CRCシード値はプログラムされる必要はない。そうでなければ、状態メッセージ中で戻される部分的なCRCの結果は第2のDMA転送リクエストの一部としてプログラムされる。CRCバイトだけが第2のバッファに残る場合、長さ=0とCRC_En=1の転送が使用されなければならない。   In this case, the HDMA must first be programmed with Add1 as the starting MRX memory address and Length1 as the transfer length. The Last_Host_Blk bit must also not be set for the first transfer. A status message is generated when the DMA operation is complete. If a CRC check is also requested, the status message also returns a partial checksum value. The on-chip processor then programs the HDMA engine with Add2 and Length2, and sets the LAST_Host_Blk bit to end the data transfer. If these two transfers are consecutive, the CRC seed value need not be programmed. Otherwise, the partial CRC result returned in the status message is programmed as part of the second DMA transfer request. If only CRC bytes remain in the second buffer, a transfer of length = 0 and CRC_En = 1 must be used.

[オンチッププロセッサのMRXバッファの解放]
オンチッププロセッサが所有するソケットでは、オンチッププロセッサはもはや使用されないMRXバッファをMRXバッファの割当て解除装置へ解放するように動作する。これはMRX_128_Block_AddまたはMRX_2K_Block_Addレジスタへ解放されるブロックに対するベースアドレスを書込み、その後、解放コマンドを対応するMRX_Block_Commandレジスタへ発生することによってこれを行う。
[Release MRX buffer of on-chip processor]
In sockets owned by the on-chip processor, the on-chip processor operates to release MRX buffers that are no longer used to the MRX buffer deallocator. This is done by writing the base address for the block to be released to the MRX_128_Block_Add or MRX_2K_Block_Add register and then issuing a release command to the corresponding MRX_Block_Command register.

[IPSecサポートアーキテクチャ]
[概要]
以下の説明は、IPSECに対してハードウェアで実行されるサポートの詳細である。この構成はプロトコルの暗号化、暗号解読、認証機能のコンピュータ特性を処理するために別々のモジュールを仮定し、これらの特性のすべてはよく知られ理解されている。構成はまたIKEのようなよく知られよく理解され使用されている任意のキー交換プロトコルがホストコンピュータでアプリケーションとして処理されることも仮定している。勿論、キー交換機能を一体化することも可能である。
[IPSec support architecture]
[Overview]
The following description details the support performed in hardware for IPSEC. This configuration assumes separate modules to handle the computer characteristics of protocol encryption, decryption, and authentication functions, all of which are well known and understood. The configuration also assumes that any well-known and well-understood and used key exchange protocol such as IKE is processed as an application on the host computer. Of course, the key exchange function can also be integrated.

この説明はIPSECサポートを送信および受信セクションに分割する。これは共通のセキュリティ関連(SA)ブロックを共用する以外に、2つのモジュールが相互に独立して動作するので、行われる。   This description divides IPSEC support into transmit and receive sections. This is done because the two modules operate independently of each other in addition to sharing a common security association (SA) block.

IPSec特性:
・SA毎のアンチリプレイサポート、
・ゼロ、DES、3DESアルゴリズムと、暗号ブロック連鎖(CBC)モードにおけるAESの128ビットアルゴリズム、
・ゼロ、SHA−1、MD−5認証アルゴリズム、
・192ビットまでの可変長暗号化キー、
・160ビットまでの可変長認証キー、
・Jumboフレームサポート、
・時間および転送される総データに基づいたSA満了の自動処理、
・IPsecポリシー施行、
・例外パケットの生成と状態通知とを含むIPsec例外処理。
IPSec characteristics:
・ Anti-replay support for each SA,
Zero, DES, 3DES algorithm, and AES 128-bit algorithm in cipher block chaining (CBC) mode,
・ Zero, SHA-1, MD-5 authentication algorithm,
A variable length encryption key up to 192 bits,
-Variable length authentication key up to 160 bits,
・ Jumbo frame support,
Automatic processing of SA expiration based on time and total data transferred,
-IPsec policy enforcement,
IPsec exception handling including exception packet generation and status notification.

IPsecプロトコルおよびモード:
・転送AH、
・転送ESP、
・転送ESP+AH、
・トンネルAH、
・トンネルESP、
・トンネルESP+AH、
・転送AH+トンネルAH、
・転送AH+トンネルESP、
・転送AH+トンネルESP+AH、
・転送ESP+トンネルAH、
・転送ESP+トンネルESP、
・転送ESP+トンネルESP+AH、
・転送ESP+AH+トンネルAH、
・転送ESP+AH+トンネルESP、
・転送ESP+AH+トンネルESP+AH。
IPsec protocol and mode:
・ Transfer AH,
・ Transfer ESP,
・ Transfer ESP + AH,
・ Tunnel AH,
・ Tunnel ESP,
・ Tunnel ESP + AH,
・ Transfer AH + Tunnel AH,
・ Transfer AH + Tunnel ESP,
・ Transfer AH + Tunnel ESP + AH,
・ Transfer ESP + Tunnel AH,
・ Transfer ESP + Tunnel ESP,
・ Transfer ESP + Tunnel ESP + AH,
・ Transfer ESP + AH + Tunnel AH,
・ Transfer ESP + AH + Tunnel ESP,
Transfer ESP + AH + tunnel ESP + AH.

[セキュリティ関連ブロックフォーマット(SA)]
専用のメモリ構造は各IPSEC接続における情報を記憶するために使用される。AHとESPプロトコル、およびRXとTX SAの両者(RX SAのカバーデータは受信されTX SAのカバーデータは送信される)に対しては別々のブロックが存在する。それ故、データの送信および受信の両者のためにAHおよびESPの両者を使用するソケット接続は多数のSAブロックを必要とする。AHは1SAブロックを必要とし、ESPは2つのブロック(ESP−1とESP−2)を必要とする。秘密保護されるソケット接続の総数はSAブロックに対して与えられたメモリの総量にしたがう。
[Security-related block format (SA)]
A dedicated memory structure is used to store information on each IPSEC connection. Separate blocks exist for both AH and ESP protocols, and RX and TX SA (RX SA cover data is received and TX SA cover data is transmitted). Therefore, socket connections that use both AH and ESP for both sending and receiving data require multiple SA blocks. AH requires one SA block and ESP requires two blocks (ESP-1 and ESP-2). The total number of socket connections to be secured depends on the total amount of memory given to the SA block.

Txデータパスは単一の転送でトンネルおよび転送モードをサポートできる。最悪の場合のシナリオでは、AHとESPの両者がトンネルおよび転送モードの両者で使用されるならば、6つのSAブロックが共に連結されることができる。送信されるデータに対しては、ソケットCBはトンネル/転送TX AHまたはトンネル/転送TX ESP−1 SAへのポインタを含んでいる。両プロトコルが送信されるデータで使用される場合には、CBはTX AH SAへのリンクを含み、これはTX ESP−1 SAへのリンクを含んでいる。   The Tx data path can support tunnel and transfer mode with a single transfer. In the worst case scenario, six SA blocks can be concatenated together if both AH and ESP are used in both tunnel and transfer modes. For transmitted data, socket CB contains a pointer to tunnel / forward TX AH or tunnel / forward TX ESP-1 SA. If both protocols are used in the transmitted data, the CB contains a link to the TX AH SA, which contains a link to the TX ESP-1 SA.

Rxデータパスは単一の転送でAHとESP解読をサポートしない。Rxデータパスは単一の転送でトンネルおよび転送モードをサポートしない。暗号化されたパケットは反復して解読される。受信されたデータでは、RX_SA_LUTはRX AHまたはTX ESP−1 SAへのポインタを含んでいる。   The Rx data path does not support AH and ESP decoding in a single transfer. The Rx data path does not support tunnel and transfer mode with a single transfer. Encrypted packets are repeatedly decrypted. In the received data, RX_SA_LUT contains a pointer to RX AH or TX ESP-1 SA.

図56はSAブロックフローを示している。   FIG. 56 shows the SA block flow.

[クライアントソケットの生成]
アプリケーションがIPSEC保護されたクライアントソケットを生成する必要があるとき、以下のシーケンスを実行しなければならない。
・すべての応用可能なSAパラメータをIPSEC SA特定レジスタへ書込む。これは多数の書込みコマンドの発生を必要とする。SAハンドルはRX SA LUTへ挿入される。
・IPSECは新しいSAハンドルを戻す。
・このSAハンドルをソケット特定レジスタへ書込む。
・ソケット構造2レジスタのIPSECビットの設定を含んだすべての応用可能なソケットパラメータをCPソケット特定レジスタへ書込む。
・commit_socketコマンドを発生する。
[Create client socket]
When an application needs to create an IPSEC protected client socket, the following sequence must be performed:
• Write all applicable SA parameters to the IPSEC SA specific register. This requires the generation of a large number of write commands. The SA handle is inserted into the RX SA LUT.
• IPSEC returns a new SA handle.
• Write this SA handle to the socket specific register.
Write all applicable socket parameters, including the setting of the IPSEC bit of the socket structure 2 register, to the CP socket specific register.
Generate a commit_socket command.

TX SAへのリンクはオープンCBに記憶されている。ソケットは現在使用する準備が整っている。   The link to TX SA is stored in open CB. The socket is now ready for use.

[サーバソケットのSA生成]
アプリケーションがIPSEC保護されたサーバソケットを生成する必要があるときには、以下のシーケンスを実行しなければならない。
・すべての応用可能なSAパラメータをIPSEC SA特定レジスタへ書込む。これは多数の書込みコマンドの発生を必要とする。SAハンドルはRX SA LUT中へ挿入される。
・IPSECは新しいSAハンドルを戻す。
・このSAハンドルをソケット特定レジスタへ書込む。
・ソケット構造2レジスタのIPSECビットの設定を含んだすべての応用可能なソケットパラメータをCPソケット特定レジスタへ書込む。
・commit_socketコマンドを発生する。
[SA generation of server socket]
When an application needs to create an IPSEC protected server socket, the following sequence must be performed:
• Write all applicable SA parameters to the IPSEC SA specific register. This requires the generation of a large number of write commands. The SA handle is inserted into the RX SA LUT.
• IPSEC returns a new SA handle.
• Write this SA handle to the socket specific register.
Write all applicable socket parameters, including the setting of the IPSEC bit of the socket structure 2 register, to the CP socket specific register.
Generate a commit_socket command.

コミットソケットコマンドは、サーバポート情報テーブルエントリの生成に加えて、HO CBも生成する。HO CBはその中にIPSECビットセットを有する。このビットはHO CBが同一のHASHへ偶然に復号する別の入来するSYNにより再使用されないようにする。TX SAハンドルはHO CB中に記憶される。ソケットは現在使用の準備が整っている。   In addition to generating the server port information table entry, the commit socket command also generates a HO CB. The HO CB has an IPSEC bit set in it. This bit prevents the HO CB from being reused by another incoming SYN that happens to decode to the same HASH. The TX SA handle is stored in the HO CB. The socket is now ready for use.

注意:この場合、前述したように、HO CBは同一のHASHを有するSYNが受信されるときに重ね書きされない。HO CBはソケットが設定された状態に転移されオープンCBが生成されるときにデプリケートされる。しかしながら、ソケットが設定された状態に到達できなかった場合、ホストはHO CBをマニュアルでデプリケートするように動作する。これはHO CBハンドルをHO_CBハンドルレジスタに入力し、その後Deprecate_HOCBコマンドを発生することによりこれを行う。この状態のホストは関連するSAブロックをデプリケートしなければならない。   Note: In this case, as mentioned above, the HO CB is not overwritten when a SYN with the same HASH is received. The HO CB is replicated when the socket is transitioned to the configured state and an open CB is created. However, if the socket fails to reach the configured state, the host operates to manually replicate the HO CB. This is done by entering the HO CB handle into the HO_CB handle register and then generating a Deprecate_HOCB command. A host in this state must replicate the associated SA block.

[SA連結]
SAブロックはリンク有効ビットとリンクフィールドとを有し、これは別のSAを指している。CPUは必要ならば、多数のSAをリンクするためにこのフィールドを使用できる。CPUはSAブロックを連結するために以下のシーケンスを実行しなければならない。
・連結されるSAブロックによりSA_Linkレジスタを構成する。
・CFG1レジスタにLink_Valビットを設定する。
・連結されるSAブロックによりSA_Handleレジスタを構成する。
・“更新SA”コマンドを発生する。
[SA link]
The SA block has a link valid bit and a link field, which points to another SA. The CPU can use this field to link multiple SAs if necessary. The CPU must execute the following sequence to connect the SA blocks.
-The SA_Link register is configured by the connected SA blocks.
• Set the Link_Val bit in the CFG1 register.
-The SA_Handle register is configured by the connected SA blocks.
Generate an “update SA” command.

[SAデプリケーション/割当て解除]
TxまたはRx SAブロックはCBがデプリケートされるときに自動的にデプリケートされるのではない。CPUは使用されていないSAブロックの追跡を維持してこれらのSAブロックをデプリケート/割当て解除するための“SA無効化”コマンドを発生する。
[SA replication / deallocation]
Tx or Rx SA blocks are not automatically replicated when CBs are replicated. The CPU generates a “SA Disable” command to keep track of unused SA blocks and to replicate / deallocate those SA blocks.

SAが満了するとき、HWはマスクされていないならば、割込みを発生する。満了されたSAブロックはメモリから割当てを解除されない。この事象はまた満了されたSAのSAハンドルを含んでいる状態メッセージを発生する。CPUこのSAを更新するためにこのハンドルを使用でき、またはCPUはそのSAブロックをデプリケート/割当て解除するための“SA無効化”コマンドを発生できる。   When the SA expires, an interrupt is generated if the HW is not masked. Expired SA blocks are not deallocated from memory. This event also generates a status message containing the SA handle of the expired SA. The CPU can use this handle to update this SA, or the CPU can generate a “SA Invalidate” command to replicate / deallocate that SA block.

[TX AH転送SAブロックフォーマット]
図57はTX AH転送SAブロックフォーマットを示している。
[TX AH transfer SA block format]
FIG. 57 shows the TX AH transfer SA block format.

[TX ESP−1転送SAブロックフォーマット]
図58はTX ESP−1転送SAブロックフォーマットを示している。
[TX ESP-1 transfer SA block format]
FIG. 58 shows the TX ESP-1 transfer SA block format.

[TX ESP−2転送SAブロックフォーマット]
図59はTX ESP−2転送SAブロックフォーマットを示している。
[TX ESP-2 transfer SA block format]
FIG. 59 shows the TX ESP-2 transfer SA block format.

[TX AHトンネルSAブロックフォーマット]
図60はTX AHトンネルSAブロックフォーマットを示している。
[TX AH tunnel SA block format]
FIG. 60 shows a TX AH tunnel SA block format.

[TX ESP−1トンネルSAブロックフォーマット]
図61はTX ESP−1トンネルSAブロックフォーマットを示している。
[TX ESP-1 Tunnel SA Block Format]
FIG. 61 shows the TX ESP-1 tunnel SA block format.

[TX ESP−2トンネルSAブロックフォーマット]
図62はTX ESP−2トンネルSAブロックフォーマットを示している。
[TX ESP-2 tunnel SA block format]
FIG. 62 shows the TX ESP-2 tunnel SA block format.

[RX AH SAブロックフォーマット]
図63はRX AH SAブロックフォーマットを示している。
[RX AH SA block format]
FIG. 63 shows the RX AH SA block format.

[RX ESP−1 SAブロックフォーマット]
図64はRX ESP−1 SAブロックフォーマットを示している。
[RX ESP-1 SA block format]
FIG. 64 shows the RX ESP-1 SA block format.

[RX ESP−2 SAブロックフォーマット]
図65はRX ESP−2 SAブロックフォーマットを示している。
[RX ESP-2 SA block format]
FIG. 65 shows the RX ESP-2 SA block format.

[セキュリティ関連ブロックフィールドの定義]
[SAタイプ]
これらのビットはブロックが表すSAブロックのタイプを特定するために使用され、診断サポートのために与えられる。復号は以下の表で示されている。

Figure 0004875126
[Definition of security-related block fields]
[SA type]
These bits are used to identify the type of SA block that the block represents and are provided for diagnostic support. Decoding is shown in the table below.
Figure 0004875126

上記の表に示されていないすべての他の復号は将来使用するために保留されている。   All other decryptions not shown in the table above are reserved for future use.

[SAバージョン]
これらのビットはSAのバージョン数を特定し、診断目的用に与えられる。すべてのSAブロックタイプの現在のバージョンは0×1である。
[SA version]
These bits specify the SA version number and are provided for diagnostic purposes. The current version of all SA block types is 0x1.

[XV、RV(有効な送信/受信SA)]
これらのビットはSAブロックが有効であり使用されることができることを示している。
[XV, RV (valid transmission / reception SA)]
These bits indicate that the SA block is valid and can be used.

[XA、RA(エネーブルな送信/受信認証)]
これらのビットは認証がこのプロトコルに対して使用可能になり、このソケットのパケットで使用されるべきであることを示している。対応する認証アルゴリズムおよびキーフィールドもまた有効である。TX/RX AH SAでは、このビットは常に設定されるべきである。TX/RX ESP SAでは、これは随意選択的である。
[XA, RA (Enable Send / Receive Authentication)]
These bits indicate that authentication is enabled for this protocol and should be used in packets on this socket. Corresponding authentication algorithms and key fields are also valid. In TX / RX AH SA, this bit should always be set. In TX / RX ESP SA, this is optional.

[XA_ALG、RA_ALG(送信/受信認証アルゴリズム)]
これらのビットは認証に使用されるアルゴリズムを示している。可能な選択肢が以下の表にリストされている。

Figure 0004875126
[XA_ALG, RA_ALG (transmission / reception authentication algorithm)]
These bits indicate the algorithm used for authentication. The possible choices are listed in the table below.
Figure 0004875126

示されていないすべての復号は将来使用するために保留されている。   All decryptions not shown are reserved for future use.

[XE、RE(送信/受信暗号化エネーブル)]
これらのビットは暗号化がこのソケットのパケットに対して使用されるべきであり、暗号化キーおよび暗号化アルゴリズムフィールドが有効であることを示している。このビットはTX/RX ESP SAに対してのみ規定されている。
[XE, RE (Transmit / Receive Encryption Enable)]
These bits indicate that encryption should be used for this socket packet and that the encryption key and encryption algorithm fields are valid. This bit is specified only for TX / RX ESP SA.

[XE_ALG、RE_ALG(送信/受信アルゴリズム)]
これらのビットは暗号化に使用されるアルゴリズムを示している。可能な選択肢が以下の表にリストされている。

Figure 0004875126
[XE_ALG, RE_ALG (transmission / reception algorithm)]
These bits indicate the algorithm used for encryption. The possible choices are listed in the table below.
Figure 0004875126

示されていないすべての他の復号は将来使用するために保留されている。   All other decryptions not shown are reserved for future use.

[RAR(受信アンチリプレイエネーブル)]
このビットはアンチリプレイアルゴリズムが受信されたパケットで使用されるべきであることを示している。
[RAR (Reception Anti-Replay Enable)]
This bit indicates that the anti-replay algorithm should be used in the received packet.

[XTV、RTV(送信/受信タイムスタンプ有効)]
これらのビットはタイムスタンプフィールドがSAで有効であり、タイムスタンプが満了するとき、SAブロックは古いと考えられるべきであることを示している。
[XTV, RTV (transmission / reception time stamp valid)]
These bits indicate that the time stamp field is valid for SA, and when the time stamp expires, the SA block should be considered stale.

[XBV、RBV(送信/受信バイトカウント有効)]
これらのビットはバイトカウント限定フィールドがSAで有効であり、バイトカウントがこの値に到達するとき、そのSAブロックが古いと考えられるべきであることを示している。
[XBV, RBV (transmission / reception byte count valid)]
These bits indicate that the byte count limited field is valid in SA and that when the byte count reaches this value, the SA block should be considered stale.

[XSV、RSV(送信/受信シーケンス限定有効)]
これらのビットはシーケンス番号フィールドが0×FFFFFFFFをラップするとき、SAブロックは古いと考えられるべきであることを示している。
[XSV, RSV (valid for transmission / reception sequence only)]
These bits indicate that the SA block should be considered stale when the sequence number field wraps 0xFFFFFFFF.

注意:xTV、xBVまたはxSVビットがすべて設定されないならば、SAブロックは永続的であると判断され、決して満了しない。   Note: If all xTV, xBV, or xSV bits are not set, the SA block is considered persistent and never expires.

[RDC(受信目的地IPチェックエネーブル)]
このビットは任意のパケットの目的地IPアドレスがこのSAの目的地IPアドレスフィールドに一致しなければならないことを示している。
[RDC (Reception destination IP check enable)]
This bit indicates that the destination IP address of any packet must match the destination IP address field of this SA.

[RSC(受信SPIチェックエネーブル)]
このビットはIPSECヘッダのSPIフィールドがこのSAの目的地IPアドレスフィールドに一致しなければならないことを示している。
[RSC (Receive SPI Check Enable)]
This bit indicates that the SPI field of the IPSEC header must match the destination IP address field of this SA.

[RTR(到達した/ディスエーブルされた受信タイムスタンプの透かし限定)]
このビットが設定されないならば、タイムスタンプの透かしチェックが行われることができる。これが状態メッセージを発生するとき、さらに透かし状態メッセージが送信されないようにこのビットが設定される。
[RTR (Received / Disabled Received Timestamp Watermark Limited)]
If this bit is not set, a timestamp watermark check can be performed. When this generates a status message, this bit is set so that no further watermark status message is sent.

[LV(リンク有効)]
このビットはSAブロックがこのSAにリンクされていることを示している。このビットが有効であるとき、リンクフィールドは次のSAブロックのSAハンドルを含んでいる。
[LV (link valid)]
This bit indicates that the SA block is linked to this SA. When this bit is valid, the link field contains the SA handle of the next SA block.

[SPI番号]
これはプロトコルに関連するSPIである。TX SAでは、このSPIはプロトコルヘッダに含まれている。RX SAでは、このSPIは受信されたデータパケットの対応するフィールドに対して比較される。
[SPI number]
This is the SPI associated with the protocol. In TX SA, this SPI is included in the protocol header. In RX SA, this SPI is compared against the corresponding field of the received data packet.

[シーケンス番号]
これはプロトコルに関連するシーケンス番号である。AHとESP SAは異なる次官に満了するので、シーケンス番号は2つのプロトコル間で異なっている。TX SAでは、このシーケンス番号は、SAが生成され、SAブロックを使用して送信される各パケットに対して1だけインクリメントされるときに0×00000000にリセットされる。受信されたパケットでは、このフィールドはソケットで受信される最後のシーケンス番号を表し、パケットリプレイでチェックするために使用される。
[Sequence number]
This is the sequence number associated with the protocol. Since AH and ESP SA expire to different secretaries, the sequence numbers are different between the two protocols. In TX SA, this sequence number is reset to 0x00000000 when the SA is generated and incremented by 1 for each packet transmitted using the SA block. For received packets, this field represents the last sequence number received on the socket and is used to check with packet replay.

[認証キー]
このパラメータはプロトコルの認証に使用されるキーである。キーが160ビットよりも小さいならば、lsb正しいとされるべきである。
[Authentication key]
This parameter is the key used for protocol authentication. If the key is smaller than 160 bits, it should be assumed lsb correct.

[暗号化キー]
このパラメータはIPSECパケットの暗号化に使用されるキーであり、TX/RX ESP SAに対してのみ規定される。192ビットよりも小さいビットを使用するアルゴリズムでは、キーはlsb正しいとされるべきである。
[Encryption key]
This parameter is a key used for encryption of IPSEC packets and is specified only for TX / RX ESP SA. For algorithms that use bits smaller than 192 bits, the key should be lsb correct.

[タイムスタンプ]
これはSAブロックが古いと考えられるときの将来のタイムスタンプである。SAが生成されるときに初期化される。パケットが送出または受信されるとき、現在の自由動作するミリ秒のタイムスタンプはこの時間と比較される。時間がこのタイムスタンプに一致するかそれ以上であるならば、SAブロックは古いと考えられる。
[Time stamp]
This is a future time stamp when the SA block is considered old. It is initialized when the SA is generated. When a packet is sent or received, the current free running millisecond timestamp is compared to this time. If the time matches or exceeds this timestamp, the SA block is considered stale.

[バイトカウント]
このパラメータはSAが初期化されるときに設定される。SAブロックを使用して送出されることのできる最大のバイト数を決定する。HWはこれをカウンタをデクリメントカウンタに対する初期番号として使用する。パケットがこのSAで送信または受信されるときに、HWがこのバイトカウントをデクリメントする。バイトカウントがゼロに達するとき、SAは古いと考えられる。この限度が使用されるならば、xBVビットは設定されるべきである。
[Byte count]
This parameter is set when the SA is initialized. Determine the maximum number of bytes that can be sent using the SA block. The HW uses this as an initial number for the decrement counter. The HW decrements this byte count when a packet is sent or received on this SA. When the byte count reaches zero, the SA is considered stale. If this limit is used, the xBV bit should be set.

[リンク]
このフィールドはソケットに関連される次のSAブロックを指している。
[Link]
This field points to the next SA block associated with the socket.

[IPsecモジュール]
IPsecは以下の4つの主なモジュールに分割される。
・IPSECX、
・IPSECR、
・IPSECREGS、
・IPSECメモリ。
[IPsec module]
IPsec is divided into the following four main modules.
・ IPSECX,
・ IPSECR,
・ IPSECREGS,
IPSEC memory.

IPSECXはIPSECの送信データパス論理を含んでいる。データおよび制御パケットは最初に内部IPSECXメモリに転送される。暗号化エンジンはこれらのパケットを読取り、これらを暗号化し、これらのパケットをIPSECXメモリへ書戻す。これらのパケットはその後、送信するためにイーサネット(登録商標)送信機へ転送される。   IPSECX includes the transmission data path logic of IPSEC. Data and control packets are first transferred to the internal IPSECX memory. The encryption engine reads these packets, encrypts them, and writes these packets back to IPSECX memory. These packets are then forwarded to an Ethernet transmitter for transmission.

IPSECRはIPSECの受信データパス論理を含んでいる。任意の入来するパケットはIPSECタイプのパケットに対して解析される。パケットがIPSECパケットであるならば、内部IPSECRメモリに転送される。解読エンジンはこれらのパケットを解読し、このパケットをIPSECRメモリへ書戻す。このパケットは読取られ、ネットワークスタックに注入して戻される。このとき、このパケットは解読されるので、パーサはIPSECパケットとして識別せず、これは正常なTCP/IPパケットとして識別される。   IPSECR contains the IPSEC receive data path logic. Any incoming packet is parsed against an IPSEC type packet. If the packet is an IPSEC packet, it is transferred to the internal IPSECR memory. The decryption engine decrypts these packets and writes them back to the IPSECR memory. This packet is read and injected back into the network stack. At this time, since this packet is decrypted, the parser does not identify it as an IPSEC packet, but identifies it as a normal TCP / IP packet.

IPSECREGSはCPUに対するプログラム可能なレジスタを含んでいる。これらのレジスタのプログラミングにより、CPUはSAを生成し、更新または消去する。このモジュールは診断の目的で、間接的なメモリアクセスを内部メモリに対して行う。   IPSECREGS contains programmable registers for the CPU. By programming these registers, the CPU generates and updates or deletes the SA. This module performs indirect memory accesses to the internal memory for diagnostic purposes.

IPSECは以下の図に示されているように2つのSRAMを使用する。両者のメモリは9KBサイズのパケットを保持できる。IPSECメモリサイズを以下示す。
・IPSECXメモリ:592×32ビット×4デュアルポート(9472バイト)、
・IPSECRメモリ:1168×32ビット×2デュアルポート(9344バイト)。
IPSEC uses two SRAMs as shown in the following figure. Both memories can hold 9KB size packets. The IPSEC memory size is shown below.
IPSECX memory: 592 x 32 bits x 4 dual ports (9472 bytes),
IPSECR memory: 1168 × 32 bits × 2 dual port (9344 bytes).

図66はIPSEC論理装置の全体的なフローを示すブロック図である。   FIG. 66 is a block diagram showing the overall flow of the IPSEC logic device.

[IPSEC送信データパス(IPSECX)]
[概要]
以下の説明は送信IPSECデータパスの詳細である。IPSEC暗号化/認証エンジンはそれが呼び出される前に行われるパケットで動作する。データフローを概説するブロック図は図67に示されている。
[IPSEC transmission data path (IPSECX)]
[Overview]
The following description is the details of the transmission IPSEC data path. The IPSEC encryption / authentication engine operates on packets that occur before it is invoked. A block diagram outlining the data flow is shown in FIG.

[IPSEC送信されたパケットのデータフロー]
[TXDATCB/TCPACK]
IPSEC保護されたソケットに対する送信データは最初に通常のソケットと同一方法でMTX DRAM671に記憶される。TXDATCB/TCPACKモジュール672はパケットに対するイーサネット(登録商標)、IP、TCP、任意のIPSECヘッダを形成するように動作する。このモジュールはいずれのヘッダか、および必要とされるヘッダのフォーマットを決定するために適切なSAブロックから情報を読取る。各ソケットはそれに関連するCB構造を有する。CBは各ソケットの古い情報を含んでいる。CB構造内に、使用されるSAブロックのポインタが存在する。多数のSAブロックを必要とするソケットでは、そのCBはすべてのAHおよびESP1 SAブロックへのポインタを含んでいる。
[Data flow of packets transmitted by IPSEC]
[TXDATCB / TCPACK]
The transmission data for the IPSEC protected socket is first stored in the MTX DRAM 671 in the same way as a normal socket. The TXDATCB / TCPACK module 672 operates to form Ethernet, IP, TCP, and arbitrary IPSEC headers for packets. This module reads the information from the appropriate SA block to determine which header and the required header format. Each socket has a CB structure associated with it. The CB contains old information for each socket. Within the CB structure there is a pointer to the SA block used. For sockets that require multiple SA blocks, the CB contains pointers to all AH and ESP1 SA blocks.

TXDATCB/TCPACKモジュールはパケットのヘッダをMTX DRAM中のバッファに書込む。パケットがIPSEC処理を必要とすることが分かると、TXDATCB/TCPACKモジュールは処理する準備が整ったパケットが存在することをIPSECXIFモジュール673に通知する。ヘッダ発生プロセスの開始時に、TXDATCB/TCPACKモジュールがIPSECXIFブロックが満杯であることに気づいたならば、後に処理するために送信待ち行列にパケットを戻す。   The TXDATCB / TCPACK module writes the packet header to a buffer in the MTX DRAM. When the packet is found to require IPSEC processing, the TXDATCB / TCPACK module notifies the IPSECXIF module 673 that there is a packet ready for processing. At the beginning of the header generation process, if the TXDATCB / TCPACK module notices that the IPSECXIF block is full, it returns the packet to the transmit queue for later processing.

[TCPACK]
データパケットに加えて、TCPユーティリティパケット(ACK、SYN、FIN)もまた暗号化されることができる。これらのパケットはTCPACKモジュールから来る。図67の前述のデータパスには示されていないが、このモジュールもまたCBとSAメモリをアクセスした。
[TCPACK]
In addition to data packets, TCP utility packets (ACK, SYN, FIN) can also be encrypted. These packets come from the TCPACK module. Although not shown in the previous data path of FIG. 67, this module also accessed the CB and SA memory.

注意:ローカルソケットが利用可能ではないために発生されたRSTパケットはIPSEC保護されない。保護される唯一のRSTは打切り終結に使用されるかまたはSYNに応答して受信された違法のSYN/ACKに応答するパケットである。これらの両者のRSTパケットは通常のRSTパケット待ち行列ではなくTCPACKモジュールにより形成される。   Note: RST packets generated because the local socket is not available are not IPSEC protected. The only protected RST is a packet that responds to an illegal SYN / ACK that is used for termination termination or received in response to SYN. Both of these RST packets are formed by the TCPACK module rather than the normal RST packet queue.

[IPSECXIF]
このモジュールはパケットを(TCPDATCBを介して)MTX DRAMまたはTCPACKからIPSECX内部メモリへ転送するように動作する。この内部メモリは576×128ビットとして組織される。TXDATCBまたはTCPACKからパケットを得たとき、このモジュールはデータをIPSECメモリへ転送し始める。これはSAに適用可能な情報を暗号化エンジンに送るためにそれをSAレジスタからも獲得する。読取ポインタはこのモジュールがIPSECXメモリ内の現在のパケットを重ね書きしないようにするためにIPSECTXからフィードバックされる。
[IPSECXIF]
This module operates to transfer packets (via TCPDATCB) from MTX DRAM or TCPACK to IPSECX internal memory. This internal memory is organized as 576 × 128 bits. When it gets a packet from TXDATCB or TCPACK, this module starts transferring data to the IPSEC memory. It also obtains information applicable to the SA from the SA register in order to send it to the encryption engine. The read pointer is fed back from IPSECTX to prevent this module from overwriting the current packet in IPSECX memory.

[暗号化/認証エンジン]
このモジュール674は暗号化および認証をパケットに付加するように動作する。これはIPSECXIFモジュールにより提供されたパラメータを取り、IPSECXメモリ675に記憶されているパケットを処理する。認証と暗号化の両者がパケットで必要とされるならば、このモジュールはパケットをIPSECTXモジュールへ転送する前の両特性前であると仮定される。暗号化されたデータはソースパケットと同一メモリ位置に書込まれるべきである。処理が終了するとき、完了したパケットが送信の準備が整っていることをIPSECTXモジュールに通報する。暗号化エンジンはdram_clkドメインで全体的に動作する。
[Encryption / Authentication Engine]
This module 674 operates to add encryption and authentication to the packet. It takes the parameters provided by the IPSECXIF module and processes the packets stored in the IPSECX memory 675. If both authentication and encryption are required in a packet, this module is assumed to be before both properties before forwarding the packet to the IPSECTX module. The encrypted data should be written to the same memory location as the source packet. When processing is complete, it informs the IPSECTX module that the completed packet is ready for transmission. The encryption engine operates entirely in the drum_clk domain.

このモジュールは2つの並列した同一の暗号化エンジンからなる。この場合、これらは交互の順序でサービスされる。またencrypt_rdyインジケータがIPSECTXに送信されるとき、与えられるパケットはこれらが暗号化エンジンに与えられたのと同じ順序でなければならない。   This module consists of two identical encryption engines in parallel. In this case, they are serviced in an alternating order. Also, when the encrypt_rdy indicator is sent to IPSECTX, the packets given must be in the same order as they were given to the encryption engine.

[IPSECTX]
このモジュール676は処理されたパケットを暗号化エンジンから取出し、送信するためにこれをスケジュールするように動作する。準備完了指示を暗号化エンジンから受けたとき、開始アドレスおよびパケット長情報を登録する。その後、送信リクエストをイーサネット(登録商標)送信アービトレータへ送信する。イーサネット(登録商標)送信アービトレータはIPSECXメモリから直接的にパケット情報を読取り、これをMACの送信バッファへ送信する。パケット全体が読出されるとき、これはipsectx_doneをストローブする。この指示を受信するとき、IPSECTXモジュールはそのipsectx_rd_addを更新する。このバスはさらに多くのメモリがフリーにされていることを示すためにIPSECXIFに戻される。
[IPSSECTX]
This module 676 operates to retrieve the processed packet from the encryption engine and schedule it for transmission. When a preparation completion instruction is received from the encryption engine, the start address and packet length information are registered. Thereafter, the transmission request is transmitted to the Ethernet (registered trademark) transmission arbitrator. The Ethernet (registered trademark) transmission arbitrator reads packet information directly from the IPSECX memory and transmits it to the MAC transmission buffer. When the entire packet is read, this strobes opticx_done. When receiving this indication, the IPSECTX module updates its opticx_rd_add. This bus is returned to IPSECXIF to indicate that more memory has been freed.

[IPSECXメモリアービトレータ(IPSECX MEMARB)]
このモジュール677はIPSECXメモリバンクへのアクセスを調停するように動作する。このモジュールはdram_clkドメインで動作する。
[IPSECX Memory Arbitrator (IPSECX MEMARB)]
This module 677 operates to arbitrate access to the IPSECX memory bank. This module operates in the drum_clk domain.

[IPSECXメモリインターフェース(IPSECX MEMIF)]
このモジュール678はインターフェースをデュアルポートRAMへ提供する。このモジュールはSRAMと、RAMをアクセスするその他の論理装置との間を結合する。このモジュールはRAMモデルが変更されるときに変更する必要がある。このモジュールはdram_clkドメインで全体的に動作する。
[IPSECX Memory Interface (IPSECX MEMIF)]
This module 678 provides an interface to the dual port RAM. This module couples between the SRAM and other logic devices that access the RAM. This module needs to be changed when the RAM model is changed. This module works entirely in the drum_clk domain.

[IPSEC受信データパス(IPSECR)]
[概要]
図68のブロック図は受信されたIPSECパケットのデータパスフローを示している。これは以下の説明の基礎を形勢する。
[IPSEC Receive Data Path (IPSECR)]
[Overview]
The block diagram of FIG. 68 shows the data path flow of the received IPSEC packet. This forms the basis for the following explanation.

[IPSEC受信されたパケットのデータフロー]
[IPIN]
IPSEC保護されたソケットの受信されたデータは最初にIPINモジュール687で解析される。最も外部のIPヘッダ内には次のヘッダのプロトコルタイプを示すプロトコルフィールドが存在する。プロトコルが0×50(ESP)または0×51(AH)であることを検出するならば、IPSECRIFモジュールに対して最も外部のIPヘッダを含んだパケットを完了する。
[Data flow of IPSEC received packet]
[IPIN]
The received data of the IPSEC protected socket is first analyzed by the IPIN module 687. In the outermost IP header, there is a protocol field indicating the protocol type of the next header. If it detects that the protocol is 0x50 (ESP) or 0x51 (AH), it completes the packet containing the outermost IP header for the IPSECRIF module.

受信されたパケットが断片化されているならば、これは任意の他の断片化されたIPパケットのように扱われ、例外プロセッサに送信される。パケットが完全であるとき、IPINARBモジュール682を介してIPスタックの下部に再度注入される。   If the received packet is fragmented, it is treated like any other fragmented IP packet and sent to the exception processor. When the packet is complete, it is reinjected into the bottom of the IP stack via the IPINARB module 682.

[IPSECRIF]
IPINがIPSECパケットが受信されたことをこのモジュール683に示すとき、そのパケットをIPSECRメモリ684に記憶し始める。パケットはヘッダから記憶され始めて、そのすぐ後に最も外部のIPヘッダが記憶される。IPSECRIFモジュールも正確なRX SAブロックを発見するようにLUT発見を行うためにSPI、ソースIPアドレス、AH/ESP設定を解析する。LUT値を獲得するとき、SAブロックを読取り、そのパラメータが受信されたパケットのパラメータに一致するかを検査する。それらが一致するならば、適切なSAを有することになる。一致しないならば、パケットはドロップされ、事象は記録される。
[IPSECRIF]
When IPIN indicates to this module 683 that an IPSEC packet has been received, it begins to store the packet in the IPSECR memory 684. The packet starts to be stored from the header, and immediately after that the outermost IP header is stored. The IPSECRIF module also analyzes the SPI, source IP address, and AH / ESP settings to perform LUT discovery to find the correct RX SA block. When obtaining the LUT value, it reads the SA block and checks if its parameters match the parameters of the received packet. If they match, you will have the appropriate SA. If not, the packet is dropped and the event is recorded.

正確なSAブロックが発見されるとき、受信SAパラメータが読取られ記憶される。アンチリプレイ特性がこのSAに対して使用可能になるならば、シーケンス番号はそれが有効であるか否かを見るためにチェックされる。これが良好ならば、SAパラメータはパケットのIPSECRメモリ中の開始メモリアドレスと共に、解読モジュール685へ転送される。シーケンス番号が有効ではないならば、パケットはドロップされ事象は記録される。しかしながらシーケンス番号とシーケンスビットマップはこのときには更新されない。この点でアンチリプレイチェックを行う目的は不良なパケットが不必要に解読され認証されることを防止するためである。アンチリプレイ更新はパケットが認証された後にIPSECRXモジュール686中で処理される。   When the correct SA block is found, the received SA parameters are read and stored. If the anti-replay feature is enabled for this SA, the sequence number is checked to see if it is valid. If this is good, the SA parameter is transferred to the decryption module 685 along with the starting memory address in the packet's IPSECR memory. If the sequence number is not valid, the packet is dropped and the event is recorded. However, the sequence number and sequence bitmap are not updated at this time. The purpose of the anti-replay check in this respect is to prevent a bad packet from being unnecessarily decoded and authenticated. Anti-replay updates are processed in the IPSECRX module 686 after the packet is authenticated.

[暗号化/認証]
このモジュール685はIPSECパケットを解読し認証するように動作する。パケットが利用可能であるとき、IPSECRIFモジュールはipsecrif_rdy信号を主張することによりこれを解読エンジンへ示す。IPSECRIFモジュールはまたパケットの開始アドレスを提供する。パケットが認証に失敗したならば、これは破棄され、事象が記録される。認証にパスするならば、パケットは必要ならば解読される。解読されたパケットはもとのパケットと同一のIPSECRメモリ位置へ書き戻される。解読エンジンはその後、decrypt_rdyを主張することによりパケットが受信される準備が整っていることをIPSECRXモジュールへ示す。パケットが認証と解読の両者を必要とするならば、両機能がIPSECRXモジュールへパケットをオフする処理を行う前に完了されることが仮定される。
[Encryption / Authentication]
This module 685 operates to decrypt and authenticate IPSEC packets. When the packet is available, the IPSECRIF module indicates this to the decryption engine by asserting the ipsecrif_rdy signal. The IPSECRIF module also provides the starting address of the packet. If the packet fails authentication, it is discarded and the event is recorded. If authentication passes, the packet is decrypted if necessary. The decrypted packet is written back to the same IPSECR memory location as the original packet. The decryption engine then indicates to the IPSECRX module that the packet is ready to be received by asserting decrypt_rdy. If a packet requires both authentication and decryption, it is assumed that both functions are completed before performing the process of turning the packet off to the IPSECRX module.

このモジュールは2つの並列した同一の解読エンジンからなる。この場合、それらは交互の順序でサービスされる。またdecrypt_rdyインジケータがIPSECRXに送信されるとき、与えられたパケットはこれらが解読エンジンに与えられたのと同一の順序でなければならない。   This module consists of two identical decoding engines in parallel. In this case, they are serviced in an alternating order. Also, when the decrypt_rdy indicator is sent to IPSECRX, the given packets must be in the same order as they were given to the decryption engine.

注意:解読/認証エンジンはDRAMクロックから外れて動作する。   Note: The decryption / authentication engine operates off the DRAM clock.

[IPSECRX]
このモジュール686は解読/認証されたパケットを取り、それをスタックに再度注入するように動作する。トンネルモードパケットでは、処理されたパケットはIPINARBを介して直接的に注入して戻されることができる。転送モードパケットでは、IPヘッダが生成され、パケットの開始にプリペンドされる。これを行うことにより、すべてのパケットに対するIPINの内部のTCPチェックサムとインターフェース論理装置を再使用することが可能である。
[IPSECRX]
This module 686 operates to take the decrypted / authenticated packet and reinject it into the stack. For tunnel mode packets, the processed packets can be injected back directly via IPINARB. For transfer mode packets, an IP header is generated and prepended to the start of the packet. By doing this, it is possible to reuse the IPIN internal TCP checksum and interface logic for all packets.

このモジュールはまたパケットの受信SAブロックを更新するように動作する。SAに対する新しいシーケンス番号とビットマップはSAハンドルと共に解読エンジンからこのモジュールに転送される。このモジュールは受信されたタイムスタンプおよびバイトカウントを更新する。これは任意のパラメータがそれらの限度に到達していることを発見するならば、SAは無効にされ、状態メッセージは例外プロセッサに送られる。   This module also operates to update the received SA block of the packet. The new sequence number and bitmap for the SA is transferred from the decryption engine to the module along with the SA handle. This module updates the received timestamp and byte count. If this finds that any parameters have reached their limits, the SA is invalidated and a status message is sent to the exception processor.

[IPSECRメモリアービトレータ(IPSECRMRMARB)]
このモジュール687はIPSECRメモリバンクへのアクセスを調停するように動作する。このモジュールはdram_clkドメインで動作する。
[IPSECR Memory Arbitrator (IPSECRMRMARB)]
This module 687 operates to arbitrate access to the IPSECR memory bank. This module operates in the drum_clk domain.

[IPSECRメモリインターフェース(IPSECR MEMIF)]
このモジュールはインターフェースをデュアルポートRAMへ提供する。このモジュールはSRAMと、RAMをアクセスするその他の論理装置との間を結合する。このモジュールはRAMモデルが変更されるときに変更する必要がある。このモジュールはdram_clkドメインで全体的に動作する。
[IPSECR Memory Interface (IPSSECR MEMIF)]
This module provides an interface to the dual port RAM. This module couples between the SRAM and other logic devices that access the RAM. This module needs to be changed when the RAM model is changed. This module works entirely in the drum_clk domain.

[IPSEC LUT]
このLUTは17ビットにより128Kとして組織される。各ワードは16ビットのSAハンドルと1ビットの有効なインジケータから構成される。物理的にLUTはMTX DRAMバンク内に含まれる。
[IPSEC LUT]
This LUT is organized as 128K by 17 bits. Each word consists of a 16-bit SA handle and a 1-bit valid indicator. Physically the LUT is contained within the MTX DRAM bank.

[IPARB]
このモジュールはイーサネット(登録商標)入力パーサおよびIPSECRXから来るトラフィックを調停する。
[IPARB]
This module arbitrates traffic coming from the Ethernet input parser and IPSECRX.

[IPSECアンチリプレイアルゴリズム]
これはアンチリプレイチェックの検査に使用されるアルゴリズムである。このアルゴリズムは最後の32のシーケンス番号をチェックするために32ビットウィンドウを使用する。ビットマップのmsbは最も古いシーケンス番号を表し、lsbは現在のシーケンス番号を表している。このアルゴリズムはAHとESPプロトコルの両者に対して使用される。
[IPSEC Anti-Replay Algorithm]
This is an algorithm used for anti-replay check inspection. This algorithm uses a 32-bit window to check the last 32 sequence numbers. In the bitmap, msb represents the oldest sequence number, and lsb represents the current sequence number. This algorithm is used for both AH and ESP protocols.

LAST_SEQ:最後に受信されたシーケンス番号。これはSAブロックに記憶される。
SEQ:受信されたパケットのシーケンス番号。
BITMAP:最後の32の逐次的なシーケンス番号を表す32ビットのビットマップ。
LAST_SEQ: Last received sequence number. This is stored in the SA block.
SEQ: Sequence number of the received packet.
BITMAP: A 32-bit bitmap representing the last 32 sequential sequence numbers.

図69はIPSECアンチリプレイアルゴリズムを示すフロー図である。   FIG. 69 is a flowchart showing the IPSEC anti-replay algorithm.

[IPSECレジスタ(IPSECREGS)]
[概要]
このモジュールはCPUに対するインターフェースを提供し、プログラム可能なレジスタを含んでいる。このモジュールもまたCPUが適切なコマンドを発生するときにSAを生成し、更新し、または無効にする。これは診断の目的で以下のメモリへの間接的なアクセスを行う。
・IPSECX、
・IPSECR、
・RX SA LUT、
・SAブロック。
[IPSEC register (IPSECREGS)]
[Overview]
This module provides an interface to the CPU and includes programmable registers. This module also generates, updates, or invalidates the SA when the CPU issues an appropriate command. This provides indirect access to the following memory for diagnostic purposes:
・ IPSECX,
・ IPSECR,
・ RX SA LUT,
-SA block.

[IPSEC SA状態メッセージ]]
受信および送信SAブロックの両者では、ブロックが無効になるときにはいつでも状態メッセージがオンチッププロセッサに対して発生される。シーケンス番号が0×FFFFに到達することにより、またはタイムスタンプ或いはバイトカウントがそれらの限度に到達することにより、ブロックは無効になる可能性がある。
[IPSEC SA status message]
For both receive and transmit SA blocks, a status message is generated to the on-chip processor whenever the block becomes invalid. Blocks can become invalid when the sequence number reaches 0xFFFF or when the time stamp or byte count reaches their limit.

[DRAMインターフェースに対するSAブロックおよびデータフロー]
[概要]
以下の説明はNS DDR調停モジュールを介してSAブロックアクセスするためのインターフェースの概要である。これはデータフローを示し、インターフェース信号をリストし、必要なタイミングを詳細に説明する。
[SA block and data flow for DRAM interface]
[Overview]
The following description is an overview of the interface for accessing the SA block via the NS DDR arbitration module. This shows the data flow, lists the interface signals, and details the required timing.

[データフロー]
3つの異なるアクセスタイプがSAブロックでサポートされる。これらはバースト書込、バースト読取、単一の読取である。ipsecsarbモジュールはSAメモリへアクセスするために異なるソースからのリクエストを調停する。
[data flow]
Three different access types are supported in the SA block. These are burst write, burst read, single read. The ipsecsarb module arbitrates requests from different sources to access SA memory.

[SA LUT]
[概要]
IPSEC受信論理装置は適切なSAブロックを発見するためにLUTを使用する。LUTは16ビット×32Kの深さである。各LUTブロックはSAブロックハンドルを含んでいる。SAハンドルが値0を有するならば、これは無効であると考えられる。
[SA LUT]
[Overview]
The IPSEC receiving logic uses the LUT to find the appropriate SA block. The LUT is 16 bits × 32K deep. Each LUT block contains an SA block handle. If the SA handle has the value 0, this is considered invalid.

[DRAMインターフェースへのSA LUT]
以下の説明はSA LUTとデータDDR調停モジュールとの間のインターフェースの概要である。それはデータフローを示し、インターフェース信号をリストし、必要なタイミングを詳細に説明する。
[SA LUT to DRAM interface]
The following description is an overview of the interface between the SA LUT and the data DDR arbitration module. It shows the data flow, lists interface signals, and details the required timing.

[データフロー]
SA LUTはDRAMへ単一の読取および書込みアクセスを行うだけである。そのアクセスは常にWORDにある。各LUTブロックは16ビットのみであるので、WORDの下部16ビットだけがSA LUTメモリインターフェースへ転送される。読取および書込みは同じLUTアクセスサイクルで行われない。
[data flow]
The SA LUT only has a single read and write access to the DRAM. The access is always in WORD. Since each LUT block is only 16 bits, only the lower 16 bits of the WORD are transferred to the SA LUT memory interface. Reading and writing are not done in the same LUT access cycle.

本発明を好ましい実施形態を参照してここで説明したが、当業者は本発明の技術的範囲を逸脱せずにここで説明した応用を他の応用に置換することができることを容易に認識するであろう。したがって、本発明は特許請求の範囲によってのみ限定されるべきである。   Although the present invention has been described herein with reference to preferred embodiments, those skilled in the art will readily recognize that the applications described herein can be substituted for other applications without departing from the scope of the invention. Will. Accordingly, the invention should be limited only by the claims.

Claims (79)

ネットワークプロトコルを復号および符号化しデータを処理する統合ネットワークアダプタであって、
ストリーミングデータを処理するための、配線接続されたデータパスと、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
複数の並列の、配線接続されたプロトコル状態マシーンと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
プログラム可能なポート範囲に入るUDPまたはTCPのパケットをすべて例外パスに転送するポート範囲レジスタによるネットワークアドレス変換(NAT)、IPマスカレード、及びポート転送のうちのいずれかについて最適化されたハードウェアサポートを提供するモジュールと、
トラフィックに基づいて共有リソースをスケジュールする手段と、
を備え、
前記複数のプロトコル状態マシーンは特定のネットワークプロトコル用に最適化され、
前記プロトコル状態マシーンは並列で処理を実行し、
前記ポート範囲レジスタはある範囲のポートをネットワーク制御動作および前記ポート転送において使用可能とする、
ことを特徴とする統合ネットワークアダプタ。
An integrated network adapter that decodes and encodes network protocols and processes data,
Wired data paths for processing streaming data,
A wired data path to send and receive packets and to encode and decode packets;
Multiple parallel, wired protocol state machines; and
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
Optimized hardware support for network address translation (NAT), IP masquerading, and port forwarding with port range registers that forward all UDP or TCP packets entering the programmable port range to the exception path A module to provide,
A means of scheduling shared resources based on traffic,
With
The plurality of protocol state machines are optimized for a particular network protocol;
The protocol state machine performs processing in parallel;
The port range register allows a range of ports to be used in network control operations and port forwarding;
Integrated network adapter characterized by that.
単一の集積回路で構成される統合ネットワークアダプタであって、
配線接続された転送オフロードエンジン(TOE)と、
前記TOEと一体化したプロセッサと、
物理層モジュール(PHY)と、
メディアアクセス層モジュール(MAC)と、
前記TOEと一体化したIPsec処理エンジンと、
前記TOEと一体化した、オフロード処理のための上位レベルプロトコル(ULP)と、
プログラム可能なポート範囲に入るUDPまたはTCPのパケットをすべて例外パスに転送するポート範囲レジスタによるネットワークアドレス変換(NAT)、IPマスカレード、及びポート転送のうちのいずれかについて最適化されたハードウェアサポートを提供するモジュールと、
を備え、
前記ポート範囲レジスタはある範囲のポートをネットワーク制御動作および前記ポート転送において使用可能とする、
ネットワークアダプタ。
An integrated network adapter composed of a single integrated circuit,
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
A physical layer module (PHY);
A media access layer module (MAC);
An IPsec processing engine integrated with the TOE;
An upper level protocol (ULP) for offload processing integrated with the TOE;
Optimized hardware support for network address translation (NAT), IP masquerading, and port forwarding with port range registers that forward all UDP or TCP packets entering the programmable port range to the exception path A module to provide,
With
The port range register allows a range of ports to be used in network control operations and port forwarding;
Network adapter.
前記ULPはiSCSIプロトコルを実行する、
請求項2に記載のネットワークアダプタ。
The ULP implements the iSCSI protocol;
The network adapter according to claim 2.
前記ULPは送受信のためにiSCSI CRCの計算をオフロードする、
請求項3に記載のネットワークアダプタ。
The ULP offloads the calculation of the iSCSI CRC for transmission and reception;
The network adapter according to claim 3.
前記ULPは送信のために固定インターバルのマーカー(FIM)を使用してiSCSIフレーミングを実行する、
請求項3に記載のネットワークアダプタ。
The ULP performs iSCSI framing using a fixed interval marker (FIM) for transmission;
The network adapter according to claim 3.
前記TOEはiSCSIヘッダセグメント及びiSCSIデータセグメントをホストiSCSIドライバから取得し、送信のためにiSCSI PDUを準備する、
請求項3に記載のネットワークアダプタ。
The TOE obtains an iSCSI header segment and an iSCSI data segment from the host iSCSI driver and prepares an iSCSI PDU for transmission.
The network adapter according to claim 3.
ホストコンピュータに存在するホストiSCSIドライバを更に備え、
前記ホストiSCSIドライバは前記TOEと通信する、
請求項3に記載のネットワークアダプタ。
A host iSCSI driver present in the host computer;
The host iSCSI driver communicates with the TOE;
The network adapter according to claim 3.
前記TOEはiSCSIプロトコルデータユニット(PDU)を受信し、iSCSI CRCを計算し、当該iSCSI CRCを前記ホストiSCSIドライバへ送る、
請求項7に記載のネットワークアダプタ。
The TOE receives an iSCSI protocol data unit (PDU), calculates an iSCSI CRC, and sends the iSCSI CRC to the host iSCSI driver.
The network adapter according to claim 7.
前記ホストiSCSIドライバは算出されたiSCSI CRC値を、iSCSI命令ブロック(IB)のiSCSI CRCシードフィールドを使用してシードする、
請求項8に記載のネットワークアダプタ。
The host iSCSI driver seeds the calculated iSCSI CRC value using the iSCSI CRC seed field of the iSCSI instruction block (IB);
The network adapter according to claim 8.
前記ホストiSCSIドライバはホストメモリで完全なiSCSIプロトコルデータユニット(PDU)ヘッダを組立て、iSCSI命令ブロック(IB)を生成し、当該iSCSI IBを前記TOEへ送信する、
請求項7に記載のネットワークアダプタ。
The host iSCSI driver assembles a complete iSCSI protocol data unit (PDU) header in host memory, generates an iSCSI command block (IB), and sends the iSCSI IB to the TOE.
The network adapter according to claim 7.
iSCSI IBは、ホストコンピュータメモリのバッファのリンクリストに対応し、転送ブロックとして知られている、アドレス及び長さの対のセットを含む、
請求項10に記載のネットワークアダプタ。
The iSCSI IB corresponds to a linked list of buffers in the host computer memory and includes a set of address and length pairs known as transfer blocks.
The network adapter according to claim 10.
前記ホストiSCSIドライバは、iSCSIデータを受信するときに最終転送ブロックのバッファサイズを調節してCRCバイトを記憶し、iSCSIヘッダとデータセグメントとを正確に分離する、
請求項11に記載のネットワークアダプタ。
The host iSCSI driver stores the CRC bytes by adjusting the buffer size of the final transfer block when receiving iSCSI data, and accurately separates the iSCSI header from the data segment.
The network adapter according to claim 11.
対応する基本ヘッダセグメント(BHS)と、任意の追加ヘッダセグメント(AHS)と、任意のデータセグメントとを含むiSCSIプロトコルデータユニットが、iSCSI命令ブロック(IB)を用いて前記ホストiSCSIドライバと前記TOEとの間で伝送される、
請求項7に記載のネットワークアダプタ。
An iSCSI protocol data unit including a corresponding basic header segment (BHS), an optional additional header segment (AHS), and an optional data segment is sent to the host iSCSI driver and the TOE using an iSCSI command block (IB). Transmitted between
The network adapter according to claim 7.
前記ホストiSCSIドライバは、iSCSI PDUヘッダに対する正確なサイズの受信バッファをポストし、且つ、データセグメントが存在する場合にはiSCSI PDUデータセグメントの正確なサイズの受信バッファをポストすることにより、受信の際にiSCSIプロトコルデータユニット(PDU)ヘッダとデータセグメントを分割する、
請求項7に記載のネットワークアダプタ。
The host iSCSI driver posts the correct size receive buffer for the iSCSI PDU header and, if a data segment is present, posts the correct size receive buffer for the iSCSI PDU data segment. Divide the iSCSI protocol data unit (PDU) header and data segment into
The network adapter according to claim 7.
前記ホストiSCSIドライバは、命令ブロックを用いて受信された任意の追加ヘッダセグメント(AHS)の正確に寸法付けされたバッファをポストする、
請求項14に記載のネットワークアダプタ。
The host iSCSI driver posts a precisely sized buffer of any additional header segment (AHS) received using the instruction block;
The network adapter according to claim 14.
前記TOEと前記ホストiSCSIドライバはiSCSI PDUレベルでインターフェースする請求項7に記載のネットワークアダプタ。   8. The network adapter according to claim 7, wherein the TOE and the host iSCSI driver interface at an iSCSI PDU level. 前記TOEは、プロトコルデータユニット(PDU)ヘッダを前記プロセッサまたは前記ホストコンピュータに直接メモリアクセス(DMA)しPDUデータセクションを前記ホストコンピュータに直接メモリアクセス(DMA)することにより、前記ホストコンピュータのメモリの付加的なメモリコピーを必要とせずにiSCSIプロトコルデータユニット(PDU)のヘッダとデータセグメントとを分離する、
請求項7に記載のネットワークアダプタ。
The TOE performs direct memory access (DMA) on the protocol data unit (PDU) header to the processor or the host computer and direct memory access (DMA) on the PDU data section to the host computer, thereby storing the memory of the host computer. Separate the iSCSI protocol data unit (PDU) header and data segment without requiring an additional memory copy;
The network adapter according to claim 7.
前記TOEはセキュリティ・アソシエーション(SA)毎にIPsecのアンチリプレイサポートを行う、
請求項2に記載のネットワークアダプタ。
The TOE performs IPsec anti-replay support for each security association (SA).
The network adapter according to claim 2.
前記TOEはIPSecゼロ、DES、3DESアルゴリズム、およびAES128ビ
ットアルゴリズムを暗号ブロック連鎖(CBC)モードで実行する、
請求項2に記載のネットワークアダプタ。
The TOE performs IPSec zero, DES, 3DES algorithm, and AES 128-bit algorithm in cipher block chaining (CBC) mode;
The network adapter according to claim 2.
前記TOEはIPSecゼロ、SHA−1、およびMD−5認証アルゴリズムを実行する、
請求項2に記載のネットワークアダプタ。
The TOE performs IPSec Zero, SHA-1, and MD-5 authentication algorithms;
The network adapter according to claim 2.
前記TOEはIPSec可変長暗号キーを実行する、
請求項2に記載のネットワークアダプタ。
The TOE executes an IPSec variable length encryption key;
The network adapter according to claim 2.
前記TOEはIPSec可変長認証キーを実行する、
請求項2に記載のネットワークアダプタ。
The TOE executes an IPSec variable length authentication key;
The network adapter according to claim 2.
前記TOEはIPSecジャンポフレームサポートを実行する、
請求項2に記載のネットワークアダプタ。
The TOE performs IPSec jump frame support;
The network adapter according to claim 2.
前記TOEは時間と転送される全データとに基づいてセキュリティ・アソシエーション(SA)の満了のIPSec自動処理を実行する、
請求項2に記載のネットワークアダプタ。
The TOE performs an IPSec automatic processing of the expiration of the security association (SA) based on the time and all data transferred;
The network adapter according to claim 2.
前記TOEはIPSecポリシー施行を実行する、
請求項2記載のネットワークアダプタ。
The TOE performs IPSec policy enforcement;
The network adapter according to claim 2.
前記TOEは例外パケットの生成と状態通知とを含むIPSec例外処理を実行する、
請求項2記載のネットワークアダプタ。
The TOE executes IPSec exception handling including exception packet generation and status notification.
The network adapter according to claim 2.
統合ネットワークアダプタであって、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
少なくとも一つの配線接続されたプロトコル状態マシーンと、
少なくとも一つの、前記ネットワークアダプタとホストコンピュータとの間の通信チャンネルと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
プログラム可能なポート範囲に入るUDPまたはTCPのパケットをすべて例外パスに転送するポート範囲レジスタによるネットワークアドレス変換(NAT)、IPマスカレード、及びポート転送のうちのいずれかについて最適化されたハードウェアサポートを提供するモジュールと、
を備え、
前記ポート範囲レジスタはある範囲のポートをネットワーク制御動作および前記ポート転送において使用可能とする、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path to send and receive packets and to encode and decode packets;
At least one wired protocol state machine;
At least one communication channel between the network adapter and a host computer;
A scheduler that schedules shared resources based on traffic;
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
Optimized hardware support for network address translation (NAT), IP masquerading, and port forwarding with port range registers that forward all UDP or TCP packets entering the programmable port range to the exception path A module to provide,
With
The port range register allows a range of ports to be used in network control operations and port forwarding;
Integrated network adapter.
前記少なくとも一つの通信チャンネルは、命令ブロック(IB)と状態メッセージ(SM)とを使用してデータおよび制御情報を転送する、
請求項27に記載のネットワークアダプタ。
The at least one communication channel transfers data and control information using a command block (IB) and a status message (SM);
The network adapter according to claim 27.
前記少なくとも一つの通信チャンネルを経由する通信を制御するための少なくとも一つの閾値タイマを更に備え、
データは選択された閾値インターバルで伝送される、
請求項27に記載のネットワークアダプタ。
Further comprising at least one threshold timer for controlling communication via the at least one communication channel;
Data is transmitted at selected threshold intervals,
The network adapter according to claim 27.
前記閾値タイマは、前記ネットワークアダプタと前記ホストコンピュータとの間の割り込みの数を減少させ、データの処理能力を増加させるための割込み集約機構を備える、
請求項29に記載のネットワークアダプタ。
The threshold timer includes an interrupt aggregation mechanism for reducing the number of interrupts between the network adapter and the host computer and increasing data processing capacity.
30. The network adapter according to claim 29.
前記少なくとも一つの通信チャンネルを経由する通信を制御するための少なくとも一つのデータ閾値を設定するモジュールを更に備え、
データレベルが選択された閾値に達したときにデータが伝送される、
請求項27に記載のネットワークアダプタ。
A module for setting at least one data threshold for controlling communication via the at least one communication channel;
Data is transmitted when the data level reaches a selected threshold,
The network adapter according to claim 27.
前記プロセッサおよび前記TOEのデータ処理能力を最適化する割込み集約機構を更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising an interrupt aggregation mechanism that optimizes data processing capabilities of the processor and the TOE. TCP選択肯定応答(SACK)用に最適化されたハードウェアサポートを提供するモジュールを更に備え、
TCPはデータパケットの紛失を応答し、当該紛失したデータパケットだけを再送信する、
請求項27に記載のネットワークアダプタ。
A module providing hardware support optimized for TCP selection acknowledgment (SACK);
TCP responds with a lost data packet and retransmits only the lost data packet.
The network adapter according to claim 27.
TCP高速再送信用に最適化されたハードウェアサポートを提供するモジュールを更に備える、
請求項27に記載のネットワークアダプタ。
Further comprising a module providing hardware support optimized for TCP fast resend credit;
The network adapter according to claim 27.
前記TCP高速再送信は、順序違いのセグメントが受信されたときに、標準的なアイムアウトを待つ代わりに、送信機が穴を迅速に埋めることを可能にするためにACKを直ちに生成する、
請求項34に記載のネットワークアダプタ。
The TCP fast retransmission generates an ACK immediately to allow the transmitter to quickly fill the hole instead of waiting for a standard imout when an out-of-order segment is received,
The network adapter according to claim 34.
受信機が重複する三つのACKを受信したときに、前記TCP高速再送信が呼び出され、
前記TCP高速再送信が呼び出されたときに、送信機が穴を埋めようとし、
ACKとセグメントのウィンドウ広告値とが相互に一致した場合に、重複するACKが重複と判定される、
請求項34に記載のネットワークアダプタ。
When the receiver receives three duplicate ACKs, the TCP fast retransmission is invoked,
When the TCP fast retransmission is invoked, the transmitter tries to fill the hole,
If the ACK and the segment window ad value match each other, the duplicate ACK is determined to be duplicate.
The network adapter according to claim 34.
TCPウィンドウスケーリング用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for TCP window scaling. ウィンドウスケーリング動作が、ウィンドウスケールを可能にする少なくとも一つのビットと、スケーリングファクタを設定するための少なくとも一つのビットと、スケーリング値を決定するためのパラメータとを備える3つの変数に基づいている、
請求項27に記載のネットワークアダプタ。
The window scaling operation is based on three variables comprising at least one bit that enables window scaling, at least one bit for setting a scaling factor, and a parameter for determining a scaling value.
The network adapter according to claim 27.
iSCSIヘッダとデータCRCの生成およびチェックとのために最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides optimized hardware support for iSCSI header and data CRC generation and checking. iSCSIの固定インターバルのマーカー(FIM)を生成するために最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for generating iSCSI fixed interval markers (FIM). 診断プログラムおよびパケット監視プログラムをサポートするTCPダンプモード用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a TCP dump mode that supports a diagnostic program and a packet monitoring program. TCPダンプモードが使用可能になった場合に、受信されたパケットのすべてが例外として前記ホストに送信され、ハードウェアスタックから来る出力TCP/UDPパケットのすべてが例外パケットとしてループバックされる、
請求項41に記載のネットワークアダプタ。
When TCP dump mode is enabled, all received packets are sent as exceptions to the host and all outgoing TCP / UDP packets coming from the hardware stack are looped back as exception packets.
42. The network adapter according to claim 41.
前記例外パケットをネットワークモニタ用にコピーし、RXパケットを再注入するためにTXパケットを生のイーサネット(登録商標)フレームとして送信するドライバを更に備える請求項42に記載のネットワークアダプタ。   43. The network adapter of claim 42, further comprising a driver that copies the exception packet for network monitoring and transmits the TX packet as a raw Ethernet frame to reinject the RX packet. ホストACKモード用に最適化されたハードウェアサポートを提供するモジュールを更に備え、
前記ホストコンピュータと前記ネットワークアダプタとの間をデータが通過したときに当該データが破損した可能性がある場合にデータの完全性を保証するために、前記ホストがTCPセグメントからデータを受信したときだけTCP ACKが送信される、
請求項27に記載のネットワークアダプタ。
A module providing hardware support optimized for host ACK mode;
Only when the host receives data from a TCP segment to ensure data integrity if the data may be corrupted when the data passes between the host computer and the network adapter TCP ACK is sent,
The network adapter according to claim 27.
前記ホストACKモードは、ACKを送信する前に、データセグメントを含んでいるMTXバッファの直接メモリアクセス(DMA)が完了するのを待つ、
請求項44に記載のネットワークアダプタ。
The host ACK mode waits for a direct memory access (DMA) of the MTX buffer containing the data segment to complete before sending an ACK.
45. A network adapter according to claim 44.
TCPがラウンドトリップ時間測定(RTTM)を良好に計算し、ラップシーケンスに対する保護(PAWS)をサポートすることを可能にするために、TCPタイムスタンプ用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   A module that provides optimized hardware support for TCP timestamps to allow TCP to calculate round trip time measurements (RTTM) well and support protection against wrap sequences (PAWS) 28. The network adapter according to claim 27, further comprising: 古い重複セグメントによるTCP接続の破壊を防止するためにTCP PAWS用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for TCP PAWS to prevent destruction of TCP connections due to old overlapping segments. 前記ネットワークアダプタ内のバッファからではなくホストメモリのバッファから直接にデータを再送信させるために、TCPホスト再送信モード用に最適化されたハードウェアサポート提供するモジュールを更に備える請求項27記載のネットワークアダプタ。   28. The network of claim 27, further comprising a module that provides hardware support optimized for TCP host retransmission mode to cause data to be retransmitted directly from a buffer in host memory rather than from a buffer in the network adapter. adapter. ランダムな初期シーケンス番号用に最適化されたハードウェアサポートを行うモジュールを更に備える請求項27記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a random initial sequence number. デュアルスタックモード用に最適化されたハードウェアサポートを行うモジュールと、
前記ホストのソフトウェアTCP/IPスタックと協動および関連して動作する前記ネットワークアダプタに組み込まれたハードウェアTCP/IPスタックと、
を更に備え、
前記ネットワークアダプタは、前記ネットワークアダプタと同一のIPアドレスを使用して並列に動作する前記ソフトウェアTCP/IPスタックの共存をサポートする、
請求項27に記載のネットワークアダプタ。
A module with hardware support optimized for dual stack mode,
A hardware TCP / IP stack embedded in the network adapter operating in cooperation with and in conjunction with the host software TCP / IP stack;
Further comprising
The network adapter supports coexistence of the software TCP / IP stack operating in parallel using the same IP address as the network adapter;
The network adapter according to claim 27.
同期(SYN)状態メッセージモードをサポートするモジュールを更に備え、
受信された任意のSYNは状態メッセージを前記ホストへ戻し、
SYN/ACKは、前記ホストが適切な命令ブロックを前記ネットワークアダプタへ戻すまで前記ネットワークアダプタにより生成されず、
前記SYN状態メッセージモードが前記ネットワークアダプタで使用可能にならない場合には、SYN/ACKが前記ネットワークアダプタにより自動的に生成され、SYN受信状態メッセージは生成されない、
請求項50に記載のネットワークアダプタ。
A module that supports a synchronous (SYN) status message mode;
Any SYN received receives a status message back to the host;
SYN / ACK is not generated by the network adapter until the host returns an appropriate command block to the network adapter,
If the SYN status message mode is not enabled on the network adapter, a SYN / ACK is automatically generated by the network adapter and no SYN receive status message is generated.
The network adapter according to claim 50.
ネットワークアダプタ制御ブロックデータベースに一致しないTCPパケットが受信されたときに、前記ネットワークアダプタからのリセット(RST)メッセージの抑制をサポートするモジュールを更に備え、
前記ネットワークアダプタは、自動的にRSTを生成する代わりにパケットを例外パケットとして前記ホストへ送信することで、前記ホストのTCP/IPスタックが当該パケットを例外パケットとして処理できるようにする、
請求項50に記載のネットワークアダプタ。
A module for supporting suppression of reset (RST) messages from the network adapter when a TCP packet that does not match the network adapter control block database is received;
The network adapter sends a packet to the host as an exception packet instead of automatically generating an RST, so that the TCP / IP stack of the host can process the packet as an exception packet.
The network adapter according to claim 50.
前記ホストおよび前記ネットワークアダプタがIP IDをオーバーラップすることなくIPアドレスを共有できるようにするために、IP ID分割用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The module of claim 27, further comprising a module that provides hardware support optimized for IP ID partitioning to allow the host and the network adapter to share IP addresses without overlapping IP IDs. Network adapter. あるタイプのパケットに対する特別な動作を制限し、受け付け、または実行するために、データパケットのフィルタリング用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for filtering data packets to limit, accept, or perform special operations on certain types of packets. 前記フィルタリングは、プログラムされたユニキャストアドレスの受付、放送パケットの受付、マルチキャストパケットの受付、ネットマスクにより特定される範囲内のアドレスの受付、および全パケットを受け付ける無差別モードのうちの任意の特性を取ることができる、
請求項54に記載のネットワークアダプタ。
The filtering includes any characteristics of acceptance of programmed unicast addresses, acceptance of broadcast packets, acceptance of multicast packets, acceptance of addresses within a range specified by a netmask, and promiscuous mode for accepting all packets. Can take,
The network adapter according to claim 54.
仮想構内網(VLAN)用に最適化されたハードウェアサポートを提供するVLANモジュールを更に備える、
請求項27に記載のネットワークアダプタ。
A VLAN module that provides hardware support optimized for a virtual local area network (VLAN);
The network adapter according to claim 27.
前記VLANモジュールは、入力パケットからVLANヘッダを除去する要素、VLANのタグが付された出力パケットを生成する要素、入力SYNフレームからVLANパラメータを生成する要素、および例外パケットとUDPパケットのVLANタグ情報を通す要素のいずれかを備える、
請求項56に記載のネットワークアダプタ。
The VLAN module includes an element for removing a VLAN header from an input packet, an element for generating an output packet with a VLAN tag, an element for generating a VLAN parameter from an input SYN frame, and VLAN tag information of an exception packet and a UDP packet With one of the elements to pass through,
57. The network adapter according to claim 56.
ジャンボフレーム用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for jumbo frames. シンプルネットワーク管理プロトコル(SNMP)用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for Simple Network Management Protocol (SNMP). 管理情報ベース(MIB)用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a management information base (MIB). レガシーモードでのネットワークアダプタの動作用に最適化されたハードウェアサポートを提供するモジュールを更に備え、
すべてのネットワークトラフィックはトラフィックタイプにかかわりなく前記ホストに送信され、
前記ネットワークアダプタはハードウェアTCP/IPスタックが該アダプタに存在しないかのように動作する、
請求項27に記載のネットワークアダプタ。
A module that provides hardware support optimized for network adapter operation in legacy mode;
All network traffic is sent to the host regardless of traffic type,
The network adapter operates as if a hardware TCP / IP stack is not present in the adapter.
The network adapter according to claim 27.
ハードウェアおよびソフトウェアのいずれかでIP分割が処理されることを可能にする最適化されたハードウェアサポートを提供するモジュールを更に備え、
例外パケットとして伝送されソフトウェアドライバで再構築されるIP分割されたパケットがIP注入モードにより前記ネットワークアダプタへ再注入されて戻される、
請求項27に記載のネットワークアダプタ。
Further comprising a module that provides optimized hardware support that allows IP partitioning to be handled either in hardware or software;
IP fragmented packets that are transmitted as exception packets and reconstructed by the software driver are reinjected back into the network adapter by the IP injection mode;
The network adapter according to claim 27.
IPパケットが前記ネットワークアダプタのTCP/IPスタックに注入されることを可能にするIP注入用に最適化されたハードウェアサポートを提供するIP注入モジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising an IP injection module that provides hardware support optimized for IP injection that allows IP packets to be injected into the TCP / IP stack of the network adapter. 前記IP注入モジュールは、IPパケットを前記ネットワークアダプタのTCP/IPスタックへ注入するための1以上の注入制御レジスタを備え、
前記1以上の注入制御レジスタは前記ホストがIPパケットを前記ネットワークアダプ
タのTCP/IPスタックへ注入することを可能にする、
請求項63に記載のネットワークアダプタ。
The IP injection module comprises one or more injection control registers for injecting IP packets into the TCP / IP stack of the network adapter;
The one or more injection control registers allow the host to inject IP packets into the TCP / IP stack of the network adapter;
64. A network adapter according to claim 63.
複数のIPアドレス用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a plurality of IP addresses. デバッグモード用に最適化されたハードウェアサポートを提供するモジュールを更に備え、
試験および制御ビットが前記ネットワークアダプタ中で使用可能になった場合に、すべてのIPパケットが例外として前記ホストへ送信される、
請求項27に記載のネットワークアダプタ。
The module further provides hardware support optimized for debug mode,
All IP packets are sent as exceptions to the host when test and control bits are enabled in the network adapter;
The network adapter according to claim 27.
TCP時間待機状態用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for TCP time wait states. 可変の接続数に対して最適化されたハードウェアサポートを行うモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a variable number of connections. 前記ネットワークアダプタがネットワークアダプタの最大容量に等しい接続を容認する場合に、次の同期(SYN)が、前記ホストが当該接続を処理できるように、例外パケットとして前記ホストへ通される、
請求項27に記載のネットワークアダプタ。
If the network adapter accepts a connection equal to the maximum capacity of the network adapter, the next synchronization (SYN) is passed to the host as an exception packet so that the host can handle the connection;
The network adapter according to claim 27.
ユーザデータグラムプロトコル(UDP)用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for User Datagram Protocol (UDP). IPパケットの寿命を選択されたホップ数に限定するためにTTL(生存時間)に対して最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for TTL (Time to Live) to limit the lifetime of an IP packet to a selected number of hops. キープ・アライブ・パケットをリンクにおいて周期的に送信することによりアイドル状態のTCP接続を維持しタイムアウトさせないことを可能にするために、TCPのキープアライブ用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   A module that provides hardware support optimized for TCP keep-alive to allow idle TCP connections to be maintained and not timed out by periodically sending keep-alive packets on the link The network adapter according to claim 27, further comprising: IPパケットを優先させるためにルータにより使用されるサービスのTCPタイプ(TOS)用に最適化されたハードウェアサポートを提供するモジュールを更に備える請求項27に記載のネットワークアダプタ。   28. The network adapter of claim 27, further comprising a module that provides hardware support optimized for a TCP type (TOS) of service used by the router to prioritize IP packets. 統合ネットワークアダプタであって、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
少なくとも一つの配線接続されたプロトコル状態マシーンと、
少なくとも一つの、前記ネットワークアダプタとホストコンピュータとの間の通信チャンネルと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
TCPスロースタート用に最適化されたハードウェアサポートを行うためのモジュールと、
を備え、
前記スロースタートは、
肯定応答(ACK)を予測する前に、最大セグメントサイズ(MSS)の2倍の現在のウィンドウ(cwnd)に対応する二つのデータセグメントが流れることだけをまず許可し、
更に一つのセグメントを流すために、前記cwndが受信機の広告ウィンドウと等しくなるまで、成功ACKが受信される度に一つのMSS分だけcwndを増加させることにより、
一度に流れるデータセグメント数を徐々に増加させる、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path to send and receive packets and to encode and decode packets;
At least one wired protocol state machine;
At least one communication channel between the network adapter and a host computer;
A scheduler that schedules shared resources based on traffic;
A module for hardware support optimized for TCP slow start;
With
The slow start is
Before predicting an acknowledgment (ACK), first allow only two data segments to flow corresponding to the current window (cwnd) twice the maximum segment size (MSS),
To stream one more segment, by incrementing cwnd by one MSS each time a successful ACK is received until the cwnd is equal to the receiver's advertising window,
Gradually increase the number of data segments flowing at once,
Integrated network adapter.
前記スロースタートは新規のデータ接続で常に開始され、
前記スロースタートはデータトラフィックの渋滞が発生したときに接続の中間で起動される、
請求項74に記載のネットワークアダプタ。
The slow start is always started with a new data connection,
The slow start is activated in the middle of the connection when data traffic congestion occurs,
75. The network adapter according to claim 74.
統合ネットワークアダプタであって、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
少なくとも一つの配線接続されたプロトコル状態マシーンと、
少なくとも一つの、前記ネットワークアダプタとホストコンピュータとの間の通信チャンネルと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
フレキシブルでプログラム可能なメモリエラー検査および補正(ECC)用に最適化されたハードウェアサポートを提供するECCモジュールと、
を備え、
前記ECCモジュールは、少なくとも一つの追加ビットを用いて、暗号化されたECCコードをデータと共にパケットに記憶し、
前記データがメモリに書き込まれたときに前記ECCコードも記憶され、
前記データが読み出されたときに、前記記憶されたECCコードは当該データが書き込まれたときに生成されたECCコードと比較され、
前記ECCコードが一致しない場合には、前記データ中のどのビットがエラーであるかについての判定が実行され、
エラーになっているビットが反転され、メモリ制御装置が当該補正されたデータを解放し、
エラーはオンザフライで補正され、補正されたデータは前記メモリに戻されず、
同一の破損データが再度読み取られたならば、前記ECCモジュールの動作が繰り返される、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path to send and receive packets and to encode and decode packets;
At least one wired protocol state machine;
At least one communication channel between the network adapter and a host computer;
A scheduler that schedules shared resources based on traffic;
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
An ECC module that provides hardware support optimized for flexible and programmable memory error checking and correction (ECC);
With
The ECC module stores the encrypted ECC code in the packet along with the data using at least one additional bit;
The ECC code is also stored when the data is written to memory,
When the data is read, the stored ECC code is compared with the ECC code generated when the data is written;
If the ECC codes do not match, a determination is made as to which bits in the data are in error;
The bit in error is inverted, and the memory controller releases the corrected data,
The error is corrected on the fly, the corrected data is not returned to the memory,
If the same damaged data is read again, the operation of the ECC module is repeated.
Integrated network adapter.
統合ネットワークアダプタであって、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
少なくとも一つの配線接続されたプロトコル状態マシーンと、
少なくとも一つの、前記ネットワークアダプタとホストコンピュータとの間の通信チャンネルと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
TCPのサービス品質(QoS)用に最適化されたハードウェアサポートを提供するモジュールと、
を備え、
TCP送信データフローはソケット問い合わせモジュールで開始し、当該データフローは送信データ有効ビットセットを有するエントリを探す送信データ有効ビットテーブルを通過し、
前記ソケット問い合わせモジュールは、前記エントリを発見した場合に、ソケットのユーザ優先順位レベルに従って当該エントリを複数の待ち行列のうちの一つに置く、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path to send and receive packets and to encode and decode packets;
At least one wired protocol state machine;
At least one communication channel between the network adapter and a host computer;
A scheduler that schedules shared resources based on traffic;
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
A module that provides hardware support optimized for TCP quality of service (QoS);
With
The TCP send data flow starts with a socket query module, which passes through a send data valid bit table looking for an entry with a send data valid bit set,
When the socket inquiry module finds the entry, it places the entry in one of a plurality of queues according to a socket user priority level.
Integrated network adapter.
統合ネットワークアダプタであって、
パケットを送受信しパケットを符号化および復号化するための、配線接続されたデータパスと、
少なくとも一つの配線接続されたプロトコル状態マシーンと、
少なくとも一つの、前記ネットワークアダプタとホストコンピュータとの間の通信チャンネルと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
フェイルオーバー用に最適化されたハードウェアサポートを提供するフェイルオーバーモジュールと、
を備え、
前記フェイルオーバーモジュールは、接続を開始しようとすることなくソケットが生成されることを可能にするNO_SYNモードを有し、
前記ネットワークアダプタ内のソケットおよび当該ソケットに関連するすべてのデータ構造が接続を生成することなく生成され、
前記NO_SYNモードは別のカードからの、またはソフトウェアTCP/IPスタックから前記ネットワークアダプタへの接続移行からのフェイルオーバーをサポートする、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path to send and receive packets and to encode and decode packets;
At least one wired protocol state machine;
At least one communication channel between the network adapter and a host computer;
A scheduler that schedules shared resources based on traffic;
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
A failover module that provides hardware support optimized for failover, and
With
The failover module has a NO_SYN mode that allows a socket to be created without attempting to initiate a connection;
A socket in the network adapter and all data structures associated with the socket are generated without creating a connection;
The NO_SYN mode supports failover from another card or from a connection transition from a software TCP / IP stack to the network adapter;
Integrated network adapter.
統合ネットワークアダプタであって、
パケットを受信するための、配線接続されたデータパスと、
複数の並列の、配線接続されたプロトコル状態マシーンと、
トラフィックに基づいて共有リソースをスケジュールするスケジューラと、
配線接続された転送オフロード・エンジン(TOE)と、
前記TOEと一体化したプロセッサと、
プログラム可能なポート範囲に入るUDPまたはTCPのパケットをすべて例外パスに転送するポート範囲レジスタによるネットワークアドレス変換(NAT)、IPマスカレード、及びポート転送のうちのいずれかについて最適化されたハードウェアサポートを提供するモジュールと、
を備え、
前記プロトコル状態マシーンは並列で処理を実行し、
前記ポート範囲レジスタはある範囲のポートをネットワーク制御動作および前記ポート転送において使用可能とする、
統合ネットワークアダプタ。
An integrated network adapter,
A wired data path for receiving packets; and
Multiple parallel, wired protocol state machines; and
A scheduler that schedules shared resources based on traffic;
Wired transfer offload engine (TOE),
A processor integrated with the TOE;
Optimized hardware support for network address translation (NAT), IP masquerading, and port forwarding with port range registers that forward all UDP or TCP packets entering the programmable port range to the exception path A module to provide,
With
The protocol state machine performs processing in parallel;
The port range register allows a range of ports to be used in network control operations and port forwarding;
Integrated network adapter.
JP2009217450A 2002-06-06 2009-09-18 Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols Expired - Lifetime JP4875126B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US38692402P 2002-06-06 2002-06-06
US60/386,924 2002-06-06
US10/456,871 2003-06-05
US10/456,871 US7535913B2 (en) 2002-03-06 2003-06-05 Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004512013A Division JP2005529523A (en) 2002-06-06 2003-06-06 Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols

Publications (2)

Publication Number Publication Date
JP2010063110A JP2010063110A (en) 2010-03-18
JP4875126B2 true JP4875126B2 (en) 2012-02-15

Family

ID=42189353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009217450A Expired - Lifetime JP4875126B2 (en) 2002-06-06 2009-09-18 Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols

Country Status (1)

Country Link
JP (1) JP4875126B2 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014132774A1 (en) 2013-03-01 2014-09-04 日本電気株式会社 Node information detection device, node information detection method, and program
KR101577034B1 (en) * 2014-06-26 2015-12-14 (주)모두텍 Multicore based toe system easy to add supplemental network functions with software and the control method therefor
CN107241382B (en) * 2017-04-24 2023-10-03 天津瑞能电气有限公司 Data conversion method and device used between serial port and Ethernet
JP6988511B2 (en) 2018-01-24 2022-01-05 富士通株式会社 Failure detection method, node device, communication system
US11321466B2 (en) * 2018-03-09 2022-05-03 Qualcomm Incorporated Integrated circuit data protection
CN109815176B (en) * 2019-01-14 2022-10-04 中国科学院上海高等研究院 Specific DMA data transmitting method, receiving method, system and medium
CN113127390B (en) * 2021-05-13 2023-03-14 西安微电子技术研究所 Multi-protocol data bus adapter engine architecture design method
CN113810370B (en) * 2021-08-04 2023-06-16 方一信息科技(上海)有限公司 TCP acceleration method based on Socket docking TOE drive
CN116661987A (en) * 2022-12-29 2023-08-29 荣耀终端有限公司 Memory application method and electronic equipment

Also Published As

Publication number Publication date
JP2010063110A (en) 2010-03-18

Similar Documents

Publication Publication Date Title
US7535913B2 (en) Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
JP4875126B2 (en) Gigabit Ethernet adapter supporting ISCSI and IPSEC protocols
US7535907B2 (en) TCP engine
US8218555B2 (en) Gigabit ethernet adapter
US7420931B2 (en) Using TCP/IP offload to accelerate packet filtering
KR100938519B1 (en) Method to synchronize and upload an offloaded network stack connection with a network stack
US7590755B2 (en) Method to offload a network stack
EP1494426B1 (en) Secure network processing
US7483376B2 (en) Method and apparatus for discovering path maximum transmission unit (PMTU)
JP4504977B2 (en) Data processing for TCP connection using offload unit
US20070253430A1 (en) Gigabit Ethernet Adapter
EP1791060B1 (en) Apparatus performing network processing functions
US7831745B1 (en) Scalable direct memory access using validation of host and scatter gather engine (SGE) generation indications
US7623450B2 (en) Methods and apparatus for improving security while transmitting a data packet
US8943214B2 (en) Communication apparatus
JP4916482B2 (en) Gigabit Ethernet adapter
Specialistica Universita di Pisa

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111108

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111124

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4875126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term