[go: up one dir, main page]

JP7745795B1 - Packet forwarding system and packet forwarding method - Google Patents

Packet forwarding system and packet forwarding method

Info

Publication number
JP7745795B1
JP7745795B1 JP2025024744A JP2025024744A JP7745795B1 JP 7745795 B1 JP7745795 B1 JP 7745795B1 JP 2025024744 A JP2025024744 A JP 2025024744A JP 2025024744 A JP2025024744 A JP 2025024744A JP 7745795 B1 JP7745795 B1 JP 7745795B1
Authority
JP
Japan
Prior art keywords
packet
pod
terminal device
address
map
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.)
Active
Application number
JP2025024744A
Other languages
Japanese (ja)
Inventor
絵里 工藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
J Stream Inc
Original Assignee
J Stream Inc
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
Application filed by J Stream Inc filed Critical J Stream Inc
Priority to JP2025024744A priority Critical patent/JP7745795B1/en
Application granted granted Critical
Publication of JP7745795B1 publication Critical patent/JP7745795B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】端末装置とサーバとの間で、通信の一貫性及び効率性を向上しつつ、パケット転送を高速化して、超低遅延配信を実現する。
【解決手段】パケット転送システム1は、端末装置2と、QUICプロトコルを利用する複数のポッド3aを有する冗長化したサーバ3と、ロードバランサ4と、を備える。ロードバランサは、ユーザー空間11a及びカーネル空間11bの間でデータを共有可能なマップ17を有し、サーバ3に存在する各ポッド3aについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を第1マップ17aに記録し、端末装置2からパケットを受信したとき、第1マップ17aを参照して、当該パケットのコネクションIDに識別子が含まれる場合、当該識別子に対応するIPアドレスのポッド3aを宛先とし、当該パケットのコネクションIDに識別子が含まれない場合、最もCPU利用率の低いポッド3aを宛先としてパケットを転送する。
【選択図】図1

The present invention provides an ultra-low latency delivery system by increasing the speed of packet transfers while improving the consistency and efficiency of communication between a terminal device and a server.
[Solution] A packet forwarding system 1 includes a terminal device 2, a redundant server 3 having multiple pods 3a that use the QUIC protocol, and a load balancer 4. The load balancer has a map 17 that allows data to be shared between a user space 11a and a kernel space 11b, and for each pod 3a present on the server 3, records first information in the first map 17a, the first information consisting of a key including an identifier and a value including an IP address, and when a packet is received from the terminal device 2, the load balancer refers to the first map 17a, and if the connection ID of the packet includes an identifier, forwards the packet as the destination to the pod 3a with the IP address corresponding to the identifier, or if the connection ID of the packet does not include an identifier, forwards the packet as the destination to the pod 3a with the lowest CPU utilization rate.
[Selected Figure] Figure 1

Description

本発明は、超低遅延配信でパケットを転送するパケット転送システム及びパケット転送方法に関する。 The present invention relates to a packet forwarding system and packet forwarding method that forwards packets with ultra-low latency delivery.

従来から、パケット転送システムでは、通信障害を回避するために、パケットを配信するサーバを冗長化し、クライアントである端末装置が適切なサーバと接続することが求められている。 Traditionally, in packet forwarding systems, in order to avoid communication failures, it has been necessary to provide redundant servers that deliver packets, and to ensure that client terminal devices connect to the appropriate server.

例えば、特許文献1では、通信システムに含まれる中央局パケット冗長化装置は、複数のパケット処理装置の負荷が平均化されるように、受信したパケットを転送する負荷分散装置と、負荷分散装置によって転送されたパケットを処理する複数のパケット処理装置と、複数のパケット処理装置から受信したパケットを転送するスイッチとを備える。負荷分散装置は、移動局の情報処理装置の第1の部分に基づいて、パケットの転送先を決定し、決定された転送先のパケット処理装置にパケットを転送する。 For example, in Patent Document 1, a central station packet redundancy device included in a communications system includes a load balancer that forwards received packets so as to equalize the load on multiple packet processing devices, multiple packet processing devices that process the packets forwarded by the load balancer, and a switch that forwards packets received from the multiple packet processing devices. The load balancer determines a packet forwarding destination based on a first portion of the mobile station's information processing device, and forwards the packet to the determined packet processing device.

特開2023-048396号公報Japanese Patent Application Laid-Open No. 2023-048396

パケット転送システムでは、サーバがリアルタイムに配信を行うために、クライアントである端末装置とサーバとの間で、超低遅延配信でパケットを転送することが求められている。例えば、パケット転送システムは、サーバにQUICプロトコルを適用し、UDP(User Datagram Protocol)を用いて高速化しつつ、TCP(Transmission Control Protocol)のような通信の信頼性を提供してパケット転送を行うものがある。パケット転送システムでは、QUICプロトコルを利用した超低遅延配信において、サーバが冗長化されている場合、複数の端末装置と冗長化サーバとの間で、適切な接続を行って各パケットを転送する必要がある。 In packet forwarding systems, in order for servers to deliver data in real time, it is necessary to forward packets with ultra-low latency between client terminal devices and the server. For example, some packet forwarding systems apply the QUIC protocol to the server, and use UDP (User Datagram Protocol) to increase speed while providing communication reliability similar to TCP (Transmission Control Protocol). In packet forwarding systems using the QUIC protocol for ultra-low latency delivery, if the server is redundant, appropriate connections must be made between multiple terminal devices and the redundant servers to forward each packet.

従来のパケット転送システムには、超低遅延配信のために、L7アプリケーション層でロードバランサ(負荷分散装置)を実装するものがある。しかしながら、このようなロードバランサでは、処理速度に限界があり、CPUコア数を増大しても、超低遅延配信を実現することが困難であった。 Some conventional packet forwarding systems implement a load balancer (load distribution device) at the L7 application layer to achieve ultra-low latency delivery. However, such load balancers have limitations in processing speed, making it difficult to achieve ultra-low latency delivery even when the number of CPU cores is increased.

また、パケット転送システムでは、QUICプロトコルを利用した超低遅延配信において、通信の一貫性及び効率性を保つために、端末装置は、最初にパケットを発行したサーバのノードと、その後も正確にルーティングされることが重要である。具体的には、端末装置が送信したリクエストに対して、サーバはコネクションIDを含むレスポンスを応答し、その後、端末装置は、当該コネクションIDを発行したサーバと接続する必要がある。しかしながら、パケット転送システムでは、端末装置が当該サーバと接続する手法や、また、サーバがレスポンスを応答する端末装置を特定する手法が明確化されておらず、困難であり、端末装置とサーバとが一貫性を保って接続することが困難であった。 Furthermore, in packet forwarding systems, in order to maintain communication consistency and efficiency in ultra-low latency delivery using the QUIC protocol, it is important that terminal devices are accurately routed to the node of the server that initially issued the packet. Specifically, in response to a request sent by a terminal device, the server responds with a response that includes a connection ID, and the terminal device then needs to connect to the server that issued that connection ID. However, in packet forwarding systems, the method by which a terminal device connects to the server, and the method by which a server identifies the terminal device that will respond, are not clearly defined, making it difficult to maintain a consistent connection between terminal devices and servers.

そこで、本発明は上記事情を考慮し、端末装置とサーバとの間で、通信の一貫性及び効率性を向上しつつ、パケット転送を高速化して、超低遅延配信を実現することができるパケット転送システム及びパケット転送方法を提供することを目的とする。 In consideration of the above circumstances, the present invention aims to provide a packet forwarding system and packet forwarding method that can improve the consistency and efficiency of communications between terminal devices and servers, while accelerating packet forwarding and achieving ultra-low latency delivery.

上記課題を解決するために、本発明のパケット転送システムは、端末装置と、QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッドを定義して冗長化したサーバと、前記端末装置と前記サーバとの間でパケット転送を行うロードバランサと、を備え、前記ロードバランサは、ユーザー空間及びカーネル空間を有するオペレーティングシステムで動作し、前記ユーザー空間及び前記カーネル空間の間でデータを共有可能なマップを有し、前記サーバに存在する前記各ポッドについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、前記マップである第1マップに記録し、前記端末装置からパケットを受信したとき、前記第1マップを参照して、当該パケットに設定されたコネクションIDに、前記識別子が含まれる場合、当該識別子に対応する前記IPアドレスの前記ポッドを宛先として前記パケットを転送し、当該パケットに設定されたコネクションIDに前記識別子が含まれない場合、前記サーバに存在する前記複数のポッドのうち、最もCPU利用率の低い前記ポッドを宛先として前記パケットを転送することを特徴とする。 To solve the above problem, the packet forwarding system of the present invention comprises a terminal device, a server that performs packet processing using the QUIC protocol and defines multiple pods, each consisting of one or more containers, for redundancy, and a load balancer that forwards packets between the terminal device and the server. The load balancer runs on an operating system having a user space and a kernel space and has a map that allows data to be shared between the user space and the kernel space. For each pod present on the server, the load balancer records first information consisting of a key containing an identifier and a value containing an IP address in the map, which is a first map. When a packet is received from the terminal device, the load balancer refers to the first map, and if the connection ID set in the packet contains the identifier, the load balancer forwards the packet to the pod with the IP address corresponding to the identifier. If the connection ID set in the packet does not contain the identifier, the load balancer forwards the packet to the pod with the lowest CPU utilization rate among the multiple pods present on the server.

また、上記課題を解決するために、本発明のパケット転送方法は、端末装置と、QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッドを定義して冗長化したサーバと、の間でパケット転送を行うパケット転送方法であって、ユーザー空間及びカーネル空間を有するオペレーティングシステムで動作し、前記ユーザー空間及び前記カーネル空間の間でデータを共有可能なマップを有するロードバランサによって、前記サーバに存在する前記各ポッドについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、前記マップである第1マップに記録し、前記端末装置からパケットを受信したとき、前記第1マップを参照して、当該パケットに設定されたコネクションIDに、前記識別子が含まれる場合、当該識別子に対応する前記IPアドレスの前記ポッドを宛先として前記パケットを転送し、当該パケットに設定されたコネクションIDに前記識別子が含まれない場合、前記サーバに存在する前記複数のポッドのうち、最もCPU利用率の低い前記ポッドを宛先として前記パケットを転送することを特徴とする。 In order to solve the above-mentioned problems, the packet forwarding method of the present invention is a packet forwarding method that forwards packets between a terminal device and a redundant server that performs packet processing using the QUIC protocol and defines multiple pods consisting of one or more containers. The method operates on an operating system having a user space and a kernel space, and uses a load balancer that has a map that allows data to be shared between the user space and the kernel space. For each pod that exists on the server, the load balancer records first information consisting of a key containing an identifier and a value containing an IP address in the map, which is a first map. When a packet is received from the terminal device, the method refers to the first map, and if the connection ID set in the packet contains the identifier, the method forwards the packet with the pod having the IP address corresponding to the identifier as its destination; and if the connection ID set in the packet does not contain the identifier, the method forwards the packet with the pod having the lowest CPU utilization rate among the multiple pods that exist on the server as its destination.

本発明によれば、端末装置とサーバとの間で、通信の一貫性及び効率性を向上しつつ、パケット転送を高速化して、超低遅延配信を実現することができるパケット転送システム及びパケット転送方法を提供することが可能となる。 This invention makes it possible to provide a packet forwarding system and packet forwarding method that can speed up packet forwarding and achieve ultra-low latency delivery while improving the consistency and efficiency of communications between terminal devices and servers.

本発明の一実施形態に係るパケット転送システムを概略的に示すブロック図である。1 is a block diagram illustrating a packet forwarding system according to an embodiment of the present invention. 本発明の一実施形態に係るパケット転送システムにおけるパケット転送の動作例を示すフローチャートである。10 is a flowchart illustrating an example of a packet forwarding operation in the packet forwarding system according to one embodiment of the present invention. 本発明の一実施形態に係るパケット転送システムのロードバランサにおけるリクエストパケット処理の動作例を示すフローチャートである。10 is a flowchart illustrating an example of the operation of request packet processing in the load balancer of the packet forwarding system according to one embodiment of the present invention. 本発明の一実施形態に係るパケット転送システムのロードバランサにおけるレスポンスパケット処理の動作例を示すフローチャートである。10 is a flowchart illustrating an example of the operation of response packet processing in the load balancer of the packet forwarding system according to one embodiment of the present invention.

先ず、図1を参照しながら、本発明の実施形態に係るパケット転送システム1の全体の構成について説明する。図1に示されるように、パケット転送システム1は、クライアントである1つ以上の端末装置2と、配信等を行うサーバ3と、端末装置2とサーバ3との間でパケット転送を行うロードバランサ4と、を備える。端末装置2とロードバランサ4とは、インターネット等のネットワークを介して通信可能に接続され、サーバ3とロードバランサ4とは、インターネット等のネットワークを介して通信可能に接続されている。 First, with reference to Figure 1, the overall configuration of a packet forwarding system 1 according to an embodiment of the present invention will be described. As shown in Figure 1, the packet forwarding system 1 comprises one or more terminal devices 2 that are clients, a server 3 that performs distribution, etc., and a load balancer 4 that forwards packets between the terminal devices 2 and the server 3. The terminal devices 2 and the load balancer 4 are connected to each other so that they can communicate via a network such as the Internet, and the server 3 and the load balancer 4 are connected to each other so that they can communicate via a network such as the Internet.

本実施形態では、パケット転送システム1は、UDP(User Datagram Protocol)をベースとしたQUIC(Quick UDP Internet Connections)プロトコルを適用する。QUICプロトコルで利用されるQUICパケット構造には、宛先を示すコネクションIDが含まれる。本実施形態では、端末装置2からサーバ3に向けて送信されるQUICパケット構造のコネクションIDは、宛先となるサーバ3のポッド3aを識別する識別子を格納するための識別子部分を含む。 In this embodiment, the packet forwarding system 1 applies the QUIC (Quick UDP Internet Connections) protocol, which is based on UDP (User Datagram Protocol). The QUIC packet structure used in the QUIC protocol includes a connection ID that indicates the destination. In this embodiment, the connection ID of the QUIC packet structure sent from the terminal device 2 to the server 3 includes an identifier portion for storing an identifier that identifies the pod 3a of the destination server 3.

端末装置2は、サーバ3が提供するサービスを利用する、いわゆるクライアントである。図1では、パケット転送システム1が2つの端末装置2を有する例を図示しているが、パケット転送システム1は、1つ又は3つ以上の端末装置2を有してもよい。 The terminal device 2 is a so-called client that uses the services provided by the server 3. While FIG. 1 illustrates an example in which the packet forwarding system 1 has two terminal devices 2, the packet forwarding system 1 may have one or three or more terminal devices 2.

端末装置2は、ロードバランサ4を介してサーバ3に向けて、QUICパケット構造を含むUDPパケットを送信する。例えば、端末装置2は、サーバ3からサービスの提供を受けるために、リクエストパケットを作成してロードバランサ4を介してサーバ3に向けて送信し、リクエストパケットにサーバ3が応答したレスポンスパケットをロードバランサ4を介してサーバ3から受信する。 The terminal device 2 sends a UDP packet containing a QUIC packet structure to the server 3 via the load balancer 4. For example, to receive a service from the server 3, the terminal device 2 creates a request packet and sends it to the server 3 via the load balancer 4, and receives a response packet from the server 3 in response to the request packet via the load balancer 4.

端末装置2は、当該端末装置2のIPアドレス及び当該端末装置2のポートを含む送信元情報をリクエストパケットに設定し、また、ロードバランサ4のIPアドレス及びロードバランサ4のリスンポート(待ち受けポート)を含む宛先情報をリクエストパケットに設定する。端末装置2は、ポッド3aが自身の宛先となるポッド3aを示すコネクションIDを発行する前は、ランダムな値のコネクションIDをリクエストパケットに設定し、ポッド3aが自身の宛先となるポッド3aを示すコネクションIDを発行した後は、当該ポッド3aの識別子を含むコネクションIDをリクエストパケットに設定する。 The terminal device 2 sets source information including the IP address and port of the terminal device 2 in the request packet, and also sets destination information including the IP address and listen port of the load balancer 4 in the request packet. Before the pod 3a issues a connection ID indicating the pod 3a that is its destination, the terminal device 2 sets a random connection ID in the request packet, and after the pod 3a issues a connection ID indicating the pod 3a that is its destination, the terminal device 2 sets a connection ID including the identifier of the pod 3a in the request packet.

なお、端末装置2は、ロードバランサ4のIPアドレス及びロードバランサ4のリスンポートを含む送信元情報と、当該端末装置2のIPアドレス及び当該端末装置2のポートを含む宛先情報を有するレスポンスパケットを受信する。 The terminal device 2 receives a response packet containing source information including the IP address of the load balancer 4 and the listen port of the load balancer 4, and destination information including the IP address of the terminal device 2 and the port of the terminal device 2.

サーバ3は、超低遅延配信でパケット転送を実現するために、QUICプロトコルを適用して動作する、いわゆるQUICサーバであり、QUICプロトコルを利用してパケット処理を行う。 Server 3 is a so-called QUIC server that operates using the QUIC protocol to achieve packet transfer with ultra-low latency delivery, and processes packets using the QUIC protocol.

サーバ3は、Kubernetes(登録商標)等のオーケストレーションシステム(コンテナ管理システム)を適用して、1つ以上のコンテナからなるコンテナ実行部として複数のポッド3aを定義している。図1では、サーバ3が2つのポッド3aを有する例を図示しているが、サーバ3は、3つ以上の多数のポッド3aを有してよい。サーバ3は、コンテナ実行部である複数のポッド3aがそれぞれ端末装置2との間でパケットを処理する複数のパケット処理部として機能するように、パケット処理機能を冗長化して構成されている。サーバ3では、1つの端末装置2からパケット通信のリクエストがあった場合に、複数のポッド3aのうち何れか1つのポッド3aが、当該端末装置2と1対1で通信を行ってパケット処理部として機能する。 The server 3 applies an orchestration system (container management system) such as Kubernetes (registered trademark) to define multiple pods 3a as container execution units consisting of one or more containers. While Figure 1 illustrates an example in which the server 3 has two pods 3a, the server 3 may have three or more pods 3a. The server 3 is configured with redundant packet processing functions so that the multiple pods 3a, which are container execution units, each function as multiple packet processing units that process packets between the server 3 and the terminal device 2. In the server 3, when a packet communication request is received from one terminal device 2, one of the multiple pods 3a communicates one-to-one with the terminal device 2 and functions as a packet processing unit.

サーバ3は、ロードバランサ4を介して端末装置2に向けて、QUICパケット又はQUICパケット構造を含むUDPパケットを送信する。例えば、サーバ3は、端末装置2から要求を受け付けるために、ロードバランサ4を介して端末装置2からリクエストパケットを受信し、リクエストパケットに応答するレスポンスパケットを作成してロードバランサ4を介して端末装置2に向けて送信する。 The server 3 transmits a QUIC packet or a UDP packet including a QUIC packet structure to the terminal device 2 via the load balancer 4. For example, to accept a request from the terminal device 2, the server 3 receives a request packet from the terminal device 2 via the load balancer 4, creates a response packet in response to the request packet, and transmits it to the terminal device 2 via the load balancer 4.

サーバ3は、当該サーバ3の送信元のポッド3aのIPアドレス及び当該サーバ3のポートを含む送信元情報をレスポンスパケットに設定し、また、ロードバランサ4のIPアドレス及び端末装置2のポートを含む宛先情報をレスポンスパケットに設定する。なお、サーバ3は、ロードバランサ4のIPアドレス及び当該端末装置2のポートを含む送信元情報と、当該サーバ3の宛先のポッド3aのIPアドレス及び当該サーバ3のリスンポートを含む宛先情報を有するリクエストパケットを受信する。サーバ3は、ロードバランサ4と同じリスンポートを有する。 Server 3 sets source information in the response packet, including the IP address of pod 3a that is the source of the server 3 and the port of the server 3, and also sets destination information in the response packet, including the IP address of the load balancer 4 and the port of the terminal device 2. Server 3 receives a request packet containing source information including the IP address of the load balancer 4 and the port of the terminal device 2, and destination information including the IP address of pod 3a that is the destination of the server 3 and the listen port of the server 3. Server 3 has the same listen port as the load balancer 4.

また、サーバ3は、複数のポッド3aに関する情報をロードバランサ4に提供可能なAPI(Application Programming Interface)を有する。例えば、サーバ3は、サーバ3に存在する複数のポッド3aのそれぞれのポッド名及びIPアドレスを提供するAPIや、サーバ3に存在する複数のポッド3aのそれぞれのCPU利用率及びポッド名又はIPアドレスを提供するAPIを有する。 The server 3 also has an API (Application Programming Interface) that can provide information about multiple pods 3a to the load balancer 4. For example, the server 3 has an API that provides the pod name and IP address of each of the multiple pods 3a that exist on the server 3, and an API that provides the CPU utilization rate and pod name or IP address of each of the multiple pods 3a that exist on the server 3.

ロードバランサ4は、例えば、ハードウェアとして、制御部10と、記憶部11と、通信部12とを備えて構成される。 The load balancer 4 is configured, for example, as hardware, with a control unit 10, a memory unit 11, and a communication unit 12.

制御部10は、ロードバランサ4の各部及び各種機能を統括制御するものであり、CPU(Central Processing Unit)等のコンピュータで構成され、記憶部11及び通信部12に接続されている。記憶部11は、ROM(Read Only Memory)やRAM(Random Access Memory)などのメモリや、ハードディスクなどの記録媒体を有して構成され、ロードバランサ4の各部及び各種機能を制御するためのプログラムやデータを記憶する。通信部12は、ロードバランサ4がネットワークに接続するためのインタフェースであり、即ち、ロードバランサ4を端末装置2やサーバ3とネットワークを介して接続する。 The control unit 10 controls the various parts and functions of the load balancer 4. It is composed of a computer such as a CPU (Central Processing Unit) and is connected to a memory unit 11 and a communication unit 12. The memory unit 11 is composed of memory such as ROM (Read Only Memory) and RAM (Random Access Memory) and a recording medium such as a hard disk, and stores programs and data for controlling the various parts and functions of the load balancer 4. The communication unit 12 is an interface that connects the load balancer 4 to a network; in other words, it connects the load balancer 4 to the terminal device 2 and server 3 via the network.

制御部10は、記憶部11に記憶されたプログラムやデータに基づいて演算処理を実行することにより、ロードバランサ4の各種構成要素及び各種機能を制御する。例えば、制御部10は、記憶部11に記憶されたプログラムを実行することにより、第1マップ作成部20、パケット判定部21、第1パケット書換部22、第2マップ作成部23、第2パケット書換部24として動作する。なお、第1マップ作成部20、パケット判定部21、第1パケット書換部22、第2マップ作成部23、第2パケット書換部24は、本発明に係るパケット転送方法の第1マップ作成工程、パケット判定工程、第1パケット書換工程、第2マップ作成工程、第2パケット書換工程を実現する。 The control unit 10 controls the various components and functions of the load balancer 4 by executing calculations based on the programs and data stored in the memory unit 11. For example, by executing the programs stored in the memory unit 11, the control unit 10 operates as a first map creation unit 20, a packet determination unit 21, a first packet rewriting unit 22, a second map creation unit 23, and a second packet rewriting unit 24. The first map creation unit 20, the packet determination unit 21, the first packet rewriting unit 22, the second map creation unit 23, and the second packet rewriting unit 24 realize the first map creation process, the packet determination process, the first packet rewriting process, the second map creation process, and the second packet rewriting process of the packet forwarding method according to the present invention.

ロードバランサ4は、記憶部11にユーザー空間11a及びカーネル空間11bを有するLinux(登録商標)等のオペレーティングシステムで動作する。図1では、ユーザー空間11a及びカーネル空間11bが記憶部11とは別個に図示されているが、ユーザー空間11a及びカーネル空間11bは、記憶部11において展開される。 The load balancer 4 runs on an operating system such as Linux (registered trademark), which has a user space 11a and a kernel space 11b in the storage unit 11. In Figure 1, the user space 11a and the kernel space 11b are illustrated as being separate from the storage unit 11, but the user space 11a and the kernel space 11b are actually deployed in the storage unit 11.

ロードバランサ4は、golang等のプログラミング言語で実装されてユーザー空間11aで動作するgolangアプリケーション等のユーザー空間アプリケーション15と、カーネル空間11bにプログラムを挿入し実行するためのeBPF(extended Berkeley Packet Filter)等の技術を用いて実装されてカーネル空間11bで動作するeBPFプログラム等のカーネル空間プログラム16とを有する。 The load balancer 4 has a user space application 15, such as a golang application, implemented in a programming language such as golang and running in the user space 11a, and a kernel space program 16, such as an eBPF program, implemented using technology such as eBPF (extended Berkeley Packet Filter) for inserting and executing programs in the kernel space 11b and running in the kernel space 11b.

ロードバランサ4は、ユーザー空間11a及びカーネル空間11bの間でデータを共有可能なeBPFマップ等のマップ17を有し、マップ17は、eBPF等の技術によって利用可能なデータ構造で構成され、カーネル空間プログラム16によって、ユーザー空間11aのユーザー空間アプリケーション15とカーネル空間11bのカーネル空間プログラム16との間でデータのやり取りを行うことを可能とする。 The load balancer 4 has a map 17, such as an eBPF map, that allows data to be shared between the user space 11a and the kernel space 11b. The map 17 is composed of a data structure that can be used with technologies such as eBPF, and enables data to be exchanged between a user space application 15 in the user space 11a and a kernel space program 16 in the kernel space 11b via a kernel space program 16.

ロードバランサ4は、上記したマップ17として、サーバ3に存在する複数のポッド3aのそれぞれに関する第1情報を記録する第1マップ17aと、端末装置2とサーバ3のポッド3aとを紐付けるための第2情報を記録する第2マップ17bと、を記憶部11に有する。 The load balancer 4 has in its memory unit 11 the above-mentioned maps 17: a first map 17a that records first information regarding each of the multiple pods 3a present on the server 3, and a second map 17b that records second information for linking the terminal device 2 with the pods 3a of the server 3.

第1マップ作成部20は、ユーザー空間アプリケーション15によってサーバ3のAPIを使用し、所定のタイミング毎に、サーバ3から複数のポッド3aに関する情報を取得し、当該情報に基づく第1情報によって第1マップ17aを作成又は更新する。第1マップ作成部20は、所定のタイミングとして、所定の経過時間(例えば、10秒)を設定する。 The first map creation unit 20 uses the API of the server 3 via the user space application 15 to obtain information about multiple pods 3a from the server 3 at predetermined intervals, and creates or updates the first map 17a using first information based on that information. The first map creation unit 20 sets a predetermined elapsed time (e.g., 10 seconds) as the predetermined interval.

例えば、第1マップ作成部20は、サーバ3に存在する複数のポッド3aのそれぞれのポッド名及びIPアドレスを取得し、各ポッド3aのポッド名から各ポッド3aの識別子を取得し、具体的には、ポッド名の下5文字を識別子(5バイト)として取得する。そして、第1マップ作成部20は、サーバ3に存在する各ポッド3aについて、識別子を含むキー(key)とIPアドレスを含む値(value)とからなる第1情報を、第1マップ17aに記録する。 For example, the first map creation unit 20 acquires the pod name and IP address of each of the multiple pods 3a present on the server 3, and acquires the identifier of each pod 3a from the pod name of each pod 3a; specifically, it acquires the last five characters of the pod name as the identifier (5 bytes). Then, the first map creation unit 20 records, in the first map 17a, first information for each pod 3a present on the server 3, consisting of a key including the identifier and a value including the IP address.

また、第1マップ作成部20は、サーバ3に存在する複数のポッド3aのそれぞれのCPU利用率を取得し、複数のポッド3aのうち、最もCPU利用率の低いポッド3aを特定ポッド3aとする。そして、第1マップ作成部20は、特定ポッド3aについて、固定文字列を含むキー(key)とIPアドレスを含む値(value)とからなる第1情報を、第1マップ17aに記録する。 The first map creation unit 20 also acquires the CPU utilization rate of each of the multiple pods 3a present on the server 3, and designates the pod 3a with the lowest CPU utilization rate among the multiple pods 3a as the specific pod 3a. The first map creation unit 20 then records, in the first map 17a, first information for the specific pod 3a, which consists of a key containing a fixed string and a value containing an IP address.

パケット判定部21は、端末装置2又はサーバ3からパケットを受信し、カーネル空間プログラム16によって、ロードバランサ4が受信したパケットが、端末装置2からのパケットかサーバ3からのパケットかを判定する。 The packet determination unit 21 receives a packet from the terminal device 2 or the server 3, and uses the kernel space program 16 to determine whether the packet received by the load balancer 4 is a packet from the terminal device 2 or the server 3.

例えば、パケット判定部21は、受信したパケットがUDPパケットか否かを判定し、UDPパケットである場合には、更に、パケット判定部21は、UDPパケットを分解してUDPヘッダを取得し、宛先ポートがロードバランサ4のリスンポートである場合に、端末装置2からのパケットと判定し、それ以外である場合に、サーバ3からのパケットと判定する。 For example, the packet determination unit 21 determines whether the received packet is a UDP packet. If it is a UDP packet, the packet determination unit 21 further disassembles the UDP packet to obtain the UDP header. If the destination port is the listen port of the load balancer 4, it determines that the packet is from the terminal device 2; otherwise, it determines that the packet is from the server 3.

第1パケット書換部22は、ロードバランサ4が受信したパケットが端末装置2からのパケットである場合に、カーネル空間プログラム16によって、当該パケットの宛先となるサーバ3のポッド3aを判定して端末装置2とポッド3aとを紐付けし、当該パケットの宛先情報を、宛先となるサーバ3のポッド3aの宛先情報に書き換える。 When a packet received by the load balancer 4 is a packet from a terminal device 2, the first packet rewriting unit 22 uses the kernel space program 16 to determine the pod 3a of the server 3 that is the packet's destination, associates the terminal device 2 with the pod 3a, and rewrites the packet's destination information to the destination information of the pod 3a of the server 3 that is the destination.

例えば、第1パケット書換部22は、端末装置2から、当該端末装置2のIPアドレス及び当該端末装置2のポートを含む送信元情報が設定されたリクエストパケットを受信する。 For example, the first packet rewriting unit 22 receives a request packet from the terminal device 2, in which source information including the IP address of the terminal device 2 and the port of the terminal device 2 is set.

第1パケット書換部22は、端末装置2からのリクエストパケットのQUICパケット構造からコネクションIDを取得し、コネクションIDから、宛先となるサーバ3のポッド3aを識別する識別子を格納するための識別子部分を抽出する。また、第1パケット書換部22は、第1マップ17aを参照して、当該識別子部分に示される識別子をキーとするポッド3aの第1情報が存在するか否かを判定する。 The first packet rewriting unit 22 obtains the connection ID from the QUIC packet structure of the request packet from the terminal device 2 and extracts from the connection ID an identifier portion for storing an identifier that identifies the pod 3a of the destination server 3. The first packet rewriting unit 22 also references the first map 17a to determine whether or not there is first information for the pod 3a that uses the identifier indicated in the identifier portion as a key.

第1パケット書換部22は、当該識別子部分をキーとするポッド3aの第1情報が第1マップ17aに存在する場合、当該第1情報の値に示されるポッド3aのIPアドレスを取得する。また、第1パケット書換部22は、当該識別子部分をキーとするポッド3aの第1情報が第1マップ17aに存在しない場合、第1マップ17aを参照して、固定文字列をキーとする最もCPU利用率の低い特定ポッド3aの第1情報を取得し、当該第1情報の値に示される特定ポッド3aのIPアドレスを取得する。 If the first information for the pod 3a using the identifier portion as a key exists in the first map 17a, the first packet rewriting unit 22 obtains the IP address of the pod 3a indicated by the value of the first information. Furthermore, if the first information for the pod 3a using the identifier portion as a key does not exist in the first map 17a, the first packet rewriting unit 22 references the first map 17a to obtain the first information for the specific pod 3a with the lowest CPU utilization rate using the fixed character string as a key, and obtains the IP address of the specific pod 3a indicated by the value of the first information.

そして、第1パケット書換部22は、端末装置2からのリクエストパケットの宛先情報を、取得したポッド3aのIPアドレス及びサーバ3のリスンポートを含む宛先情報に書き換える。また、第1パケット書換部22は、端末装置2からのリクエストパケットの送信元情報を、ロードバランサ4のIPアドレス及び端末装置2のポートを含む送信元情報に書き換える。第1パケット書換部22は、書き換えたリクエストパケットを、その宛先情報に基づくサーバ3のポッド3aへと送信する。 Then, the first packet rewriting unit 22 rewrites the destination information of the request packet from the terminal device 2 to destination information including the acquired IP address of the pod 3a and the listen port of the server 3. The first packet rewriting unit 22 also rewrites the source information of the request packet from the terminal device 2 to source information including the IP address of the load balancer 4 and the port of the terminal device 2. The first packet rewriting unit 22 sends the rewritten request packet to the pod 3a of the server 3 based on the destination information.

第2マップ作成部23は、端末装置2からパケットを受信したときに第1パケット書換部22が当該パケットの宛先となるサーバ3のポッド3aを判定した場合に、カーネル空間プログラム16によって、パケットの送信元情報や宛先情報に基づく第2情報によって第2マップ17bを作成又は更新する。例えば、第2マップ作成部23は、書換後の宛先情報のポッド3aのIPアドレス及び書換前の送信元情報の端末装置2のポートを含むキー(key)と、書換前の送信元情報の端末装置2のIPアドレス、書換後の宛先情報のポッド3aのIPアドレス及び書換前の送信元情報の端末装置2のポートを含む値(value)とからなる第2情報を第2マップ17bに記録する。 When the first packet rewriting unit 22 determines the pod 3a of the server 3 that is the destination of a packet upon receiving the packet from the terminal device 2, the second map creation unit 23 uses the kernel space program 16 to create or update the second map 17b with second information based on the source information and destination information of the packet. For example, the second map creation unit 23 records in the second map 17b second information consisting of a key including the IP address of the pod 3a in the rewritten destination information and the port of the terminal device 2 in the source information before rewriting, and a value including the IP address of the terminal device 2 in the source information before rewriting, the IP address of the pod 3a in the destination information after rewriting, and the port of the terminal device 2 in the source information before rewriting.

第2パケット書換部24は、ロードバランサ4が受信したパケットがサーバ3のポッド3aからのパケットである場合に、カーネル空間プログラム16によって、当該パケットの宛先となる端末装置2を判定してサーバ3のポッド3aと端末装置2とを紐付けし、当該パケットの宛先情報を、宛先となる端末装置2の宛先情報に書き換える。 When a packet received by the load balancer 4 is a packet from a pod 3a of a server 3, the second packet rewriting unit 24 uses the kernel space program 16 to determine the terminal device 2 that is the packet's destination, associates the pod 3a of the server 3 with the terminal device 2, and rewrites the packet's destination information to the destination information of the terminal device 2 that is the destination.

例えば、第2パケット書換部24は、サーバ3から、当該サーバ3の送信元のポッド3aのIPアドレス及び当該サーバ3のポートを含む送信元情報が設定されたレスポンスパケットを受信する。第2パケット書換部24は、第2マップ17bを参照して、送信元情報のポッド3aのIPアドレスと端末装置2のポートとをキーとする第2情報を取得し、当該第2情報の値に示される端末装置2のIPアドレス及び端末装置2のポートを取得する。 For example, the second packet rewriting unit 24 receives a response packet from the server 3, in which source information is set that includes the IP address of the pod 3a that is the sender of the server 3 and the port of the server 3. The second packet rewriting unit 24 references the second map 17b to obtain second information using the IP address of the pod 3a in the source information and the port of the terminal device 2 as keys, and obtains the IP address of the terminal device 2 and the port of the terminal device 2 indicated by the value of the second information.

そして、第2パケット書換部24は、サーバ3からのレスポンスパケットの宛先情報を、取得した端末装置2のIPアドレス及び端末装置2のポートを含む宛先情報に書き換える。また、第2パケット書換部24は、サーバ3からのレスポンスパケットの送信元情報を、ロードバランサ4のIPアドレス及びロードバランサ4のポートを含む送信元情報に書き換える。第2パケット書換部24は、書き換えたレスポンスパケットを、その宛先情報に基づく端末装置2へと送信する。 The second packet rewriting unit 24 then rewrites the destination information in the response packet from the server 3 to destination information including the acquired IP address of the terminal device 2 and the port of the terminal device 2. The second packet rewriting unit 24 also rewrites the source information in the response packet from the server 3 to source information including the IP address of the load balancer 4 and the port of the load balancer 4. The second packet rewriting unit 24 sends the rewritten response packet to the terminal device 2 based on the destination information.

次に、パケット転送システム1のロードバランサ4によるパケット転送の動作例を、図2~図4のフローチャートを参照しながら説明する。 Next, an example of packet forwarding operation by the load balancer 4 of the packet forwarding system 1 will be described with reference to the flowcharts in Figures 2 to 4.

先ず、ロードバランサ4がパケットを受信すると(ステップS1)、パケット判定部21が、受信したパケットがUDPパケット否かを判定する(ステップS2)。 First, when the load balancer 4 receives a packet (step S1), the packet determination unit 21 determines whether the received packet is a UDP packet (step S2).

受信したパケットがUDPパケットでない場合(ステップS2:No)、本処理対象外として通常処理を行って終了する。 If the received packet is not a UDP packet (step S2: No), it is not subject to this processing and normal processing is performed, terminating the process.

受信したパケットがUDPパケットである場合(ステップS2:Yes)、パケット判定部21は、UDPパケットのUDPヘッダに示される宛先ポートがロードバランサ4のリスンポートであるか否かを判定する(ステップS4)。 If the received packet is a UDP packet (step S2: Yes), the packet determination unit 21 determines whether the destination port indicated in the UDP header of the UDP packet is the listen port of the load balancer 4 (step S4).

宛先ポートがロードバランサ4のリスンポートでない場合(ステップS4:No)、パケット判定部21は、受信したパケットがサーバ3からのレスポンスパケットであると判定し、レスポンスパケット処理(ステップS3)に移行する。 If the destination port is not the listen port of the load balancer 4 (step S4: No), the packet determination unit 21 determines that the received packet is a response packet from the server 3 and proceeds to response packet processing (step S3).

宛先ポートがロードバランサ4のリスンポートである場合(ステップS4:Yes)、パケット判定部21は、受信したパケットが端末装置2からのリクエストパケットであると判定し、リクエストパケット処理(ステップS5)に移行する。 If the destination port is the listen port of the load balancer 4 (step S4: Yes), the packet determination unit 21 determines that the received packet is a request packet from the terminal device 2 and proceeds to request packet processing (step S5).

次に、端末装置2からのリクエストパケット処理(ステップS5)について図3のフローチャートを参照しながら説明する。 Next, the processing of a request packet from terminal device 2 (step S5) will be explained with reference to the flowchart in Figure 3.

先ず、第1パケット書換部22は、リクエストパケットのコネクションIDから、サーバ3のポッド3aの識別子部分を抽出する(ステップS11)。 First, the first packet rewriting unit 22 extracts the identifier portion of the pod 3a of the server 3 from the connection ID of the request packet (step S11).

また、第1パケット書換部22は、第1マップ17aを参照して、当該識別子部分に示される識別子をキーとするポッド3aの第1情報が存在するか否かを判定する(ステップS12)。 The first packet rewriting unit 22 also references the first map 17a to determine whether or not there is first information for pod 3a that uses the identifier indicated in the identifier portion as a key (step S12).

コネクションIDに含まれる識別子をキーとするポッド3aの第1情報が第1マップ17aに存在する場合(ステップS12:Yes)、第1パケット書換部22は、当該第1情報から宛先となるポッド3aのIPアドレスを取得する(ステップS13)。 If the first information for pod 3a, which uses the identifier included in the connection ID as a key, exists in the first map 17a (step S12: Yes), the first packet rewriting unit 22 obtains the IP address of the destination pod 3a from the first information (step S13).

コネクションIDに含まれる識別子をキーとするポッド3aの第1情報が第1マップ17aに存在しない場合(ステップS12:No)、第1パケット書換部22は、第1マップ17aを参照して、固定文字列をキーとする最もCPU利用率の低い特定ポッド3aの第1情報から特定ポッド3aのIPアドレスを取得する(ステップS14)。 If the first information of the pod 3a using the identifier included in the connection ID as a key does not exist in the first map 17a (step S12: No), the first packet rewriting unit 22 references the first map 17a and obtains the IP address of the specific pod 3a from the first information of the specific pod 3a with the lowest CPU utilization rate using a fixed character string as a key (step S14).

第1パケット書換部22は、リクエストパケットの宛先情報を、ステップS13又はステップS14で取得したポッド3a又は特定ポッド3aのIPアドレス及びサーバ3のリスンポートを含む宛先情報に書き換える(ステップS15)。また、第1パケット書換部22は、リクエストパケットの送信元情報を、ロードバランサ4のIPアドレス及び端末装置2のポートを含む送信元情報に書き換える(ステップS16)。 The first packet rewriting unit 22 rewrites the destination information of the request packet to destination information including the IP address of the pod 3a or specific pod 3a acquired in step S13 or step S14 and the listen port of the server 3 (step S15). The first packet rewriting unit 22 also rewrites the source information of the request packet to source information including the IP address of the load balancer 4 and the port of the terminal device 2 (step S16).

なお、第2マップ作成部23は、宛先のポッド3aの情報と送信元の端末装置2の情報とからなる第2情報を第2マップ17bに記録する(ステップS17)。具体的には、第2マップ作成部23は、書換後の宛先情報のポッド3aのIPアドレス及び書換前の送信元情報の端末装置2のポートを含むキーと、書換前の送信元情報の端末装置2のIPアドレス、書換後の宛先情報のポッド3aのIPアドレス及び書換前の送信元情報の端末装置2のポートを含む値とからなる第2情報を第2マップ17bに記録する。 The second map creation unit 23 records the second information consisting of information about the destination pod 3a and information about the source terminal device 2 in the second map 17b (step S17). Specifically, the second map creation unit 23 records the second information consisting of a key including the IP address of the pod 3a in the rewritten destination information and the port of the terminal device 2 in the source information before rewriting, and a value including the IP address of the terminal device 2 in the source information before rewriting, the IP address of the pod 3a in the rewritten destination information, and the port of the terminal device 2 in the source information before rewriting in the second map 17b.

第1パケット書換部22は、書き換えたリクエストパケットを、その宛先情報に基づくサーバ3のポッド3aへと送信する(ステップS18)。 The first packet rewriting unit 22 sends the rewritten request packet to the pod 3a of the server 3 based on the destination information (step S18).

次に、サーバ3からのレスポンスパケット処理(ステップS3)について図4のフローチャートを参照しながら説明する。 Next, the response packet processing from server 3 (step S3) will be explained with reference to the flowchart in Figure 4.

先ず、第2パケット書換部24は、第2マップ17bを参照して、レスポンスパケットの送信元情報のポッド3aのIPアドレスと端末装置2のポートとをキーとする第2情報を取得し、当該第2情報から宛先となる端末装置2のIPアドレス及び端末装置2のポートを取得する(ステップS21)。 First, the second packet rewriting unit 24 references the second map 17b to obtain second information using the IP address of the pod 3a in the source information of the response packet and the port of the terminal device 2 as keys, and obtains the IP address and port of the terminal device 2 that is the destination from the second information (step S21).

第2パケット書換部24は、レスポンスパケットの宛先情報を、ステップS21で取得した端末装置2のIPアドレス及び端末装置2のポートを含む宛先情報に書き換える(ステップS22)。また、第2パケット書換部24は、レスポンスパケットの送信元情報を、ロードバランサ4のIPアドレス及びロードバランサ4のポートを含む送信元情報に書き換える(ステップS23)。 The second packet rewriting unit 24 rewrites the destination information of the response packet to destination information including the IP address of the terminal device 2 and the port of the terminal device 2 acquired in step S21 (step S22). The second packet rewriting unit 24 also rewrites the source information of the response packet to source information including the IP address of the load balancer 4 and the port of the load balancer 4 (step S23).

第2パケット書換部24は、書き換えたレスポンスパケットを、その宛先情報に基づく端末装置2へと送信する(ステップS24)。 The second packet rewriting unit 24 sends the rewritten response packet to the terminal device 2 based on the destination information (step S24).

本実施形態では、上述のように、パケット転送システム1は、端末装置2と、QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッド3aを定義して冗長化したサーバ3と、端末装置2とサーバ3との間でパケット転送を行うロードバランサ4と、を備え、ロードバランサ4は、ユーザー空間11a及びカーネル空間11bを有するオペレーティングシステムで動作し、ユーザー空間11a及びカーネル空間11bの間でデータを共有可能なマップ17を有し、サーバ3に存在する各ポッド3aについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、マップ17である第1マップ17aに記録し、端末装置2からパケットを受信したとき、第1マップ17aを参照して、当該パケットに設定されたコネクションIDに、識別子が含まれる場合、当該識別子に対応するIPアドレスのポッド3aを宛先としてパケットを転送し、当該パケットに設定されたコネクションIDに識別子が含まれない場合、サーバ3に存在する複数のポッド3aのうち、最もCPU利用率の低いポッド3aを宛先としてパケットを転送する。 In this embodiment, as described above, the packet forwarding system 1 includes a terminal device 2, a server 3 that performs packet processing using the QUIC protocol and that defines and redundancies multiple pods 3a each consisting of one or more containers, and a load balancer 4 that forwards packets between the terminal device 2 and the server 3. The load balancer 4 runs on an operating system having a user space 11a and a kernel space 11b and has a map 17 that allows data to be shared between the user space 11a and the kernel space 11b. For each pod 3a present on the server 3, first information consisting of a key including an identifier and a value including an IP address is recorded in the map 17, which is a first map 17a. When a packet is received from the terminal device 2, the load balancer 4 refers to the first map 17a. If the connection ID set in the packet contains an identifier, the packet is forwarded to the pod 3a with the IP address corresponding to the identifier. If the connection ID set in the packet does not contain an identifier, the packet is forwarded to the pod 3a with the lowest CPU utilization rate among the multiple pods 3a present on the server 3.

換言すれば、本発明のパケット転送方法は、端末装置2と、QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッド3aを定義して冗長化したサーバ3と、の間でパケット転送を行うパケット転送方法であって、ユーザー空間11a及びカーネル空間11bを有するオペレーティングシステムで動作し、ユーザー空間11a及びカーネル空間11bの間でデータを共有可能なマップ17を有するロードバランサ4によって、サーバ3に存在する各ポッド3aについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、マップ17である第1マップ17aに記録し、端末装置2からパケットを受信したとき、第1マップ17aを参照して、当該パケットに設定されたコネクションIDに、識別子が含まれる場合、当該識別子に対応するIPアドレスのポッド3aを宛先としてパケットを転送し、当該パケットに設定されたコネクションIDに識別子が含まれない場合、サーバ3に存在する複数のポッド3aのうち、最もCPU利用率の低いポッド3aを宛先としてパケットを転送する。 In other words, the packet forwarding method of the present invention is a packet forwarding method for forwarding packets between a terminal device 2 and a server 3 that performs packet processing using the QUIC protocol and that defines multiple pods 3a each consisting of one or more containers for redundancy. The load balancer 4 operates on an operating system having a user space 11a and a kernel space 11b and has a map 17 that allows data to be shared between the user space 11a and the kernel space 11b. For each pod 3a residing on the server 3, first information consisting of a key containing an identifier and a value containing an IP address is recorded in the first map 17a, which is the map 17. When a packet is received from the terminal device 2, the first map 17a is referenced, and if the connection ID set in the packet contains an identifier, the packet is forwarded to the pod 3a with the IP address corresponding to the identifier. If the connection ID set in the packet does not contain an identifier, the packet is forwarded to the pod 3a with the lowest CPU utilization rate among the multiple pods 3a residing on the server 3.

このような構成により、本実施形態によれば、QUICプロトコルを適用するサーバ3において冗長化された複数のポッド3aによって超低遅延配信を行う場合に、端末装置2とパケット転送を行っていたポッド3aがある場合には、当該ポッド3aを宛先とし、端末装置2とパケット転送を行っていたポッド3aがない場合には、CPU利用率の低いポッド3aを宛先とするため、高速にパケット転送を行うことができる。このように、本発明のパケット転送システム1によれば、ロードバランサ4によって、端末装置2からの宛先となるポッド3aが明確化し、端末装置2とサーバ3との間で、通信の一貫性及び効率性を向上しつつ、パケット転送を高速化して、超低遅延配信を実現することができる。 With this configuration, according to this embodiment, when ultra-low latency delivery is performed using multiple redundant pods 3a on a server 3 that uses the QUIC protocol, if there is a pod 3a that has been forwarding packets to the terminal device 2, that pod 3a is used as the destination. If there is no pod 3a that has been forwarding packets to the terminal device 2, the pod 3a with the lowest CPU utilization rate is used as the destination, allowing for high-speed packet forwarding. In this way, with the packet forwarding system 1 of the present invention, the load balancer 4 clarifies the pod 3a that is the destination from the terminal device 2, and it is possible to speed up packet forwarding and achieve ultra-low latency delivery while improving the consistency and efficiency of communication between the terminal device 2 and the server 3.

また、本実施形態のパケット転送システム1において、ロードバランサ4は、端末装置2からパケットを受信してポッド3aを宛先として転送するとき、当該ポッド3aのIPアドレス及び当該端末装置2のポートを含むキーと、当該端末装置2のIPアドレス、当該ポッド3aのIPアドレス及び当該端末装置2のポートを含む値とからなる第2情報を、マップ17である第2マップ17bに記録し、当該ポッド3aからパケットを受信したとき、当該パケットに設定された送信元情報から当該ポッド3aのIPアドレスを取得し、第2マップ17bを参照して、当該ポッド3aのIPアドレスに対応する当該端末装置2のIPアドレスを宛先としてパケットを転送する。 In addition, in the packet forwarding system 1 of this embodiment, when the load balancer 4 receives a packet from a terminal device 2 and forwards it to a pod 3a as the destination, it records second information consisting of a key including the IP address of the pod 3a and the port of the terminal device 2, and values including the IP address of the terminal device 2, the IP address of the pod 3a, and the port of the terminal device 2, in the second map 17b, which is a map 17.When the load balancer 4 receives a packet from the pod 3a, it obtains the IP address of the pod 3a from the source information set in the packet, and, by referring to the second map 17b, forwards the packet to the IP address of the terminal device 2 that corresponds to the IP address of the pod 3a as the destination.

このような構成により、本実施形態によれば、端末装置2からのリクエストパケットに応答してサーバ3がレスポンスパケットを送信する場合に、宛先となる端末装置2のIPアドレスを容易且つ迅速に特定することができる。このように、本発明のパケット転送システム1によれば、ロードバランサ4によって、サーバ3からの宛先となる端末装置2が明確化し、端末装置2とサーバ3との間で、通信の一貫性及び効率性を向上しつつ、パケット転送を高速化して、超低遅延配信を実現することができる。 With this configuration, according to this embodiment, when the server 3 sends a response packet in response to a request packet from the terminal device 2, the IP address of the destination terminal device 2 can be easily and quickly identified. In this way, according to the packet forwarding system 1 of the present invention, the load balancer 4 clarifies the terminal device 2 that is the destination from the server 3, and it is possible to speed up packet forwarding while improving the consistency and efficiency of communication between the terminal device 2 and the server 3, thereby achieving ultra-low latency delivery.

なお、上記した実施形態では、パケット転送システム1は、リクエストパケットの送信元やレスポンスパケットの宛先を、端末装置2のIPアドレスやポートとする例を説明したが、本発明はこの例に限定されず。リクエストパケットの送信元やレスポンスパケットの宛先を、端末装置2に接続されたゲートフェイのIPアドレスやポートとしてもよい。 In the above embodiment, an example was described in which the packet forwarding system 1 uses the IP address and port of the terminal device 2 as the sender of the request packet and the destination of the response packet, but the present invention is not limited to this example. The sender of the request packet and the destination of the response packet may also be the IP address and port of a gateway connected to the terminal device 2.

本発明は、請求の範囲及び明細書全体から読み取ることのできる発明の要旨又は思想に反しない範囲で適宜変更可能であり、そのような変更を伴うパケット転送システム及びパケット転送方法もまた本発明の技術思想に含まれる。 The present invention may be modified as appropriate within the scope of the claims and the spirit or concept of the invention as can be read from the entire specification, and packet forwarding systems and packet forwarding methods incorporating such modifications are also included within the technical spirit of the present invention.

1 パケット転送システム
2 端末装置
3 サーバ
3a ポッド
4 ロードバランサ
10 制御部
11 記憶部
11a ユーザー空間
11b カーネル空間
12 通信部
15 ユーザー空間アプリケーション
16 カーネル空間プログラム
17 マップ
17a 第1マップ
17b 第2マップ
20 第1マップ作成部
21 パケット判定部
22 第1パケット書換部
23 第2マップ作成部
24 第2パケット書換部
REFERENCE SIGNS LIST 1 Packet forwarding system 2 Terminal device 3 Server 3a Pod 4 Load balancer 10 Control unit 11 Memory unit 11a User space 11b Kernel space 12 Communication unit 15 User space application 16 Kernel space program 17 Map 17a First map 17b Second map 20 First map creation unit 21 Packet determination unit 22 First packet rewriting unit 23 Second map creation unit 24 Second packet rewriting unit

Claims (4)

端末装置と、
QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッドを定義して冗長化したサーバと、
前記端末装置と前記サーバとの間でパケット転送を行うロードバランサと、を備え、
前記ロードバランサは、ユーザー空間及びカーネル空間を有するオペレーティングシステムで動作し、前記ユーザー空間及び前記カーネル空間の間でデータを共有可能なマップを有し、
前記サーバに存在する前記各ポッドについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、前記マップである第1マップに記録し、
前記端末装置からパケットを受信したとき、前記第1マップを参照して、当該パケットに設定されたコネクションIDに、前記識別子が含まれる場合、当該識別子に対応する前記IPアドレスの前記ポッドを宛先として前記パケットを転送し、当該パケットに設定されたコネクションIDに前記識別子が含まれない場合、前記サーバに存在する前記複数のポッドのうち、最もCPU利用率の低い前記ポッドを宛先として前記パケットを転送することを特徴とするパケット転送システム。
A terminal device;
A redundant server that defines multiple pods consisting of one or more containers and performs packet processing using the QUIC protocol;
a load balancer that transfers packets between the terminal device and the server,
The load balancer operates on an operating system having a user space and a kernel space, and has a map that allows data to be shared between the user space and the kernel space;
For each pod present on the server, first information consisting of a key including an identifier and a value including an IP address is recorded in a first map that is the map;
A packet forwarding system characterized in that when a packet is received from the terminal device, the first map is referenced, and if the identifier is included in the connection ID set in the packet, the packet is forwarded to the pod with the IP address corresponding to the identifier, and if the identifier is not included in the connection ID set in the packet, the packet is forwarded to the pod with the lowest CPU utilization rate among the multiple pods existing on the server.
前記ロードバランサは、前記端末装置からパケットを受信して前記ポッドを宛先として転送するとき、当該ポッドのIPアドレス及び当該端末装置のポートを含むキーと、当該端末装置のIPアドレス、当該ポッドのIPアドレス及び当該端末装置のポートを含む値とからなる第2情報を、前記マップである第2マップに記録し、
当該ポッドからパケットを受信したとき、当該パケットに設定された送信元情報から当該ポッドのIPアドレスを取得し、前記第2マップを参照して、当該ポッドのIPアドレスに対応する当該端末装置のIPアドレスを宛先として前記パケットを転送することを特徴とする請求項1に記載のパケット転送システム。
When the load balancer receives a packet from the terminal device and forwards the packet to the pod as the destination, the load balancer records second information in the second map, which is the map, the second information being composed of a key including the IP address of the pod and a port of the terminal device, and a value including the IP address of the terminal device, the IP address of the pod, and a port of the terminal device;
The packet forwarding system described in claim 1, characterized in that when a packet is received from the pod, the IP address of the pod is obtained from the source information set in the packet, and the packet is forwarded to the IP address of the terminal device corresponding to the IP address of the pod by referring to the second map.
端末装置と、QUICプロトコルを利用してパケット処理を行う、1つ以上のコンテナからなる複数のポッドを定義して冗長化したサーバと、の間でパケット転送を行うパケット転送方法であって、
ユーザー空間及びカーネル空間を有するオペレーティングシステムで動作し、前記ユーザー空間及び前記カーネル空間の間でデータを共有可能なマップを有するロードバランサによって、
前記サーバに存在する前記各ポッドについて、識別子を含むキーとIPアドレスを含む値とからなる第1情報を、前記マップである第1マップに記録し、
前記端末装置からパケットを受信したとき、前記第1マップを参照して、当該パケットに設定されたコネクションIDに、前記識別子が含まれる場合、当該識別子に対応する前記IPアドレスの前記ポッドを宛先として前記パケットを転送し、当該パケットに設定されたコネクションIDに前記識別子が含まれない場合、前記サーバに存在する前記複数のポッドのうち、最もCPU利用率の低い前記ポッドを宛先として前記パケットを転送することを特徴とするパケット転送方法。
A packet transfer method for transferring packets between a terminal device and a redundant server that performs packet processing using a QUIC protocol and defines a plurality of pods each consisting of one or more containers,
A load balancer that operates on an operating system having a user space and a kernel space and has a map that allows data to be shared between the user space and the kernel space,
For each pod present on the server, first information consisting of a key including an identifier and a value including an IP address is recorded in a first map that is the map;
A packet forwarding method characterized by the fact that, when a packet is received from the terminal device, the first map is referenced, and if the identifier is included in the connection ID set in the packet, the packet is forwarded to the pod with the IP address corresponding to the identifier, and if the identifier is not included in the connection ID set in the packet, the packet is forwarded to the pod with the lowest CPU utilization rate among the multiple pods existing on the server.
前記ロードバランサによって、前記端末装置からパケットを受信して前記ポッドを宛先として転送するとき、当該ポッドのIPアドレス及び当該端末装置のポートを含むキーと、当該端末装置のIPアドレス、当該ポッドのIPアドレス及び当該端末装置のポートを含む値とからなる第2情報を、前記マップである第2マップに記録し、
当該ポッドからパケットを受信したとき、当該パケットに設定された送信元情報から当該ポッドのIPアドレスを取得し、前記第2マップを参照して、当該ポッドのIPアドレスに対応する当該端末装置のIPアドレスを宛先として前記パケットを転送することを特徴とする請求項3に記載のパケット転送方法。
When the load balancer receives a packet from the terminal device and forwards the packet to the pod as the destination, second information consisting of a key including the IP address of the pod and a port of the terminal device, and a value including the IP address of the terminal device, the IP address of the pod, and a port of the terminal device is recorded in a second map, which is the map;
A packet forwarding method as described in claim 3, characterized in that when a packet is received from the pod, the IP address of the pod is obtained from the source information set in the packet, and the packet is forwarded to the IP address of the terminal device corresponding to the IP address of the pod by referring to the second map.
JP2025024744A 2025-02-19 2025-02-19 Packet forwarding system and packet forwarding method Active JP7745795B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2025024744A JP7745795B1 (en) 2025-02-19 2025-02-19 Packet forwarding system and packet forwarding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2025024744A JP7745795B1 (en) 2025-02-19 2025-02-19 Packet forwarding system and packet forwarding method

Publications (1)

Publication Number Publication Date
JP7745795B1 true JP7745795B1 (en) 2025-09-29

Family

ID=97214678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2025024744A Active JP7745795B1 (en) 2025-02-19 2025-02-19 Packet forwarding system and packet forwarding method

Country Status (1)

Country Link
JP (1) JP7745795B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020096357A (en) * 2018-12-10 2020-06-18 エスアーペー エスエー Dynamic routing with container orchestration service
US20230073891A1 (en) * 2021-09-09 2023-03-09 Beijing Bytedance Network Technology Co., Ltd. Multifunctional application gateway for security and privacy
US20230198964A1 (en) * 2021-12-16 2023-06-22 Cisco Technology, Inc. Encrypted data packet forwarding
JP2024504885A (en) * 2021-12-30 2024-02-02 17Live株式会社 Systems, methods, and computer-readable media for streaming data access
JP2025523118A (en) * 2022-07-19 2025-07-17 京▲東▼科技信息技▲術▼有限公司 Multi-cluster access method and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020096357A (en) * 2018-12-10 2020-06-18 エスアーペー エスエー Dynamic routing with container orchestration service
US20230073891A1 (en) * 2021-09-09 2023-03-09 Beijing Bytedance Network Technology Co., Ltd. Multifunctional application gateway for security and privacy
US20230198964A1 (en) * 2021-12-16 2023-06-22 Cisco Technology, Inc. Encrypted data packet forwarding
JP2024504885A (en) * 2021-12-30 2024-02-02 17Live株式会社 Systems, methods, and computer-readable media for streaming data access
JP2025523118A (en) * 2022-07-19 2025-07-17 京▲東▼科技信息技▲術▼有限公司 Multi-cluster access method and system

Similar Documents

Publication Publication Date Title
US7363347B2 (en) Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US8892768B2 (en) Load balancing apparatus and load balancing method
US12468657B2 (en) Message forwarding method and apparatus based on remote direct data storage, and network card and device
US7730189B2 (en) Network-initiated session recovery
US7212527B2 (en) Method and apparatus for communicating using labeled data packets in a network
US7899047B2 (en) Virtual network with adaptive dispatcher
US7554992B2 (en) Mobile device communications system and method
EP2088791B1 (en) Method, system and device for increasing multimedia messaging service system capacity
RU2464722C2 (en) Method, device and system for distribution of messages
CN112631788B (en) Data transmission method and data transmission server
NO331320B1 (en) Balancing network load using host machine status information
CN112491717A (en) Service routing method and device
US7483980B2 (en) Method and system for managing connections in a computer network
US6980534B1 (en) System and method for efficient selection of a packet data servicing node
US8209371B2 (en) Method and system for managing communication in a computer network using aliases of computer network addresses
CN118301214A (en) Method, system, storage medium and electronic device for transmitting target service data
CN106375355B (en) Load balancing processing method and device
US6735220B1 (en) Using a centralized server to coordinate assignment of identifiers in a distributed system
US7647384B2 (en) Method and system for managing fragmented information packets in a computer network
KR20060070529A (en) Method, apparatus, and processor-accessible media for providing routing hints
CN114885007B (en) Method and electronic device for real-time strong consistency session synchronization
CN109120556B (en) Method and system for cloud host to access object storage server
JP7745795B1 (en) Packet forwarding system and packet forwarding method
WO2025124474A1 (en) Method for actively detecting bm by bmgw-vip cluster
CN109413142B (en) Method for realizing iSCSI virtual agent under L inux

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20250219

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: 20250902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250916

R150 Certificate of patent or registration of utility model

Ref document number: 7745795

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150