2016-08-02 5 views
0

저는 SDN과 ODL의 초보자이며 MiniNet의 OVS 스위치에 OpenFlow 플로우를 추가하려고하지만 Wireshark에서 패킷을 확인할 때 플로우가 반영되지 않습니다. . 내 시나리오는 다음과 같습니다. 선형 토폴로지ODL 컨트롤러의 RESTCONF API를 통해 MPLS를 푸시하는 플로우 추가하기

  • 3 스위치 3 호스트 접속 : sudo는 MN 선형 --topo --controller 원격 --switch ovsk 프로토콜 = OpenFlow13
  • mininet 같은 VM에서 실행
  • ODL 제어기

내가하고 싶은 것은 수동으로 MPLS를 구성하는 것입니다. 예를 들어, 출발점으로 패킷에 대한 MPLS 레이블을 Host1에서 Host3으로 추가하려고합니다. 그리고 RESTCONF API를 사용하여이 작업을 수행하려고하고 있는데 보내려는 요청에 대해 상태 코드 200 (OK)이 표시됩니다. 아래는 RESTCONF 요청의 XML 본문입니다.

Switch1의 포트 1에서 들어오는 IP 패킷의 경우 값 12로 MPLS 레이블을 밀어 포트 2에서 전달합니다. 0 0 0x8847 1 12 2 2 0 100 0x800 1 0 10 true 0 flow-action -MPLS -push 220

URL = "http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table0/flow/100"

헤더 = { '콘텐츠 유형': '응용 프로그램/XML', '동의': '응용 프로그램/JSON'}

요청 유형 = PUT

인증 = 기본 인증

그러면 스위치 1의 포트 2에서 wireshark로 패킷을 검사 할 때 MPLS 헤더를 볼 수 없습니다.

OpenFlow 및 RestConf 플러그인이 ODL에 설치됩니다. 추가 된 흐름이 패킷에서 작동하지 않는 이유는 무엇입니까?

추신. 미리 설치 한 VM을 사용하지 않고 패키지 관리자를 사용하여 mininet을 설치했습니다.

+0

흐름은 스위치 흐름 테이블에 표시되지 않습니다. /var/logs/openvswitch/ovs-vswitchd.log 파일을 확인한 후 스위치가 컨트롤러에 연결할 수 없음을 발견했습니다. 로그에 연결이 실패했다 (연결이 거부되었습니다.) 이유가 무엇일까요? – Bilal

답변

0

OpenvSwitch가 내 호스트에서 실행되고 있지 않음을 알았습니다! /etc/init.d/openvswitch-switch에서 서비스를 다시 시작해야했습니다. 나는 $sudo /etc/init.d/openvswitch-switch status을 사용하여 상태를 확인했는데, 보통 openvswitch가 실행 중이라고 말하는 것이 좋지만 그렇지 않았습니다. 내가했던 서비스를 다시 시작하려면 sudo /etc/init.d/openvswitch-switch restart

이렇게하면 스위치와 컨트롤러를 연결할 수있었습니다. 그러나 컨트롤러가 스위치에서 스위치로 밀려 나지 않았기 때문에 스위치가 무엇인지 아직 모르지만 xml 태그가 누락되었다고 추측합니다. ODL 엔드 투 엔드 스위치를 언급했을 때 고정되어있었습니다. 엔드 플로우 예제 https://wiki.opendaylight.org/view/Editing_OpenDaylight_OpenFlow_Plugin:End_to_End_Flows:Example_Flows은 내가 관심을 갖고있는 예제를 필요에 맞게 사용자 정의했습니다.