- Today
- Total
목록프로그래밍 (Programming)/P4 (11)
Byeo
Multicast는 라우터에 multicast packet이 유입되면 특정 그룹에 속한 host들에게 모두 전달하는 것을 의미합니다. 연결만 되어있다고 전달하는 것은 아니고, 같은 그룹에 속해있음을 host가 사전에 라우터에게 등록해야 합니다. 이번 예제에서는 목적지 mac address가 일치하는 호스트가 존재한다면 forwarding을, 그렇지 않다면 mutlciast group에게 전부 packet을 전달하는 코드를 작성합니다. https://github.com/p4lang/tutorials/tree/master/exercises/multicast tutorials/exercises/multicast at master · p4lang/tutorialsP4 language tutorials. Cont..
이번 예제는 IP header에서 DiffServ field를 이용해서 packet의 유형을 분류하고 QoS를 제공하는 실습입니다. Real-world에서는 더 다른 방법으로 다양하게 사용하고 있겠으나, 이 예제에서는 UDP, TCP에 따라서 diffserv field 값을 변경합니다. 링크: https://github.com/p4lang/tutorials/tree/master/exercises/qos tutorials/exercises/qos at master · p4lang/tutorialsP4 language tutorials. Contribute to p4lang/tutorials development by creating an account on GitHub.github.com 0. top..
이번 튜토리얼은 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..