Firewall 적용과 StaticFlow 적용의 충돌???

39 views
Skip to first unread message

Jun-Hong Park

unread,
Jun 3, 2014, 12:33:22 AM6/3/14
to open...@googlegroups.com
안녕하세요!

현재 Firewall과 Staticflow 적용을 테스트 중입니다.

테스트 도중 아래와 같은 현상이 발견되어 문의 드립니다.

Abbr.:
sf-XXX: Staticflow 'XXX'
fw-YYY: Firewall 'YYY'
OFS, ofs: Openflow Switch

OpenIRIS: 2.0.9

---

[현상-1]

1. sf-1 를 적용한다. DNS 질의에 대한 패킷을 미러링 하기 위한 static flow 입니다.

curl -d '{"name":"dnsquerymirroring-req", "switch": "00:00:00:23:20:83:40:71", "priority": "1000", "eth_type": "0x0800", "active": "true", "instructions": [ {"apply_actions": [{"output":"2"}, {"output":"1"}]} ] , "ip_proto": "0x0011", "udp_dst": "53", "ipv4_dst": "192.168.10.10" }' http://localhost:8080/wm/staticflowentry/json

* ip_proto 값의 0x0011은 제가 소스를 수정하여 적용하였습니다.

2. fw-1 를 설정한다. 아직 Firewall 은 실행하지 않은 상태입니다.

curl -X POST -d '{"tp-dst": "53", "wildcard-tp-dst": "false", "action": "ALLOW"}' http://localhost:8080/wm/firewall/rules/json

>> 1번은 적용하며 패킷이 미러링 됩니다. 이 상태에서 2번을 적용하는 순간 해당 ofs에 적용되었던 sf-1이 해제가 됩니다.

curl http://localhost:8080/wm/staticflowentry/list/{switch}/json

을 통해 확인한 결과 static flow가 존재하지 않는 것을 확인하였습니다.

다시 적용시키기 위해서

curl http://localhost:8008/wm/staticflowentry/reload/json

을 실행시켰습니다.



[현상-2]


1. sf-1 을 적용한다.
2. Firewall 을 구동시킨다.

curl http://localhost:8080/wm/firewall/module/enable/json

>> 1번을 적용하면 패킷이 미러링 됩니다. 이 상태에서 2번을 적용하는 순간 [현상-1]과 같이 ofs에 적용되었던 sf-1 이 해제가 됩니다.

역시 [현상-1]과 같은 방법으로 static flow 을 재적용하였습니다.



결론적으로 말하면 Firewall 관련된 요청이 처리되는 경우, ofs에 적용되었던 static flow가 적용해제되는 현상이 발생하고 있습니다.

Firewall 구동 여부에 상관없이 Firewall을 추가/삭제 하는 경우에, static flow가 적용해제되고 있습니다.

이 부분의 의도된 것인지, 아니라면 버그로 보여지는 것 같습니다.


============================

이 rule의 의도는 목적지의 서비스 포트가 53인 패킷만 허용을 하기 위합니다.

curl -X POST -d '{"tp-dst": "53", "wildcard-tp-dst": "false", "action": "ALLOW"}' http://localhost:8080/wm/firewall/rules/json

그런데, rule  을 적용시킨 후, ofs의 flow 정보를 보며는 목적지 서비스 포트가 53이 아닌 패킷들도 output 값이 설정된 것을 확인하였습니다.

제가 작성한 firewall rule 에 대해서 조언 좀 부탁드립니다.


감사합니다.

Jisoo Shin

unread,
Jun 3, 2014, 1:04:20 AM6/3/14
to open...@googlegroups.com
안녕하세요. 신지수입니다.
1. 우선 결론부터 말씀드리면 버그가 아닙니다.
일반적인 사용 도중에 firewall이 구동되면 스위치의 모든 rule이 강제 삭제됩니다.
이는 firewall의 우선순위를 높이기 위함입니다.
예를 들어... ping을 수행하던 도중에 (OFS에 forwarding rule이 존재하는 상태)
firewall을 enable 시키면 수행되던 ping이 중단되어야 합니다.

2. tp-dst=53인 pkt만 허용하려면 
{"tp-dst":"53", "action":"ALLOW"} 만 들어가면 됩니다.
"wildcard-tp-dst" 필드는 "tp-dst" 값이 입력되면 자동으로 "false"로 설정됩니다.


Jun-Hong Park

unread,
Jun 3, 2014, 5:23:37 AM6/3/14
to open...@googlegroups.com
답변 감사드립니다.

그럼 추가 질문인데요, 저는 테스트로 나타나는 현상을 하나의 OFS에 대해서만 확인을 했습니다.

그런데 전에 firewall과 staticflow 에 대해서 문의 드렸을 때 Firewall은 indirect 로 반영된다고 하셨었는데,

그렇다면 Firewall 관련 작업을 하는 경우, 모든 OFS의 static flow가 해제되는 건가요?

감사합니다.


Jisoo Shin

unread,
Jun 8, 2014, 9:41:33 PM6/8/14
to open...@googlegroups.com
안녕하세요. 신지수입니다.
OFMFirewall.java를 참고하시면 enableFirewall 메서드에서 purgeAllFlowRecords 메서드를 호출합니다.
즉, firewall이 enable될 때에만 모든 switch의 flow 레코드를 초기화합니다. 
감사합니다.
Reply all
Reply to author
Forward
0 new messages