이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.
현재와 비교
페이지 이력 보기
« 이전
버전 16
다음 »
PDCA
| 전공교육 | 개발실습 | 부서교육 | 부서업무지원 | 기타 |
---|
P | 교육센터 진행 특강 참여 |
| P4 튜토리얼 완강 및 복습 |
|
|
---|
D |
|
|
|
|
|
---|
C |
|
|
|
|
|
---|
A |
|
|
|
|
|
---|
일일회고
2/20
- INT란?


- MRI는 INT의 축소판 및 간편한 방법이라고 생각하면 된다. 튜토리얼 예시 같은 경우 토폴로지를 S1,S2,S3의 스위치가 있고, S1 = h1,h11. S2 = h2,h22. S3=h3 이렇게 연결 되어있으며, 각각의 스위치는 서로 연결 되어 있다. 그러하여 h1 → h2로 패킷을 보낼시에 MRI에 측정되는 SwitchTrace는 2개이며, 카운트 또한 2로 나오게 되는것이다.
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 { //패킷을 수신한 후에 분석을 위해 헤더를 하나씩 분해 할 경우에 MRI 헤더가 있을 경우에 parse_mri를 이용//
packet.extract(hdr.ipv4_option);
transition select(hdr.ipv4_option.option) {
IPV4_OPTION_MRI: parse_mri;
default: accept;
}
}
state parse_mri { //mri 패킷 수신후 헤더를 분해하여 parse_swtrace의 상태로 보내는 함수 //
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 { //parse_swtrace로 보내진 패킷의 헤더의 값을 수정 후 0이 될때까지 반복하는 상태 함수//
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;
}
}
action add_swtrace(switchID_t swid) { //switch를 지날때의 스위치의 이름과 수를 저장하기 위한 함수//
hdr.mri.count = hdr.mri.count + 1;
hdr.swtraces.push_front(1);
// According to the P4_16 spec, pushed elements are invalid, so we need
// to call setValid(). Older bmv2 versions would mark the new header(s)
// valid automatically (P4_14 behavior), but starting with version 1.11,
// bmv2 conforms with the P4_16 spec.
hdr.swtraces[0].setValid();
hdr.swtraces[0].swid = swid;
hdr.swtraces[0].qdepth = (qdepth_t)standard_metadata.deq_qdepth;
hdr.ipv4.ihl = hdr.ipv4.ihl + 2;
hdr.ipv4_option.optionLength = hdr.ipv4_option.optionLength + 8;
hdr.ipv4.totalLen = hdr.ipv4.totalLen + 8;
}
table swtrace {
actions = {
add_swtrace;
NoAction;
}
default_action = NoAction();
}
- Source Routing
2/21
2/22
2/23
2/24
Memo
P4를 이용하기 전 무조건 알아두면 좋은 점 및 소개