수요일, 11월 20

Mobile seamless Handover on WIFI with hostapd, freeradius and SDN #3 SDN handover flow




Mobile seamless Handover on WIFI


 이번 글에서는 SDN을 통해 핸드오버, interworking을 구현해보고자 한다.
 전 글과 망 구성 및 이론은 동일하다.




 전 글에서는 동일 IP를 할당해줌을 통해서 접속 지점인 AP는 바꼈지만 실제 네트워크의 구성은 바뀌지 않은 상태였기 때문에 추가적인 처리 없이도 인터넷 스트리밍이 잠시의 끊길뿐 연결이 지속되는 것을 볼 수 있었다. 만약 다른 IP를 할당받더라도 같은 네트워크에 속해있다면 라우터 혹은 스위치가 RARP프로토콜을 통해 등록된 MAC을 보고 IP를 연결해줄 수 있기 때문에 동일한 효과를 볼 수 있다. 


 그러므로, SDN을 통한 handover를 구현 및 테스트해보고자 한다면 
 1. 서로 다른 네트워크로 구성된 AP 
 2. 이 둘을 컨트롤 할 수 있는 SDN Controller 

 두 가지 조건이 갖춰져아 한다는 점을 기억해야 한다. 
 미리 밝혔듯 앞선 조건을 미리 인지하지 못했기에 아직까지 이론만 갖춰져 있을뿐, 실제로 테스트를 하여 결과를 확인한 것은 아니다. 


 x86 base switch에는 내장 랜카드 외에 두 개의 추가 랜카드를 설치하고 Raspberry AP들을 연결시킨 후에 openvswitch를 통해 하나의 스위치처럼 묶어야 한다. 

ovs-vsctl add-br my-switch 
ovs-vsctl add-port my-switch eth1 
ovs-vsctl add-port my-switch eth2

 위와 같은 명령을 치면 openvswitch의 가상 스위치인  my-switch에 eth1과 eth2가 등록된다.

 ovs-vsctl show 

 위의 명령을 통해 이를 확인할 수 있다. 

 이제 SDN controller에 이 스위치를 연결해주는데, 필자는 floodlight를 사용했다. 

 ovs-vsctl set-controller my-switch tcp:<controller-ip>:6633

 6633은 floodlight의 기본 설정 포트이다. 제대로 등록됐다면 ovs-vsctl show 명령을 통해 컨트롤러가 연결되었음을 확인할 수 있을 것이고 floodlight web-ui를 통해 관련 정보를 쉽게 파악할 수 있을 것이다. 


 SDN 을 통해 handover를 구현하기 위한 시나리오를 생각해보면,  Raspberry AP 1 에서 Raspberry AP 2로 기기가 연결 지점을 바꾸는 것이 SDN Controller의 입장에서 보면  Raspberry AP1이 연결된 포트에서 Raspberry AP2가 연결된 포트로 패킷을 보내주게 바뀌는 것이다. 

 디바이스가 AP1 --> AP2 로 연결 변경
 Flow는   AP1 Port --> AP2 Port 로 변경

 여기서 필요한 것은 디바이스에게 오는 패킷을 식별할 값인데 MAC을 사용하면 된다. 이제 시나리오는 MAC 값을 기반으로 디바이스가 연결 지점을 바꾸면 들어오는 패킷을 바뀐 연결 지점으로 보내주는 것이다. 

 MAC값을 기반으로 패킷의 output을 변경. 


 추가적으로 더 처리해줄 것이 있는데, IP값이다. 디바이스가 연결지점을 바꾸며 동시에 IP를 재 할당받기 때문에(DHCP) 이에 관련된 제어가 필요하게 된다. 그러므로 패킷의 output 변경 외에 Destination IP 또한 연결을 바꾼 기기의 현재 IP에 맞게끔 바꿔줘야 한다. 


 MAC값을 기반으로 패킷의 output과 디바이스의 현재 IP로 Dst.IP를 변경


 이것이 handover의 최종 시나리오이다. 


 이에 따른 코드는 github를 통해 찾을 수 있다. 

 https://github.com/Bhb2011/floodlight-for-study/blob/master/src/main/java/net/floodlightcontroller/mactracker/MACTracker.java


 테스트


 이렇게 작성한 코드로 테스트를 해보면 디바이스가 AP를 이동할 시에 floodlight UI에 아래 그림과 같은 flow가 자동으로 등록된다.






 아래의 flow가 handover시에 등록되는 플로우이다.
설명하자면, MAC이 84:38:35:5f:04:94이면 3번 포트로 내보내고 dst.IP를 -1408211540으로 바꾸라는 뜻이고, 대충 172.16.101.XXX를 뜻한다. 그 뒤에 해당 플로우와 일치하는 패킷 수, 바이트 등의 정보가 표시되는데 업데이트가 일정 시점 이후에는 되지 않는 버그가 있다. 




 이론 상으로는 동적 Flow할당을 통해 AP를 변경한 디바이스의 맥 주소를 기준으로 디바이스의 현 IP로 바꾼 패킷을 그대로 전달해주므로 핸드오버의 구현이 되었다고 보이나, 실제 망에서 테스트하기 위해서는 빠른 IP할당 등의 여러가지 갖춰져야할 조건들이 있고 이들이 실제 handover의 테스트에 미치는 영향이 크기 때문에 실제 테스트 결과는 보지 못했다.










































댓글 1개:

  1. ONOS로 SDN Controller를 쓰고 있는 사람입니다.
    그림이 다 날라가서 안보이는데 볼 수 있는 방법이 없을까요?

    답글삭제