KR102610823B1 - 네트워크 어드레스 변환을 위한 통신 시스템 및 방법 - Google Patents

네트워크 어드레스 변환을 위한 통신 시스템 및 방법 Download PDF

Info

Publication number
KR102610823B1
KR102610823B1 KR1020180120606A KR20180120606A KR102610823B1 KR 102610823 B1 KR102610823 B1 KR 102610823B1 KR 1020180120606 A KR1020180120606 A KR 1020180120606A KR 20180120606 A KR20180120606 A KR 20180120606A KR 102610823 B1 KR102610823 B1 KR 102610823B1
Authority
KR
South Korea
Prior art keywords
header
address
converter
packet
memory
Prior art date
Application number
KR1020180120606A
Other languages
English (en)
Other versions
KR20190062166A (ko
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 US16/199,961 priority Critical patent/US10749842B2/en
Priority to TW107142254A priority patent/TWI791691B/zh
Priority to CN201811425221.8A priority patent/CN109842609B/zh
Publication of KR20190062166A publication Critical patent/KR20190062166A/ko
Application granted granted Critical
Publication of KR102610823B1 publication Critical patent/KR102610823B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2525Translation at a client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal

Abstract

어드레스 변환을 수행하는 통신 시스템, 및 통신 시스템의 어드레스 변환 방법이 제공된다. 본 개시의 실시예에 따른 네트워크를 통해 패킷을 송수신하는 통신 시스템은, 상기 패킷을 상기 네트워크로 전송될 송신 신호로 변조하고 상기 네트워크로부터의 수신 신호를 상기 패킷으로 복조하는 모뎀 회로, 및 상기 패킷의 네트워크 어드레스를 변환하는 어드레스 변환 회로를 포함하고, 상기 어드레스 변환 회로는, 상기 패킷이 저장된 외부 메모리로부터 상기 패킷의 헤더를 수신하고 상기 헤더를 저장하는 내장 메모리, 상기 헤더의 포맷을 변환하는 제1 변환기, 및
상기 헤더에 포함된 어드레스를 변환하는 제2 변환기를 포함할 수 있다.

Description

네트워크 어드레스 변환을 위한 통신 시스템 및 방법 {Communication system and method for network address translation}
본 개시의 기술적 사상은, 통신 시스템에 관한 것으로서, 구체적으로 데이터 통신을 위하여 네트워크 어드레스 변환을 수행하는 통신 시스템의 하드웨어 구조와 네트워크 어드레스 변환 방법에 관한 것이다.
데이터 통신을 위한 통신 장치 또는 통신 시스템은 네트워크 어드레스 변환 기술을 이용하여 다른 어드레스 체계를 가지는 네트워크 또는 통신 장치와 통신할 수 있다. 네트워크 어드레스 변환 기술은 CLAT(Customer-Side Translator) 및 NAT(Network Address Translation) 등을 포함할 수 있다. CLAT는 호스트들이 IPv6 망을 경유하여 IPv4 또는 IPv6의 호스트들과 자유롭게 통신할 수 있도록 IPv4 어드레스를 IPv6 어드레스로 변환하거나 또는 IPv6 어드레스를 IPv4 어드레스로 변경하는 기술이고, NAT는 IP(Internet Protocol) 패킷의 전송 프로토콜의 포트 번호와, 소스 및 목적지의 IP 어드레스 등을 재기록 하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술을 말한다. 네트워크 어드레스 변환 수행 시, IP 패킷에 변화가 생기기 때문에 IP 헤더 또는 전송 프로토콜 헤더의 체크섬(checksum)이 업데이트되어야 한다.
본 개시의 기술적 사상이 해결하려는 과제는, 효율적으로 어드레스 변환을 수행하는 통신 시스템 및 통신 시스템의 어드레스 변환 방법을 제공하는데 있다.
본 개시의 기술적 사상에 따른 네트워크를 통해 패킷을 송수신하는 통신 시스템은, 상기 패킷을 상기 네트워크로 전송될 송신 신호로 변조하고 상기 네트워크로부터의 수신 신호를 상기 패킷으로 복조하는 모뎀 회로, 및 상기 패킷의 네트워크 어드레스를 변환하는 어드레스 변환 회로를 포함하고, 상기 어드레스 변환 회로는, 상기 패킷이 저장된 외부 메모리로부터 상기 패킷의 헤더를 수신하고 상기 헤더를 저장하는 내장 메모리, 상기 헤더의 포맷을 변환하는 제1 변환기, 및
상기 헤더에 포함된 어드레스를 변환하는 제2 변환기를 포함할 수 있다.
본 개시의 기술적 사상에 따른 장치는, 메모리, 네트워크를 통해 수신되는 제1 패킷의 네트워크 어드레스를 변환하고, 변환된 네트워크 어드레스를 포함하는 제2 패킷을 상기 메모리에 저장하는 통신 프로세서, 및 상기 메모리로부터 상기 제2 패킷을 수신하고, 응용 프로그램을 구동함으로써 상기 제2 패킷을 처리하는 어플리케이션 프로세서를 포함할 수 있다.
본 개시의 기술적 사상에 따른 통신 기능을 갖는 어플리케이션 프로세서는, 응용 프로그램을 실행하는 프로세서 및 네트워크로부터 수신되는 패킷의 헤더에 포함된 네트워크 어드레스를 상기 응용 프로그램의 어드레스 체계에 부합하도록 변환하고, 변환된 네트워크 어드레스를 포함하는 헤더를 상기 프로세서가 엑세스 가능한 메모리에 저장하는 어드레스 변환 회로를 포함할 수 있다.
본 개시의 기술적 사상에 따른 통신 시스템의 네트워크 어드레스 변환 방법은, 네트워크를 통해 수신되는 제1 IP 패킷을 제1 메모리에 저장하는 단계, 어드레스 변환 회로가 상기 제1 메모리에 저장된 상기 제1 IP 패킷의 헤더를 내부 버퍼로 카피하는 단계, 상기 어드레스 변환 회로가 상기 헤더에 포함된 네트워크 어드레스를 변환하는 단계, 및 상기 어드레스 변환 회로가 상기 네트워크 어드레스가 변경된 상기 헤더를 포함하는 제2 IP 패킷을 제2 메모리에 저장하는 단계를 포함할 수 있다.
본 개시의 실시예에 따른 네트워크 어드레스 변환을 수행하는 통신 시스템, 장치, 어플리케이션 프로세서 및 통신 시스템의 동작 방법에 따르면, 하드웨어 기반의 어드레스 변환 회로가 네트워크 어드레스 변환을 수행함으로써, 어플리케이션 프로세서에 의한 소프트웨어 기반의 어드레스 변환이 생략될 수 있다. 어플리케이션 프로세서의 로드가 감소되고, IP 패킷들이 메모리에 카피되는 횟수가 감소될 수 있으며, 어플리케이션 프로세서, 또는 장치의 IP 패킷 처리 속도가 향상될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 통신 장치를 개략적으로 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 동작을 설명하는 도면이다.
도 3은 IP 패킷의 구조를 개략적으로 나타내는 도면이다.
도 4a 및 도 4b는 IP 패킷의 IP 헤더의 실시예들을 나타내는 도면이다.
도 5는 IP 패킷의 TCP 헤더를 나타내는 도면이다.
도 6a는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 제1 변환기의 구현예를 나타내는 블록도이고, 도 6b는 도 6a의 제1 변환기의 동작 방법을 나타내는 흐름도이다.
도 7a는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 제2 변환기의 구현예를 나타내는 블록도이고, 도 7b는 도 7a의 제2 변환기의 동작 방법을 나타내는 흐름도이다.
도 8은 변환 테이블을 나타내는 도면이다.
도 9a 및 도 9b는 본 개시의 예시적 실시예에 따른 제2 변환기의 IP 어드레스 변환 방법을 예시적으로 설명하는 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 어드레스 변환 회로를 나타내는 블록도이다.
도 11은 본 개시의 예시적 실시예에 따른 통신 프로세서를 나타내는 블록도이다.
도 12는 본 개시의 예시적 실시예에 따른 통신 장치를 나타내는 블록도이다.
도 13a는 본 개시의 예시적 실시예들에 따른 통신 장치에서 IP 패킷의 이동을 나타내는 도면이고, 도 13b는 비교예에 따른 통신 장치에서 IP 패킷의 이동을 나타내는 도면이다.
도 14는 본 개시의 예시적 실시예에 따른 어플리케이션 프로세서를 나타내는 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 통신 장치를 개략적으로 나타내는 블록도이다.
도 1을 참조하면, 통신 장치(10)는 다른 전자 장치와 데이터 통신을 수행하는 전자 장치일 수 있다, 예컨대, 통신 장치(10)는 스마트폰, 태블릿 PC(Personal Computer), 랩탑 컴퓨터, 드론, 디지털 카메라(digital camera), 웨어러블 컴퓨터, IoT(Internet of Things) 기기, 차량용 주행 장치, 및 각종 스마트 디바이스들 중 하나일 수 있으며, 이 외에도, 유/무선 네트워크를 통해 외부 전자 장치와 데이터 통신을 수행하는 다양한 전자 장치 중 하나일 수 있다.
도 1을 참조하면, 통신 장치(10)는 통신 프로세서(100), 어플리케이션 프로세서(200) 및 메모리(300)를 포함할 수 있다. 이 외에도, 통신 장치(10)는 디스플레이 모듈, 입/출력 모듈 등 다른 하드웨어 또는 소프트웨어 구성요소들을 더 포함할 수 있다.
어플리케이션 프로세서(200)는 통신 장치(10)의 OS(Operating System)(201) 및 각종 응용 프로그램(202)을 구동하여 어플리케이션 프로세서(200)에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 멀티미디어 데이터를 포함한 각종 데이터 처리 및 연산을 수행할 수 있다. 실시예에 있어서, 어플리케이션 프로세서(200)는, SoC(system on chip)로 구현될 수 있다.
통신 프로세서(100)는 네트워크를 통해 연결된 다른 전자 장치들과의 통신에서 데이터 송수신을 수행할 수 있다. 이 과정에서, 통신 프로세서(100)는 어플리케이션 프로세서(200)와 데이터를 송수신할 수 있다. 통신 장치(10)가 네트워크를 통해 데이터를 수신할 때, 예컨대 데이터 다운로드(upload)를 수행할 경우, 통신 프로세서(100)는 수신되는 데이터를 어플리케이션 프로세서(200)로 전달하고, 어플리케이션 프로세서(200)가 데이터 연산 및 저장 등과 같은 데이터 처리 동작을 수행할 수 있다. 반대로, 통신 장치(10)가 네트워크를 통해 데이터를 송신할 때, 예컨대 데이터 업로드(upload)를 수행할 경우, 어플리케이션 프로세서(200)가 업로드할 데이터를 통신 프로세서(100)로 전달하면, 통신 프로세서(100)는 네트워크를 통해 데이터를 송신할 수 있다. 예를 들어, 통신 장치(10)가 비디오 스트리밍(video streaming)을 수행할 경우, 통신 프로세서(100)가 수신한 데이터를 어플리케이션 프로세서(200)로 전달하면, 어플리케이션 프로세서(200)가 상기 통신 프로세서(100)로부터 전달받은 데이터를 처리하여 화면에 디스플레이 할 수 있다.
메모리(300)는, 어플리케이션 프로세서(200) 및 통신 프로세서(100)로부터 수신되거나, 어플리케이션 프로세서(200)에 의해 생성된 명령 또는 데이터를 저장할 수 있다. 메모리(300)는 휘발성 메모리, 예컨대 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등으로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 메모리(300)는 플래시 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 불휘발성 메모리를 포함할 수 있다. 메모리(300)는 메모리 칩, 또는 복수의 메모리 칩들을 포함하는 메모리 모듈을 지칭할 수 있으며, 또는 통신 장치(10) 내의 메모리 장치들을 의미할 수 있다.
전술한 바와 같이, 통신 프로세서(100)와 어플리케이션 프로세서(200) 간에 데이터의 송수신이 빈번하게 발생하므로, 메모리(300)는 통신 프로세서(100) 및 어플리케이션 프로세서(200)가 엑세스할 수 있는 공유 메모리로서 동작할 수 있다. 통신 프로세서(100) 및 어플리케이션 프로세서(200)는 메모리(300)를 통해 데이터를 송수신할 수 있다.
실시예에 있어서, 메모리(300)는 제1 영역(AR1), 제2 영역(AR2) 및 제3 영역(AR3)을 포함할 수 있다. 실시예에 있어서, 제1 영역(AR1), 제2 영역(AR2) 및 제3 영역(AR3)은 메모리 칩 또는 메모리 모듈 내에서 물리적으로 또는 논리적으로 구분되는 영역일 수 있다. 다른 실시예에 있어서, 제1 영역(AR1), 제2 영역(AR2) 및 제3 영역(AR3)은 통신 장치(10) 내에서 물리적으로 구별되는 메모리 장치들일 수 있다.
제1 영역(AR1)은 통신 프로세서(100)에 의해 독점적으로 사용되는 통신 프로세서(100)의 전용 영역일 수 있다. 제2 영역(AR2)은 통신 프로세서(100) 및 어플리케이션 프로세서(200)에 의해 공유될 수 있다. 예를 들어, 제2 영역(AR2)은 통신 프로세서(100)와 어플리케이션 프로세서(200) 간 통신(Inter-Processor Communication; IPC)을 위한 공유 영역일 수 있다. 제3 영역(AR3)은 어플리케이션 프로세서(200)에 의해 독점적으로 사용되는 어플리케이션 프로세서(200)의 전용 영역일 수 있다.
한편, 본 개시의 예시적 실시예에 따른 통신 장치(10)에서, 통신 프로세서(100)는 어드레스 변환 회로(120)를 구비할 수 있다. 어드레스 변환 회로(120)는 하드웨어로 구현되거나, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 어드레스 변환 회로(120)는 네트워크를 통해 송수신되는 데이터의 네트워크 어드레스 변환이 필요한지 여부를 판단하고, 네트워크 어드레스 변환이 필요하다고 판단되면, 네트워크 어드레스 변환 기술을 기초로, 네트워크 어드레스를 변환할 수 있다.
데이터는 IP 패킷(Internet Protocol packet) 형태로 송수신될 수 있으며, 어드레스 변환 회로(120)는 IP 패킷의 네트워크 어드레스를 변환할 수 있다. 어드레스 변환 회로(120)는 네트워크를 통해 수신되는 IP 패킷의 목적지 어드레스(destination address)를 응용 프로그램(202)의 어드레스 체계에 적합한 어드레스로 변환하거나, 또는 네트워크를 통해 송신될 IP 패킷의 소스 어드레스(source address)를 네트워크의 어드레스 체계에 적합한 어드레스로 변환할 수 있다.
실시예에 있어서, 어드레스 변환 회로(120)는 네트워크 어드레스 변환 기술인 CLAT(Customer-Side Translator) 및 NAT(Network Address Translation)를 모두 지원할 수 있다. CLAT는 통신 장치(10)가 특정 인터넷 프로토콜(예컨대 IPv6 또는 IPv4) 기반의 네트워크를 통해 다른 통신 장치들과 자유롭게 통신할 수 있도록 IP 패킷의 IPv4 헤더를 IPv6 헤더로 변환하거나 또는 IPv6 헤더를 IPv4 헤더로 변환하는 IP 헤더 포맷 변환 기술이고, NAT는 내부 또는 사설 IP 어드레스를 글로벌 또는 공인 IP 어드레스로 변환하거나 또는 그 반대로 변환하는 IP 어드레스 변환 기술이다. NAT에 따라 소스 어드레스 또는 목적지 어드레스의 IP 어드레스 값 및 포트 번호가 변경될 수 있다.
어드레스 변환 회로(120)는 네트워크 어드레스, 예컨대 목적지 어드레스가 변환된 IP 패킷을 메모리(300)의 제2 영역(AR2)에 기입(또는 카피)할 수 있다. 어플리케이션 프로세서(200)는 메모리(300)의 제2 영역(AR2)을 엑세스하여, 변환된 네트워크 어드레스를 기초로 IP 패킷을 처리할 수 있다. 어플리케이션 프로세서(200)의 IP 패킷 처리과정에서, 메모리(300)의 제3 영역(AR3)에 IP 패킷이 카피될 수 있다.
또한, IP 패킷이 어플리케이션 프로세서(200)로부터 제공되는 경우, IP 패킷은 메모리(300)의 제2 영역(AR2)에 저장되고, 어드레스 변환 회로(120)는, 메모리(300)의 제2 영역(AR2)으로부터 IP 패킷을 독출하고, IP 패킷의 네트워크 어드레스를 변환할 수 있다. 네트워크 어드레스가 변환된 IP 패킷은 통신 프로세서의 전용 메모리, 예컨대, 메모리(300)의 제1 영역(AR1)에 저장될 수 잇다.
이와 같이 통신 프로세서(100)에서, IP 패킷을 어플리케이션 프로세서(200)에 전송할 때, 또는 통신 프로세서(100)가 어플리케이션 프로세서(200)로부터 IP 패킷을 수신할 때, 하드웨어 기반의 어드레스 변환 회로(120)가 네트워크 어드레스 변환을 수행하므로, 어플리케이션 프로세서(200)에서 네트워크 어드레스 변환을 위한 별도의 동작이 요구되지 않는다. 따라서, 어플리케이션 프로세서(200)의 부담이 감소될 수 있으며, IP 패킷이 메모리(300)에 기입(또는 카피) 및 독출되는 횟수가 감소될 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 동작을 설명하는 도면이다. 네트워크로부터 IP 패킷이 수신되는 경우, 즉 어드레스 변환 회로(120)가 수신 패스인 경우를 가정하여 설명하기로 한다.
도 2를 참조하면, 어드레스 변환 회로(120)는 제1 변환기(121), 제2 변환기(122) 및 로컬 메모리(123)를 포함할 수 있다.
네트워크를 통해 송수신되는 IP 패킷은 헤더 및 페이로드를 포함할 수 있다. 예컨대 제1 IP 패킷(PK0)은 제1 헤더(HD0) 및 제1 페이로드(PL0)를 포함할 수 있다. 헤더는 네트워크 어드레스(이하 IP 어드레스라고 함), 제어 정보 등을 포함하고, 페이로드는 데이터를 포함할 수 있다.
네트워크를 통해 수신되는 IP 패킷들(PK0 내지 PKN-1)은 제1 메모리(310)에 저장될 수 있다. 예컨대, 제1 메모리(310)는 도 1의 메모리(300)의 제1 영역(AR1), 즉 통신 프로세서(100)의 전용 영역일 수 있다.
제1 메모리(310)에 저장된 IP 패킷들(PK1 내지 PKN-1)의 헤더들(HDs)이 독출되고, 독출된 헤더들(HDs)이 로컬 메모리(123)에 저장될 수 있다. 실시예에 있어서, 어드레스 변환 회로(120)는 제1 메모리(310) 내에서 IP 패킷들(PK0 내지 PKN-1)이 저장된 위치를 나타내는 디스크립터 정보를 통해 헤더들(HDs)의 어드레스 및 길이 정보를 기초로, DMA(Direct Memory Access) 방식으로 제1 메모리(310)로부터 로컬 메모리(123)로 헤더들(HDs)을 불러올 수 있다.
로컬 메모리(123)는 SRAM, 레지스터 등으로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 로컬 메모리(123)는 다양한 종류의 메모리로 구현될 수 있다. 로컬 메모리(123)는 로컬 버퍼로 지칭될 수 있다. 도 2에서, 로컬 메모리(123)는 어드레스 변환 회로(120) 내에 구비되는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 로컬 메모리(123)는 통신 프로세서(도 1의 100)의 내장 메모리로서, 어드레스 변환 회로(120)와 별개로 구비되는 메모리일 수 있다.
제1 변환기(121) 및 제2 변환기(122)는 로컬 메모리(123)를 엑세스하고, 로컬 메모리(123)에 저장된 헤더들(HD0 내지 HDN-1)의 IP 어드레스를 변환할 수 있다. 제1 변환기(121)는 프리-프로세서로서 동작하고, 제2 변환기(122)는 포스트-프로세서로서 동작할 수 있다. 제1 변환기(121)가 제2 변환기(122)에 우선하여 동작하고, 제2 변환기(122)는 제1 변환기(121)의 동작이 완료된 후, 동작할 수 있다.
제1 변환기(121)는 IP 패킷의 헤더 포맷을 변경함으로써, IP 패킷의 IP 버전을 변경할 수 있다. 제1 변환기(121)는 로컬 메모리(123)로부터 헤더들(HD0 내지 HDN-1)을 독출(read)하고, 헤더들(HD0 내지 HDN-1) 각각에 대하여 IP 버전 변경이 필요한지 여부를 판단할 수 있다. IP 버전 변경이 필요한 경우, 제1 변환기(121)는 헤더의 포맷을 다른 IP 버전에 따른 포맷으로 변환함으로써, IP 버전을 다른 IP 버전으로 변경할 수 있다. 헤더는 다양한 필드들을 포함할 수 있으며, 헤더 포맷이 변경될 때, 제1 변환기(121)는 헤더의 필드들 중 적어도 일부를 변경할 수 있다.
실시예에 있어서, 제1 변환기(121)는 CLAT 기능을 지원하며, IP 패킷의 헤더에 포함되는 IPv4(Internet Protocol version 4) 헤더 포맷을 IPv6(Internet Protocol version 6) 헤더 포맷으로 변환하거나, 또는 IPv6 헤더 포맷을 IPv4 헤더 포맷으로 변환할 수 있다. 변경된 헤더들은 로컬 메모리(123)에 다시 저장될 수 있다. 예를 들어, 네트워크는 IPv6 어드레스 체계를 지원하고, 네트워크를 통해 수신된 IP 패킷의 데이터를 이용하는 호스트, 예컨대 도 1의 응용 프로그램(202)이 IPv4의 어드레스 체계를 지원하는 경우, 제1 변환기(121)는 IP 패킷의 헤더에 구비되는 IPv6 어드레스를 IPv4 어드레스로 변환할 수 있다.
제2 변환기(122)는 IP 어드레스 변환을 수행할 수 있다. 제2 변환기(122)는 로컬 메모리(123)로부터 헤더들(HD0 내지 HDN-1)(또는 제1 변환기(121)에 의하여 변경된 헤더들)을 독출(read)하고, 헤더들(HD0 내지 HDN-1) 각각에 대하여 IP 어드레스 변환이 필요한지 여부를 판단할 수 있다. IP 어드레스 변환이 필요한 경우, 제2 변환기(122)는 IP 어드레스에서, 어드레스 값들, 예컨대 소스 어드레스 또는 종착지 어드레스를 나타내는 값들, 및 전송 프로토콜의 포트 번호, 예컨대 TCP(Transmission Control Protocol) 또는 UDP(user Datagram Protocol)의 포트 번호를 변경할 수 있다.
실시예에 있어서, 제2 변환기(122)는, NAT 기능을 지원하며, 공인 IP 어드레스를 사설 IP 어드레스로 변환하거나, 또는 사설 IP 어드레스를 공인 IP 어드레스로 변환할 수 있다. 예컨대, 통신 장치(10)가 테더링을 수행하거나, 라우터로서 동작할 경우, 제2 변환기(122)는 네트워크를 통해 수신된 IP 패킷의 공인 IP 어드레스를 사설 IP 어드레스로 변환할 수 있다. 변경된 헤더들은 로컬 메모리(123)에 다시 저장될 수 있다.
제1 변환기(121)의 IP 버전 변경 및/또는 제2 변환기(122)의 IP 어드레스 값 변경에 의하여 헤더들(HD0 내지 HDN-1)이 변경되고, 변경된 헤더들(예컨대 NHD0 내지 NHDN-1)(NHDs)은 제2 메모리(320)에 저장(또는 카피(copy))될 수 있다. 예컨대, 제2 메모리(320)는 도 1의 메모리(300)의 제2 영역(AR2), 즉 통신 프로세서(100) 및 어플리케이션 프로세서(200)의 공유 영역일 수 있다. 실시예에 있어서, 변경된 헤더들(NHDs)은 DMA 방식을 통해 로컬 메모리(123)로부터 독출되고, 제2 메모리(320)에 저장될 수 있다. 한편, IP 패킷들(PK0 내지 PKN-1)의 페이로드들(예컨대 PL0 내지 PLN-1)(PLs)은 DMA 방식을 통해 제1 메모리(310)로부터 독출되어, 제2 메모리(320)에 저장될 수 있다. 이에 따라서, I어드레스가 변환된 IP 패킷들(PK0a 내지 PKN-1a)이 제2 메모리(320)에 저장될 수 있다. 어플리케이션 프로세서(200)는 제2 메모리(320)를 엑세스하고, 어드레스 변환된 IP 패킷들(PK0a 내지 PKN-1a)을 처리할 수 있다.
한편, 본 실시예에서는, 어드레스 변환 회로(120)가 수신 패스인 경우를 가정하여 설명하였으나, 어드레스 변환 회로(120)가 송신 패스인 경우의 제1 변환기(121) 및 제2 변환기(122)의 동작은, 전술한 바와 같이 어드레스 변환 회로(120)가 수신 패스인 경우의 제1 변환기(121) 및 제2 변환기(122)의 동작과 유사하다. 다만, 송신 패스에서, 어플리케이션 프로세서(200)가 제2 메모리(320)에 저장한 IP 패킷들의 헤더들이 제2 메모리(320)로부터 독출되어 로컬 메모리(123)에 저장되고, 제1 변환기(121) 및 제2 변환기(122)는 헤더들에 각각 포함되는 IP 어드레스를 변경할 수 있다. 이때, 제2 변환기(122)가 프리-프로세서로서 동작하고, 제2 변환기(122)의 동작이 완료된 후, 제1 변환기(121)가 포스트-프로세서로서 동작할 수 있다. 어드레스 변환된 IP 패킷들이 제1 메모리(310)에 저장된 후, 네트워크를 통해 다른 장치들로 송신될 수 있다.
도 3은 IP 패킷의 구조를 개략적으로 나타내는 도면이다.
도 3을 참조하면, IP 패킷(PK)은 헤더(HD) 및 페이로드(PL)를 포함할 수 있다. 헤더(HD)는 IP 헤더(H1) 및 TCP 헤더(H2)(또는 UDP 헤더)를 포함할 수 있으며, 페이로드(PL)는 응용 프로그램에 제공되거나 또는 응용 프로그램에서 생성된 데이터(DT)를 포함할 수 있다. 도 2에서, 로컬 메모리(123)에는 IP 패킷(PK)의 IP 헤더(H1) 및 TCP 헤더(H2)가 저장될 수 있다. 제1 변환기(121)는 IP 버전을 변경하기 위해 IP 헤더(H1)를 변경할 수 있으며, 제2 변환기(122)가 IP 어드레스를 변환하기 위하여, IP 헤더(H1) 및 TCP 헤더(H2)를 변경할 수 있다.
도 4a 및 도 4b는 IP 패킷의 IP 헤더의 실시예들을 나타내는 도면이다. 도 4a는 IPv4 패킷의 헤더를 나타내고 도 4b는 IPv6 패킷의 기본 헤더를 나타낸다.
도 4a를 참조하면, IPv4 패킷의 헤더(H1_IPv4, 이하 IPv4 헤더라고 함)는 버전(version), IP 헤더 길이(IHL), 서비스 타입(ToS), 총길이(Total Length), 지시자(Identifier), 플래그(Flags), 플래그먼트 오프셋(Fragment Offset), 존재시간(Time to Live), 프로토콜(Protocol), 헤더 체크썸(Header Checksum), 소스 어드레스(Source Address), 목적지 어드레스(Destination Address), 옵션(Option), 패딩(Padding) 각각을 위한 필드로 구성된다. 소스 어드레스(Source Address) 및 목적지 어드레스(Destination Address)의 길이는 각각 32bit이고, 옵션(Option) 및 패딩(Padding)의 길이는 가변될 수 있다.
도 4b를 참조하면, IPv6 패킷의 기본 헤더(H1_IPv6, 이하 IPv6 헤더라고 함)는 버전(version), 트래픽 클래스(Traffic Class), 플로우 라벨(Flow Label), 페이로드 길이(Payload Length), 넥스트 헤더(Next Header), 홉 리밋(Hop Limit), 소스 어드레스(Source Address)와, 목적지 어드레스(Destination Address) 각각을 위한 필드들로 구성된다. 소스 어드레스(Source Address) 및 목적지 어드레스(Destination Address)의 길이는 각각 128bit이다.
도 4a 및 도 4b를 참조하면, IPv4 헤더(H1_IPv4)는 12개의 기본 필드를 포함하며, IPv6 헤더(H1_IPv6)는 8개의 기본 필드를 포함한다. 다만, IPv6 패킷은 기본 헤더, 즉 IPv6 헤더(H1_IPv6)외에 확장 헤더를 더 포함할 수 있다. IPv6 헤더(H1_IPv6)에서 넥스트 헤더 필드는 다음에 이어지는 헤더의 유형을 나타낸다. 넥스트 헤더에 표시될 수 있는 헤더는 IPv6의 확장 헤더일 수 있고, 상위 계층인 TCP(또는 UDP)의 헤더일 수 있다. 확장 헤더가 사용되지 않을 경우, 넥스트 헤더에 TCP(또는 UDP)의 헤더가 위치할 수 있다.
IPv4 헤더(H1_IPv4) 및 IPv6 헤더(H1_IPv6)는 공통적으로 버전, 소스 어드레스(Source Address) 및 목적지 어드레스(Destination Address)를 위한 필드들을 포함할 수 있다. 다만, 전술한 바와 같이, IPv6 헤더(H1_IPv6)의 소스 어드레스(Source Address) 및 목적지 어드레스(Destination Address)의 길이는 각각 128bit로 IPv4 헤더(H1_IPv4)의 소스 어드레스(Source Address) 및 목적지 어드레스(Destination Address)의 길이인 32bit보다 4배 길다.
IPv4 헤더(H1_IPv4)를 IPv6 헤더(H1_IPv6)로 변환할 때, IPv4 헤더(H1_IPv4)에 구비되는 IP 헤더 길이(IHL), 지시자(Identifier), 플래그(flags), 플래그먼트 오프셋(Fragment Offset), 헤더 체크썸(Header Checksum), 옵션(Option), 및 패딩(Padding)을 위한 필드들은 삭제되며, 플로우 라벨(Flow Label)을 위한 필드가 추가될 수 있다. 반대로, IPv6 헤더(H1_IPv6)를 IPv4 헤더(H1_IPv4)로 변환할 때, 플로우 라벨(Flow Label)을 위한 필드가 삭제되고, IP 헤더 길이(IHL), 지시자(Identifier), 플래그(Flags), 플래그먼트 오프셋(Fragment Offset), 헤더 체크썸(Header Checksum), 옵션(Option), 및 패딩(Padding)을 위한 필드들이 추가될 수 있다. IPv4 헤더(H1_IPv4)의 서비스 타입(ToS), 총길이(Total Length), 프로토콜(Protocol), 존재시간(Time to Live)을 위한 필드들과 IPv6 헤더(H1_IPv6)의 트래픽 클래스(Traffic Class), 페이로드 길이(Payload Length), 넥스트 헤더(Next Header), 홉 리밋(Hop Limit)을 위한 필드들로 변환될 수 있다.
도 2를 참조하여 설명한 어드레스 변환 회로(120)의 제1 변환기(121)는 IPv4 헤더(H1_IPV4)를 IPv6 헤더(H1_IPV6)로 변환하거나 또는 IPv6 헤더(H1_IPV6) 헤더를 IPv4 헤더(H1_IPV4)로 변환할 수 있다.
도 5는 IP 패킷의 TCP 헤더를 나타내는 도면이다.
도 5를 참조하면, TCP 헤더(H2_TCP)는 소스 포트, 종착지 포트, 시퀀스 번호, 인정(Acknowledgement) 번호, 데이터 오프셋, 예약 필드(Reserved), 6bit의 플래그들, 윈도우 사이즈, TCP 체크썸, 긴급 위치, 옵션 및 패딩 각각을 위한 필드들을 포함할 수 있다. 전송 프로토콜 중 하나인 UDP 헤더는 도 5의 TCP 헤더(H2_TCP)와 유사하게 소스 포트, 종착지 포트, UDP 길이 UDP 체크썸 각각을 위한 필드를 포함할 수 있다.
도 2를 참조하여 설명한 어드레스 변환 회로(120)의 제2 변환기(122)는 도 4a 및 도 4b의 IP 헤더, 예컨대, IPv4 헤더(H1_IPv4) 또는 IPv6 헤더(H1_IPv6)에서, 소스 또는 종착지 어드레스 값, 및 TCP 헤더(H2_TCP)(또는 UDP 헤더)의 소스 또는 종착지 포트 번호를 변경함으로써, 사설 IP 어드레스를 공인 IP 어드레스로 변환하거나 또는 그 반대로 IP 어드레스를 변환할 수 있다.
도 6a는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 제1 변환기의 구현예를 나타내는 블록도이고, 도 6b는 도 6a의 제1 변환기의 동작 방법을 나타내는 흐름도이다. 제1 변환기(121)가 IPv6 헤더를 IPv4 헤더로 변환하는 경우를 예를 들어서 설명하기로 한다.
도 6a를 참조하면, 제1 변환기(121)는 제1 필터(11), IP 컨버터(12), 및 제1 IP 헤더 체크썸 계산기(13)를 포함할 수 있다. 실시예에 있어서, 제1 변환기(121)의 제1 필터(11), IP 컨버터(12), 및 IP 헤더 체크썸 계산기(13)는 하드웨어 로직으로 구현될 수 있다.
도 6a 및 도 6b를 참조하면, 제1 변환기(121)는 로컬 메모리(123)에 저장된 헤더(HD)를 독출할 수 있다(S110). 제1 변환기(121)는 헤더들(HD0 내지 HDN-1)을 순차적으로 독출할 수 있다. 도 3을 참조하여 설명한 바와 같이, 헤더(HD)는 IP 헤더(H1) 및 TCP 헤더(H2)를 포함할 수 있으며, S110 단계에서, 제1 변환기(121)는 로컬 메모리(123)으로부터 IP 헤더(H1)를 독출할 수 있다. 제1 변환기(121)는 독출된 헤더(HD)에 대하여 헤더 포맷 변환을 수행할 수 있다.
제1 필터(11)는 독출된 헤더(HD)를 분석하고, IP 버전 변환이 필요한지 여부를 판단할 수 있다(S120). 제1 필터(11)는 미리 설정된 필터 셋, 예컨대 미리 설정된 필드들을 기초로, 헤더(HD)의 IP 버전을 판단하고, 헤더(HD)의 헤더 포맷 변경이 필요한지 여부를 판단할 수 있다. 예컨대, 제1 필터(11)는 헤더(HD)의 버전 필드를 확인함으로써, 헤더(HD)가 IPv6 헤더임을 판단할 수 있다. 제1 필터(11)는 미리 설정된 다른 필드들, 예컨대, 트래픽 클래스, 종착지 어드레스 등을 기초로, IPv6 헤더를 IPv4 헤더로 변환해야 하는지 여부를 판단할 수 있다. 예컨대 제1 필터(11)는 종착지 어드레스를 기초로, IP 패킷이 IPv4를 지원하는 어플리케이션에 제공된다고 판단될 경우, 헤더 포맷의 변환이 필요하다고 판단할 수 있다.
IP 버전 변환이 필요하다고 판단되면, IP 컨버터(12)가 헤더(HD)의 IP 헤더 포맷을 변경할 수 있다(S130). IP 컨버터(12)는 IP 헤더 포맷 변경을 위하여 변경이 필요한 필드들을 선택하고, 선택된 필드들을 변경할 수 있다. IP 컨버터(12)는 SSIT (Stateless IP/ICMP Translation), NAT-PT (Network Address Translation-Protocol Translation), 및 BIS(Bump In the Stack) 등의 방식에 기초하여 IP 헤더 포맷 변환을 수행할 수 있다.
이후, IP 헤더 체크썸 계산기(13)는 IP 헤더 체크썸을 업데이트할 수 있다(S140). S130 단계에서, IP 헤더 포맷이 변경된 바, 제1 IP 헤더 체크썸 계산기(13)는 포맷이 변경된 IP 헤더에 기초하여, IP 헤더 체크썸을 계산하고, 산출된 값을 기초로 IP 헤더 체크썸을 업데이트할 수 있다.
예컨대, IPv6 헤더가 IPv4 헤더로 변환될 경우, 제1 IP 헤더 체크썸 계산기(13)는 IP 헤더 체크썸을 산출하고, 산출된 값을 IPv4 헤더의 헤더 체크썸 필드에 제공할 수 있다. 이로써, IP 헤더 체크썸이 업데이트되고, IP 헤더 포맷 변환, 즉 IP 버전 변환이 완료될 수 있다.
제1 변환기(121)는 헤더 포맷이 변경된 헤더(NHD)를 로컬 메모리(123)에 저장할 수 있다(S150). 예컨대, 제1 변환기(121)는 IPv6 헤더에서 IPv4 헤더로 변경된 헤더(NHD)를 로컬 메모리(123)에 저장할 수 있다.
한편, S120 단계에서, IP 버전 변환이 필요하지 않다고 판단되면, 헤더(HD)에 대한 헤더 포맷 변환이 종료될 수 있다. 전술한 S110 단계 내지 S150 단계를 포함하는 헤더 포맷 변환은, 로컬 메모리(123)에 저장된 헤더들(HD0 내지 HDN-1)에 대하여 순차적으로 수행될 수 있다. 도 6a에서, 로컬 메모리(123)의 IPv6에 기초한 헤더들(HD0 내지 HDN-1)이 IPv4에 기초한 새로운 헤더들(HD0 내지 HDN-1)로 변환된 것으로 도시되었으나, 이에 제한되는 것은 아니며, 전술한 바와 같이 헤더들(HD0 내지 HDN-1)은 필요에 따라서 변환될 수 있으며, 헤더들(HD0 내지 HDN-1) 중 일부는 변환되지 않을 수 있다.
로컬 메모리(123)에 저장된 변환된 헤더들(HD0 내지 HDN-1)은 DMA 방식으로 제1 메모리(도 2의 310) 또는 제2 메모리(도 2의 320)에 카피되거나, 또는 제2 변환기(도 2의 122)에 의하여 IP 어드레스 변환이 수행될 수 있다.
도 7a는 본 개시의 예시적 실시예에 따른 어드레스 변환 회로의 제2 변환기의 구현예를 나타내는 블록도이고, 도 7b는 도 7a의 제2 변환기의 동작 방법을 나타내는 흐름도이다.
도 7a를 참조하면, 제2 변환기(122)는 제2 필터(21), 어드레스 변환기(22), IP 헤더 체크썸 계산기(23) 및 TCP 헤더 체크썸 계산기(24)를 포함할 수 있다. 제2 필터(21), 어드레스 변환기(22), IP 헤더 체크썸 계산기(23) 및 TCP 헤더 체크썸 계산기(24)는 하드웨어 로직으로 구현될 수 있다. 실시예에 있어서, IP 헤더 체크썸 계산기(23) 및 TCP 헤더 체크썸 계산기(24)는 하나의 헤더 체크썸 계산 회로로 구현될 수 있다.
도 7a 및 도 7b를 참조하면, 제2 변환기(122)는 로컬 메모리(123)에 저장된 헤더(HD)를 독출할 수 있다(S210). 제2 변환기(122)는 헤더들(HD0 내지 HDN-1)을 순차적으로 독출할 수 있다. 도 3을 참조하여 설명한 바와 같이, 헤더(HD)는 IP 헤더(H1) 및 TCP 헤더(H2)를 포함할 수 있으며, S210 단계에서, 제2 변환기(122)는 로컬 메모리(123)으로부터 IP 헤더(H1) 및 TCP 헤더(H2)를 독출할 수 있다.
제2 변환기(122)는 후술되는 단계들을 수행함으로써, 독출된 헤더(HD)에 포함된 IP 어드레스를 변환할 수 있다. 제2 변환기(122)는 네트워크를 통해 수신되는 IP 패킷의 공인 IP 어드레스를 사설 IP 어드레스로 변환하거나, 또는 네트워크를 통해 송신될 IP 패킷(즉, AP로부터 제공되는 IP 패킷)의 사설 IP 어드레스를 네트워크에서 사용되는 공인 IP 어드레스로 변환할 수 있다.
제2 필터(21)는 독출된 헤더(HD)를 분석하고, IP 어드레스 변환, 구체적으로 어드레스 값의 변환이 필요한지 판단할 수 있다(S220). 제2 필터(21)는 미리 설정된 필터 셋을 기초로 헤더(HD)를 필터링 함으로써, IP 어드레스 변환이 필요한지 판단할 수 있다. 실시예에 있어서, IP 어드레스의 소스 어드레스 또는 목적지 어드레스가 필터 셋에 포함될 수 있다. 예를 들어, 제2 필터(21)는 네트워크를 통해 송신될 IP 패킷의 소스 어드레스가, 네트워크에서 이용되는 공인 IP 어드레스 영역에 포함되지 않는 경우, IP 어드레스 변환이 필요하다고 판단할 수 있다. 다른 예로서, 제2 필터(21)는 네트워크를 통해 수신된 IP 패킷의 목적지 어드레스가 도 1의 통신 장치(10)에서 제공하는 로컬 IP 어드레스 영역에 포함되지 않는 경우, IP 어드레스 변환이 필요하다고 판단할 수 있다.
IP 어드레스 변환이 필요하다고 판단되면, 어드레스 변환기(22)는 헤더(HD)에 포함된 어드레스 값 및 포트 번호를 변경할 수 있다(S230). 도 4a 내지 도 5를 참조하여 설명한 바와 같이, 어드레스 값은 IP 헤더, 예컨대 도 4a의 IPv4 헤더(H1_IPv4) 또는 도 4b의 IPv6 헤더(H1_IPv6)의 소스 어드레스 또는 목적지 어드레스를 위한 필드들에 포함될 수 있고, 포트 번호는 TCP 헤더(또는 UDP 헤더), 예컨대 도 5의 TCP 헤더(H2_TCP)의 소스 포트 또는 목적지 포트를 위한 필드들에 포함될 수 있다. 어드레스 변환기(22)는 소스 어드레스 값 및 소스 포트 번호를 변경하거나 또는 목적지 어드레스 값 및 목적지 포트 번호를 변경할 수 있다. 이로써, 어드레스 변환기(22)는 공인 IP 어드레스를 사설 IP 어드레스로 변환하거나 또는 사설 IP 어드레스를 공인 IP 어드레스로 변환할 수 있다. 어드레스 변환기(22)는 IP 어드레스와 변환된 IP 어드레스, 즉, 사설 IP 어드레스와 공인 IP 어드레스의 관계를 변환 테이블에 저장할 수 있다.
도 8은 변환 테이블을 나타내는 도면이다.
도 8을 참조하면, 변환 테이블(TT)은 서로 대응하는 공인 IP 어드레스(PUA) 및 사설 IP 어드레스(PRA)를 포함할 수 있다. 예컨대, 어드레스 값 '10.0.0.2' 및 포트 번호 '3327'을 갖는 사설 IP 어드레스(PRA)는 어드레스 값 '135.26.32.7' 및 포트 번호 '5003'을 갖는 공인 IP 어드레스(PUA)에 대응하며, 어드레스 값 '10.0.0.3' 및 포트 번호 '3327'을 갖는 사설 IP 어드레스(PRA)는 어드레스 값 '135.26.32.7' 및 포트 번호 '5002'를 갖는 공인 IP 어드레스(PUA)에 대응할 수 있다. 어드레스 변환기(22)는 IP 어드레스 변환 수행 과정에서, 변환 테이블(TT)을 생성 및 이용할 수 있다.
계속하여, 도 7a 및 도 7b를 참조하면, IP 헤더 체크썸 계산기(23)는 IP 헤더 체크썸을 업데이트하고, TCP 헤더 체크썸 계산기(24)는 TCP 헤더 체크썸(또는 UDP 헤더 체크썸)을 업데이트할 수 있다(S240). 다만 헤더(HD)가 IPv6 헤더일 경우, IP 헤더 체크썸 업데이트는 수행되지 않을 수 있다.
S230 단계에서, 어드레스 값이 변경된 바, IP 헤더 체크썸 계산기(23)는 변경된 어드레스 값을 포함하는 IP 헤더에 기초하여, IP 헤더 체크썸을 계산하고, 산출된 값을 기초로 IP 헤더 체크썸을 업데이트할 수 있다. 또한, S230 단계에서, 포트 번호가 변경된 바, TCP 헤더 체크썸 계산기(24)는 변경된 포트 번호를 포함하는 TCP 헤더에 기초하여, TCP 헤더 체크썸을 계산하고, 산출된 값을 기초로 TCP 헤더 체크썸을 업데이트할 수 있다. 이로써, IP 변환이 완료될 수 있다.
제2 변환기(122)는 IP 어드레스 값이 변경된 헤더(NHD)를 로컬 메모리(123)에 저장할 수 있다(S250). 예컨대, 제2 변환기(122)는 공인 IP 어드레스에서 사설 IP 어드레스로 변경된 헤더(NHD) 또는 그 반대로 변경된 헤더(NHD)를 로컬 메모리(123)에 다시 저장할 수 있다.
한편, S220 단계에서, IP 어드레스 변환이 필요하지 않다고 판단되면, 헤더(HD)에 대한 IP 어드레스 변환이 종료될 수 있다. 전술한 S210 단계 내지 S250 단계를 포함하는 IP 어드레스 변환, 즉 헤더 변환은, 로컬 메모리(123)에 저장된 헤더들(HD0 내지 HDN-1)에 대하여 순차적으로 수행될 수 있다. 도 7a에서, 로컬 메모리(123)의 헤더들(HD0 내지 HDN-1)이 IP 어드레스 변환된 새로운 헤더들(HD0 내지 HDN-1)로 변환된 것으로 도시되었으나, 이에 제한되는 것은 아니며, 전술한 바와 같이 헤더들(HD0 내지 HDN-1)은 필요에 따라서 변환될 수 있으며, 헤더들(HD0 내지 HDN-1) 중 일부는 변환되지 않을 수 있다.
로컬 메모리(123)에 저장된 변환된 헤더들(HD0 내지 HDN-1)은 DMA 방식으로 제1 메모리(도 2의 310) 또는 제2 메모리(도 2의 320)에 저장되거나, 또는 제1 변환기(도 1의 121)에 의하여 헤더 포맷 변환이 수행될 수 있다.
도 9a 및 도 9b는 본 개시의 예시적 실시예에 따른 제2 변환기의 IP 어드레스 변환 방법을 예시적으로 설명하는 도면이다. 도 9a는 송신 패스에서, 사설 IP 어드레스를 공인 IP 어드레스로 변환하는 것을 나타내며, 도 9b는 수신 패스에서, 수신된 공인 IP 어드레스를 사설 IP 어드레스로 변환하는 것을 나타낸다.
도 9a를 참조하면, 호스트로부터 수신된 IP 패킷의 소스 IP 어드레스(S)는 어드레스 값 '10.0.0.2' 및 포트 번호 '3327'을 갖는 사설 IP 어드레스이고, 목적지 IP 어드레스(D)는 어드레스 값 '128.119.40.186' 및 포트 번호 '80'을 갖는 공인 IP 어드레스일 수 있다. 제2 변환기(122), 구체적으로 제2 변환기(122)의 어드레스 변환기(도 7a의 22)는 소스 IP 어드레스(S)가 네트워크에서 제공하는 공인 IP 어드레스 영역에 해당하지 않는 경우 소스 IP 어드레스(S)를 공인 IP 어드레스로 변환하는 IP 어드레스 변환을 수행할 수 있다.
제2 변환기(122)는 소스 IP 어드레스(S)의 어드레스 값 '10.0.0.2' 및 포트 번호 '3327'를 어드레스 값 '135.26.32.7' 및 포트 번호 '5003'으로 각각 변경함으로써, 소스 IP 어드레스(S)를 공인 IP 어드레스로 변환할 수 있다. 사설 IP 어드레스 및 이에 대응하는 공인 IP 어드레스는 변환 테이블(TT)에 저장될 수 있다. 변환된 소스 IP 어드레스(S') 및 목적지 IP 어드레스(D)를 갖는 IP 패킷은 네트워크를 통해 목적지, 예컨대 서버 또는 다른 전자 장치로 전송될 수 있다.
도 9b를 참조하면 네트워크로부터 수신된 IP 패킷의 소스 IP 어드레스(S)는 어드레스 값 '128.119.40.186' 및 포트 번호 '80'을 갖는 공인 IP 어드레스이고, 목적지 IP 어드레스(D)는 어드레스 값 '135.26.32.7' 및 포트 번호 '5003'를 갖는 공인 IP 어드레스일 수 있다. 목적지 IP 어드레스(D)가 로컬 네트워크에서 제공하는 사설 IP 어드레스 영역에 해당하지 않는 경우, 제2 변환기(122)는 공인 IP 어드레스를 사설 IP 어드레스로 변환하는 IP 어드레스 변환을 수행할 수 있다.
제2 변환기(122)는 변환 테이블(TT)을 참조하여, 목적지 IP 어드레스(D)의 어드레스 값 '135.26.32.7' 및 포트 번호 '5003'을 어드레스 값 '10.0.0.2' 및 포트 번호 '3327'로 변경함으로써, 목적지 IP 어드레스(D)를 소스 IP 어드레스로 변환할 수 있다. 변환된 목적지 IP 어드레스(D') 및 소스 IP 어드레스(S)를 갖는 IP 패킷은 호스트로 전송될 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 어드레스 변환 회로를 나타내는 블록도이다.
도 10을 참조하면, 어드레스 변환 회로(120a)는 로컬 메모리(123), 제1 변환기(121a), 제2 변환기(122a) 및 헤더 체크썸 계산기(123a)를 포함할 수 있다.
제1 변환기(121a)는 제1 필터(11) 및 IP 컨버터(12)를 포함할 수 있다. 제1 변환기(121a)의 제1 필터(11) 및 IP 컨버터(12)의 동작은 도 6a의 제1 필터(11) 및 IP 컨버터(12)의 동작과 동일하다. 또한, 제2 변환기(122a)는 제2 필터(21) 및 어드레스 변환기(22)를 포함할 수 있다. 제2 변환기(122a)의 제2 필터(21) 및 어드레스 변환기(22)의 동작은 도 7a의 제2 필터(21) 및 어드레스 변환기(22)의 동작과 동일하다.
헤더 체크썸 계산기(123a)는 제1 변환기(121a)가 IP 헤더의 포맷을 변환할 때 및 제2 변환기(122a)가 IP 어드레스를 변환할 때 헤더 체크썸을 업데이트할 수 있다.
헤더 체크썸 계산기(123a)는 IP 헤더 체크썸 계산기(31) 및 TCP 헤더 체크썸 계산기(32)를 포함할 수 있다. 제1 변환기(121a)가 IP 헤더의 포맷을 변환할 때, IP 헤더 체크썸 계산기(31)는 변환된 포맷의 IP 헤더를 기초로 IP 헤더 체크썸을 계산하고, TCP 헤더 체크썸을 업데이트할 수 있다.
또한, 제2 변환기(122a)가 IP 어드레스를 변환할 때, IP 헤더 체크썸 계산기(31)는 변경된 어드레스 값을 포함하는 IP 헤더에 기초하여, IP 헤더 체크썸을 업데이트하고, TCP 헤더 체크썸 계산기(32)는 변경된 포트 번호를 포함하는 TCP 헤더에 기초하여 TCP 헤더 체크썸을 계산하고, TCP 헤더 체크썸을 업데이트할 수 있다.
본 실시예에서, 어드레스 변환 회로(120a)의 제1 변환기(121a) 및 제2 변환기(122a)가 각각 헤더 체크썸 계산기를 구비하는 것이 아니라, 별도의 헤더 체크썸 계산기(123a)가, 제1 변환기(121a)의 헤더 포맷 변환 시 및 제2 변환기(122a)의 IP 어드레스 변환 시에 헤더 체크썸을 산출할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 통신 프로세서를 나타내는 블록도이다.
도 11을 참조하면, 통신 프로세서(100a)는 프로세서(110), RAM(130), 모뎀(150), 어드레스 변환 회로(120), DMA 컨트롤러(140), 및 메모리 인터페이스(160)를 포함할 수 있다. 통신 프로세서(100a)는 이 외에도 다른 구성들을 더 포함할 수 있다. 실시예에 있어서, 통신 프로세서(100a)는 단일 칩셋으로 구현될 수 있다. 통신 프로세서(100a)의 구성들은 버스(170)를 통해서 데이터를 송수신할 수 있다.
프로세서(110)는 통신 프로세서(100a)의 전반적인 동작을 제어할 수 있으며, 중앙 처리 유닛(CPU), 마이크로 프로세서, 디지털 신호 프로세서 등으로 구현될 수 있다. 일 실시예에서, 프로세서(110)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드 코어(quad) 프로세서로 구현될 수 있다.
RAM(130)은 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, RAM(130)에는 통신 프로세서(100a)를 제어하기 위한 소프트웨어, 펌웨어가 로딩될 수 있다. RAM(130)은 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, MRAM, FeRAM, ReRAM과 같은 저항형 메모리로 구현될 수 있다.
모뎀(150)은 IP 패킷을 네트워크를 통해 전송하기 적합한 신호로 변환하거나, 네트워크를 통해 수신된 신호를 IP 패킷으로 변환할 수 있다. 모뎀(150)은 IP 패킷을 인코딩 및 변조함으로써, IP 패킷을 송신 신호로 변환할 수 있다. 또한, 모뎀(150)은 네트워크를 통해 수신되는 수신 신호를 복조 및 디코딩함으로써, 수신 신호를 IP 패킷으로 변환할 수 있다. 모뎀(150)은 신호를 증폭하거나 필터링하고, 신호의 주파수를 변환하는 RF 칩과 통신할 수 있다. RF 칩이 안테나를 통해 송신 신호를 네트워크로 전송하거나 네트워크로부터 수신 신호를 수신할 수 있다.
메모리 인터페이스(160)는 프로세서(110) 또는 DMA 컨트롤러(140)의 제어 하에, 메모리(300)에 데이터를 전송하거나 또는 메모리(300)로부터 데이터를 독출할 수 있다.
메모리(300)는 통신 프로세서(100a)(예컨대 통신 칩)과 별도의 장치(예컨대 메모리 칩 또는 메모리 모듈)로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시예에 있어서, 메모리(300)는 통신 프로세서(100a)의 내장 메모리일 수 있다. 모뎀(150)을 통해서 수신되거나 또는 송신될 IP 패킷은 메모리(300)에 저장될 수 있다. 실시예에 있어서, 통신 프로세서(100a) 및 어플리케이션 프로세서(도 1의 200)가 메모리(300)를 엑세스할수 있으며, 메모리(300)는 통신 프로세서(100a) 전용 영역, 공유 영역, 및 어플리케이션 프로세서 전용 영역을 구비할 수 있다.
DMA 컨트롤러(140)는 통신 프로세서(100a)의 구성들 간의 데이터 전송을 지원하며, 데이터의 전송이 프로세서(110)의 개입 없이 구성들 간에 직접 이루어질 수 있도록 제어할 수 있다. 실시예에 있어서, DMA 컨트롤러(140)는 메모리(300)에 저장된 IP 패킷의 헤더를 어드레스 변환 회로(120)로 전송하거나 또는 어드레스 변환 회로(120)에서 변환된 헤더를 메모리(300)로 전송할 수 있다. 또한, DMA 컨트롤러(140)는 메모리(300)의 복수의 영역들, 예컨대, 통신 프로세서(100a) 전용 영역, 공유 영역, 및 어플리케이션 프로세서 전용 영역 간에, IP 패킷의 페이로드를 전송할 수 있다.
어드레스 변환 회로(120)는 네트워크를 통해 송수신되는 IP 패킷의 네트워크 어드레스를 변환할 수 있다. 도 2 및 도 10을 참조하여 설명한 어드레스 변환 회로(120, 120a)가 통신 프로세서(100a)에 적용될 수 있다.
어드레스 변환 회로(120)는 DMA 컨트롤러(140)의 제어 하에, 메모리(300)에 저장된 IP 패킷들의 헤더들을 수신하고, 헤더들에 포함된 네트워크 어드레스를 변환할 수 있다. 어드레스 변환 회로(120)는 헤더의 포맷(즉, IP 버전)을 변환하거나 또는 IP 어드레스 변환을 수행할 수 있다.
어드레스 변환 회로(120)가 수신 패스로서 동작할 때, 어드레스 변환 회로(120)는 헤더의 포맷을 변환 후, IP 어드레스 변환을 수행할 수 있다. 어드레스 변환 회로(120)가 송신 패스로서 동작할 때, 어드레스 변환 회로(120)는 IP 어드레스 변환을 수행한 후 헤더의 포맷 변환을 수행할 수 있다. 어드레스 변환 회로(120)는 DMA 컨트롤러(140)의 제어 하에, 변환된 헤더들을 메모리(300)의 공유 영역(또는 어플리케이션 프로세서와 공유하는 메모리)에 저장하거나, 통신 프로세서(100a) 전용 영역에 저장할 수 있다. 예컨대, 어드레스 변환 회로(120)가 수신 패스로서 동작할 때, 변환된 헤더들을 어플리케이션 프로세서가 이용할 수 있도록 메모리(300)의 공유 영역에 저장하고, 어드레스 변환 회로(120)가 송신 패스로서 동작할 때, 어플리케이션 프로세서로부터 제공되고, 변환된 헤더들을 포함하는 IP 패킷들이 모뎀(150)을 통해서 네트워크로 송신될 수 있도록 변환된 헤더들을 메모리(300)의 통신 프로세서(100a) 전용 영역에 저장할 수 있다.
전술한 바와 같이, 통신 프로세서(100a)의 어드레스 변환 회로(120)는 네트워크로부터 수신된 IP 패킷이 어플리케이션 프로세서(도 1의 200)에 제공되기 전에 IP 패킷의 네트워크 어드레스를 변환하거나, 또는 어플리케이션 프로세서(200)로부터 제공되는 IP 패킷이 네트워크로 송신되기 전에 IP 패킷의 네트워크 어드레스를 변환할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 통신 장치를 나타내는 블록도이다.
도 12를 참조하면, 통신 장치(10a)는 네트워크(20)(글로벌 네트워크)를 통해 전자 장치(30) 또는 서버(40)와 데이터, 예컨대 IP 패킷을 송수신할 수 있다. 통신 장치(10a)는 또한, 라우터로서 동작할 수 있으며, 네트워크(20)를 통해 수신된 IP 패킷을 로컬 네트워크를 통해 다른 전자 장치(50)에 전송하거나, 또는 다른 전자 장치(50)로부터 수신된 IP 패킷을 네트워크(20)를 통해 전자 장치(30) 또는 서버(40)에 전송할 수 있다.
통신 프로세서(100), 어플리케이션 프로세서(200), 메모리(300), 입출력 장치(400), 및 DMA 컨트롤러(500)를 포함할 수 있다. 통신 장치(10a)는 이 외에도 다른 구성들을 더 포함 수 있다. 통신 장치(10a)의 구성들은 버스(600)를 통해서 서로 데이터를 송수신할 수 있다.
입출력 장치(400)는 사용자 인터페이스를 제공하며, 터치패드, 키패드, 입력 버튼 등과 같은 입력 수단 및 디스플레이, 스피커 등과 같은 출력 수단을 포함할 수 있다.
DMA 컨트롤러(500)는 통신 장치(10a)의 구성들 간의 데이터 전송을 지원하며, 데이터의 전송이 어플리케이션 프로세서(200)의 개입 없이 구성들 간에 직접 이루어질 수 있도록 제어할 수 있다. 실시예에 있어서, DMA 컨트롤러(500)는 통신 프로세서(100), 어플리케이션 프로세서(200) 및 메모리(300) 간에 IP 패킷을 전송하도록 제어할 수 있다. 또한, DMA 컨트롤러(500)는 메모리(300)에 저장된 IP 패킷의 헤더를 통신 프로세서(100)의 어드레스 변환 회로(120)에 전송하거나, 어드레스 변환 회로(120)에서 변환된 헤더를 메모리(300)에 전송할 수 있다. 실시예에 있어서, 통신 프로세서(100) 및 어플리케이션 프로세서(200) 각각이 DMA 컨트롤러를 구비할 수도 있다.
변환된 네트워크 어드레스를 포함하는 IP 패킷을 네트워크(20)를 통해 수신된 IP 패킷의 네트워크 어드레스를 변환할 수 있으며, 변환된 네트워크 어드레스를 포함하는 IP 패킷을 메모리(300)에 저장할 수 있다. 통신 프로세서(100)는 IP 패킷의 네트워크 어드레스를 어플리케이션 프로세서(200)의 응용 프로그램(202) 또는 다른 전자 장치(50)가 인식 가능한 어드레스 체계에 부합하도록 변환할 수 있다. 어플리케이션 프로세서(200)는 메모리(300)로부터 변환된 네트워크 어드레스를 포함하는 IP 패킷을 독출하고, 응용 프로그램(202)이 IP 패킷을 처리할 수 있다. 또는 다른 전자 장치(50)가 로컬 네트워크(60)를 통해 변환된 네트워크 어드레스를 포함하는 IP 패킷을 처리할 수 있다.
통신 프로세서(100)는 또한, 어플리케이션 프로세서(200) 또는 다른 전자 장치(50)로부터 제공되는 IP 패킷의 네트워크 어드레스를 네트워크(20)의 어드레스 체계에 부합하도록 변환하고, 변환된 네트워크 어드레스를 포함하는 IP 패킷을 네트워크(20)로 전송될 수 있다.
본 개시의 예시적 실시예에 따른 통신 장치(10a)에서, 통신 프로세서(100)가 네트워크 어드레스를 변환을 수행함으로써, 어플리케이션 프로세서(200)가 별도로 네트워크 어드레스 변환을 수행할 것이 요구되지 않는다. 따라서, 어플리케이션 프로세서(200)의 로드가 감소되고, 통신 장치(10a)의 성능이 향상될 수 있다.
도 13a는 본 개시의 예시적 실시예들에 따른 통신 장치에서 IP 패킷의 이동을 나타내는 도면이고, 도 13b는 비교예에 따른 통신 장치에서 IP 패킷의 이동을 나타내는 도면이다. 도 13a 및 도 13b는 네트워크로부터 수신되는 IP 패킷의 하드웨어 영역(예컨대, 통신 프로세서(CP)) 및 소프트웨어 영역(예컨대 어플리케이션 프로세서(AP)) 에서의 이동을 나타낸다.
도 13a를 참조하면, 네트워크를 통해 IP 패킷이 수신되며(S11), 수신되는 IP 패킷들(PK0 내지 PKN-1)은 하드웨어 영역의 제1 메모리(310)에 저장될 수 있다.
어드레스 변환 회로(120)는 IP 패킷들의 네트워크 어드레스를 변환할 수 있다(S12). 도 2 내지 도 9b를 참조하여 설명한 바와 같이, 어드레스 변환 회로(120)는 IP 패킷들의 헤더들을 수신하고, 헤더 포맷을 변환하거나 IP 어드레스를 변환할 수 있다. 어드레스 변환 회로(120)는 IP 패킷들, 예컨대 변환된 네트워크 어드레스를 포함하는 IP 패킷들(NPK0 내지 NPKN-1)을 제2 메모리(320), 예컨대 공유 메모리에 카피(저장)할 수 있다(S13).
이후, IP 패킷들(NPK0 내지 NPKN-1)은 소프트웨어 영역에서 처리될 수 있다. 드라이버(203)는 제2 메모리(320)에 저장된 IP 패킷들(NPK0 내지 NPKN-1)을 소켓 버퍼에 카피할 수 있다(S14). 예컨대 소켓 버퍼는 어플리케이션 프로세서(AP) 전용의 제3 메모리(330)의 일부일 수 있다.
응용 프로그램(202)은 소켓 버퍼로부터 IP 패킷들(NPK0 내지 NPKN-1)을 독출할 수 있다(S15).
도 13b를 참조하면, 네트워크를 통해 IP 패킷이 수신되며(S21), 수신되는 IP 패킷들(PK0 내지 PKN-1)은 하드웨어 영역의 제1 메모리(310a)에 저장될 수 있다. IP 패킷들(PK0 내지 PKN-1)은 제2 메모리(320a), 예컨대 공유 메모리에 카피될 수 있다(S22).
이후, IP 패킷들(PK0 내지 PKN-1)은 소프트웨어 영역에서 처리될 수 있다. 드라이버(203a)는 제2 메모리(320a)에 저장된 IP 패킷들(PK0 내지 PKN-1)을 소켓 버퍼에 카피할 수 있다(S23). 예컨대 소켓 버퍼는 어플리케이션 프로세서(AP) 전용의 제3 메모리(330a)의 일부일 수 있다. 한편, IP 패킷들(PK0 내지 PKN-1)의 어드레스 체계는 IP 패킷들(PK0 내지 PKN-1)을 처리하는 응용 프로그램(202a)의 어드레스 체계에 부합하지 않을 수 있다. 따라서, 헤더 변환기(204a)(예컨대 daemon 프로그램)는 소켓 버퍼로부터 IP 패킷들(PK0 내지 PKN-1)을 독출하고, IP 패킷들(PK0 내지 PKN-1)의 네트워크 어드레스를 변환할 수 있다(S25). 헤더 변환기(204a) 또는 드라이버(203a)는 네트워크 어드레스가 변환된 IP 패킷들(NPK0 내지 NPKN-1)을 소켓 버퍼에 다시 카피할 수 있다(S26). 이후, 응용 프로그램(202a)은 소켓 버퍼로부터 IP 패킷들(NPK0 내지 NPKN-1)을 독출할 수 있다(S27).
도 13a의 본 개시의 예시적 실시예들에 따른 통신 장치에서 IP 패킷의 이동과 도 13b의 비교예에 따른 통신 장치에서 IP 패킷의 이동을 비교하면, 본 개시의 예시적 실시예들에 따른 통신 장치에서는 하드웨어 기반의 어드레스 변환 회로(120)가 미리 네트워크 어드레스 변환을 수행함으로써, 어플리케이션 프로세서(AP)가 어드레스 변환을 수행할 필요가 없다 따라서, 어플리케이션 프로세서(AP)의 로드가 감소할 수 있다. 또한, IP 패킷들이 메모리에 카피되는 횟수가 감소될 수 있어, IP 패킷들의 처리 속도가 향상될 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 어플리케이션 프로세서를 나타내는 블록도이다. 도 14의 어플리케이션 프로세서(200a)는 그 내부에 모뎀의 기능이 통합됨에 따라 ModAP으로 지칭될 수 있다.
도 14를 참조하면, 어플리케이션 프로세서(200a)는 시스템 온 칩(SoC)으로 구현될 수 있으며, CPU(Central processing unit, 210), RAM(220), DMA 컨트롤러(230), 모뎀(240), 어드레스 변환 회로(250), 메모리 컨트롤러(260)를 포함할 수 있다. 어플리케이션 프로세서(200a)는 이 외에도, 다른 구성들, 예컨대 파워 관리 유닛, 디스플레이 컨트롤러, 센서 등을 더 포함할 수 있다. 시스템 온 칩(SoC)의 구성들은 버스(270)를 통해 데이터를 송수신할 수 있다.
CPU(210)는 어플리케이션 프로세서(200a)의 동작을 전반적으로 제어할 수 있다. CPU(210)는 RAM(220)(또는 ROM)에 저장된 프로그램 및/또는 데이터를 처리 또는 실행함으로써, 어플리케이션 프로세서(200a)의 구성들의 동작을 제어할 수 있다. 실시예에 있어서, CPU(210)는 멀티-코어로 구현될 수 있다. 멀티-코어는 두 개 또는 그 이상의 독립적인 코어들(cores)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이다.
RAM(220)은 프로그램들(예컨대, 동작 시스템, 응용 프로그램들), 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(300)에 저장된 프로그램들 및/또는 데이터는 CPU(210)의 제어 또는 부팅 코드(booting code)에 따라 RAM(220)에 일시적으로 저장될 수 있다. RAM(220)은 DRAM 또는 SRAM으로 구현될 수 있다.
DMA 컨트롤러(230)는 어플리케이션 프로세서(200a)의 구성들 간의 데이터 전송을 지원하며, 데이터의 전송이 CPU(210)의 개입 없이 구성들 간에 직접 이루어질 수 있도록 제어할 수 있다.
모뎀(240)은 무선 통신을 위하여, 전송하고자 하는 데이터를 무선 환경에 적합하게 변조하고, 수신되는 데이터를 복구할 수 있다. 모뎀(240)은 RF 칩(245)과 디지털 통신을 수행할 수 있다.
RF 칩(245)은 안테나를 통해 수신된 고주파수(high frequency) 신호를 저주파수(low frequency) 신호로 변환하고, 변환된 저주파수 신호를 모뎀(240)에 전송할 수 있다. 또한, RF 칩(245)은 모뎀(240)으로부터 수신된 저주파수 신호를 고주파수 신호로 변환하고, 변환된 고주파 신호를 안테나를 통해 무선 네트워크로 전송할 수 있다. 또한, RF 칩(245)은 신호를 증폭하거나 필터링할 수 있다.
이 외에, 모뎀(240), 어드레스 변환 회로(250), 메모리 컨트롤러(260)의 동작은 도 11의 모뎀(150), 어드레스 변환 회로(120) 및 메모리 컨트롤러(260)의 동작과 동일 또는 유사하다. 따라서 중복되는 설명은 생략하기로 한다.
이처럼, 본 개시의 예시적 실시예에 따른 어플리케이션 프로세서(200a)는 통신 기능을 수행하기 위한 일부 구성들, 예컨대 모뎀(240), 어드레스 변환 회로(250)를 포함할 수 있다. 이때, 어드레스 변환 회로(250)가 미리 네트워크 어드레스 변환을 수행함으로써, CPU(210)가 어드레스 변환을 수행할 것이 요구되지 않는다. CPU(210)의 로드가 감소할 수 있으며, IP 패킷들이 메모리(300)에 카피되는 횟수가 감소될 수 있으므로, IP 패킷들의 처리 속도가 향상될 수 있다. 따라서, 어플리케이션 프로세서(200a)의 성능이 향상될 수 있다.
이상에서와 같이 본 개시의 예시적인 실시예들이 개시되었다. 본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다.

Claims (20)

  1. 네트워크를 통해 패킷을 송수신하는 통신 시스템에 있어서,
    상기 패킷을 상기 네트워크로 전송될 송신 신호로 변조하고 상기 네트워크로부터의 수신 신호를 상기 패킷으로 복조하는 모뎀 회로; 및
    상기 패킷의 네트워크 어드레스를 변환하는 어드레스 변환 회로를 포함하고,
    상기 어드레스 변환 회로는,
    상기 패킷이 저장된 외부 메모리로부터 상기 패킷의 헤더를 수신하고 상기 헤더를 저장하는 내장 메모리;
    상기 헤더의 포맷을 변환하는 제1 변환기; 및
    상기 헤더에 포함된 어드레스를 변환하는 제2 변환기를 포함하고,
    상기 어드레스 변환 회로는,
    수신 패스로서 동작할 때, 변경된 상기 헤더를 외부 어플리케이션 프로세서와 공유하는 공유 메모리에 저장하는 것을 특징으로 하는, 통신 시스템.
  2. 제1 항에 있어서, 상기 제1 변환기 및 상기 제2 변환기는 하드웨어로 구현되는 것을 특징으로 하는 통신 시스템.
  3. 제1 항에 있어서, 상기 제1 변환기는,
    상기 헤더를 인터넷 프로토콜(IP)의 일 버전에 따른 제1 포맷에서 다른 버전에 따른 제2 포맷으로 변경하는 것을 특징으로 하는 통신 시스템.
  4. 제1 항에 있어서, 상기 제2 변환기는,
    상기 패킷의 IP 어드레스를, 공인 IP 어드레스에서 사설 IP 어드레스로 변환하거나, 사설 IP 어드레스에서 공인 IP 어드레스로 변환하는 것을 특징으로 하는 통신 시스템.
  5. 삭제
  6. 제1 항에 있어서,
    상기 패킷의 페이로드를 상기 내장 메모리로의 저장 없이 상기 공유 메모리에 바로 저장하는 것을 특징으로 하는 통신 시스템.
  7. 제1 항에 있어서, 상기 제1 변환기는,
    상기 헤더에 포함된 적어도 하나의 필드를 기초로 포맷 변환이 필요한지 여부를 판단하는 제1 필터;
    포맷 변환이 필요한 경우, 상기 헤더에 포함되는 복수의 필드들 중 적어도 일부를 타겟 인터넷 프로토콜(IP) 버전에 대응하도록 변경하는 IP 컨버터; 및
    변경된 상기 포맷을 기초로 상기 헤더의 IP 헤더 체크썸 필드를 업데이트하는 제1 헤더 체크썸 계산기를 포함하는 것을 특징으로 하는 통신 시스템.
  8. 제1 항에 있어서, 상기 제2 변환기는,
    상기 헤더에 포함된 적어도 하나의 필드를 기초로 어드레스 변환이 필요한지 여부를 판단하는 제2필터,
    어드레스 변환이 필요한 경우, 상기 헤더에 포함되는 IP 어드레스 값 및 포트 번호를 변경하는 어드레스 변환기;
    변경된 IP 어드레스 값 및 변경된 포트 번호를 기초로 상기 헤더의 IP 헤더 체크썸 필드 및 전송 프로토콜 헤더 체크썸 필드를 업데이트하는 제2 헤더 체크섬 계산기를 포함하는 것을 특징으로 하는 통신 시스템.
  9. 제1 항에 있어서, 상기 어드레스 변환 회로가 수신 패스로서 동작할 때, 상기 제1 변환기가 프리-프로세서로서 동작하고, 상기 제2 변환기가 포스트-프로세서로서 동작하는 특징으로 하는 통신 시스템.
  10. 제1 항에 있어서, 상기 어드레스 변환 회로가 송신 패스로서 동작할 때, 상기 제2 변환기가 프리-프로세서로서 동작하고, 상기 제1 변환기가 포스트-프로세서로서 동작하는 특징으로 하는 통신 시스템.
  11. 메모리;
    네트워크를 통해 수신되는 제1 패킷의 네트워크 어드레스를 변환하고, 변환된 네트워크 어드레스를 포함하는 제2 패킷을 상기 메모리에 저장하는 통신 프로세서; 및
    상기 메모리로부터 상기 제2 패킷을 수신하고, 응용 프로그램을 구동함으로써 상기 제2 패킷을 처리하는 어플리케이션 프로세서를 포함하고,
    상기 통신 프로세서는 어드레스 변환 회로를 더 포함하고,
    상기 어드레스 변환 회로는,
    수신 패스로서 동작할 때, 변경된 헤더를 외부 어플리케이션 프로세서와 공유하는 공유 메모리에 저장하는 것을 특징으로 하는, 장치.
  12. 제11 항에 있어서, 상기 통신 프로세서는,
    제1 전용 메모리에 저장된 상기 제1 패킷의 헤더 및 페이로드 중 상기 헤더를 내부 버퍼로 카피하고, 상기 헤더에 포함된 상기 네트워크 어드레스를 변환하는 것을 특징으로 하는 장치.
  13. 제11 항에 있어서, 상기 통신 프로세서는,
    상기 제1 패킷의 헤더를 저장하는 내장 메모리;
    상기 헤더에 포함되는 IP 헤더의 IP 버전을 변환하는 제1 어드레스 변환 회로; 및
    상기 헤더에 포함된 IP 어드레스를 변환하는 제2 어드레스 변환 회로를 포함하는 장치.
  14. 제13 항에 있어서, 상기 제1 어드레스 변환 회로는,
    상기 헤더에 포함되는 IPv4 헤더를 IPv6 헤더로 변환하거나, 또는 상기 헤더에 포함되는 IPv6 헤더를 IPv4 헤더로 변환하는 것을 특징으로 하는 장치.
  15. 제13 항에 있어서, 상기 제2 어드레스 변환 회로는,
    상기 헤더에 포함된 공인 IP 어드레스를 사설 IP 어드레스로 변환하는 것을 특징으로 하는 장치.
  16. 제13 항에 있어서, 상기 제1 어드레스 변환 회로가 IP 버전 변환 동작을 수행한 후, 상기 제2 어드레스 변환 회로가 IP 어드레스 변환 동작을 수행하는 것을 특징으로 하는 장치.
  17. 제11 항에 있어서, 상기 어플리케이션 프로세서는,
    상기 메모리에 저장된 상기 제2 패킷을 제2 전용 메모리로 카피하는 것을 특징으로 하는 장치.
  18. 통신 기능을 갖는 어플리케이션 프로세서에 있어서,
    응용 프로그램을 실행하는 프로세서; 및
    네트워크로부터 수신되는 패킷의 헤더에 포함된 네트워크 어드레스를 상기 응용 프로그램의 어드레스 체계에 부합하도록 변환하고, 변환된 네트워크 어드레스를 포함하는 헤더를 상기 프로세서가 엑세스 가능한 메모리에 저장하는 어드레스 변환 회로를 포함하고,
    상기 어드레스 변환 회로는,
    수신 패스로서 동작할 때, 변경된 상기 헤더를 외부 어플리케이션 프로세서와 공유하는 공유 메모리에 저장하는 것을 특징으로 하는 어플리케이션 프로세서.
  19. 제 18 항에 있어서, 상기 어드레스 변환 회로는,
    상기 패킷의 헤더를 수신하고 상기 헤더를 저장하는 버퍼;
    상기 헤더의 포맷을 변환하는 제1 변환기; 및
    상기 헤더에 포함된 어드레스를 변환하는 제2 변환기를 포함하는 어플리케이션 프로세서.
  20. 제 19 항에 있어서, 상기 어드레스 변환 회로는,
    상기 제1 변환기 및 상기 제2 변환기가 공유하는 헤더 체크썸 계산기를 더 포함하는 것을 특징으로 하는 어플리케이션 프로세서.
KR1020180120606A 2017-11-27 2018-10-10 네트워크 어드레스 변환을 위한 통신 시스템 및 방법 KR102610823B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/199,961 US10749842B2 (en) 2017-11-27 2018-11-26 Communication system and method for network address translation
TW107142254A TWI791691B (zh) 2017-11-27 2018-11-27 通訊系統、通訊裝置、應用處理器以及通訊系統的網路位址轉換方法
CN201811425221.8A CN109842609B (zh) 2017-11-27 2018-11-27 用于网络地址转换的通信系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20170159685 2017-11-27
KR1020170159685 2017-11-27

Publications (2)

Publication Number Publication Date
KR20190062166A KR20190062166A (ko) 2019-06-05
KR102610823B1 true KR102610823B1 (ko) 2023-12-07

Family

ID=66845552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180120606A KR102610823B1 (ko) 2017-11-27 2018-10-10 네트워크 어드레스 변환을 위한 통신 시스템 및 방법

Country Status (3)

Country Link
KR (1) KR102610823B1 (ko)
CN (1) CN109842609B (ko)
TW (1) TWI791691B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110336836B (zh) * 2019-08-06 2021-10-15 郑州信大捷安信息技术股份有限公司 一种网络过滤服务系统及方法
CN113014679B (zh) * 2019-12-19 2022-11-01 成都鼎桥通信技术有限公司 通信方法、装置及系统
CN111614661A (zh) * 2020-05-19 2020-09-01 展讯通信(上海)有限公司 一种通信装置
CN112165539B (zh) * 2020-09-23 2022-11-04 浙江农林大学暨阳学院 一种IPv6地址转换方法
TWI783709B (zh) * 2021-10-05 2022-11-11 瑞昱半導體股份有限公司 網路封包轉換方法
TWI825923B (zh) * 2022-08-16 2023-12-11 皓德盛科技有限公司 用於金融交易的現場可程式化邏輯閘陣列

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1509021A (zh) * 2002-12-19 2004-06-30 华为技术有限公司 实现网络地址转换的方法
CN1529481A (zh) * 2003-10-14 2004-09-15 �й���ѧԺ�����о��� 网络处理器内部实现分布式应用层转换网关的方法
JP2010178058A (ja) * 2009-01-29 2010-08-12 Tsuken Denki Kogyo Kk プロトコル変換装置及び遠隔監視制御システム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020101859A1 (en) * 2000-09-12 2002-08-01 Maclean Ian B. Communicating between nodes in different wireless networks
US7095716B1 (en) * 2001-03-30 2006-08-22 Juniper Networks, Inc. Internet security device and method
US6947971B1 (en) * 2002-05-09 2005-09-20 Cisco Technology, Inc. Ethernet packet header cache
US20050117605A1 (en) * 2003-07-22 2005-06-02 Innomedia Pte Ltd. Network address and port translation gateway with real-time media channel management
US7440405B2 (en) * 2005-03-11 2008-10-21 Reti Corporation Apparatus and method for packet forwarding with quality of service and rate control
US8265069B2 (en) * 2005-06-23 2012-09-11 Nokia Corporation System, terminal, method, and computer program product for establishing a transport-level connection with a server located behind a network address translator and/or firewall
TW200816753A (en) * 2006-06-14 2008-04-01 Divitas Networks Inc DiVitas protocol proxy and methods therefor
US8265049B2 (en) * 2008-11-10 2012-09-11 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for implementing generic access network functionality in a wireless communication device
CN103262505B (zh) * 2010-10-22 2016-06-01 瑞典爱立信有限公司 使用网络地址转换的网络业务的区分处理
CN102255982A (zh) * 2011-07-21 2011-11-23 电子科技大学 一种IPv4/IPv6转换网关以及转换方法
CN103024089B (zh) * 2011-09-20 2016-02-17 中国电信股份有限公司 网络地址转换方法和设备
CN102984300B (zh) * 2012-12-13 2015-11-18 北京邮电大学 一种4-6-4混合协议网络中分布式网关系统和访问方法
US20140181172A1 (en) * 2012-12-20 2014-06-26 Brent J. Elliott Offloading tethering-related communication processing
US8934489B2 (en) * 2013-01-31 2015-01-13 Gemtek Technology Co., Ltd. Routing device and method for processing network packet thereof
US9698825B2 (en) * 2014-10-22 2017-07-04 Quest Software Inc. Fast update of data packet checksums

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1509021A (zh) * 2002-12-19 2004-06-30 华为技术有限公司 实现网络地址转换的方法
CN1529481A (zh) * 2003-10-14 2004-09-15 �й���ѧԺ�����о��� 网络处理器内部实现分布式应用层转换网关的方法
JP2010178058A (ja) * 2009-01-29 2010-08-12 Tsuken Denki Kogyo Kk プロトコル変換装置及び遠隔監視制御システム

Also Published As

Publication number Publication date
CN109842609B (zh) 2023-04-07
TW201926975A (zh) 2019-07-01
KR20190062166A (ko) 2019-06-05
TWI791691B (zh) 2023-02-11
CN109842609A (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
KR102610823B1 (ko) 네트워크 어드레스 변환을 위한 통신 시스템 및 방법
US20200236191A1 (en) Memory system allowing host to easily transmit and receive data
US9239607B2 (en) Storing data using a direct data path architecture to reduce energy consumption and improve performance
US7836274B2 (en) Method and system for combining page buffer list entries to optimize caching of translated addresses
US11431681B2 (en) Application aware TCP performance tuning on hardware accelerated TCP proxy services
US20130322296A1 (en) Method and system of providing internet protocol (ip) data communication in a nfc peer to peer communication environment
US11483280B2 (en) Method of translating IP packet for tethering service, communication system and electronic device for performing the same
WO2017000593A1 (zh) 报文处理方法及装置
JP2006526969A (ja) オフロードユニットを使用したtcp接続のためのデータ処理
US20060288104A1 (en) Information processing system
US8576861B2 (en) Method and apparatus for processing packets
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
US10749842B2 (en) Communication system and method for network address translation
US10877911B1 (en) Pattern generation using a direct memory access engine
EP3826244B1 (en) Congestion control method and related device
US10255213B1 (en) Adapter device for large address spaces
US8849949B1 (en) Providing proxy service during access switch control plane software upgrade
JP4990304B2 (ja) フレーム送受信装置及び通信データ処理方法
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
CN116529721A (zh) 按需可编程原子内核加载
WO2018052718A1 (en) Method and apparatus for masking and transmitting data
US10250559B2 (en) Reversible mapping of network addresses in multiple network environments
CN115397033B (zh) 无线通信方法、装置、无线通信模组、介质及程序产品
JP6800514B2 (ja) 通信装置、その制御方法、およびプログラム
JP6976786B2 (ja) 通信装置および通信装置の制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right