標籤:

P4可編程是把雙刃劍o

厲害了我的卡!人生第一個P4編程實驗搞定o_o    

每日P4代碼 Firewall

防火牆的主要功能是利用ACL和NAT來過濾和修改入口報文。如果用ASIC來實現這個功能程序員不用擔心物理設備執行錯誤,但是如果用P4代碼來實現同樣的過程,那麼不得不考慮一些關於軟體的問題。

1)

實現防火牆功能的程序也許會在某些特定報文情況下「跑飛」,比如根據P4語言規範,讀或者寫一個無效的報文頭就會產生隨機結果。有時雖然ACL表正確匹配並過濾了IPv4報文,但是當面對IPv6等類型報文時還是會處理錯誤;

2)

有時內部地址和外部地址容易混淆。如果程序在NAT表前執行ACL表,那麼原本要過濾入流量的規則應該是匹配外部地址,搞反順序後規則就會去匹配內部地址。防火牆的表順序是個非常容易發生「低級錯誤」的地方,思科Adaptive Security Appliance軟體版本從8.2升級到8.4就發生過類似情況,導致無數的配置無效,使得網路暴露於危險之中。

所以網路可編程真的很美啊?解決問題的同時是否又帶來了新的問題?不過這給學術界和工業界同時帶來了機會是真的。學術界推出了P4可編程數據平面代碼驗證工具並發了Sigcomm,而工業界就簡單多了,代碼不上機怎麼知道結果是否正確呢?所以下面這個P4交換機+P4網卡的組合是必須的:

 轉發朋友圈截圖留言獲取Sigcomm論文!

推薦閱讀:

Python自編寫help文檔以及文檔測試
Angular 6正式版發布,都有哪些新功能
如何選擇正確的走刀方式的呢?你都用了什麼技巧?一起學習吧
編程學習方法隨筆目錄
Python最假的庫:Faker

TAG:編程 |