Pipette is a tool that allows users to multiplex SDN coprocessing by implementing transparent L3 NAT. Pipette does this by creating a virtual network behind your coprocessor port and then acting as the SDN controller of that network. Packets are seamlessly switched to their appropriate destination using Ryu.
- COPROINT - the interface that will receive coprocessed packets
- NFVIPS - IPs to send coprocessed packets to. Must be a /16
- VLANS - Space delimitted list of vlans to coprocess from, must match a vlan in ACL rule
- FAKEINT - interface created for fake services to run on
- DFILE - Dockerfile to use to run pipette. should be set based on hardware use
- FAKESERVERMAC - MAC to be assigned to the coprocessing server
- FAKECLIENTMAC - MAC to be assigned to the coprocessing client
- BR - name of OVS bridge to be created
- OF - Pipette OpenFlow port number
- COPROPORT - - OpenFlow port number exposed from $COPROINT to OVS
- FAKEPORT - OpenFlow port number to correspond from OVS to
$FAKEINT
- RECORD - 0 to not store pcaps passing through
$COPROINT
, anything else to store them - PCAP_LOCATION - filename of store pcaps
- PIPETTE_TEMP_DIR temp directory to store process info
Most of the above can can be overridden by passing appropriate flags to the startup script. For more details run
./runpipette.sh --help
for more details
- Run the Shell script using
./runpipette.sh
. By default this will run Pipette in a docker container, use the--no-docker
option to run it natively. - Start any coprocessing services. It is important to ensure that the services are bound to one of the IPs containted in
$NFVIPS
. If using Docker besure to start the container using the-p <IP>:<PORT>:<PORT>
option