...
- INT란?
- MRI는 INT의 축소판 및 간편한 방법이라고 생각하면 된다. 튜토리얼 예시 같은 경우 토폴로지를 S1,S2,S3의 스위치가 있고, S1 = h1,h11. S2 = h2,h22. S3=h3 이렇게 연결 되어있으며, 각각의 스위치는 서로 연결 되어 있다. 그러하여 h1 → h2로 패킷을 보낼시에 MRI에 측정되는 SwitchTrace는 2개이며, 카운트 또한 2로 나오게 되는것이다.
코드 블럭 title MRI(Multi-Hop Route Inspection) header ipv4_option_t { //MRI를 이용하기 위한 헤더 선언// bit<1> copyFlag; bit<2> optClass; bit<5> option; bit<8> optionLength; } header mri_t { // mri작동을 위한 count수 설정을 통해 스위치 수 카운트 // bit<16> count; } header switch_t { //MRI를 이용하면서 지나는 switch의 이름과 qdepth를 저장하기 위한 헤더 선언// switchID_t swid; qdepth_t qdepth; } state parse_ipv4_option { packet.extract(hdr.ipv4_option); transition select(hdr.ipv4_option.option) { IPV4_OPTION_MRI: parse_mri; default: accept; } } state parse_mri { packet.extract(hdr.mri); meta.parser_metadata.remaining = hdr.mri.count; transition select(meta.parser_metadata.remaining) { 0 : accept; default: parse_swtrace; } } state parse_swtrace { packet.extract(hdr.swtraces.next); meta.parser_metadata.remaining = meta.parser_metadata.remaining - 1; transition select(meta.parser_metadata.remaining) { 0 : accept; default: parse_swtrace; } }