msctp-hss: msctp Handover Supporting System (CPL-TR-07-08) 2007년 8월경북대학교통신프로토콜연구실김동필 (dpkim@cs.knu.ac.kr) 요약 본문서는리눅스플랫폼환경에서이동단말의새로운망으로의이동을탐지하고 msctp 핸드오버를자동적으로수행하는시스템의설계및개발에관해언급한다. 또한, 개발된시 스템을노트북과같은이동단말에설치하는과정을상세히설명한다. 목 차 1. 서론... 2 2. 시스템설계... 2 2.1 링크정보관리자 (LINK INFORMATION MANAGER)... 3 2.2 이동탐지 (MOVEMENT DETECTION)... 4 2.3 핸드오버결정엔진 (HANDOVER DECISION ENGINE)... 4 2.4 핸드오버관리자 (HANDOVER MANAGER)... 4 3. 시스템개발코드분석... 7 4. 시스템개발및설치...11 4.1 프로그램요구사항...11 4.1.1 Mobile Terminal (MT)...11 4.1.2 Fixed Server (FS)...12 4.2 MOBILE SCTP IPTV 프로그램설치...12 4.3 MOBILE SCTP IPTV 프로그램동작방법...14 4.3.1 Fixed Server (FS)...14 4.3. 2 Mobile Termi nal (MT)...15 4.4 테스트베드구성및실행...15 4.5 참고사항...17 5. 결론...17 1
1. 서론본문서는리눅스플랫폼환경에서두개의 WLAN 인터페이스를장착한이동단말이새로운망으로이동하였을때, 자동적으로 msctp 핸드오버를수행할수있는시스템의설계및개발에관한내용이다. 또한, 개발된시스템을리눅스플랫폼에서설치하는과정을담고있다. 본시스템은이동단말이서로다른 IP 정보를가지는두개의 WLAN 망을이동할때, 하부계층 (L2 레벨 ) 의 Link-Up/Down을탐지하여새로운망으로의이동을탐지하고, 해당네트워크의 AR(Access Router) 로부터네트워크정보를수신한후, msctp 핸드오버를수행하도록개발되었다. 본문서에서는 msctp 핸드오버지원시스템의구조를설명하고, 구현된시스템의개발코드를간략히분석한다. 또한, 개발된시스템을리눅스플랫폼환경에서설치하는과정을가능한자세히설명하도록한다. 2. 시스템설계본시스템은 4개의기능모듈로써, 링크정보관리자 (Link Information Manager), 이동성탐지 (Movement Detection), 핸드오버결정 (Handover Engine), 핸드오버수행 (Handover Manager), msctp API로구성된다. 다음은 msctp 핸드오버시스템의구성도이다. Mobile SCTP API Handover Decision Engine Handover Manager Movement Detection User Space RAW SOCKET Kernel Space ICMPv6 Link Information Manager NETLINK SOCKET SCTP IPv6 Link Information LLC 그림 1. SCTP 핸드오버시스템구성도 그림 1 에서와같이, SCTP 핸드오버시스템은 User Space 와 Kernel Space 로나누어설계하였 다. User Space 는 SCTP 핸드오버시스템을지원하기위해요구되는기능모듈들이요구되는 부분이고, Kernel Space 는운영체제에서제공하고있는프로토콜스택들이존재하는부분이 2
다. 실제로 SCTP 핸드오버시스템이동작하기위해서는운영체제에서제공하고있는기존프로토콜들및 Kernel 레벨에서제공하는유틸리티들과상호연동이이루어져야한다. 예를들어, 이동단말시스템이이동성을탐지하기위해서는 L2 (Data Link Layer) 레벨에서 RSSI (Received Signal Strength Indication) 정보를수집하거나, L3 레벨에서 IPv6 주소의 Prefix 정보를수신하여야한다. 이를위해본시스템에서는 User Space에서는 SCTP 핸드오버를지원하기위한기능모듈들을설계하였고, Kernel레벨에서제공하고있는프로토콜들및 Kernel API들을이용하여 Kernel 레벨과의상호협력할수있도록설계하였다. SCTP 핸드오버를지원하기위해설계한기능모듈들은링크정보관리자 (Link Information Manager), 이동성탐지 (Movement Detection), 핸드오버관리자 (Handover Manager), 핸드오버결정엔진 (Handover Decision Engine) 등이다. 링크정보관리자는단말의이동성을탐지하기위해요구되는기능모듈로써, L2 레벨의정보를지속적으로수신한다. 이동성탐지기능모듈은링크정보관리자로부터단말의이동성을감지하면새로운 Prefix를받아들여 IP 핸드오버의수행을결정하고, 핸드오버결정엔진과핸드오버관리자에의해 SCTP 핸드오버를수행하게된다. 각기능모듈들의세부적인설명은다음과같다. 2.1 링크정보관리자 (Link Information Manager) 링크정보관리자는단말의이동및핸드오버수행을결정하기위한링크정보를탐지하는역할을수행한다. 또한, 이동단말이두개이상의서로다른미디어의네트워크인터페이스들을탑재하고있는경우, 새로운전송미디어를사용하는영역으로이동하였을때, 해당인터페이스가활성화됨을탐지하게된다. 본시스템에서설계한링크정보관리자는 NETLINK LIBRARY를이용하여새로운영역의링크, 즉이동단말과 AR간의링크를탐지한다. 단말이이동하여해당 AR과의접속링크가끊어졌을경우링크다운메시지가발생하고, 단말이새로운영역으로이동하여해당 AR과접속링크가새로이생성된경우링크업메시지가발생되도록설계하였다. 데이터링크계층과링크정보관리자간의링크모니터링을위해사용된메시지들은다음과같다. RTM_NEWLINK RTM_DELLINK // 이동단말과해당 AR 간의링크가활성화되었을경우 // 이동단말과해당 AR 간의링크가비활성화되었을경우 링크정보관리자가 L2 레벨로부터 NETLINK LIBRARY를통하여 RTM_NEWLINK 메시지를수신하였을경우, 링크정보관리자는곧바로이동성탐지모듈을호출하여 IPv6의 Router Discovery 절차를수행하도록한다. 반면, 링크정보관리자가 RTM_DELLINK 메시지를수신하였을경우에는핸드오버결정엔진을호출하여핸드오버수행관리자에게해당링크의 IPv6 주소를삭제하도록 (DELETE-IP) 하도록요청한다. 또한, 링크정보관리자는이동단말의핸드오버수행을결정하는변수로사용하기위해해당링크의신호세기를주기적으로수집하여핸드오버결정엔진에전송하도록한다. 3
2.2 이동탐지 (Movement Detection) 이동탐지기능모듈은 AR로부터새로운네트워크 Prefix를수신하고, IPv6의자동주소설정방식에의해새로운 Stateless IPv6 주소를생성하도록하는역할을수행한다. 이를위해, 링크정보관리자가 RTM_NEWLINK 메시지를수신하여이동탐지모듈을호출하게되면, 곧바로 IPv6의 Router Discovery 절차를수행시킨다. 이동탐지모듈은 Kernel Space의 ICMPv6을사용하기위해 ICMPv6 Raw Socket API를사용하여 Router Solicitation (RS) 메시지를전송하고, AR로부터 Router Advertisement (RA) 메시지를수신하게된다. 수신한 RA 메시지에는 Network Prefix를포함하고있고, 이를추출하여현재사용중인 Prefix와비교한다. 만일수신 Network Prefix가기존의것과다르다면, 이동단말이새로운 IP 영역으로이동하였다고판단하고해당 IPv6 주소를생성하게된다. 생성된 IPv6 주소는핸드오버결정엔진에등록되고, 핸드오버관리자에게 SCTP의 ADD-IP 기능을수행하도록요청한다. 2.3 핸드오버결정엔진 (Handover Decision Engine) 핸드오버결정엔진은핸드오버수행여부 ( 주요 IP 전송경로변경요청 ) 를결정하는모듈로써, 링크정보관리자로부터수신한링크신호강도, 네트워크지연시간및사용되고있는대역폭등을고려한핸드오버수행결정알고리즘에의거하여핸드오버수행여부를판단한다. 구체적인핸드오버수행결정알고리즘에대해서는언급하지않는다. 2.4 핸드오버관리자 (Handover Manager) 핸드오버관리자는링크정보관리자나이동탐지기능모듈로부터 SCTP의핸드오버수행을요청받으면, Kernel Space의 SCTP 프로토콜스택을참조하여 SCTP 핸드오버수행을위해 SCTP의제어메시지인 Address Configuration (ASCONF) Chunk을생성하도록한다. 즉, 이동탐지모듈로부터새로운 IPv6주소가생성되고, 이를보고받으면핸드오버관리자는 SCTP의 ADD-IP 기능을수행하기위해 SCTP_BINDX() 함수를호출하여 SCTP 스택이 ASCONF Chunk를생성하도록한다. 이동단말이 ADD-IP를위해 ASCONF Chunk를전송하면상대노드는이에대한응답으로 ASCONF-ACK chunk를전송하게되고, 이동단말이이를정상적으로수신하게되면두노드간의 SCTP 세션에서새로운주소가 Binding되게된다. 더욱이, 링크정보관리자로부터 DELTET-IP 수행을요청받으면, 같은방식으로핸드오버관리자는 ASCONF/ASCONF-ACK를송수신하여 SCTP DELTE-IP 기능을수행하도록한다. 한편, 핸드오버결정엔진이지속적으로수신한링크정보를비교하여새로이이동한영역의링크정보가훨씬좋다고판단하였을경우, 핸드오버관리자는 SETSOCKOPT(PRIMARY CHANGE) API를호출하여주요데이터전송경로를변경하게된다. 이와같은경우에도역시 ASCONF/ASCONF-ACK Chunk를송수신하여수행하게된다. 아래의 Flow Charter 들은 SCTP 핸드오버수행을위한 ADD-IP, Primary-Change 그리고 DELTE-IP 기능에따른각기능모듈간의수행절차를보여주고있다. 4
NEW AR LIM MD HDE HM FS RTM_NEWLINK ROUTER SOLICITATION ROUTER ADVERTISEMENT Prefix Matching NEW IPv6 Address Reg. ADD-IP Request (NEW IPv6 Address) ASCONF (ADD-IP) ASCONF-ACK (ADD-IP) 그림 2 SCTP 핸드오버를위한 ADD-IP 수행흐름도 위의그림에서같이, 링크정보관리자 (LIM) 가 RTM_NEWLINK 메시지를수신하면이동탐지기능모듈 (MD) 와해당 AR (NEW AR) 는 IPv6 RS/RA 메시지를송수신하고, 이동탐지기능모듈 (MD) 은새로이수신한 Prefix를기존의것과비교한다. 새로이수신한 Prefix가새로운영역의것이라면 IPv6 주소를 Stateless하게생성하고이를핸드오버결정엔진 (HDE) 에게등록한후, HM은상대노드 (FS) 에게 ASCONF를송신하고, 이에대한응답으로 ASCONF-ACK를수신하면, SCTP 핸드오버수행을위한 ADD-IP가완료되게된다. LIM HDE HM FS Link Info. Request Link Info. Response Link Info. Matching Primary-Change Request ASCONF (P-C) ASCONF-ACK (P-C) 그림 3 SCTP 핸드오버를위한 Primary-Change 수행흐름도 5
위의그림에서같이, 핸드오버결정엔진 (HDE) 은주기적으로활성화된네트워크인터페이스에대해해당링크정보를링크정보관리자 (LIM) 에게요청한다. 링크정보관리자는 L2 레벨의정보를수집하여이를핸드오버결정엔진에보고하고, 핸드오버결정엔진은이를비교하여새로이추가된경로의링크정보가좋을경우, 핸드오버관리자 (HM) 에게주요데이터전송경로를새로운경로로변경 (Primary-Change) 하도록요청한다. 핸드오버관리자는상대노드 (FS) 에게 ASCONF를보내고, ASCONF-ACK를수신하면이후주요데이터전송경로는새로운경로로변경되어데이터송수신이이루어지게된다. LIM HDE HM FS RTM_DELLINK Old IPv6 Address De-Reg. SCTP DELETE-IP Request ASCONF(DEL-IP) ASCONF-ACK(DEL-IP) 그림 4 msctp 핸드오버를위한 DELETE-IP 수행흐름도 그림 4와같이, 링크정보관리자 (LIM) 가 RTM-DELLINK를수신하면핸드오버관리자 (HM) 가핸드오버결정엔진에해당 IPv6 주소를등록풀 (pool) 에서삭제하도록요청한다. 이후, 핸드오버결정엔진은핸드오버관리자에게 SCTP DLETE-IP를요청하고핸드오버관리자와상대노드 (FS) 사이에 ASCONF/ASCONF-ACK 메시지가정상적으로송수신되면 DLETE-IP 수행이완료된다. 6
3. 시스템개발코드분석 msctp 핸드오버시스템은앞서언급하였듯이, NETLINK를사용하여하부계층의링크정보 (e.g., Link-Up 또는 Link-Down) 를탐지하는부분과, ICMPv6 소켓을활용하여 IPv6 RS 및 RA메시지를생성한후전송하고, 수신하는부분, 그리고 msctp 핸드오버를실제수행하는부분으로구성된다. 본시스템에서는기존의시스템라이브러리인 NETLINK를수정하여이동단말과해당액세스포인트간의링크업 / 다운을탐지하도록하였다. 다음그림은링크정보관리자가 RTM_NEWLINK와 RTM_DELLINK를수신하여처리하는루틴을보여주고있다. 그림 5 링크정보관리자의 RTM_NEWLINK/RTM_DELLINK 처리루틴 위의그림에서와같이, process_nlmsg() 함수가본시스템에서데몬프로그램으로동작하게되고, L2 레벨에서새로운링크가활성화되면 RTM_NEWLINK 메시지가링크정보관리자에수신하게된다. RTM_NEWLINK나 RTM_DELLINK 메시지가입력되면링크정보관리자의 process_link() 함수에의해해당루틴으로연결되게된다. RTM_NEWLINK의경우에는 process_new_link() 를호출하게되고, RTM_DELLINK는 process_del_link() 를호출하게된다. process_new_link는이동성탐지기능모듈에속하는함수로써 ICMPv6 Raw Socket을생성하여 IPv6 RS 메시지를전송하도록한다. 그림 6은이동성탐지기능모듈에서 ICMPv6 raw Socket을이용하여 RS메시지를전송하는루틴을보여준다. 7
그림 7 이동성탐지기능모듈에서 RS 메시지전송루틴 위의그림과같이, ICMPv6 Raw Socket 과 RS 메시지를생성하여해당 AR 의링크주소로전 송하게된다. 이동단말은이에대한응답으로 RA 메시지를수신하게된다. 다음그림은송 신한 RS 에대한응답으로수신할 RA 메시지처리루틴을보여주고있다. 그림 8 이동성탐지기능모듈에서수신 RA 메시지처리루틴 8
그림 8에서와같이, recv_ra() 함수가 thread로써동작하게되고, 수신한 RA가이미보낸 RS 에대한응답 RA인지를 md_get_inet6_iface() 를통하여확인한다. md_get_inet6_iface() 의반환값이 NULL이아닐경우, RA메시지가 RS의응답으로간주하고, RA에포함된 Network Prefix를추출한다. 추출된 Prefix가새로운 IP 영역에서수신된것인지를확인하기위해 ipv6_pfx_cmp() 를호출한다. Ipv6_pfx_cmp() 의반환값이참이면이는새로운 Network Prefix로간주하고핸드오버관리자에게 ADD-IP 수행을요청한다. 다음그림은핸드오버관리자기능모듈에서 SCTP 핸드오버를수행하기위한루틴을보여준다. 그림 9 핸드오버관리자기능모듈에서 ADD-IP 수행루틴 위의그림에서와같이, 핸드오버관리자에서 sctp_bindx() 함수를호출하여새로이생성된 IPv6 주소를동적으로 SCTP 세션에바인딩한다. 또한, setsockopt() 함수를호출하여 Primary-Change를수행하고있다. 다음그림은핸드오버관리자가 DELTE-IP를수행하기위한처리루틴을보여준다. 9
그림 10 핸드오버관리자기능모듈에서 DLETE-IP 수행루틴 위의그림과같이, 링크정보관리자가 RTM_DELLINK 를수신하면핸드오버관리자의 process_del_inet6_iface() 함수를호출하고, process_del_inet6_iface() 에서 sctp_bindx() API 를 호출하여 SCTP DELETE-IP 를수행하게된다. 10
4. 시스템개발및설치 본장에서는 msctp 핸드오버지원시스템개발에관해설명한다. 4.1 프로그램요구사항본프로그램은이동단말 (MT) 과고정된서버 (FS) 상에서동작한다. MT는 FS와 SCTP 세션을시작하고 IPTV 서비스를제공받기위해서비스를요청한다. 반면, FS는 IPTV 서비스를제공하는주체로써 SCTP 세션요청을기다리고이를수락하게된다. Mobile SCTP IPTV 프로그램을 MT와 FS에각각동작시키기위해서는다음과같은 OS와응용프로그램들이두단말에설치되어있기를권장한다. 4.1.1 Mobile Terminal (MT) Fedora 5 with Kernel 2.6.16 (kernel 2.6.16으로 kernel compile) Kernel 2.6.16으로 kernel compile 시, kernel option에서가능한 SCTP 관련부분들이모두 built in (*) 으로설정되어있어야한다. LKSCTP-TOOLS-1.0.1 LKSCTP-TOOLS-1.0.1은 SOURCEFORGE의 OPEN PROJECT로써 SCTP API들을응용레벨에서쉽게사용할수있도록하는 UTILITY이다. 따라서, SCTP 핸드오버를지원하는본프로그램에서는꼭설치가되어있어야한다. 참고로, LKSCTP TOOL은현재까지 1.0.6 버전까지출시되어있다. 그러나, 가능하면 LKSCTP-TOOLS-1.0.1로설치하여본프로그램과호환성이있도록하는것이좋을듯하다. UNP 코드 UNP 소스코드는 Unix Network Programming 책에서제공하는예제코드로써 MSCTP- IPTV 프로그램에서 Primary Address 를화면에출력시키기위해사용되고있다. WIRELESS_TOOLS WIRELESS_TOOLS.28 는하부레벨에서 AP와의연결성에관한이벤트를제공하기위해사용되는 UTILITY이다. MT가새로운영역으로이동하여새로운 AP와연결이설정되면 WIRLEESS_TOOLS에서새로운링크업에대한이벤트를상위응용프로그램을송신한다. 본프로그램에서는이를수신하여 SCTP 핸드오버를수행하게되도록설계및개발되어있다. 본프로그램의정확한명칭은 wireless-tools_28.orig.tar.gz 이다. QT-X11-OPENSOURCE-SRC-4.1.4 QT-X11-OPENSOURCE-SRC-4.1.4는 MT가 IPTV서비스를제공받기위해설치하는프로그램의 UI를지원하기위한응용프로그램이다. 참고로, 본프로그램의 UI는 QT4를이용하여개발되었다. 11
MPLAYER-1.0PRE8 MPLAYER-1.0PRE8 은 IPTV 서비스에서멀티미디어서비스를지원하기위한응용프로그램 으로써각종멀티미디어 CODEC 을지원하고있다. 4.1.2 Fixed Server (FS) FS 에는특별한 UI 가제공되지않고텍스트기반으로서비스를제공한다. 따라서, 다음과같 이 3 개의프로그램만설치되어있다면간단히동작하게된다. Fedora 5 with Kernel 2.6.16 (kernel 2.6.16 으로 kernel compile) LKSCTP-TOOLS-1.0.1 UNP 코드 4.2 Mobile SCTP IPTV 프로그램설치 2장에서언급한응용프로그램및 OS가올바르게설치되어있다면, Mobile SCTP IPTV 프로그램을설치해야한다. 먼저, MT용 Mobile SCTP IPTV 프로그램을설치해보자. MT용프로그램명은 s-tv-0.4.tar.gz이고, /usr/local/src/ 에해당소스코드를설치하도록한다. 먼저 s-tv-0.4.tar.gz 의압축파일을풀고, 다음과같은절차로컴파일할수있다. $ tar zxvf s-tv-0.4.tar.gz $ cd s-tv-0.4 $ ls ChangeLog Makefile Makefile.vars READEME gui Modules msctp ref temvod test trace.dat $ cd msctp $ make lib MT 용프로그램인 /usr/local/src/s-tv-0.4/msctp 디렉토리안에서위와같이컴파일하는 도중 RTNL 관련컴파일에러가발생한다면다음과같이수정해보자. 12
RTNL 관련에러수정 ------------------------------------------------------------------------------------------------------ cd s-tv-0.4 mv /usr/include/linux/rtnetlink.h /usr/include/linux/rtnetlink.h.back cp /usr/local/src/linux-2.6.16/include/linux/rtnetlink.h /usr/include/linux/ ---------------------------------------------------------------------------------------------------- 또한, NETLINK_ADD_MEMEBERSHIP 관련컴파일에러가발생한다면다음과같이수정해 보자. NETLINK_ADD_MEMEBERSHIP 관련에러수정 -------------------------------------------------------------------------------------------------------- mv /usr/include/linux/netlink.h /usr/include/linux/netlink.h.back cp /usr/local/src/linux-2.6.16/include/linux/netlink.h /usr/include/linux/ ---------------------------------------------------------------------------------------------------------- 만일, 위와다른컴파일에러가발생한다면 dpkim@cs.knu.ac.kr 로에러를보고해주기바란 다. msctp 폴더안에서정상적으로컴파일이수행되었다면 msctp 폴더안에 libmsctp.a 라는 라이브러리가생성되었을것이다. 그후, 다음과같이 msctp 폴더를나와 gui 폴더안으로들어가서 compile 을수행하도록한 다. $ cd.. $ cd gui $ make gui 폴더안에서컴파일에러가발생되었다면 Makefile 에명시되어있는경로에해당라이 브러리와실행파일들이제대로있는지확인해봐야한다. 만약, gui 폴더안에서컴파일이올바르게수행되었다면, /usr/local/src/s-tv-0.4 폴더안에 s-tv 라는실행파일이생성되었을것이다. 13
다음으로 FS 에서 MSCTP-IPTV 프로그램을설치해보자. FS 에서본프로그램은별문제없이 설치가될것이다. FS 용프로그램은 /usr/local/src 에있으며다음과같은파일로구성된다. $ tar zxvf vod-etri-server.tar.gz $ cd vod-etri-server $ ls Makefile libunp.a print.c vod_24s1e1.avi vodserv6 vodserv6_print.c client.h net.sh server.h vod_losts1e1.avi vodserv6.c $ make 위와같이컴파일을수행하면 vodserv6 라는실행파일이생성된다. 만일컴파일에러가 발생한다면 vodserv6.c 파일의 137 라인에서.avi 파일의경로를수정해주기바란다. 4.3 mobile SCTP IPTV 프로그램동작방법 3 장에서언급한대로 MT 와 FS 에 Mobile SCTP IPTV 프로그램이정상적으로설치가되었다 면, 이제실행시켜보자. 두 MT와 FS에서프로그램을실행시키기전에소스코드에서주소를바로잡도록하자. 본프로그램은 SCTP 초기화를위해기본적으로 MT에 2001:220:0:1:20d:28ff:fe46:4c3b 가 BINDING 되도록설정되어있고, MT에서 FS로연결하기위해 MT는서버용주소 2001:220:10::155를알고있다고가정한다. 만일, MT에서자신의주소를변경하고자할때는 gui 폴더안의 vodclnt6.c에서 203 라인에새로운주소를설정하면된다. 또한, MT에서연결하고자하는 FS의주소를변경하고자할경우에는역시 MT에서 gui 폴더안의 main_gui.cpp 파일에서 66 라인의주소를변경하면된다. 주소를변경하였다면다시 3장에서언급한대로 s-tv-0.4 (MT용프로그램 ) 과 vod-server ( 서버용 ) 프로그램들을재컴파일하고프로그램을실행시켜보자. MT 와 FS 에서프로그램을실행시키기위해서는다음과같은절차로수행하면된다. 단, FS 가 MT 보다먼저프로그램이실행되어있어야한다. 이는 FS 가서버로써 SCTP 세션초기화를 기다리고있고, MT 는 SCTP 세션을요청하기때문이다. 4.3.1 Fixed Server (FS) $ cd vod-etri-server //Mobile SCTP IPTV 의 FS 용프로그램이름 $./vodserv6 9998 // 9998 는포트번호이다. 14
4.3.2 Mobile Terminal (MT) $ cd s-tv-0.4 // Mobile SCTP IPTV 의 MT 용프로그램이름 $./s-tv MT에서프로그램이동작하여 GUI 화면이디스플레이되면 Home ( 집모양 ) 을클릭하고 Server 주소를선택한다. 본프로그램에서는 CINEMA Server라고명시되어있는것을클릭하고 Connect 버튼을누르면 FS와의연결이진행된다. 정상적으로연결이되면서비스제공목록이서버로부터전송되고, MT에서는서비스번호 1 번을입력하고 Request Contents를클릭한다. 그런후, 화면표시를클릭하고 play버튼을누르면 IPTV 서비스가시작된다. 이후, 새로운 AP가나타나면자동적으로 SCTP 핸드오버가수행되게된다. 4.4 테스트베드구성및실행 다음그림은실험에사용된테스트베드구성도이다. IP-1 Network Prefix: 2001:220:0:1 AP1 LAN 1 Network Prefix: 2001:220:0:10 ROUTER LAN 3 IP-3 AP2 LAN 2 FS MT IP-2 Network Prefix: 2001:220:0:2 그림 10 실험을위한테스트베드구성도 위의그림에서와같이, 테스트베드는 3 개의다른 IP 영영으로구성된다. 서버 (FS) 는 IP-3 영 역에서 IPTV 서비스를제공하고, 이동단말은 IP-1 영역에서 IP-2 영역으로이동하게된다. 제안시스템을평가하기위해적용된실험시나리오는다음과같다. 15
가. 세션초기화먼저서버는 2001:220:0:3::/64의 Network Prefix를사용하며, AP1영역에서 2001:220:0:1::/64의 Network Prefix를가지는이동단말클라이언트와 SCTP세션을초기화한다. 이후, 클라이언트는서버로부터 IPTV 서비스를제공받는다. 나. ADD-IP 단말이 2001:220:0:2::/64 의 Network Prefix 를사용하는 AP2 로부터새로운신호를수신하면, SCTP 세션에동적으로새로이생성된 IPv6 주소를추가 (Binding) 한다. 다. Primary Change (AP1->AP2) 단말이 AP1와 AP2사이에있고, AP2 영역의링크정보가 AP1보다좋을때, 새로이추가된 IPv6주소를주요데이터전송경로로변경하고자서버에게요청하고, 이에대한응답을받는다. 라. Primary Change (AP2->AP1) 단말이 AP2와 AP1사이에있고, AP1 영역의링크정보가 AP2보다좋을때, 새로이추가된 IPv6 주소를주요데이터전송경로로변경하고자서버에게요청하고, 이에대한응답을받는다. 마. Delete-IP 이동단말이 HOTSPOT 영역을완전히벗어나해당 AP로부터더이상신호를받지않을시점에, 이동단말은해당주소를진행중인 SCTP 세션에서삭제하고, IPTV 서비스를지속적으로진행한다. 본실험을통해, 제안된설계를통해개발된 IPTV 시스템이잘동작하고있음을알수있 다. 그림 11 은본시스템에의해동작되는화면을보여주고있다. 16
IPTV Service Controller Play Controller 그림 11 실험결과화면 그림 11과같이, 개발된시스템은클라이언트의 GUI를통해서버로부터채널목록을수신하고, 사용자가원하는채널을선택하면, 해당멀티미디어컨텐츠를플레이하여볼수있도록되어있다. 더욱이, SCTP 핸드오버시스템은이동단말의하위계층 (L2 및 L3) 정보를분석하여응용레벨에서동작하는시스템과독립적으로수행하도록개발되었다. 다시말해, 이동단말이새로운 IP 영역으로이동하여 SCTP핸드오버가수행되더라도응용레벨의 IPTV 시스템에는어떠한영향도미치지않는다. 4.5 참고사항본프로그램에서 SCTP 핸드오버를수행시키기위해서는 CISCO AIRONET 350 시리즈의 WLAN카드와 INTEL 2100 BG나 INTEL 2200 BG WLAN 카드가구비되어있어야한다. 더욱이, CISCO WLAN 카드가 eth1이고 INTEL WLAN 카드가 eth2로설정되어있어야정상적으로동작하게된다. 5. 결론본문서에서는이동단말이새로운망으로이동하였음을탐지하고, 새로운망으로 msctp 핸드오버를자동적으로수행하는시스템에관한설계및개발에대해상세히설명하였다. 현재개발된시스템은 WLAN 간 IP 이동성을지원하는시스템으로써노트북과같은이동단말에두개의 WLAN 카드를장착하고있어야하며, 단말의이동성을연출하기위해 AP 와의링크를빼고꼽는방식으로 msctp 핸드오버를실행시킬수있도록하였다. 향후연구로써본시스템을 WiBro나 3G와같은이기종무선인터페이스를장착하여실제이기종망에서 msctp 핸드오버를지원할수있는시스템으로확장할계획이다. 17