iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
1
Software Development

菸酒生 - Software Defined Network系列 第 14

(exercise2) 定義問題 : Implementing Basic Tunneling

  • 分享至 

  • xImage
  •  

首先 什麽是 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 networkenable the usage of unsupported network protocols 有其相似度 。


這個 exercise 是有點連貫性的 , 這次待修改的Codebasic_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 的是

  • meininet>h1 ping h2 # 無限等待
  • pingall # 全部都 x 代表 這網路是不通的

那 如果大概懂 程式 五個組件 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 確定是否如描述的行為

  • without tunneling
    Format: 執行動作(send) + destination port + msg
./send.py 10.0.2.2 "P4 is cool"

--> h2 收到 "P4 is cool" 的 msg

  • with tunneling (多一參數指定:--dst_id 2)
./send.py 10.0.2.2 "P4 is cool" --dst_id 2

--> 結果如上

  • with tunneling (多一參數指定)
./send.py 10.0.3.3 "P4 is cool" --dst_id 2

--> 就算寫 h3 但收到的會是 h2 , 也就是說 以 dst_id 的值為準


the last but not the least

  • Clean up Mininet

make 的指令 使得 Mininet instance 在背景運作
所以 我們必須清一下 make clean 不影響下次運作(?)

Other
Troubleshooting & Food for thought

  • Troubleshooting : 開始練習時可能比較有感 也就是說 for debug
  • Food for thought : 還可以做哪些其他的事

明天 我會深入了解個 Code 就算看過影片的講解 但還是在從 staarter code 重頭刻看看...
TODO x N 我來囉 XD


上一篇
番外篇 - 網管工讀筆記
下一篇
DDoS Attacks in SDN x IoT Botnet x Honeypot
系列文
菸酒生 - Software Defined Network30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言