VPP教程 基本命令 记录
基于官方指導(dǎo)教程。ubuntu18.04,已安裝vpp并測試,已有startup1.conf、startup2.conf(可以放在/etc/vpp路徑下)。root權(quán)限操作。
一 運(yùn)行VPP
二 創(chuàng)建Interface
(vpp1,連接linux系統(tǒng)的veth interface通過AF_PACKET)
三 trace追蹤包
Q:trace filter none可以,其他的好像不行?是過濾節(jié)點(diǎn)數(shù)量嗎?參考trace filter
支持trace的節(jié)點(diǎn)
af-packet-input
avf-input
bond-process
dpdk-crypto-input
dpdk-input
handoff-trace
ixge-input
memif-input
mrvl-pp2-input
netmap-input
p2p-ethernet-input
pg-input
punt-socket-rx
rdma-input
session-queue
tuntap-rx
vhost-user-input
virtio-input
vmxnet3-input
vpp 中的ping不可以用-c指定數(shù)量
$ ping -c 1 10.10.1.2 vpp# ping 10.10.1.1vpp# show tracetrace內(nèi)容解釋(待補(bǔ)充)
時間、節(jié)點(diǎn)、包格式……(主要看下節(jié)點(diǎn)ip4-lookup、ip4-rewrite)
在vpp里可以抓包,文件在/tmp路徑
# 抓1000個包,寫入文件vppcapture pcap dispatch trace on max 1000 file vppcapture buffer-trace dpdk-input 1000 pcap dispatch trace off(第一行vrf沒看懂)
目的網(wǎng)絡(luò)
單播/多播
Q:dpo-load-balance
dpo-load-balance[協(xié)議 序號 Q:buckets 單播反向路由查找 to via ]
Q:動作?dpo-drop / ipv4 via 10.10.1.1 host-vpp1out / ipv4-glean/dpo-receive
四 連接兩個VPP
vpp1和vpp2都已運(yùn)行
這個interface name是memif0/0,master是vpp1在memif0/0中的角色
vpp# create interface memif id 0 master五 添加路由,拉通linux到VPP2(通過VPP1)
VPP1與VPP2之間用 memif driver,主機(jī)和VPP1之間用af-packet driver(Q:這兩個是啥?)
要跟蹤來自主機(jī)的數(shù)據(jù)包,使用af-packet-input;從vpp1到vpp2,使用memif-input。
六 switch
運(yùn)行一個名為vpp1的 vpp 實例
運(yùn)行一個名為vpp2的 vpp 實例
$ /usr/bin/vpp -c startup2.conf $ vppctl -s /run/vpp/cli-vpp2.sock創(chuàng)建一個 veth,一端命名為 vpp1host,另一端命名為 vpp1out。
將 vpp1out 連接到 vpp1
在vpp1host上添加ip地址10.10.1.1/24
創(chuàng)建一個 veth,一端命名為 vpp1vpp2,另一端命名為 vpp2vpp1。
將 vpp1vpp2 連接到 vpp1。
將 vpp2vpp1 連接到 vpp2。
vpp1
vpp# create host-interface name vpp1vpp2 host-vpp1vpp2 vpp# set int state host-vpp1vpp2 up vpp# show bridge-dominvpp2
vpp# create host-interface name vpp2vpp1 host-vpp2vpp1 vpp# set int state host-vpp2vpp1 up如果只有默認(rèn)的0,創(chuàng)建bridge domain 1
將ip地址10.10.1.2/24添加到vpp2接口loop0。將 vpp2 上的接口 loop0 的狀態(tài)設(shè)置為“up”
vpp# set int ip address loop0 10.10.1.2/24 vpp# set int state loop0 up刪除用del loopback interface intfc loop0
檢查以查看第一個可用的網(wǎng)橋域 ID(在這種情況下為 1)將接口 loop0 作為網(wǎng)橋虛擬接口 (bvi) 添加到網(wǎng)橋域 1,將接口 vpp2vpp1 添加到橋接域 1
在 vpp1 和 vpp2 上添加跟蹤
從主機(jī) ping 到 10.10.1.2
檢查并清除 vpp1 和 vpp2 上的跟蹤
vpp1&vpp2
vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- No packets in trace buffer vpp# clear trace vpp# trace add af-packet-input 10vpp1
vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- Packet 100:37:05:332912: af-packet-inputaf_packet: hw_if_index 1 next-index 4tpacket2_hdr:status 0x20000001 len 98 snaplen 98 mac 66 net 80sec 0x6209b8f7 nsec 0x2c877061 vlan 0 vlan_tpid 0 00:37:05:332955: ethernet-inputIP4: 12:9c:88:4f:ee:2d -> de:ad:00:00:00:00 00:37:05:332963: l2-inputl2-input: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d [l2-learn l2-fwd l2-flood l2-flood ] 00:37:05:332969: l2-learnl2-learn: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 00:37:05:332973: l2-fwdl2-fwd: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 result [0x1220000000002, 2] none 00:37:05:332978: l2-outputl2-output: sw_if_index 2 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d data 08 00 45 00 00 54 d5 9e 40 00 40 01 00:37:05:332981: host-vpp1vpp2-outputhost-vpp1vpp2 IP4: 12:9c:88:4f:ee:2d -> de:ad:00:00:00:00ICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197Packet 200:37:05:333367: af-packet-inputaf_packet: hw_if_index 2 next-index 4tpacket2_hdr:status 0x20000001 len 98 snaplen 98 mac 66 net 80sec 0x6209b8f7 nsec 0x2c968233 vlan 0 vlan_tpid 0 00:37:05:333374: ethernet-inputIP4: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2d 00:37:05:333379: l2-inputl2-input: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 [l2-learn l2-fwd l2-flood l2-flood ] 00:37:05:333383: l2-learnl2-learn: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 bd_index 1 00:37:05:333385: l2-fwdl2-fwd: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 bd_index 1 result [0x1220000000001, 1] none 00:37:05:333387: l2-outputl2-output: sw_if_index 1 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 data 08 00 45 00 00 54 87 9f 40 00 40 01 00:37:05:333389: host-vpp1out-outputhost-vpp1out IP4: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dICMP: 10.10.1.2 -> 10.10.1.1tos 0x00, ttl 64, length 84, checksum 0x9cf3 dscp CS0 ecn NON_ECNfragment id 0x879f, flags DONT_FRAGMENTICMP echo_reply checksum 0xc60d id 23197vpp# show l2fib verboseMac-Address BD-Idx If-Idx BSN-ISN Age(min) static filter bvi Interface-Name 56:dd:cb:23:8c:da 1 2 0/1 - - - - host-vpp1vpp2 de:ad:00:00:00:00 1 2 0/1 - - - - host-vpp1vpp2 12:9c:88:4f:ee:2d 1 1 0/1 - - - - host-vpp1out 8a:1f:7d:cb:0e:3f 1 1 0/1 - - - - host-vpp1out L2FIB total/learned entries: 4/4 Last scan time: 0.0000e0sec Learn limit: 16777216vpp2
vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- Packet 100:36:04:423430: af-packet-inputaf_packet: hw_if_index 1 next-index 4tpacket2_hdr:status 0x20000001 len 98 snaplen 98 mac 66 net 80sec 0x6209b8f7 nsec 0x2c922ba5 vlan 0 vlan_tpid 0 00:36:04:423456: ethernet-inputIP4: 12:9c:88:4f:ee:2d -> de:ad:00:00:00:00 00:36:04:423466: l2-inputl2-input: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d [l2-learn l2-fwd l2-flood l2-flood ] 00:36:04:423470: l2-learnl2-learn: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 00:36:04:423473: l2-fwdl2-fwd: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 result [0x700000002, 2] static age-not bvi 00:36:04:423479: ip4-inputICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197 00:36:04:423489: ip4-lookupfib 0 dpo-idx 7 flow hash: 0x00000000ICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197 00:36:04:423512: ip4-localICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197 00:36:04:423518: ip4-icmp-inputICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197 00:36:04:423522: ip4-icmp-echo-requestICMP: 10.10.1.1 -> 10.10.1.2tos 0x00, ttl 64, length 84, checksum 0x4ef4 dscp CS0 ecn NON_ECNfragment id 0xd59e, flags DONT_FRAGMENTICMP echo_request checksum 0xbe0d id 23197 00:36:04:423529: ip4-load-balancefib 0 dpo-idx 2 flow hash: 0x00000000ICMP: 10.10.1.2 -> 10.10.1.1tos 0x00, ttl 64, length 84, checksum 0x9cf3 dscp CS0 ecn NON_ECNfragment id 0x879f, flags DONT_FRAGMENTICMP echo_reply checksum 0xc60d id 23197 00:36:04:423532: ip4-rewritetx_sw_if_index 2 dpo-idx 2 : ipv4 via 10.10.1.1 loop0: mtu:9000 next:3 129c884fee2ddead000000000800 flow hash: 0x0000000000000000: 129c884fee2ddead00000000080045000054879f400040019cf30a0a01020a0a00000020: 01010000c60d5a9d0001f7b809620000000014660b00000000001011 00:36:04:423536: loop0-outputloop0 IP4: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dICMP: 10.10.1.2 -> 10.10.1.1tos 0x00, ttl 64, length 84, checksum 0x9cf3 dscp CS0 ecn NON_ECN 0000000000: 129c884fee2ddead00000000080045000054879f400040019cf30a0a01020a0a00000020: 01010000c60d5a9d0001f7b809620000000014660b00000000001011 00:36:04:423536: loop0-outputloop0 IP4: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dICMP: 10.10.1.2 -> 10.10.1.1tos 0x00, ttl 64, length 84, checksum 0x9cf3 dscp CS0 ecn NON_ECNfragment id 0x879f, flags DONT_FRAGMENTICMP echo_reply checksum 0xc60d id 23197 00:36:04:423544: l2-inputl2-input: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 [l2-fwd l2-flood l2-flood ] 00:36:04:423546: l2-fwdl2-fwd: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 bd_index 1 result [0x1210000000001, 1] none 00:36:04:423547: l2-outputl2-output: sw_if_index 1 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 data 08 00 45 00 00 54 87 9f 40 00 40 01 00:36:04:423550: host-vpp2vpp1-outputhost-vpp2vpp1 IP4: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dICMP: 10.10.1.2 -> 10.10.1.1tos 0x00, ttl 64, length 84, checksum 0x9cf3 dscp CS0 ecn NON_ECNfragment id 0x879f, flags DONT_FRAGMENTICMP echo_reply checksum 0xc60d id 23197Packet 200:36:09:639349: af-packet-inputaf_packet: hw_if_index 1 next-index 4tpacket2_hdr:status 0x20000001 len 42 snaplen 42 mac 66 net 80sec 0x6209b8fc nsec 0x397195c8 vlan 0 vlan_tpid 0 00:36:09:639370: ethernet-inputARP: 12:9c:88:4f:ee:2d -> de:ad:00:00:00:00 00:36:09:639381: l2-inputl2-input: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d [l2-learn l2-fwd l2-flood l2-flood ] 00:36:09:639386: l2-learnl2-learn: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 00:36:09:639390: l2-fwdl2-fwd: sw_if_index 1 dst de:ad:00:00:00:00 src 12:9c:88:4f:ee:2d bd_index 1 result [0x700000002, 2] static age-not b vi 00:36:09:639398: arp-inputrequest, type ethernet/IP4, address size 6/412:9c:88:4f:ee:2d/10.10.1.1 -> 00:00:00:00:00:00/10.10.1.2 00:36:09:639402: arp-replyrequest, type ethernet/IP4, address size 6/412:9c:88:4f:ee:2d/10.10.1.1 -> 00:00:00:00:00:00/10.10.1.2 00:36:09:639443: loop0-outputloop0 ARP: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dreply, type ethernet/IP4, address size 6/4de:ad:00:00:00:00/10.10.1.2 -> 12:9c:88:4f:ee:2d/10.10.1.1 00:36:09:639450: l2-inputl2-input: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 [l2-fwd l2-flood l2-flood ] 00:36:09:639453: l2-fwdl2-fwd: sw_if_index 2 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 bd_index 1 result [0x1210000000001, 1] none 00:36:09:639455: l2-outputl2-output: sw_if_index 1 dst 12:9c:88:4f:ee:2d src de:ad:00:00:00:00 data 08 06 00 01 08 00 06 04 00 02 de ad 00:36:09:639458: host-vpp2vpp1-outputhost-vpp2vpp1 ARP: de:ad:00:00:00:00 -> 12:9c:88:4f:ee:2dreply, type ethernet/IP4, address size 6/4de:ad:00:00:00:00/10.10.1.2 -> 12:9c:88:4f:ee:2d/10.10.1.1vpp# show l2fib verboseMac-Address BD-Idx If-Idx BSN-ISN Age(min) static filter bvi Interface-Name de:ad:00:00:00:00 1 2 0/0 no * - * loop0 12:9c:88:4f:ee:2d 1 1 0/1 - - - - host-vpp2vpp1 8a:1f:7d:cb:0e:3f 1 1 0/1 - - - - host-vpp2vpp1 L2FIB total/learned entries: 3/2 Last scan time: 0.0000e0sec Learn limit: 16777216檢查并清除 vpp1 和 vpp2 上的跟蹤
vpp1
vpp2
vpp# show l2fib verbose Mac-Address BD-Idx If-Idx BSN-ISN Age(min) static filter bvi Interface-Name 56:dd:cb:23:8c:da 1 1 0/1 - - - - host-vpp2vpp1 4e:db:02:b3:65:58 1 1 0/1 - - - - host-vpp2vpp1 de:ad:00:00:00:00 1 2 0/0 no * - * loop0 12:9c:88:4f:ee:2d 1 1 0/1 - - - - host-vpp2vpp1 8a:1f:7d:cb:0e:3f 1 1 0/1 - - - - host-vpp2vpp1 L2FIB total/learned entries: 5/4 Last scan time: 0.0000e0sec Learn limit: 16777216總結(jié)
以上是生活随笔為你收集整理的VPP教程 基本命令 记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自制电吉他效果器 DIY PCB(三)原
- 下一篇: 数据恢复软件介绍