- Today
- Total
목록분류 전체보기 (155)
Byeo
이번 튜토리얼은 ECMP (Equal-Cost Multi-Path)을 활용한 load balancing switching 구현입니다. ECMP란, 기존에 lpm 등의 방식으로 단 하나의 routing entry를 선택하는 것과는 달리, ECMP는 서로 다른 routing entry에 가중치를 동일하게 두고 hash value를 통해 결정짓는 기법입니다. 이를 통해서 하나의 호스트에서 출발한 packet은 ECMP의 지원을 받아 여러 호스트에 분산되어 도착할 수 있게 됩니다. 2개의 테이블이 존재하며, 첫 번째 테이블은 5-tuple에 따른 hash 계산을, 두 번째 테이블은 계산된 hash value를 기반으로 목적지 host를 결정합니다. https://github.com/p4lang/tutoria..
패킷은 도착지까지 안전하게 도착하기 위하여 항상 경로가 적절하게 설정되어야 합니다. 일반적인 라우팅은 ISP가 적절히 이를 설정해 주기 때문에 우리가 신경 쓸 필요가 없습니다. Source routing은 IP header option의 지원을 받아서 packet의 길을 sender가 정하는 기법입니다. (RFC 791) 이번 P4 tutorial은 source routing입니다. https://github.com/p4lang/tutorials/tree/master/exercises/source_routing tutorials/exercises/source_routing at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/t..
이번 예제는 MRI (Multi-hop Route Inspection)입니다. 튜토리얼에 작성된 내용을 확인하면, sender가 보내는 packet에 매 hop마다 switch의 정보와 switch의 queue 길이가 기록되어 receiver에게 전달된다고 합니다. 이를 통해서 user는 packet의 경로와 각 queue의 상태를 추적할 수 있게 됩니다. tutorial: https://github.com/p4lang/tutorials/tree/master/exercises/mri tutorials/exercises/mri at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by crea..
이번 P4 tutorial은 ECN입니다. ECN은 Explicit Congestion Notification의 약자로, switch에서 congestion이 발생했을 때 ECN bit를 set해서 host에게 알려주는 역할을 수행합니다. (DCTCP) tutorial: https://github.com/p4lang/tutorials/tree/master/exercises/ecn tutorials/exercises/ecn at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com 0. Topology switch ..
우리는 지금까지 data plane의 packet의 format과 처리 방식을 정의하고 작성해왔습니다. 하지만 여기서 끝난다면 의미가 없죠. Control plane과 data plane이 어떻게 상호작용을 하는지도 알아야 P4의 의미가 더 강해질 것 같습니다. 이번 예제는 P4의 control plane과 관련해서 다룰 것으로 보입니다. https://github.com/p4lang/tutorials/tree/master/exercises/p4runtime tutorials/exercises/p4runtime at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an ..
이번 예제는 계산 연습입니다. 오가는 packet의 header와 operand를 파싱해서 결과를 적는 미션인데요, 자세한 설명은 다음 링크를 참조 바랍니다.: https://github.com/p4lang/tutorials/tree/master/exercises/calc tutorials/exercises/calc at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com 시작하기 전에 calc.py를 실행하려 했으나.. google.protobuf.text_format.ParseError: 40:3 : Messag..
이번에는 basic_tunnel 예제를 채워보려고 합니다. https://github.com/p4lang/tutorials/tree/master/exercises/basic_tunnel tutorials/exercises/basic_tunnel at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com 이번에도 열심히 p4-guid 문서를 참고합니다. https://p4.org/p4-spec/docs/P4-16-v1.2.0.html#sec-packet-parsing이와 함께 cornell university의 자료를 참..
이번에는 P4를 사용해서 ping을 성공시키는 작업을 진행해봅니다. https://github.com/p4lang/tutorials/tree/master/exercises/basic의 step 2와 같습니다. tutorials/exercises/basic at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com basic.p4의 todo를 채우러 가봅시다! 참고문서: https://p4.org/p4-spec/docs/P4-16-v1.2.0.html#sec-packet-parsing P4~16~ Language Spe..
P4 tutorial을 따라해보기 위해서 환경을 구성합니다. P4 tutorial GitHub repository: https://github.com/p4lang/tutorials/ GitHub - p4lang/tutorials: P4 language tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com P4 tutorial에는 P4 language를 사용하여 Basic forwarding / tunneling switch부터 calculator, LB(!!), stateful 까지 여러 주제들을 구현하는 과제를 제공합니다. 단, P4를 사용할 수..
설명은 나중에... #include #include #include #include #define CORE_NODE 2500#define SOURCE_NODE (CORE_NODE + 1)#define SINK_NODE (SOURCE_NODE + 1)#define MAX_NODE (SINK_NODE + 1)#define INF 999999using namespace std;vector graph[MAX_NODE];int flow[MAX_NODE][MAX_NODE];int n, m;int arr[50][50];int bfs(int src, int dst){ int parent[MAX_NODE], cur; queue q; memset(parent, -1, sizeof(parent)); q.push(src);..