1巢钓、P4 Runtime
P4Runtime是P4的一個(gè)控制面的協(xié)議敬惦,也叫南向協(xié)議臣镣,用于下發(fā)流表辅愿、規(guī)則等作用智亮,但是P4一般提供了PCI這一個(gè)模塊來(lái)修改流表等靜態(tài)存儲(chǔ)忆某,這些模塊對(duì)于需求往往不夠,所以本文記錄一下如何使用P4Runtime來(lái)從控制面讀阔蛉、寫弃舒、改一些靜態(tài)的流表、register、counter等聋呢。
首先cd到/behavioral-model/tools文件下面苗踪,看到目錄下有一個(gè)runtime_CLI.py,這個(gè)文件就是我們用來(lái)修改的文件。這個(gè)文件本來(lái)的功能就是CLI的命令循環(huán)削锰,我們可以立足于它做一些自定義的動(dòng)作通铲,而不需要在CLI的命令行輸入,只需要運(yùn)行一個(gè)python腳本就可以了器贩。
-
runtime_CLI.py里面把所有的API都寫在了class RuntimeAPI里面了颅夺。而在主程序里面只寫了一句
RuntimeAPI(args.pre, standard_client, mc_client).cmdloop()
所以我們可以在class RuntimeAPI中自己定義一個(gè)函數(shù),函數(shù)中調(diào)用不同的動(dòng)作組合蛹稍,然后在主程序里調(diào)用這個(gè)成員函數(shù)就可以實(shí)現(xiàn)運(yùn)行自己規(guī)定的那些動(dòng)作了吧黄,而這些動(dòng)作怎么組合根據(jù)個(gè)人的需要即可。
2唆姐、P4 Runtime or CLI連接switches
- 當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)中含有多個(gè)交換設(shè)備時(shí)拗慨,利用一個(gè)遠(yuǎn)程主機(jī)開(kāi)啟不同的進(jìn)程運(yùn)行CLI可以分別連接多個(gè)交換設(shè)備
# 開(kāi)啟一個(gè)terminal
simple_switch_CLI --thrift-port 9090
# 默認(rèn)監(jiān)視端口是9090,連接的是第一個(gè)實(shí)例的switch
# 再開(kāi)啟一個(gè)terminal
simple_switch_CLI --thrift-port 9091
# 默認(rèn)監(jiān)視端口是9090奉芦,遞增一個(gè)端口號(hào)赵抢,連接的是第二個(gè)實(shí)例的switch
# 再開(kāi)啟一個(gè)terminal
simple_switch_CLI --thrift-port 9092
# 默認(rèn)監(jiān)視端口是9090,遞增2個(gè)端口號(hào)声功,連接的是第3個(gè)實(shí)例的switch
- 當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)中含有多個(gè)交換設(shè)備時(shí)昌讲,利用一個(gè)遠(yuǎn)程主機(jī)開(kāi)啟不同的進(jìn)程運(yùn)行python腳本同樣可以分別連接多個(gè)交換設(shè)備
# 開(kāi)啟一個(gè)terminal
cd /home/vagrant/behavioral-model/tools
./runtime_CLI.py --thrift-port 9090
# 默認(rèn)監(jiān)視端口是9090,連接的是第一個(gè)實(shí)例的switch
# 再開(kāi)啟一個(gè)terminal
./runtime_CLI.py --thrift-port 9091
# 默認(rèn)監(jiān)視端口是9090减噪,遞增一個(gè)端口號(hào)短绸,連接的是第二個(gè)實(shí)例的switch
# 再開(kāi)啟一個(gè)terminal
./runtime_CLI.py --thrift-port 9092
# 默認(rèn)監(jiān)視端口是9090,遞增2個(gè)端口號(hào)筹裕,連接的是第3個(gè)實(shí)例的switch
- 這里的runtime_CLI.py可以自定義修改給響應(yīng)的交換機(jī)下發(fā)一些流表和修改register醋闭、counter等數(shù)據(jù)結(jié)構(gòu)