Delen via


Sessieprotocol gebruiken

De Windows Sockets-switch gebruikt het sessieprotocol om gegevens over te dragen via een SAN-verbinding. Als de switch een kleine hoeveelheid gegevens overdraagt, worden die gegevens binnen een besturingselementbericht overgedragen. Elk besturingsbericht bestaat uit een header en een optionele inhoud van toepassingsgegevens. Als de switch een grote hoeveelheid gegevens overdraagt, worden die gegevens overgedragen met behulp van RDMA-bewerkingen.

In deze sectie wordt beschreven hoe u een gegevensoverdracht instelt en uitvoert.

Opmerking Afhankelijk van het gedrag van toepassingen die de switch laden, optimaliseert de switch het sessieprotocol om de overhead bij het overdragen van toepassingsgegevens te verminderen.

Deze sectie bevat ook voorbeelden van hoe het sessieprotocol van de switch gegevensoverdracht uitvoert. Deze voorbeelden bevatten echter geen definitieve beschrijvingen van deze bewerkingen.

Een gegevensoverdracht instellen

Met de switch wordt een groep controleberichtbuffers toegewezen voor elke verbonden socket. De switch maakt vervolgens aanroepen naar de WSPRegisterMemory-functie van de SAN-serviceprovider om deze berichtbuffers bij regio's van fysiek geheugen te registreren. De switch maakt gebruik van een deel van de buffergroep om stroombeheergegevens naar een externe peer te verzenden bij het aanroepen van de WSPSend--functie van een SAN-serviceprovider. De switch maakt gebruik van het andere deel van de pool om berichtbuffers te posten om stroombeheergegevens van een externe peer te ontvangen bij het aanroepen van de WSPRecv--functie van een SAN-serviceprovider. Nadat de schakelaar controleberichten ontvangt, worden deze onmiddellijk verwerkt. Nadat controleberichten zijn verwerkt, roept de switch de WSPRecv--functie van de SAN-serviceprovider aan en geeft deze ontvangstbuffers door om ze opnieuw te plaatsen, zodat ze extra controleberichten van een externe peer kunnen ontvangen.

Toepassingsgegevens overdragen

De grootte van de gegevensoverdracht is van invloed op de manier waarop de switch de gegevensoverdrachtbewerking verwerkt.

Als een toepassing aanvraagt om een kleine hoeveelheid gegevens te verzenden, worden die gegevens overgedragen zoals beschreven in Urgente gegevens verzenden op een SAN-.

Als een toepassing aanvraagt om een grote hoeveelheid gegevens te verzenden, kopieert de schakeloptie het eerste deel van de gegevens naar een besturingsberichtbuffer die wordt gebruikt voor verzending. De header voor dit besturingselementbericht bevat informatie die de hoeveelheid toepassingsgegevens aangeeft. De switch roept vervolgens de WSPSend--functie van de SAN-serviceprovider aan om dit besturingselementbericht naar de externe peer van de SAN-socket te verzenden.

Hoe de switch de overdracht van toepassingsgegevens voltooit, is afhankelijk van of de serviceprovider de functie WSPRdmaRead ondersteunt.

Gegevensoverdracht naar een provider die de functie WSPRdmaRead ondersteunt

In de volgende afbeelding ziet u een overzicht van hoe de switch de overdracht van toepassingsgegevens voltooit als de SAN-serviceprovider bij de externe peer een WSPRdmaRead-functie ondersteunt. In de volgende volgorde wordt het overdragen van toepassingsgegevens in meer detail beschreven.

externe peer ondersteunt wsprdmaread.

Gegevens overdragen wanneer de externe peer WSPRdmaRead ondersteunt

  • De lokale switch moet de WSPRegisterRdmaMemory-functie van de SAN-serviceprovider aanroepen om RDMA-geheugen te registreren voor leestoegang. In dit geval identificeert de controlekop voor de berichtbuffer ook de descriptor voor het RDMA-geheugen dat de resterende gegevens van de toepassing bevat.
  • De switch bij de externe peer roept vervolgens WSPRdmaRead aan om toepassingsgegevens van RDMA-geheugen over te dragen naar ontvangstbuffers die de switch aan de externe peer eerder heeft geregistreerd met de WSPRegisterMemory oproepen. De SAN-serviceprovider verzendt de gebufferde gegevens op de achtergrond. Als u dit doet, kunnen toepassingen die niet meer dan één verzending per keer plaatsen, een andere verzendaanvraag posten terwijl de SAN-serviceprovider gebufferde gegevens verzendt.
  • De schakelaar bij de externe peer roept vervolgens WSPSend aan om een controlemelding naar de lokale switch te verzenden en aan te geven dat de overdracht is voltooid.
  • De lokale switch roept de WSPDeregisterRdmaMemory--functie aan om RDMA-geheugen vrij te geven.
  • De lokale switch voltooit de verzendaanvraag van de toepassing. Als de switch geen geheugen kan registreren voor de gegevensbuffers van de toepassing of als tijdelijk geheugen niet volledig kan worden toegewezen, wordt de verzendaanvraag van een toepassing voltooid met de WSAENOBUFS foutcode.

Gegevensoverdracht naar een provider die de WSPRdmaRead-functie niet ondersteunt

In de volgende afbeelding ziet u een overzicht van hoe de switch de overdracht van toepassingsgegevens voltooit als de SAN-serviceprovider bij de externe peer geen ondersteuning biedt voor een WSPRdmaRead--functie. In de volgende volgorde wordt het overdragen van toepassingsgegevens in meer detail beschreven.

externe peer biedt geen ondersteuning voor wsprdmaread.

Gegevens overdragen wanneer de externe peer WSPRdmaRead niet ondersteunt

  • De schakelaar bij de externe peer roept WSPRegisterRdmaMemory aan voor het registreren van RDMA-geheugen voor schrijftoegang.
  • De switch op de externe peer roept vervolgens WSPSend- aan om een besturingselementbericht te verzenden naar de lokale switch die de locatie aangeeft van RDMA-geheugen waarnaar de lokale switch kan schrijven.
  • De lokale switch roept de WSPRdmaWrite functie aan om toepassingsgegevens over te dragen naar het RDMA-geheugen. De SAN-serviceprovider verzendt de gebufferde gegevens op de achtergrond. Als u dit doet, kunnen toepassingen die niet meer dan één verzending per keer plaatsen, een andere verzendaanvraag posten terwijl de SAN-serviceprovider gebufferde gegevens verzendt.
  • De lokale switch roept de functie WSPGetOverlappedResult aan om de resultaten van de overdracht te verkrijgen. Zie Het voltooien van aanvragen voor gegevensoverdrachtvoor meer informatie.
  • De lokale switch roept WSPSend- aan om een besturingselementbericht naar de externe peer te verzenden om aan te geven dat de overdracht is voltooid.
  • De switch bij de externe peer roept WSPDeregisterRdmaMemory aan om RDMA-geheugen vrij te geven.
  • De lokale switch voltooit de verzendaanvraag van de toepassing. Als de switch geen geheugen kan registreren voor de gegevensbuffers van de toepassing of als tijdelijk geheugen niet kan worden toegewezen, wordt de verzendaanvraag van een toepassing voltooid met de WSAENOBUFS foutcode.

gegevens overdragen op een SAN-