首先 什麽是 Tunneling ?
根據 CloudFlare 的說法
What is tunneling?
In the physical world, tunneling is a way to cross terrain or boundaries that could not normally be crossed. Similarly, in networking, tunnels are a method for transporting data across a network using protocols that are not supported by that network. Tunneling works by encapsulating packets: wrapping packets inside of other packets. (Packets are small pieces of data that can be re-assembled at their destination into a larger file.)
Tunneling is often used in virtual private networks (VPNs). It can also set up efficient and secure connections between networks, enable the usage of unsupported network protocols, and in some cases allow users to bypass firewalls.
BTW 根據 wiki
Cloudflare是一間總部位於舊金山的美國跨國IT企業,以向客戶提供基於反向代理的內容傳遞網路及分布式域名解析服務為主要業務。利用Cloudflare全球Anycast網路,Cloudflare可以幫助受保護站點抵禦包拒絕服務攻擊等網路攻擊,確保該網站長期線上,同時提升網站的效能、載入速度以改善訪客體驗。
那 這次的 exercise 與 Tunneling 的 關聯度在於
在 exercise 中 定義一個新的 header 再根據 dst_id (非使用常見的 dst_IP) 進行轉送
而 using protocols that are not supported by that network
和 enable the usage of unsupported network protocols
有其相似度 。
這個 exercise 是有點連貫性的 , 這次待修改的Code
為 basic_tunnel.p4,而 basic_tunnel.p4 為 上一個 exercise 的 answer。
Review 請見: Day 8 :P4 : Basic Forwarding
但 Day8 只有說到 receive , send 及 TTL 的 change
其實還有一個部份是待補充的 DIY (就是造 P4 tutorial的說明)
這裡簡單說明:
Lunch mininet by make
or make run
可以 try 的是
那 如果大概懂 程式 五個組件 Day11 :P4 paper (cont.) & 我與P4的距離 再 補 TODO 說要 modify 的 Code 再 re make 網路 就可以 通啦 。
此次 exercise 的目的:
Your jobs is to define a new header type to encapsulate the IP packet and modify the switch code, so that it instead decides the destination port using a new tunnel header.
來談談 P4 Tutorial README 的 操作
Step 1: Implement Basic Tunneling
各個部份的待改及其相關必要解釋
Step 2: Run your solution
Test/Verify your code 確定是否如描述的行為
./send.py 10.0.2.2 "P4 is cool"
--> h2 收到 "P4 is cool" 的 msg
./send.py 10.0.2.2 "P4 is cool" --dst_id 2
--> 結果如上
./send.py 10.0.3.3 "P4 is cool" --dst_id 2
--> 就算寫 h3 但收到的會是 h2 , 也就是說 以 dst_id 的值為準
the last but not the least
make
的指令 使得 Mininet instance 在背景運作
所以 我們必須清一下 make clean
不影響下次運作(?)
Other
Troubleshooting & Food for thought
明天 我會深入了解個 Code 就算看過影片的講解 但還是在從 staarter code 重頭刻看看...
TODO x N 我來囉 XD