-
[ryu] HPE arura 2920 using openflow 1.3Security in CPS/Networking 2020. 8. 6. 16:22
Openflow 1.2+ 에서는 OFPSwitchFeatures에서 명시적으로 table-miss에 대한 룰을 지정해줘야만 합니다. {"actions": ["OUTPUT":"CONTROLLER"]} 의 default rule 이 없다면 SDN switch로 들어오는 모든 패킷은 drop 이 됩니다. 따라서 ryu 에 포함된 샘플코드를 보면 priority = 0 인 default flow rule 로 OFPP_CONTROLLE로 패킹을 포워딩하도록 하고 있습니다. 하지만 제 실험의 경우엔 단순히 CONTROLLER 로 포워딩하는 룰만으로는 table-miss 에 대한 패킷을 처리할 수가 없었습니다. Default 인 0 번 Table에서 매칭되는 flow rule이 없었기 때문에 모든 패킷이 drop 이..
-
TCP checksum errorSecurity in CPS/Networking 2020. 8. 6. 16:03
tcpdump를 이용해 http 패킷 정보를 보던 중 checksum error 가 발생하였습니다. 물론 네트워크의 근본 원인을 파악한 후 해결을 했지만, 일시 방편으로 문제를 해결하고자 ethool을 사용해 옵션을 변경해 보았습니다. 기본적으로 tx/rx 체크섬 체크는 enable 되어 있으며 아래처럼 ethtool을 사용해 해당 설정을 읽어오거나 일시적으로 rx-checksumming, tx-checksumming 을 off 시킬 수 있습니다. 다만 데이터 링크단에서의 HW 시그널 이슈로 인해 패킷 정보가 바뀐 경우가 아닌 악의적으로 패킷의 헤더 정보가 바뀐 경우가 있으니 임의적으로 해당 옵션은 disable 하는 것은 추천하지 않으며, 일시적인 문제가 아니라 지속적으로 발생한다면 근본 원인을 찾아 ..
-
Ryu_manager Openflow1.0 -> Openflow1.3 변경Security in CPS/Networking 2020. 8. 4. 23:28
SDN Controller 로 Ryu_manager 를 사용중인데 최근 여러가지 이슈들로 인해 Openflow1.3으로 변경하여 실험을 진행해 보았다. Openflow1.0에선 Version negotiation 이후 스위치에 매칭되는 flow rule이 존재하지 않을 경우 자동으로 Controller 로 패킷을 포워딩하는 기능이 내재되어 있었다. 하지만 Openflow1.3에서는 이를 명시적으로 rule 을 추가해야만 컨트롤러에서 스위치로 부터 패킷을 전달받을 수 있다. 이는 Simple_switch_13.py에 이미 포함되어 있으나 Openflow1.0만을 사용하던 나로써는 당황스러울 수밖에 없었다. 다음은 Simple_switch_13.py에서 해당하는 코드 snippet이다. @set_ev_cls..
-
[Openflow] Physical Port of FeatureResponseSecurity in CPS/Networking 2020. 7. 31. 15:18
flowgrammable.org/sdn/openflow/message-layer/port/ SDN / OpenFlow / Message Layer / Port | Flowgrammable Each port structure refers to a single port on the OpenFlow switch. This port is identified by the port id, with several reserved ones for special ports (Max, Flood, Controller, etc). The hw addr is the link layer address associated with the port, for inst flowgrammable.org
-
[Openflow] FeatureRequest and FeatureResponseSecurity in CPS/Networking 2020. 7. 31. 11:45
Openflow 스위치에서 지원하고 있는 기능을 확인하기 위해 OFPSwitchFeatures 의 응답을 확인하면 됩니다. 지금 테스트 하고 있는 HW 스위치의 경우 아래와 같이 응답을 하고 있는데요. 2020-07-31 11:26:18,792 switch features ev version=0x1,msg_type=0x6,msg_len=0x530,xid=0x3838af4f,OFPSwitchFeatures(actions=2047,capabilities=199,datapath_id=725782937349696,n_buffers=0,n_tables=16,ports=... 이 중에서 capabilities 와 actions 값을 통해서 스위치가 지원하고 있는 Action/Feature의 값을 확인할 수 있습니다..
-
[Python] SimpleHTTPServerPrograming/Python 2020. 7. 23. 12:33
Python 에서는 손쉽게 웹서버를 실행시킬수 있도록 SimpleHTTPServer 모듈을 제공하고 있다. 별다른 수정 없이도 기본 웹페이지인 index.html 를 보여준다. python -m SimpleHTTPServer 8080 만약 index.html 이 아닌 특정 html 파일을 기본 페이지로 설정하고 있다면 아래와 같이 코드를 작성 후 실행시키면 된다. 이 때 self.path 는 페이지의 directory 를 선언하는 것으로 여기에서는 테스트를 위해 /root 디렉토리에 4mb.html 파일을 임시로 복사해 놓았다. import http.server import socketserver class MyHttpRequestHandler(http.server.SimpleHTTPRequestHand..
-
[Network] 데이터 Bandwidth에 영향을 미치는 설정값과 변경Security in CPS/Networking 2020. 7. 22. 21:52
[Physical Model] ethtool을 사용해 하드웨어(이더넷 케이블)가 지원하는 데이터 속도를 확인할 수 있다. 아래의 예를 보면 최대 1Gbps 를 지원하고 있다. $> ethtool eth0 Settings for ens1f1: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100b..