[go: up one dir, main page]

KR102716942B1 - Tunnel data update method of data communication using tunnel Control thread - Google Patents

Tunnel data update method of data communication using tunnel Control thread Download PDF

Info

Publication number
KR102716942B1
KR102716942B1 KR1020210193622A KR20210193622A KR102716942B1 KR 102716942 B1 KR102716942 B1 KR 102716942B1 KR 1020210193622 A KR1020210193622 A KR 1020210193622A KR 20210193622 A KR20210193622 A KR 20210193622A KR 102716942 B1 KR102716942 B1 KR 102716942B1
Authority
KR
South Korea
Prior art keywords
tunnel
data
packet
thread
ctrl
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
KR1020210193622A
Other languages
Korean (ko)
Other versions
KR20230103044A (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
Application filed by 주식회사 베스티안 filed Critical 주식회사 베스티안
Priority to KR1020210193622A priority Critical patent/KR102716942B1/en
Publication of KR20230103044A publication Critical patent/KR20230103044A/en
Application granted granted Critical
Publication of KR102716942B1 publication Critical patent/KR102716942B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 데이터 통신에서의 터널 데이터 업데이트 처리방법에 관한 것이다. 본 발명은 패킷(packet)을 입력시키는 단계와 입력된 패킷에 에더넷(Ethernet) 헤더를 파싱(parsing)하는 단계와 기 패킷이 IP 패킷인지 여부를 확인하고, IP 패킷임이 확인되면 IP 헤더를 파싱(parsing)시키는 단계와 소스 IP의 대역이 터널 테이블에서 확인하여, 적절하면 터널 UDP(User Datagram Protocol) 헤더를 파싱시키는 단계와 터널 소스 포트와 터널 목적지 포트 여부를 터널 테이블에서 확인하는 단계와 상기 단계에서 확인되면, 등록된 터널 페킷으로 인증하는 단계와 상기 단계에서 등록된 터널 페킷이 데이터 페킷인지 여부를 확인하는 단계와 상기 단계에서 데이터 페킷이 확인되면 터널 헤더를 제거하고, 새로운 터널 헤더를 입히는 단계와 Statics를 업데이트하여 포트를 확인하는 단계와 터널 데이터를 네트워크로 전송시키는 단계를 포함하는 것을 특징으로 하는 것이다. The present invention relates to a method for processing tunnel data updates in data communications. The present invention is characterized by including a step of inputting a packet, a step of parsing an Ethernet header of the input packet, a step of confirming whether the packet is an IP packet, and if it is confirmed to be an IP packet, a step of parsing the IP header, a step of confirming the band of a source IP in a tunnel table and, if appropriate, parsing a tunnel UDP (User Datagram Protocol) header, a step of confirming whether the tunnel source port and the tunnel destination port are in the tunnel table, and if confirmed in the above step, a step of authenticating with a registered tunnel packet, a step of confirming whether the tunnel packet registered in the above step is a data packet, a step of removing the tunnel header and adding a new tunnel header if the data packet is confirmed in the above step, a step of confirming the port by updating statics, and a step of transmitting tunnel data to a network.

Description

터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법{Tunnel data update method of data communication using tunnel Control thread}Tunnel data update method of data communication using tunnel Control thread

본 발명은 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법에 관한 것으로, 더욱 자세하게는 많은 세션을 수월하게 처리하기 위한 터널 Ctrl 쓰레드를 이용한 터널 데이터 업데이트 처리 방법에 관한 것이다. The present invention relates to a method for processing tunnel data updates in data communication using a tunnel Ctrl thread, and more specifically, to a method for processing tunnel data updates using a tunnel Ctrl thread for easily processing a large number of sessions.

SDN/NFV, vEPC, IoT의 클라우드화 등 클라우드 기반 솔루션이 늘어남에 따라 데이터센터의 서버는 고성능 가상화 서버의 형태로 변화하고 있으며, 서버는 단일 서비스만을 제공하지 않으며, 다양하고 복합적인 서비스를 제공한다.As cloud-based solutions such as SDN/NFV, vEPC, and IoT cloudification increase, servers in data centers are changing into high-performance virtualized servers, and servers no longer provide a single service, but provide diverse and complex services.

예를 들어, 하나의 서버에 여러 개의 웹 서버가 동작할 수 있고, 그와 동시에 보안 서버, 인증 서버 등의 기능이 동시에 수행될 수 있으며, 이는 서버에 추가되고 삭제되는 기능에 따라 소프트웨어 적으로 변경된다. 즉, 서버로 유입되는 패킷의 유형은 서버의 테넌트에 따라 다양해질 수 있다.For example, multiple web servers can operate on a single server, and functions such as security servers and authentication servers can be performed simultaneously, and these can be changed in software depending on functions added and deleted from the server. In other words, the types of packets flowing into the server can vary depending on the tenant of the server.

네트워크로부터 처음 패킷을 수신하는 부분은 NIC(Network Interface Card)이다. SDN/NFV 및 Cloud 컴퓨팅 기술의 발전에 따라, NIC 또한 40G, 100G 등으로 고속화, 대용량화 되어 가고 있는 추세로, 멀티 코어 기반의 전용 네트워크 프로세스를 사용한 NIC을 사용함으로써 고성능화를 하는 것이 하나의 대안으로 고려되고 있다.The first part that receives packets from the network is the NIC (Network Interface Card). With the development of SDN/NFV and cloud computing technologies, NICs are also trending toward higher speeds and larger capacities, such as 40G and 100G. One alternative is to use a NIC that uses a dedicated network processor based on multi-cores to improve performance.

하지만, 기존 멀티 코어 기반 NIC의 버퍼 할당 및 관리는 초기 프로그램 실행 시, 사전에 사용자에 또는 서비스에 의해 요구된 버퍼 설정 정보로 고정시켜 실행한다.However, the buffer allocation and management of existing multi-core-based NICs are executed by fixing the buffer setting information requested by the user or service in advance at the time of initial program execution.

상기의 이유로 고정된 버퍼 할당 상태에서 유동적인 서버의 기능 추가 및 변경은 그에 최적화되지 못한 버퍼 자원 사용으로 버퍼 사용 측면과 패킷 프로세싱 측면에서 효율성을 감소시킨다.For the above reasons, adding and changing dynamic server functions in a fixed buffer allocation state reduces efficiency in terms of buffer usage and packet processing due to non-optimized buffer resource usage.

또한, 캡슐화된 패킷으로 구성된 페이로드의 두 노드간의 전달 경로인 터널의 업데이트화가 제대로 이루어지지 않아 데이터 패킷의 소모가 심하다는 단점도 있었다. In addition, there was a disadvantage in that the tunnel, which is the transmission path between two nodes of a payload composed of encapsulated packets, was not properly updated, resulting in high consumption of data packets.

최근에는 이러한 데이터 통신에서의 터널 업데이트 방법으로 터널 CTRL 쓰레드를 이용한 터널 업데이트 방법이 부각되고 있다. Recently, a tunnel update method using a tunnel CTRL thread has been highlighted as a tunnel update method in such data communications.

대한민국 특허등록 제10-0785812호Republic of Korea Patent Registration No. 10-0785812 대한민국 특허공개 제10-2017-0111455호Republic of Korea Patent Publication No. 10-2017-0111455 대한민국 특허공개 제10-2015-0081497호Republic of Korea Patent Publication No. 10-2015-0081497

따라서, 본 발명은 Tunnel 연결에 대한 설정을 하거나, Tunnel 세션을 통해 명령이 도착하였을 때, 명령 메시지를 읽어 명령 버퍼에 넣는 부분까지 Tunnel CTRL 쓰레드를 수행하는 것을 목적으로 하는 터널 CTRL 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법을 제공할 수 있는 것을 목적으로 한다. Accordingly, the present invention aims to provide a method for processing tunnel data updates in data communication using a tunnel CTRL thread, which is intended to perform a tunnel CTRL thread from setting up a tunnel connection to reading a command message and putting it into a command buffer when a command arrives through a tunnel session.

또한, 터널 CTRL 서브 쓰레드를 이용하여 터널 테이블에서의 업무 과부하를 대폭 줄일수 있는 터널 CTRL 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법을 제공할 수 있는 것을 목적으로 한다. In addition, the purpose is to provide a method for processing tunnel data updates in data communication using a tunnel CTRL thread, which can significantly reduce work overhead in a tunnel table by using a tunnel CTRL sub-thread.

이러한 문제를 해결하기 위하여 본 발명은 패킷(packet)을 입력시키는 단계와 입력된 패킷에 에더넷(Ethernet) 헤더를 파싱(parsing)하는 단계와 기 패킷이 IP 패킷인지 여부를 확인하고, IP 패킷임이 확인되면 IP 헤더를 파싱(parsing)시키는 단계와 소스 IP의 대역이 터널 테이블에서 확인하여, 적절하면 터널 UDP(User Datagram Protocol) 헤더를 파싱시키는 단계와 터널 소스 포트와 터널 목적지 포트 여부를 터널 테이블에서 확인하는 단계와 상기 단계에서 확인되면, 등록된 터널 페킷으로 인증하는 단계와 상기 단계에서 등록된 터널 페킷이 데이터 페킷인지 여부를 확인하는 단계와 상기 단계에서 데이터 페킷이 확인되면 터널 헤더를 제거하고, 새로운 터널 헤더를 입히는 단계와 Statics를 업데이트하여 포트를 확인하는 단계와 터널 데이터를 네트워크로 전송시키는 단계를 포함하는 것을 특징으로 하는 것이다. In order to solve such a problem, the present invention is characterized by including the steps of: inputting a packet; parsing an Ethernet header of the input packet; checking whether the packet is an IP packet; and parsing the IP header if it is confirmed to be an IP packet; checking the band of the source IP in a tunnel table and, if appropriate, parsing the tunnel UDP (User Datagram Protocol) header; checking whether the tunnel source port and the tunnel destination port are in the tunnel table; and, if confirmed in the above step, authenticating with a registered tunnel packet; checking whether the tunnel packet registered in the above step is a data packet; and, if the data packet is confirmed in the above step, removing the tunnel header and adding a new tunnel header; updating statics to check the port; and transmitting tunnel data to a network.

그리고, 상기 단계에서는 상기 IP 페킷을 스마트 NIC를 통하여 수신받는 단계와 상기 터널 Ctrl 쓰레드 이용하여 상기 IP 페킷의 데이터를 로드 밸런싱(Load-balancing)을 하기 위한 분배하는 단계와 상기 데이터와 command 풀의 data가 Queue 데이터풀로 합쳐지는 단계와 상기 단계에서 합쳐진 데이터를 다수개의 터널 Ctrl 서브 쓰레드로 전달하는 S 3-4를 포함하는 것을 특징으로 한다. And, the step includes a step of receiving the IP packet through a smart NIC, a step of distributing the data of the IP packet for load balancing using the tunnel Ctrl thread, a step of merging the data and data of the command pool into a queue data pool, and S 3-4 of transmitting the data merged in the step to a plurality of tunnel Ctrl sub-threads.

그리고, 상기 단계에서는 상기 IP 패킷이 터널 구성 에이전트(Tunnel Configuration Agent)를 통하여 터널링 룰을 형성하여, 패킷 프로세싱 알고리즘에 따라 상기 터널 테이블에 등록되어 있으면 UDP 터널링 패킷으로 변경시키고, 등록되어 있지 않으면 호스트로 처리하는 것을 특징으로 한다. And, in the above step, the IP packet forms a tunneling rule through a tunnel configuration agent, and if it is registered in the tunnel table according to a packet processing algorithm, it is changed into a UDP tunneling packet, and if it is not registered, it is processed as a host.

그리고, 상기 단계에서 Statics는 터널링되는 패킷의 갯수인 것을 특징으로 하는 것이다. And, in the above step, Statics is characterized by the number of packets being tunneled.

또한, 데이터 통신에서의 터널 데이터 업데이트 프로세싱 시스템에 있어서, 도커(Docker)를 이용한 가상머신으로 동작하는 다수개의 터널 구성 에이전트( Tunnel Configuration Agent)와 Statics 쓰레드를 통한 터널링된 패킷에 대한 통계를 내어 전달하는 Statics 모니터를 포함하여 이루어지며, 애플리케이션이 동작하는 유저 스페이스와 터널 테이블과 터널링되는 패킷에 대한 통계를 내어 상기 Statics 모니터로 전달하는 Statics 쓰레드와 상기 유저 스페이스를 연결하는 pci 쓰레드와 터널 헤드를 결합 또는 제거시키는 엔캡/ 디캡 쓰레드를 포함하여 이루어지며, IP-UDP 터널링 기능을 오프로드시키는 스마트 NIC과 상기 유저 스페이스와 상기 스마트 NIC 사이에 형성되어 시스템 드라이브를 실행하기 위한 kernel 스페이스를 포함하는 것을 특징으로 하는 것이다.In addition, in a tunnel data update processing system in data communication, it is characterized by including a plurality of tunnel configuration agents operating as virtual machines using Docker and a Statics monitor which outputs and transmits statistics on tunneled packets through a Statics thread, and including a user space where an application operates and a tunnel table and a Statics thread which outputs statistics on tunneled packets and transmits them to the Statics monitor, a pci thread which connects the user space, and an encap/decap thread which combines or removes a tunnel head, and including a smart NIC which offloads an IP-UDP tunneling function, and a kernel space which is formed between the user space and the smart NIC and executes a system drive.

또한, 상기 유저 스페이스의 터널 구성 에이전트에서 터널 설정을 입력하면, 상기 스마트 NIC의 터널 테이블에서 터널 설정을 완료하는 것을 특징으로 하는 것이다.In addition, when tunnel settings are entered in the tunnel configuration agent of the user space, the tunnel settings are completed in the tunnel table of the smart NIC.

따라서, 본 발명은 터널 CTRL 쓰레드가 터널 세션을 관리하는 서버의 역할을 수행하여 터널 세션을 통해서 명령이 도착하였을 때, 명령 메시지를 읽어 명령 버퍼에 넣는 부분까지 터널 CTRL 쓰레드에서 수행할수 있도록 하여 작업을 나누어 실행할 수 있는 효과가 있는 것이다. Accordingly, the present invention has the effect of enabling the tunnel CTRL thread to perform the role of a server that manages a tunnel session, so that when a command arrives through a tunnel session, the tunnel CTRL thread can perform the part of reading a command message and putting it into a command buffer, thereby dividing the work and executing it.

도 1은 본 발명에 의한 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법의 흐름도.
도 2는 터널 Ctrl 쓰레드를 이용하여 터널 Ctrl 서브 쓰레드로 데이터를 전달하는 과정의 흐름도.
도 3은 터널 Ctrl 쓰레드를 이용하여 터널 Ctrl 서브 쓰레드에 데이터의 전송 및 분배를 하는 것을 나타낸 도면.
도 4는 터널 테이블의 도면.
도 5는 터널 테이블의 등록을 확인하여, IP- UDP 터널링 패킷으로 변형시키는 과정을 나타낸 도면.
도 6은 데이터 통신에서의 터널 데이터 업데이트 프로세스 시스템의 블록도.
도 7a는 add 터널 요청 명령 메시지 테이블의 도면.
도 7b는 del 터널 요청 명령 메시지의 도면.
도 8은 스마트 NIC의 프로그램 구조의 사진.
도 9는 룰 등록의 관리 메세지 프로그램의 도면.
도 10은 룰 메시저 처리 흐름을 나타낸 도면.
도 11은 상기 도 10의 룰 메시지 처리의 응답 과정의 흐름도.
Figure 1 is a flow chart of a tunnel data update processing method in data communication using a tunnel Ctrl thread according to the present invention.
Figure 2 is a flowchart of the process of transferring data to a tunnel Ctrl sub-thread using a tunnel Ctrl thread.
Figure 3 is a diagram showing the transmission and distribution of data to a tunnel Ctrl sub-thread using a tunnel Ctrl thread.
Figure 4 is a drawing of a tunnel table.
Figure 5 is a diagram showing the process of verifying registration in a tunnel table and transforming it into an IP-UDP tunneling packet.
Figure 6 is a block diagram of a tunnel data update process system in data communication.
Figure 7a is a diagram of the add tunnel request command message table.
Figure 7b is a diagram of the del tunnel request command message.
Figure 8 is a picture of the program structure of a smart NIC.
Figure 9 is a diagram of a management message program for rule registration.
Figure 10 is a diagram showing the rule message processing flow.
Figure 11 is a flow chart of the response process of the rule message processing of Figure 10.

이하에서는 본 발명의 양호한 실시예를 첨부된 도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시가 되더라도 가능한 한 동일 부호를 가지도록 하고 있음에 유의하여야 한다. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the attached drawings. First, when adding reference numerals to components in each drawing, it should be noted that identical components are given the same numerals as much as possible even if they are indicated in different drawings.

또한, 하기에서 본 발명을 설명함에 있어 관련된 공지기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. In addition, when describing the present invention below, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the gist of the present invention, the detailed description will be omitted.

또한, 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위하여 사용된 것에 불과하므로, 본 발명을 한정하려는 의도가 아니며 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현도 의미하는 것임을 미리 밝혀두고자 한다. In addition, it is to be noted in advance that the terms used in this application are only used to describe specific embodiments and are not intended to limit the present invention, and that singular expressions also mean plural expressions unless the context clearly indicates otherwise.

본 발명을 설명하기에 앞서, 본 발명의 명세서에 등장하는 용어에 대하여 간략하게 설명하기로 한다. Before describing the present invention, terms appearing in the specification of the present invention will be briefly explained.

UDP(User Datagram Protocol)는 TCP보다 전송의 신뢰성은 떨어지지만, 전송속도가 비교적 빠른 프로토콜을 의미한다. 비연결형 지향형 프로토콜로 데이터를 독립적인 관계를 지니는 패킷인 데이터그램 단위로 처리하며, 데이터그램은 신뢰성보다는 연속성이 중요한 서비스, 예를 들면, 실시간 스트리밍 서비스에 자주 사용된다. UDP (User Datagram Protocol) is a protocol with relatively fast transmission speeds but lower transmission reliability than TCP. It is a connectionless oriented protocol that processes data in datagram units, which are packets with independent relationships. Datagrams are often used in services where continuity is more important than reliability, such as real-time streaming services.

스마트 NIC(Smart Network Interface Card)는 네트워크로부터 처음 패킷을 수신하는 부분으로서, CPU(중앙처리장치)가 어플리케이션 처리에 집중할 수 있도록 하기 위해 네트워크 기능을 수행하여 고 성능화를 도모하는 것으로, 시스템 간에 주고 받는 패킷 데이터에서 TCP/IP Header를 제거하여, 어플리케이션 간의 통신 내용을 CPU가 바로 처리할 수 있는 것이다. A smart NIC (Smart Network Interface Card) is the part that first receives packets from the network. It performs network functions to enable the CPU (Central Processing Unit) to focus on application processing, thereby improving performance. It removes the TCP/IP Header from packet data sent and received between systems, so that the CPU can directly process the communication content between applications.

터널(Tunnel)이란 제어신호 및 데이터 전달을 위한 통로(터널) 역할을 하는 것으로, 프로토콜이나 이동단말 등의 수단에 페킷 등의 데이터를 전달할 수 있도록 돕는 역할을 한다. A tunnel is a passageway for transmitting control signals and data, and helps transmit data such as packets to means such as protocols or mobile terminals.

가상 머신(Virtual Machine, VM)은 컴퓨팅 환경을 소프트웨어로 구현한 것으로서, 컴퓨터를 에뮬레이션하는 소프트웨어를 의미한다. 가상머신 상에서 운영체제나 응용 프로그램을 설치 및 실행을 할 수 있다.A virtual machine (VM) is a software implementation of a computing environment, and is software that emulates a computer. Operating systems and applications can be installed and run on a virtual machine.

쓰레드(thread)는 프로세스 내에서 실행되는 여러가지 흐름의 단위이다.A thread is a unit of multiple flows that are executed within a process.

도 1은 본 발명에 의한 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법의 흐름도이고, 도 2는 터널 Ctrl 쓰레드를 이용하여 터널 Ctrl 서브 쓰레드로 데이터를 전달하는 과정의 흐름도이고, 도 3은 터널 Ctrl 쓰레드를 이용하여 터널 Ctrl-서브 쓰레드에 데이터의 전송 및 분배를 하는 것을 나타낸 도면이고, 도 4는 터널 테이블의 도면이고, 도 5는 터널 테이블의 등록을 확인하여, IP- UDP 터널링 패킷으로 변형시키는 과정을 나타낸 도면이고, 도 6은 데이터 통신에서의 터널 데이터 업데이트 프로세스 시스템의 블록도이고, 도 7a는 add 터널 요청 명령 메시지의 도면이고, 도 7b는 del 터널 요청 명령 메시지의 도면이고, 도 8은 스마트 NIC의 프로그램 구조의 사진이고, 도 9는 룰 등록의 관리 메세지 프로그램의 도면이고, 도 10은 룰 메시저 처리 흐름을 나타낸 도면이고, 도 11은 상기 도 10의 룰 메시지 처리의 응답 과정의 흐름도이다. FIG. 1 is a flow chart of a tunnel data update processing method in data communication using a tunnel Ctrl thread according to the present invention, FIG. 2 is a flow chart of a process of transmitting data to a tunnel Ctrl sub-thread using a tunnel Ctrl thread, FIG. 3 is a drawing showing data transmission and distribution to a tunnel Ctrl-sub-thread using a tunnel Ctrl thread, FIG. 4 is a drawing of a tunnel table, FIG. 5 is a drawing showing a process of confirming registration of a tunnel table and transforming it into an IP-UDP tunneling packet, FIG. 6 is a block diagram of a tunnel data update process system in data communication, FIG. 7a is a drawing of an add tunnel request command message, FIG. 7b is a drawing of a del tunnel request command message, FIG. 8 is a photograph of a program structure of a smart NIC, FIG. 9 is a drawing of a management message program for rule registration, FIG. 10 is a drawing showing a rule message processing flow, and FIG. 11 is a flow chart of a response process of the rule message processing of FIG. 10.

이하, 도 1을 참조하여 본 발명에 의한 데이터 통신에서의 터널 데이터 업데이트 처리방법에 대하여 설명하기로 한다. Hereinafter, a tunnel data update processing method in data communication according to the present invention will be described with reference to FIG. 1.

먼저, 패킷(미도시) 데이터를 입력시킨다(S 1). 상기 페킷은 네트워크를 통해 전송되는 데이터의 전송단위(작은 데이터 조각)로서 데이터 통신에서 데이터를 효율성 있게 전송, 교환하기 위해 데이터(예, 파일 등)를 1,000~ 2,000 비트 정도의 적당한 길이로 분할하거나, 역으로 짧은 데이터(예, 캐릭터 또는 문자 정보)를 적당한 길이로 일괄하여, 그 각각에 수신인 번지 등과 같은 제어정보를 부여한 것을 말한다. First, packet (not shown) data is input (S 1). The packet is a transmission unit (small piece of data) of data transmitted through a network. In data communication, in order to efficiently transmit and exchange data, data (e.g., files, etc.) is divided into an appropriate length of about 1,000 to 2,000 bits, or conversely, short data (e.g., characters or character information) is grouped into an appropriate length and control information such as a recipient address is assigned to each of them.

다음으로, 에더넷(Ethernet) 헤더를 파싱(parsing)하는 것이다(S 2).Next, the Ethernet header is parsed (S 2).

상기 S 1에서 입력된 페킷을 에더넷 헤더(Ethernet header)를 파싱(실행할 수 있는 내부 포맷으로 변환시키는 것)하여 안전하고 효과적으로 페킷을 전송시킨다. 즉, 상기 에더넷 헤드로 인한 컴퓨터의 네트워킹을 시작한다. The packet input from the above S 1 is parsed into an Ethernet header (converted into an executable internal format) to transmit the packet safely and effectively. That is, networking of the computer due to the Ethernet header is initiated.

상기 S 2에서 파싱된 패킷이 IP 패킷인지 여부를 확인하여, IP 패킷임이 확인되면 IP 헤더를 파싱(parsing) 시키는 것이다(S 3). 본 S 2에서 IP 패킷이 아니라고 확인되면 호스트(400)로 보내는 것이다.In the above S 2, it is checked whether the parsed packet is an IP packet, and if it is confirmed to be an IP packet, the IP header is parsed (S 3). If it is confirmed in S 2 that it is not an IP packet, it is sent to the host (400).

그러나, 이와 같은 경우에는 터널 데이터(T)에 업무 과부하가 생겨서 작업량이 많아지게 되어, 자칫 처리 속도의 지연이 될 가능성이 매우 많다. However, in cases like this, the tunnel data (T) is overloaded with work, which increases the workload, and there is a high possibility that the processing speed may be delayed.

따라서, 본 발명은 터널 Ctrl 쓰레드(C) 및 터널 Ctrl 서브 쓰레드(S)를 구비하여 이러한 업무 로드를 줄여 줄수 있도록 하는데, 도 2는 터널 Ctrl 쓰레드를 이용하여 터널 Ctrl 서브 쓰레드로 데이터를 전달하는 과정의 흐름도인데, 상기 도 2와 도 3을 참조하여 이를 설명하기로 한다. Accordingly, the present invention provides a tunnel Ctrl thread (C) and a tunnel Ctrl sub-thread (S) to reduce such work load. FIG. 2 is a flow chart of a process of transferring data to a tunnel Ctrl sub-thread using a tunnel Ctrl thread. This will be described with reference to FIG. 2 and FIG. 3.

먼저, 상기 서술한 S 2에서의 확인된 IP 페킷을 스마트 NIC(200)를 통하여 수신받게 되는 것이다(S 3-1). First, the IP packet confirmed in S 2 described above is received through the smart NIC (200) (S 3-1).

그러면, 터널 Ctrl 쓰레드(C)를 이용하여 상기 IP 페킷의 데이터를 로드 밸런싱(Load-balancing)을 통한 분배하게 된다(S 3-2).Then, the data of the above IP packet is distributed through load balancing using the tunnel Ctrl thread (C) (S 3-2).

상기 로드 밸런싱(Load-balancing)이란 데이터를 균형있게 분배하는 것인데, 데이터를 Enqueue화하여 입력하게 된다. The above load balancing refers to distributing data evenly, and data is input by enqueuing it.

도 3을 참조하면, 상기 S 3-2에서의 데이터와 command Pool(도면부호는 생략)의 data들로 Queue 데이터(도면부호는 생략)로 합쳐지게 된다(S 3-3).Referring to Fig. 3, the data in S 3-2 and the data in the command pool (drawing symbol omitted) are combined into queue data (drawing symbol omitted) (S 3-3).

이와 같이, 합쳐진 데이터는 Dequeue화하여 출력되어 다수개의 터널 Ctrl 서브 쓰레드(S)로 전송할수 있도록 나누게 되는 작업을 실행하는 것이다. In this way, the merged data is dequeued and outputted, and the task of dividing it so that it can be transmitted to multiple tunnel Ctrl sub-threads (S) is executed.

상기 S 3-3에서 합쳐진 모든 데이터를 다수개의 터널 Ctrl 서브 쓰레드(S)로 전달한다(S 3-4). 그러므로, 호스트(400)로 보내주는 역할을 상기 터널 Ctrl 서브 쓰레드(S)가 작업을 나누어서 수행할수 있다. 참고로, 상기 터널 Ctrl 서브 쓰레드(S)의 갯수는 5~ 10개가 바람직할 것이다. All data combined in the above S 3-3 is transmitted to multiple tunnel Ctrl sub-threads (S) (S 3-4). Therefore, the tunnel Ctrl sub-threads (S) can perform the task of sending it to the host (400) by dividing the work. For reference, the number of tunnel Ctrl sub-threads (S) is preferably 5 to 10.

따라서, 상기와 같이 데이터들을 여러 곳의 터널 Ctrl 서브 쓰레드(S)로 각각 분산하여 배치하게 함으로서, 작업량을 크게 나누어지게 됨으로 인하여 터널 테이블(T)이 많은 세션을 수월하게 진행할수 있도록 하는 우수한 기능이 있는 것이다. Therefore, by distributing the data to multiple tunnel Ctrl sub-threads (S) as described above, the workload is largely divided, which provides an excellent function that allows the tunnel table (T) to easily process many sessions.

상기 IP 페킷의 소스 IP의 대역이 터널 테이블(도 4 참조, 도면부호의 기재는 생략)에서 찾아 확인하여, 적절하면 터널 UDP(User Datagram Protocol) 헤더를 파싱시킨다(S 4). The bandwidth of the source IP of the above IP packet is checked in the tunnel table (see Figure 4, description of the drawing symbols is omitted), and if appropriate, the tunnel UDP (User Datagram Protocol) header is parsed (S 4).

상기 IP 페킷을 스마트 NIC(200)에 터널 쓰레드(210)에 형성된 터널 테이블(T)에서 대조하여 이를 확인하고, 터널 UDP 헤더를 파싱한다. The above IP packet is checked by comparing it with the tunnel table (T) formed in the tunnel thread (210) of the smart NIC (200), and the tunnel UDP header is parsed.

도 5를 참조하면, 외부에서 수신되는 상기 IP 패킷을 터널 구성 에이전트(120: Tunnel Configuration Agent)를 통하여 터널링 룰(IP 주소 및 포트에 기초하여 생성되고, 처리 대상에 포함되는 IP 패킷의 리스트로 정의)을 형성하여, 패킷 프로세싱 알고리즘(packet processing algorithem)에 따라 매칭하여 상기 터널 테이블(T)에 등록되어 있으면 UDP 터널링 패킷으로 변경시키고, 등록되어 있지 않으면 호스트(400)로 처리한다.Referring to FIG. 5, the IP packet received from the outside is formed into a tunneling rule (defined as a list of IP packets generated based on an IP address and port and included in a processing target) through a tunnel configuration agent (120), and is matched according to a packet processing algorithm. If it is registered in the tunnel table (T), it is changed into a UDP tunneling packet, and if it is not registered, it is processed by a host (400).

따라서, 스마트 NIC(200)에 속해 있는 터널 테이블(T)에 규칙이 등록되면, 상기 스마트 NIC(200)에서 IP-UDP Encapsulation(캡슐화)/Decapsulation(제거)이 진행되는 것이다. Therefore, when a rule is registered in the tunnel table (T) belonging to the smart NIC (200), IP-UDP Encapsulation/Decapsulation (removal) is performed in the smart NIC (200).

상기 IP 페킷의 포트가 터널 소스 포트(Tunnel src.port: 송신지 포트)와 터널 목적지 포트(Tunnel dst.port: 목적지 포트)인지의 여부를 모두 터널 테이블(T)에서 확인한다(S 5). Whether the port of the above IP packet is a tunnel source port (Tunnel src.port: transmitter port) or a tunnel destination port (Tunnel dst.port: destination port) is checked in the tunnel table (T) (S 5).

상기 S 5에서 상기 IP페킷이 터널 소스 포트와 목적지 소스 포트에 모두에 해당하면, 등록된 터널페킷으로 인증하는 것이다(S 6). In the above S 5, if the IP packet corresponds to both the tunnel source port and the destination source port, it is authenticated as a registered tunnel packet (S 6).

만일, 상기 S 5에서는 IP 페킷의 포트가 터널 소스 포트(Tunnel src.port: 송신지 포트)와 터널 목적지 포트(Tunnel dst.port: 목적지 포트)에 해당하지 않으면, 비 등록된 터널 페킷으로 간주하여 호스트(400)로 전송하는 것이다. If, in the above S 5, the port of the IP packet does not correspond to the tunnel source port (Tunnel src.port: transmitter port) and the tunnel destination port (Tunnel dst.port: destination port), it is regarded as an unregistered tunnel packet and transmitted to the host (400).

상기 S 6에서 등록된 터널 페킷이 데이터 페킷인지 확인한다(S 7). 만일, 데이터 페킷이 아니면 이것도 역시 호스트(400)로 전송한다. It is checked whether the tunnel packet registered in the above S 6 is a data packet (S 7). If it is not a data packet, this is also transmitted to the host (400).

상기 S 7에서 등록된 터널 페킷이 데이터 페킷임이 확인되면 터널데이터(T) 헤더(미도시)를 제거하고, 새로운 터널데이터(T) 헤더를 결합시킨다(S 8). 역시, 데이터 페킷이 아님이 확인되면 호스트(400)로 돌려보낸다. If it is confirmed that the tunnel packet registered in the above S 7 is a data packet, the tunnel data (T) header (not shown) is removed and a new tunnel data (T) header is combined (S 8). If it is also confirmed that it is not a data packet, it is sent back to the host (400).

Statics를 업데이트하여 포트를 확인하는 것이다(S 9).Check the port by updating statics (S 9).

상기 S 9에서, 상기 Statics는 터널링이 되는 IP 패킷의 갯수인 것인데, 본 S 9는 상기 IP 패킷들을 모두 업데이트시키는 단계인 것이다. 업데이트하는 동시에 해당하는 터널 소스 포트와 터널 목적지 포트를 확인하는 것이다. In the above S 9, the Statics is the number of IP packets that are tunneled, and this S 9 is a step of updating all of the IP packets. At the same time as updating, the corresponding tunnel source port and tunnel destination port are checked.

마지막으로, 상기 S 9에서 새롭게 업데이트된 IP 페킷을 네트워크로 전송하는 것이다(S 10). Finally, the newly updated IP packet from S 9 is transmitted to the network (S 10).

이하에서는, 본 발명에 의한 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 프로세스 시스템에 대하여 설명하기로 한다. Below, a tunnel data update process system in data communication using a tunnel Ctrl thread according to the present invention will be described.

도 6을 참조하면, 본 발명의 시스템은 크게 애플리케이션(미도시)이 동작하는 유저 스페이스(100)와 IP-UDP 터널링 기능을 오프-로드시키는 스마트 NIC(200)와 상기 유저 스페이스(100)와 상기 스마트 NIC(200) 사이에 형성되어 시스템 드라이브를 실행하기 위한 kernel 스페이스(300)로 이루어진다. Referring to FIG. 6, the system of the present invention is largely composed of a user space (100) in which an application (not shown) operates, a smart NIC (200) that offloads an IP-UDP tunneling function, and a kernel space (300) formed between the user space (100) and the smart NIC (200) to execute a system drive.

유저 스페이스(100)는 도커(Docker)를 이용한 가상머신(110)으로 동작하는 다수개의 터널 구성 에이전트(120: Tunnel Configuration Agent)가 형성된다.In the user space (100), multiple tunnel configuration agents (120: Tunnel Configuration Agent) that operate as virtual machines (110) using Docker are formed.

상기 터널 구성 에이전트(120)는 터널링을 할 때, 터널 소스 포트 및 터널 목적지 포트를 지정한다. 상기 터널 구성 에이전트(120)에서 터널 설정을 입력하면, 스마트 NIC(200)의 터널 테이블(T)의 내부 알고리즘에 입력하여 참조하여, 터널 설정을 완료한다. 참고로, 상기 터널 구성 에이전트(120)의 갯수는 3~ 20개가 바람직하다. The above tunnel configuration agent (120) specifies a tunnel source port and a tunnel destination port when tunneling. When tunnel settings are entered in the tunnel configuration agent (120), the tunnel settings are completed by entering and referencing the internal algorithm of the tunnel table (T) of the smart NIC (200). For reference, the number of the above tunnel configuration agents (120) is preferably 3 to 20.

도시된 바와 같이, 내부에 터널 테이블(T)을 품고 있는 터널 쓰레드(210)는 데이터의 전송 및 분배를 할 수 있도록 터널 Ctrl- 서브 쓰레드(S)에 연결되어 있다. As illustrated, a tunnel thread (210) containing a tunnel table (T) inside is connected to a tunnel Ctrl- sub thread (S) to enable transmission and distribution of data.

상기 터널 CTRL-서브 쓰레드(S)는 상기 터널 쓰레드(210)와 연결되어 세션을 처리하고, Command 데이터의 내용을 파싱하고 명령을 실행하며, 그 결과에 대한 응답메시지를 호스트(400)로 전송한다. The above tunnel CTRL-sub thread (S) is connected to the tunnel thread (210) to process the session, parse the contents of the command data, execute the command, and transmit a response message for the result to the host (400).

터널 CTRL 쓰레드(C)는 상기 세션을 관리하며, 상기 터널 CTRL-서브 쓰레드(S)가 로드- 밸런싱하여 처리할수 있도록, 데이터를 분배하여 준다. The tunnel CTRL thread (C) manages the above sessions and distributes data so that the tunnel CTRL sub-thread (S) can process them with load balancing.

즉, 상기 세션을 관리하는 서버의 역할을 수행하는 상기 터널 Ctrl 쓰레드(C)는 상기 터널 테이블(T)에 과부하가 생기지 않도록 상기 터널 Ctrl-서브 쓰레드(S)로의 분배를 실행시킨다. That is, the tunnel Ctrl thread (C), which performs the role of a server managing the session, executes distribution to the tunnel Ctrl-sub thread (S) so as not to cause an overload on the tunnel table (T).

그리고, Statics 모니터(130)는 스마트 NIC(200)의 Statics 쓰레드(220)를 통한 터널링된 패킷에 대한 통계를 내어 관리자에게 전달한다. Additionally, the Statics monitor (130) generates statistics on tunneled packets through the Statics thread (220) of the smart NIC (200) and transmits them to the administrator.

스마트 NIC(200)는 터널 테이블(T)를 품고있는 터널 쓰레드(210)와 터널링되는 패킷에 대한 통계를 내어 상기 Statics 모니터(130)로 전달하는 Statics 쓰레드(220)가 형성된다. The smart NIC (200) is formed with a tunnel thread (210) that holds a tunnel table (T) and a static thread (220) that generates statistics on tunneled packets and transmits them to the static monitor (130).

PCI 쓰레드(230)는 스마트 NIC(200)과 상기 유저 스페이스(100)를 연결하여 주는 역할을 하는 것이다. The PCI thread (230) serves to connect the smart NIC (200) and the user space (100).

엔캡(Encapsuiation)/ 디캡(Decapsulation) 쓰레드(240)는 터널 데이터(T) 헤드(미도시)를 결합 또는 제거시키는 역할을 하는 것이다. The encapsulation/decapsulation thread (240) is responsible for combining or removing the tunnel data (T) head (not shown).

이하, 본 발명에 의한 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 프로세스 시스템의 작동 관계에 대하여 설명하기로 한다. Hereinafter, the operational relationship of the tunnel data update process system in data communication using the tunnel Ctrl thread according to the present invention will be described.

IP 패킷이 스마트 NIC(200)으로 진입하게 되면 터널링 룰을 스마트 NIC(200)에 있는 패킷 프로세싱 알고리즘에 입력시켜서, 상기 IP 페킷이 터널 테이블(T)에 등록되어 있는지 매칭을 한다. When an IP packet enters a smart NIC (200), a tunneling rule is input into a packet processing algorithm in the smart NIC (200) to match whether the IP packet is registered in the tunnel table (T).

터널 구성 에이전트(120)는 Docker(110)를 이용한 가상머신을 통해 동작하면서 상기 IP 페킷의 경로를 지정한다. The tunnel configuration agent (120) operates through a virtual machine using Docker (110) and specifies the path of the IP packet.

상기 터널 테이블(T)에 상기 IP 페킷이 등록이 되어 있으면 IP- UDP 터널링 패킷으로 변경시키고, 상기 터널 테이블(T)에 등록되어 있지 않으면 호스트(400)로 올려 처리한다.If the IP packet is registered in the above tunnel table (T), it is changed into an IP-UDP tunneling packet, and if it is not registered in the above tunnel table (T), it is sent to the host (400) for processing.

이하에서는, 본 발명의 실시예에 의하면 상기 터널 테이블(T)이 감당할 과중한 세션을 크게 분담시키도록 하기 위하여 터널 CTRL 쓰레드(C)와 터널 CTRL 서브 쓰레드(S)가 형성되어 있는데, 이를 설명하기로 한다. Below, according to an embodiment of the present invention, a tunnel CTRL thread (C) and a tunnel CTRL sub-thread (S) are formed to largely share the burden of the excessive sessions that the tunnel table (T) can handle, and this will be described.

상기 터널 CTRL 쓰레드(C)는 터널의 세션을 관리하는 흡사, 서버의 역할을 수행하는 것이다.The above tunnel CTRL thread (C) acts like a server that manages the tunnel session.

도 7a와 도 7b를 참조하면, 호스트(400)로부터 터널의 세션에 연결된 패킷이 도착하면, 소켓(socket)에 대한 이벤트(Add, Del)를 읽어내고, 터널 연결에 대한 설정을 하거나, 터널 세션을 통해 명령이 도착했을 때, 명령 메시지를 읽어, 명령 버퍼(미도시)에 넣는 부분까지 터널 CTRL 쓰레드(C)에서 수행한다.Referring to FIGS. 7a and 7b, when a packet connected to a tunnel session arrives from a host (400), the tunnel CTRL thread (C) reads an event (Add, Del) for a socket, sets up a tunnel connection, or, when a command arrives through the tunnel session, reads a command message and places it in a command buffer (not shown).

수신한 명령 메시지를 파싱하고, 명령 내용대로 실행하며, 그 결과를 호스트(400)로 보내주는 역할은 다수개의 터널 CTRL-서브 쓰레드(S)가 작업을 나눠서 수행한다. The role of parsing the received command message, executing the command contents, and sending the result to the host (400) is divided and performed by multiple tunnel CTRL sub-threads (S).

상기 다수개의 터널 CTRL-서브 쓰레드(S)를 통하여 많은 세션을 수월하게 처리하기 위해서, 다수개의 터널 CTRL-서브 쓰레드(S)에게 Load-Balancing을 하여 처리하도록 한다. In order to easily process many sessions through the above multiple tunnel CTRL sub-threads (S), load-balancing is performed on multiple tunnel CTRL sub-threads (S).

명령을 각 수신할 때마다 명령어의 집합 Pool로부터 할당받은 메모리 공간에 소켓과 이벤트 정보, 그리고 호스트(400)로부터 수신한 데이터 정보를 넣고, 터널 CTRL-서브 쓰레드(S)와 연결된 Queue 중에 하나를 선택하여 해당 Queue에 Command data(도 3 참조, 도면부호는 생략)를 넣는다. Whenever a command is received, the socket and event information, and data information received from the host (400) are placed in the memory space allocated from the command set Pool, and one of the Queues connected to the tunnel CTRL-sub thread (S) is selected and the command data (see Figure 3, the drawing symbol is omitted) is placed in the corresponding Queue.

상기 Queue는 수신한 명령을 구분하고 Session ID 값(명령을 구별하기 위해 호스트가 할당한 값)에 의해 결정된다. The above Queue distinguishes received commands and is determined by the Session ID value (a value assigned by the host to distinguish commands).

터널 CTRL-서브 쓰레드(S)는 Command data 내용을 파싱하고, 명령을 실행하며, 그 결과에 대한 응답 메시지를 생성하여 호스트(400)로 보낸다.The tunnel CTRL-sub thread (S) parses the contents of the Command data, executes the command, and generates a response message for the result and sends it to the host (400).

상기와 같은 절차를 거친 IP 페킷이 데이터 페킷인지 여부를 확인하여, 종래의 터널 헤더(미도시)를 제거하고, 새로운 터널 헤더를 결합시킨다. It is confirmed whether the IP packet that has gone through the above procedure is a data packet, the existing tunnel header (not shown) is removed, and a new tunnel header is combined.

상기 IP 페킷을 업데이트하여, 업데이트된 IP 페킷을 네트워크로 전송하다. 그리고, Statics 쓰레드(220)는 터널링된 IP 패킷에 대한 통계를 내어 유저 스페이스(100)의 Statics 모니터(130)로 전달한다. By updating the above IP packet, the updated IP packet is transmitted to the network. Then, the Statics thread (220) generates statistics on the tunneled IP packet and transmits them to the Statics monitor (130) of the user space (100).

이하, 도 8을 참조하여 스마트 NIC의 프로그램 구조의 사진을 참조하여, 관련되는 터널데이터 업데이트 프로세스 시스템(U)의 작동관계에 대하여 설명하기로 한다. 앞서 설명한 내용에 대한 중복적인 서술은 어느 정도 생략하기로 한다. Hereinafter, with reference to Fig. 8 and a picture of the program structure of the smart NIC, the operational relationship of the related tunnel data update process system (U) will be described. Duplicate descriptions of the previously explained contents will be omitted to some extent.

도시된 바와 같이, 스마트 NIC(200)과 호스트(400)의 양측으로 나뉘어지며, P2P(동등 계층간 통신망) 방식으로 파일 등을 주고 받는 형태인 것이다. As shown, it is divided into two sides, a smart NIC (200) and a host (400), and is a form of exchanging files, etc. in a P2P (peer-to-peer) manner.

스마트 NIC(200) 측에는 상부에 패킷 처리 쓰레드인 앤캡/디캡 쓰레드(240)와 PCI 쓰레드(230)가 서로 연결되어 있다. On the smart NIC (200) side, the packet processing thread, the encap/decap thread (240) and the PCI thread (230) are connected to each other.

그리고, 상기 앤캡/디캡 쓰레드(240)와 PCI 쓰레드(230)의 양측에는 피어(Peer) 간에 네트워크 트래픽을 전송하기 위한 통신채널을 제공하는 mPIPE(m)와 상기 PCI 쓰레드(230)와 호환하는 TRIO(245)가 각각 연결되어 형성된다. And, on both sides of the encap/decap thread (240) and the PCI thread (230), an mPIPE (m) that provides a communication channel for transmitting network traffic between peers and a TRIO (245) that is compatible with the PCI thread (230) are respectively connected and formed.

그리고, 하부에는 터널 테이블(T)을 품고 있는 터널 쓰레드(210)와 Statics 쓰레드(220)가 형성된다. 여기서, 상기 터널 쓰레드(210)는 터널 CTRL 쓰레드(C)의 명령을 받는 터널 CTRL-서브 쓰레드(S)가 연결되어 있는데, 앞서 설명하엿으므로 자세한 설명은 생략하기로 한다. And, a tunnel thread (210) and a static thread (220) containing a tunnel table (T) are formed at the bottom. Here, the tunnel thread (210) is connected to a tunnel CTRL-sub thread (S) that receives commands from a tunnel CTRL thread (C), but as described above, a detailed description will be omitted.

호스트(400) 측에는 Kernel 스페이스(300)와 리눅스 형태의 PCIe 드라이버(310), Docker(110) 그리고, 다수 개가 연결된 터널 구성 에이전트(120)가 DTR(data-terminal-ready: 데이터 전송 준비의 완료)의 상태로 이루어져 있다. On the host (400) side, a kernel space (300), a Linux-type PCIe driver (310), Docker (110), and a plurality of connected tunnel configuration agents (120) are configured in a DTR (data-terminal-ready: data transmission preparation complete) state.

그리고, 상기 스마트 NIC(200)의 Statics 쓰레드(220)로부터 터널링된 IP 패킷에 대한 통계를 전송받는 Statics 모니터(130)가 형성된다. Additionally, a Statics monitor (130) is formed that receives statistics on tunneled IP packets from the Statics thread (220) of the smart NIC (200).

터널 구성 에이전트(120)에서 터널 정보를 전송하는데, 상기 터널 정보는 네트워크, 터널 소스 포트, 터널 목적지 포트, 새(new) 터널 소스 IP, 새 터널 목적지 IP, 인터페이스이다. Tunnel information is transmitted from the tunnel configuration agent (120), and the tunnel information includes a network, a tunnel source port, a tunnel destination port, a new tunnel source IP, a new tunnel destination IP, and an interface.

그 다음, 상기와 같은 터널 정보를 전송받은 터널 Ctrl-서브 쓰레드(S)에서는 터널 정보를 업데이트시켜, 터널 설정 정보(success, failure, list)를 응답하여 상기 터널 구성 에이전트(120)에 전송하는 것이다. Next, the tunnel Ctrl-sub thread (S) that receives the tunnel information as described above updates the tunnel information and sends tunnel setup information (success, failure, list) in response to the tunnel configuration agent (120).

도 9에 나타난 대로, 상기 터널 설정 정보의 결정은 상기 터널 스레드(210)의 터널 테이블(T) 룰을 통해 등록되어 있다고 판단하면 success, 등록되어 있지 않으면 fail, 그리고, success되거나 fail의 갯수는 list의 숫자로 기록하는 것이다. As shown in Fig. 9, the tunnel setting information is determined by determining whether it is registered through the tunnel table (T) rule of the tunnel thread (210), success, failure if it is not registered, and the number of successes or failures is recorded as a number in the list.

add 부분은 0으로 되어 있어, 추가된 것이 없이 Socket Payload(터널쓰레드(210)와 터널 구성 에이전트(120) 간에 교환하는 메세지 구조, 도면부호는 생략)는 그대로이지만, 밑에 del은 IP주소인 오른편의 터널 소스 IP와 터널 목적지 IP는 모두 삭제되었다. The add part is 0, so nothing has been added, and the Socket Payload (message structure exchanged between the tunnel thread (210) and the tunnel configuration agent (120), the drawing symbol is omitted) remains the same, but the tunnel source IP and tunnel destination IP on the right side, which are IP addresses, have both been deleted.

그리고, 밑에 list는 2(add와 del의 2번의 경우이므로)로서, add와 del의 공통 부분인 은 삭제되었고, 맨 왼쪽의 type(1 Byte)만이 기록된다.And, the list below is 2 (since it is the 2nd case of add and del), which is the common part of add and del. is deleted, and only the leftmost type (1 Byte) is recorded.

도 10은 룰 메신저를 수신하여 처리의 흐름을 나타낸 것으로, 터널 구성 에이전트(120)가 응답 메세지를 전송하는 것을 나타낸 알고리즘이다.Figure 10 is an algorithm that shows the flow of processing by receiving a rule messenger and showing the tunnel configuration agent (120) sending a response message.

먼저, 룰 메신저를 수신하여 터널테이블(T)의 Type 필드를 확인한다(Step 1). 상기 Type 필드는 숫자로 이를 확인(Step1)하게 되는데, add는 '0'이고 del은 '1'이고, list는 '2'로 정의된다. First, the rule messenger is received and the Type field of the tunnel table (T) is checked (Step 1). The Type field is checked as a number (Step 1), and add is defined as '0', del is defined as '1', and list is defined as '2'.

즉, 룰에 있으면 add, 룰에 없으면 del, 경우의 수를 list로 기재할 수치를 판단하게 된다. That is, if it is in the rule, add, if it is not in the rule, del, and determine the numerical value to be written in the list of cases.

만일, 룰에 있어서 add로 기록되면, add 포맷을 파싱하여 포트 숫자를 검색한다. If add is recorded in the rule, the port number is searched by parsing the add format.

만일, 포트가 존재하면 네트워크와 IP를 업데이트하여 sucess 메신저를 생성하여 이를 전송하고, 포트가 존재하지 않으면 토탈 list 숫자를 연속하여 검색해서, 네트워크, 포트, IP를 입력한 후에 역시 sucess 메신저를 생성하여 상기 응답메세지를 유저 스페이스(100)로 전송한다(Step 2-a). If a port exists, the network and IP are updated to create a success messenger and transmit it. If the port does not exist, the total list number is searched continuously, the network, port, and IP are input, and then a success messenger is created and the response message is transmitted to the user space (100) (Step 2-a).

만일, 룰에 존재하지 않아 del로 기록되면 del 포맷을 파싱하고, 포트 숫자를 검색한다.If it does not exist in the rule and is recorded as del, the del format is parsed and the port number is searched.

해당하는 포트가 존재하면 해당 리스트를 삭제하여, sucess 메신저를 생성하여 이를 전송하고, 해당 포트가 존재하지 않으면 failure 메신저를 생성하여 이를 유저 스페이스(100)로 상기와 같은 응답 메세지를 전송한다(Step 2-b). If the corresponding port exists, the corresponding list is deleted, a success messenger is created and transmitted, and if the corresponding port does not exist, a failure messenger is created and a response message as described above is transmitted to the user space (100) (Step 2-b).

그리고, list는 list 포맷을 파싱하여 failure 메신저를 응답 메신저로 생성하여 유저 스페이스(100)로 상기 응답 메세지를 전송한다(Step 2-c). Then, the list parses the list format to create a failure messenger as a response messenger and transmits the response message to the user space (100) (Step 2-c).

도 11은 상기 도 10의 룰 메시지 처리의 응답 과정의 흐름도이다. Figure 11 is a flow chart of the response process of the rule message processing of Figure 10.

상기 도 10에서와 같은 과정으로 룰 메세지를 수신받았을 경우에 유저 스페이스(100)로 전달을 하기 위해서 반드시 응답 메세지를 전송하여야 하는데, 이 과정에 대하여 설명하기로 한다. When a rule message is received through a process similar to that in the above drawing 10, a response message must be transmitted in order to transmit it to the user space (100). This process will be described below.

먼저, 응답메세지를 수신(Step 3)하여, 그 result 필드를 확인한다(Step 4). 상기 result 필드라는 것은 결과를 나타내는 수치인데 즉, success일 때는 1, failure일 때는 0, list일 때는 2를 의미한다. First, receive the response message (Step 3) and check its result field (Step 4). The result field is a numerical value indicating the result, that is, 1 for success, 0 for failure, and 2 for list.

도시된 바와 같이, 상기 result 필드를 확인하여 '0' 일 경우에는 failure 메세지, '1' 일 경우에는 success 메세지, '2'일 경우에는 list를 출력하는 것이다(Step 5). As shown, the result field is checked and if it is '0', a failure message is output, if it is '1', a success message is output, and if it is '2', a list is output (Step 5).

이상에서와 같은 내용의 본 발명이 속하는 기술분야의 당업자는 본 발명의 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 상기 기술한 실시 예는 예시된 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다.Those skilled in the art will understand that the present invention, as described above, can implement other specific forms without changing the technical idea or essential features of the present invention. Therefore, it should be understood that the above-described embodiments are illustrative and not limiting.

본 발명의 범위는 상기 상세한 설명보다는 첨부된 특허청구범위에 의하여 나타내어지며, 특허청구 범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is indicated by the appended claims rather than the detailed description above, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be interpreted as being included in the scope of the present invention.

100 : 유저 스페이스 110 : Docker
120 : 터널 구성 에이전트 130 : Statics 모니터
200 : 스마트 NIC 210 : 터널 쓰레드
220 : Statics 쓰레드 230 : pci 쓰레드
240 : 엔캡/디캡 쓰레드 245 : TRIO
300 : kernel 스페이스 400 : 호스트(host)
T : 터널 테이블 P : mPIPE
S : 터널 CTRL-서브 쓰레드 C : 터널 CTRL 쓰레드
U : 터널 데이터 업데이트 프로세스 시스템
100: User Space 110: Docker
120: Tunnel Configuration Agent 130: Statics Monitor
200: Smart NIC 210: Tunnel Thread
220 : Statics thread 230 : pci thread
240: Encap/Decap Thread 245: TRIO
300 : kernel space 400 : host
T: Tunnel Table P: mPIPE
S: Tunnel CTRL-sub thread C: Tunnel CTRL thread
U: Tunnel data update process system

Claims (6)

터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널데이터 업데이트 처리방법에 있어서,
패킷을 입력시키는 S 1;
입력된 패킷에 에더넷 헤더를 파싱하는 S 2;
상기 패킷이 IP 패킷인지 여부를 확인하고, IP 패킷임이 확인되면 IP 헤더를 파싱시키는 S 3;
소스 IP의 대역이 터널 테이블(T)에서 확인하고, 터널 UDP 헤더를 파싱시키는 S 4;
터널 소스 포트와 터널 목적지 포트 여부를 터널 테이블(T)에서 확인하는 S 5;
상기 S 5에서 확인되면, 등록된 터널 페킷으로 인증하는 S 6;
상기 S 6에서 등록된 터널 페킷이 데이터 페킷인지 여부를 확인하는 S 7;
상기 S 7에서 데이터 페킷이 확인되면 터널테이블(T) 헤더를 제거하고, 새로운 터널테이블(T) 헤더를 입히는 S 8;
Statics(220)를 업데이트하여 포트를 확인하는 S 9;
IP 페킷을 네트워크로 전송시키는 S 10을 포함하고,
상기 S 3에서는
상기 IP 페킷을 스마트 NIC(200)를 통하여 수신받는 S 3-1;
상기 터널 Ctrl 쓰레드(C)를 이용하여 상기 IP 페킷의 데이터를 로드 밸런싱을 하기 위한 분배하는 S 3-2;
상기 데이터와 커맨드 풀의 데이터가 큐(Queue) 데이터풀로 합쳐지는 S 3-3;
상기 S 3-3 단계에서 합쳐진 데이터를 다수개의 터널 Ctrl 서브 쓰레드(S)로 전달하는 S 3-4를 포함하며,
상기 S 4에서는 상기 IP 패킷이 터널 구성 에이전트(120)를 통하여 터널링 룰을 형성하여, 패킷 프로세싱 알고리즘에 따라 상기 터널 테이블(T)에 등록되어 있으면 UDP 터널링 패킷으로 변경시키고, 등록되어 있지 않으면 호스트(400)로 처리하는 것을 특징으로 하는 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법.
In a method for processing tunnel data updates in data communication using a tunnel Ctrl thread,
S 1 inputting a packet;
S 2 parses the Ethernet header in the input packet;
S 3 checks whether the above packet is an IP packet, and if it is confirmed to be an IP packet, parses the IP header;
S 4, which checks the bandwidth of the source IP in the tunnel table (T) and parses the tunnel UDP header;
S 5 checks the tunnel table (T) to see if the tunnel source port and tunnel destination port are the same;
If verified in the above S 5, S 6 authenticates with a registered tunnel packet;
S 7, which checks whether the tunnel packet registered in the above S 6 is a data packet;
When the data packet is confirmed in the above S 7, the tunnel table (T) header is removed and a new tunnel table (T) header is added in S 8;
S 9 to check the port by updating Statics(220);
Includes S 10 for transmitting IP packets to the network,
In the above S 3
S 3-1 receiving the above IP packet through smart NIC (200);
S 3-2, which distributes the data of the IP packet for load balancing using the above tunnel Ctrl thread (C);
S 3-3 where the above data and the data in the command pool are merged into a queue data pool;
Includes S 3-4, which transfers the data merged in the above S 3-3 step to multiple tunnel Ctrl sub-threads (S).
A method for processing tunnel data updates in data communication using a tunnel Ctrl thread, characterized in that in the above S 4, the IP packet forms a tunneling rule through a tunnel configuration agent (120), and if it is registered in the tunnel table (T) according to a packet processing algorithm, it is changed into a UDP tunneling packet, and if it is not registered, it is processed by a host (400).
삭제delete 삭제delete ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 4 was waived upon payment of the registration fee.◈ 제1항에 있어서,
상기 S 9에서 Statics는 터널링되는 패킷의 갯수인 것을 특징으로 하는 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법.
In the first paragraph,
A method for processing tunnel data updates in data communication using a tunnel Ctrl thread, characterized in that in the above S 9, Statics is the number of tunneled packets.
◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 5 was waived upon payment of the registration fee.◈ 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 프로세싱 시스템에 있어서,
도커(Docker)를 이용한 가상머신(110)으로 동작하는 다수개의 터널 구성 에이전트(120: Tunnel Configuration Agent)와 Statics 쓰레드(220)를 통한 터널링된 패킷에 대한 통계를 내어 전달하는 Statics 모니터(130)를 포함하여 이루어지며, 애플리케이션이 동작하는 유저 스페이스(100);
내부에 터널 테이블(T)을 품고 있는 터널 쓰레드(210);
상기 터널 쓰레드(210)와 연결되어 세션을 처리하고, Command 데이터의 내용을 파싱하고 명령을 실행하며, 그 결과에 대한 응답메시지를 호스트(400)로 전송하는 터널 CTRL-서브 쓰레드(S);
상기 세션을 관리하며, 상기 터널 CTRL-서브 쓰레드(S)가 로드- 밸런싱하여 처리할수 있도록, 데이터를 분배하여 주는 터널 CTRL 쓰레드(C);
상기 Statics 모니터(130)로 터널링되는 패킷에 대한 통계를 생성하여, 전달하는 Statics 쓰레드(220);
상기 유저 스페이스(100)를 연결하는 pci 쓰레드(230)와 터널 데이터(T) 헤드를 결합 또는 제거시키는 엔캡/ 디캡 쓰레드(240)를 포함하여 이루어지며, IP-UDP 터널링 기능을 오프로드시키는 스마트 NIC(200);
상기 유저 스페이스(100)와 상기 스마트 NIC(200) 사이에 형성되어 시스템 드라이브를 실행하기 위한 kernel 스페이스(300)를 포함하는 것을 특징으로 하는 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 프로세싱 시스템.
In a tunnel data update processing system in data communication using a tunnel Ctrl thread,
It is composed of a plurality of tunnel configuration agents (120: Tunnel Configuration Agent) operating as virtual machines (110) using Docker and a Statics monitor (130) that outputs and transmits statistics on tunneled packets through a Statics thread (220), and a user space (100) where an application operates;
A tunnel thread (210) having a tunnel table (T) inside;
A tunnel CTRL-sub thread (S) that is connected to the above tunnel thread (210), processes the session, parses the contents of the command data, executes the command, and transmits a response message for the result to the host (400);
A tunnel CTRL thread (C) that manages the above sessions and distributes data so that the tunnel CTRL sub-thread (S) can process it with load balancing;
A Statics thread (220) that generates and transmits statistics on packets tunneled to the above Statics monitor (130);
A smart NIC (200) comprising a pci thread (230) connecting the user space (100) and an encap/decap thread (240) combining or removing a tunnel data (T) head, and offloading the IP-UDP tunneling function;
A tunnel data update processing system in data communication using a tunnel Ctrl thread, characterized in that it includes a kernel space (300) formed between the user space (100) and the smart NIC (200) and for executing a system drive.
◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 6 was waived upon payment of the registration fee.◈ 제5항에 있어서,
상기 유저 스페이스(100)의 터널 구성 에이전트(110)에서 터널 설정을 입력하면, 상기 스마트 NIC(200)의 터널 테이블(T)에서 터널 설정을 완료하는 것을 특징으로 하는 데이터 통신에서의 터널 데이터 업데이트 프로세싱 시스템.

In paragraph 5,
A tunnel data update processing system in data communication, characterized in that when tunnel settings are entered in the tunnel configuration agent (110) of the above user space (100), tunnel settings are completed in the tunnel table (T) of the above smart NIC (200).

KR1020210193622A 2021-12-31 2021-12-31 Tunnel data update method of data communication using tunnel Control thread Active KR102716942B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210193622A KR102716942B1 (en) 2021-12-31 2021-12-31 Tunnel data update method of data communication using tunnel Control thread

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210193622A KR102716942B1 (en) 2021-12-31 2021-12-31 Tunnel data update method of data communication using tunnel Control thread

Publications (2)

Publication Number Publication Date
KR20230103044A KR20230103044A (en) 2023-07-07
KR102716942B1 true KR102716942B1 (en) 2024-10-17

Family

ID=87153734

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210193622A Active KR102716942B1 (en) 2021-12-31 2021-12-31 Tunnel data update method of data communication using tunnel Control thread

Country Status (1)

Country Link
KR (1) KR102716942B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180288197A1 (en) * 2013-09-16 2018-10-04 Amazon Technologies, Inc. Configurable parser and a method for parsing information units

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100785812B1 (en) 2006-12-08 2007-12-13 한국전자통신연구원 Method and apparatus for providing end-to-end USOS data transmission path
KR101572689B1 (en) 2014-01-06 2015-11-27 (주)구름네트웍스 Apparatus for Virtualizing a Network Interface and Method thereof
KR20170111455A (en) 2016-03-28 2017-10-12 한국전자통신연구원 WIRED/WIRELESS INTEGRATED NETWORK APPLIED MAPPING METHOD FOR QoS GUARANTEE AND UPSTREAM DATA TRASMISSION METHOD

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180288197A1 (en) * 2013-09-16 2018-10-04 Amazon Technologies, Inc. Configurable parser and a method for parsing information units

Also Published As

Publication number Publication date
KR20230103044A (en) 2023-07-07

Similar Documents

Publication Publication Date Title
US10694005B2 (en) Hardware-based packet forwarding for the transport layer
CN113326228B (en) Message forwarding method, device and equipment based on remote direct data storage
US9178966B2 (en) Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US10355997B2 (en) System and method for improving TCP performance in virtualized environments
CN107005532A (en) Network extension TCP splicings
CN104580011B (en) A kind of data forwarding device and method
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
US11949589B2 (en) Methods and systems for service state replication using original data packets
EP3996351B1 (en) Managing network services using multipath protocols
US9191262B2 (en) Network communication protocol processing optimization system
CN114153778A (en) Cross-network bridging
US11895027B2 (en) Methods and systems for service distribution using data path state replication and intermediate device mapping
KR102383782B1 (en) Tunnel data update process method of data communication
US12388901B2 (en) Communication protocol, and a method thereof for accelerating artificial intelligence processing tasks
US11593294B2 (en) Methods and systems for loosely coupled PCIe service proxy over an IP network
CN116633934A (en) Load balancing method, device, node and storage medium
US20230247005A1 (en) Proxy offload to network interface device
KR102716942B1 (en) Tunnel data update method of data communication using tunnel Control thread
CN117397232A (en) no agency agreement
US20250126189A1 (en) Packet load balancer
EP4432631A1 (en) Proxy offload to network interface device
US20250039094A1 (en) Underlay-based tcp segmentation offload in overlay networks
US20230208913A1 (en) In-order streaming in-network computation
WO2024140059A1 (en) Packet processing method, device, computer readable storage medium and chip
HK40074491B (en) Managing network services using multipath protocols

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R11-asn-PN2301

St.27 status event code: A-3-3-R10-R13-asn-PN2301

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

Fee payment year number: 1

St.27 status event code: A-2-2-U10-U11-oth-PR1002

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000