본 장에서는 Tmax에서 지원하는 IPv6 개념과 지원 범위에 대해서 설명한다.
IPv6의 간단한 기본 개념과 특성, IPv6 전환 기술인 Dual Stack에 대해서 설명한다.
인터넷 프로토콜 stack 중 네트워크 계층의 프로토콜로써 version 6 Internet Protocol로 제정된 차세대 인터넷 프로토콜이다. 인터넷(Internet)은 IPv4 프로토콜로 구축되어 왔으나 IPv4 프로토콜의 한계점으로 인해 지속적인 인터넷 발전에 문제가 예상되어 이에 대한 대안으로써 IETF에서 IPv6 프로토콜을 제정했다.
IPv4는 32bits로 표현하기 때문에 4,294,967,296개의 주소를 표현할 수 있다. 그러나 인터넷에 접속된 컴퓨터들이 기하 급수적으로 증가하면서 IPv4의 주소는 고갈이 가속화되고 있다. 이런 인터넷 주소 고갈 문제와 기타 여러 가지 문제를 해결하기 위해서 IPv6가 제안되었다.
IPv6는 128bits로 이루어져 있어 2^128인 3.4x10^38개의 주소를 사용할 수 있기 때문에 거의 무한대로 사용이 가능하다. 지표면의 모든 공간에 10㎡당 1개씩의 IPv6/48 네트워크를 제공할 수 있을 만큼의 많은 개수를 갖는다.
IPv4와 가장 큰 차이점은 주소 표현 방법이다. IPv6 주소는 16bit 4자리를 콜론(:)으로 구분하여 16진수로 표기한다.
2001:0db8:85a3:08d3:1319:8a2e:0370:7334
완전한 IPv6로 전환이 이루어질 때까지 인터넷은 IPv4와 IPv6를 동시에 사용할 것이다. 기본 플랫폼(OS, 라우터, 스위치 등) 업체들에서는 다음과 같은 기술들을 제공하여 이런 환경에서 IPv4와 IPv6를 동시에 지원할 수 있다.
IPv4/IPv6 Dual Stack은 IPv6 노드가 IPv4 전용 노드와 호환성을 유지하는 가장 쉬운 방법이다. IPv6/IPv4 Dual Stack 노드는 IPv4와 IPv6 패킷을 모두 주고받을 수 있는 능력이 있어, IPv4 패킷을 사용하여 IPv4 노드와 직접 호환된다. 또한, IPv6 패킷을 사용하여 IPv6 노드와 직접 호환된다.
터널링은 IPv6/IPv4 호스트와 라우터에서 IPv6 데이터그램을 IPv4 패킷에 캡슐화하여 IPv4 라우팅 토폴로지 영역을 통해 전송하는 방법이다. 터널링은 기존의 IPv4 라우팅 인프라를 활용하여 IPv6 트래픽을 전송하는 방법을 제공한다.
Tmax에서 IPv6는 설정을 통해서 지원한다. 설정을 하지 않는다면 기본으로 IPv4로 동작을 수행한다.
설정은 필요에 따라서 환경변수, Tmax 환경설정 파일에 적용을 해야 한다. 클라이언트와 같은 경우에는 환경설정 파일을 이용할 수 없기 때문에, 환경변수에 설정을 해야 한다.
Tmax는 클라이언트, 멀티 노드, 멀티 도메인, TCP 게이트웨이 등이 모두 소켓을 사용하여 구현했다. 각각의 구성들은 모두 IPv4를 사용할지 또는 IPv6를 사용할지를 결정할 수 있도록 지원한다.
소켓의 개념에 따라 크게 다음과 같이 구성할 수 있다. 이 분류에 따라 각각의 모듈들의 IPv6 지원 여부를 설정한다.
연결 수락 부분
다음은 연결 수락 부분에 따른 Tmax 구성요소와 설정에 대한 설명이다.
구성요소 | 설명 |
---|---|
cll | 클라이언트의 연결을 수신한다.
|
tmm, clh | 멀티 노드 환경에서 노드 사이를 연결할 경우의 수신한다.
extern server의 연결 수신한다.
|
racd | 멀티 노드 환경에서 유틸리티 연결을 수신한다.
|
webagent(twagent) | WebAdmin의 연결을 수신한다.
|
gateway([non]tx, [async] tuxedo, [async] java, wsgw, xagw) | 연결 수신한다.
|
hms | cluster hms의 연결 수신한다.
|
tcp g/w | 연결을 수신한다.
|
tmsnmpd | snmp 요청의 연결 수신한다.
|
Java 구성 요소 | jtmax, webtasync의 연결 수신한다. Java 구성 요소는 Java를 실행할 때 환경변수를 통해 설정을 해야 한다(WAS에서 동작할 경우에는 WAS를 부트할 때 환경변수에 적용을 해야 한다).
|
연결 요청 부분
다음은 연결 요청 부분에 따른 Tmax 구성 요소와 설정에 대한 설명이다.
구성요소 | 설명 |
---|---|
c client | Tmax로 연결 요청한다.
|
tmm | 멀티 노드 환경에서 다른 노드(tmm)로 연결한다.
|
clh | 멀티 노드 환경에서 다른 노드(clh)로 연결한다.
|
tdl | TDL 유틸리티를 실행할 때 멀티 노드 환경에서 다른 노드로 연결한다.
|
hms | custer hms 환경에서 다른 노드의 hms로 연결한다.
|
xa client | XA 게이트웨이로 연결한다.
|
tcp g/w | 외부로 연결한다.
|
gateway([non]tx, [async] tuxedo, [async] java) | 다른 게이트웨이로 연결한다.
|
gateway(wsgw) | 웹 서비스 서버로 연결한다.
|
Java 구성 요소 | jtmax, webtasync, twadmin의 연결 연결 요청한다. Java를 실행할 때 환경변수를 통해 설정을 해야 한다(WAS에서 동작할 경우에는 WAS를 부트할 때 환경변수에 적용을 해야 한다).
|
수신할 때 IPv6를 지원하겠다고 설정하면, Tmax는 해당하는 소켓을 IPv6 용으로 생성한다. 이때 Tmax가 설치된 플랫폼이 Dual stack과 같은 전환 기술을 제공하면 Tmax는 IPv4, IPv6 연결 요청을 모두 수신할 수 있다.
그러나 Tmax에서 IPv6를 설정하지 않았다면, 플랫폼에서 IPv6, IPv4를 모두 지원하더라도 Tmax는 IPv4 연결만 수신할 수 있으며 IPv6 요청은 수락할 수 없다.
위에서 확인한 연결 및 수신할 때 뿐만 아니라 ACL, tmadmin에서 ci 정보 조회 등과 같은 정보 입력, 조회 기능 또한 지원한다.
IPv6를 위한 부가 기능은 다음과 같다.
ACL
클라이언트 접속 IP 제한
별도의 설정 파일에 IPv6 주소 지원
[2011::xxx]와 같은 형식으로 지정
tmadmin
명령어 | 설명 |
---|---|
ci | 접속한 클라이언트의 IP 출력한다. |
txgwi, ntxgwi, jgwi, ajgwi | 접속한 게이트웨이의 IP 출력한다. |
sqi | Session Q의 클라이언트 IP 출력한다. |
클라이언트 및 서버 API
API | 설명 |
---|---|
tpgetsockname | 서버와 클라이언트에서 Tmax 시스템 내부적으로 사용되는 소켓 주소를 얻어오는 함수이다. 자세한 내용은 “Tmax Reference Guide”의 “3.1.54. tpgetsockname”을 참고한다. |
tpgetpeername | 서버와 클라이언트에서 연결된 상대방의 소켓 주소를 얻어오는 함수로 Tmax 시스템에 연결이 완료된 후 상대방(노드)의 소켓 주소를 반환한다. 자세한 내용은 “Tmax Reference Guide”의 “3.1.52. tpgetpeername”을 참고한다. |
tpgetpeer_ipaddr | 서버에서 연결된 상대방의 소켓 주소를 얻어오는 함수이다. 자세한 내용은 “Tmax Reference Guide”의 “3.2.34. tpgetpeer_ipaddr”을 참고한다. |
tpgetcliaddr_ipv6 | Tmax 시스템에 접속된 클라이언트 중 clid에 해당하는 클라이언트의 IP와 포트 번호를 얻는 함수이다. 자세한 내용은 “Tmax Reference Guide”의 “3.1.47. tpgetcliaddr_ipv6”를 참고한다. |
tpbroadcast | Tmax 시스템에 등록된 클라이언트들에게 요청하지 않은 메시지를 송신하는 함수이다. 자세한 내용은 “Tmax Reference Guide”의 “3.1.29. tpbroadcast”를 참고한다. |
tmadmin | Tmax 시스템 관리 툴인 tmadmin에서 조회할 수 있는 통계정보를 출력하는 함수이다. 자세한 내용은 “Tmax Reference Guide”의 “3.2.4. tmadmin”을 참고한다. |