HTB.init / tc behind NATMinimal rate and default class problem for HTBSharing Bandwidth and Prioritizing Realtime Traffic via HTB, Which Scenario Works Better?How to add delay to incoming traffic?tc filter replace, tc filter change doesn't workBandwidth Throttling using tc qdiscsIs there a way to limit bandwidth per ip using HTB + a CIDR range in Linux?linux tc: unstable rate using tbf qdiscWhen add filter in tc have a “RTNETLINK answers: Invalid argument, We have an error talking to the kernel” errortc prio how the packets are prioritized
3D Volume in TIKZ
What was Bran's plan to kill the Night King?
Are the Night's Watch still required?
Identifying characters
Something that can be activated/enabled
Building a list of products from the elements in another list
I'm in your subnets, golfing your code
Do I add modifiers to the Charisma check roll of 15 granted by the Glibness spell?
Wrong answer from DSolve when solving a differential equation
IP addresses from public IP block in my LAN
Where are the "shires" in the UK?
Pressure inside an infinite ocean?
How did the Venus Express detect lightning?
Why does this derived table improve performance?
What to use instead of cling film to wrap pastry
How do inspiraling black holes get closer?
Can my company stop me from working overtime?
Why is "breaking the mould" positively connoted?
Are there any of the Children of the Forest left, or are they extinct?
A factorization game
Why are UK Bank Holidays on Mondays?
Has the Hulk always been able to talk?
Can a Tiefling have more than two horns?
Why wasn't the Night King naked in S08E03?
HTB.init / tc behind NAT
Minimal rate and default class problem for HTBSharing Bandwidth and Prioritizing Realtime Traffic via HTB, Which Scenario Works Better?How to add delay to incoming traffic?tc filter replace, tc filter change doesn't workBandwidth Throttling using tc qdiscsIs there a way to limit bandwidth per ip using HTB + a CIDR range in Linux?linux tc: unstable rate using tbf qdiscWhen add filter in tc have a “RTNETLINK answers: Invalid argument, We have an error talking to the kernel” errortc prio how the packets are prioritized
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have an Ubuntu 10 box that I'm trying to set up as a bandwidth-shaping router.
The machine has one WAN interface, eth0 and two LAN interfaces, eth1 and eth2. NAT is configured using MASQUERADE as described at InternetConnectionSharing.
I'm mostly concerned with shaping outbound traffic from the LAN interfaces -- in the end, I'd like to end up with a hard 768Kbps limit per-LAN-interface (rather than a limit on eth0 pooled across all interfaces).
I installed HTB.init, and riffing on the examples, tried to set this up on eth1 by putting three files into /etc/sysconfig/htb:
/etc/sysconfig/htb/eth1
DEFAULT=30
R2Q=100
/etc/sysconfig/htb/eth1-2.root
RATE=768Kbps
BURST=15k
/etc/sysconfig/htb/eth1-2:30.dfl
RATE=768Kbps
CEIL=788Kbps
BURST=15k
LEAF=sfq
I can /etc/init.d/htb start and /etc/init.d/htb stats and see information that /seems/ to suggest it's working...but when I try pulling a large file via the WAN interface the shaping clearly isn't in effect.
Any suggestions? My guess is it has something to do with where the shaping falls in the NAT chain, but I really have no idea where to begin troubleshooting this.
---- Update:
Here's my /etc/init.d/htb list output, it seems to make sense -- the default rate for eth1 is 768Kbps?
### eth0: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth0: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
### eth0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30
match 00000000/00000000 at 12
match 00000000/00000000 at 16
### eth1: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth1: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
bandwidth-control tc htb
add a comment |
I have an Ubuntu 10 box that I'm trying to set up as a bandwidth-shaping router.
The machine has one WAN interface, eth0 and two LAN interfaces, eth1 and eth2. NAT is configured using MASQUERADE as described at InternetConnectionSharing.
I'm mostly concerned with shaping outbound traffic from the LAN interfaces -- in the end, I'd like to end up with a hard 768Kbps limit per-LAN-interface (rather than a limit on eth0 pooled across all interfaces).
I installed HTB.init, and riffing on the examples, tried to set this up on eth1 by putting three files into /etc/sysconfig/htb:
/etc/sysconfig/htb/eth1
DEFAULT=30
R2Q=100
/etc/sysconfig/htb/eth1-2.root
RATE=768Kbps
BURST=15k
/etc/sysconfig/htb/eth1-2:30.dfl
RATE=768Kbps
CEIL=788Kbps
BURST=15k
LEAF=sfq
I can /etc/init.d/htb start and /etc/init.d/htb stats and see information that /seems/ to suggest it's working...but when I try pulling a large file via the WAN interface the shaping clearly isn't in effect.
Any suggestions? My guess is it has something to do with where the shaping falls in the NAT chain, but I really have no idea where to begin troubleshooting this.
---- Update:
Here's my /etc/init.d/htb list output, it seems to make sense -- the default rate for eth1 is 768Kbps?
### eth0: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth0: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
### eth0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30
match 00000000/00000000 at 12
match 00000000/00000000 at 16
### eth1: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth1: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
bandwidth-control tc htb
add a comment |
I have an Ubuntu 10 box that I'm trying to set up as a bandwidth-shaping router.
The machine has one WAN interface, eth0 and two LAN interfaces, eth1 and eth2. NAT is configured using MASQUERADE as described at InternetConnectionSharing.
I'm mostly concerned with shaping outbound traffic from the LAN interfaces -- in the end, I'd like to end up with a hard 768Kbps limit per-LAN-interface (rather than a limit on eth0 pooled across all interfaces).
I installed HTB.init, and riffing on the examples, tried to set this up on eth1 by putting three files into /etc/sysconfig/htb:
/etc/sysconfig/htb/eth1
DEFAULT=30
R2Q=100
/etc/sysconfig/htb/eth1-2.root
RATE=768Kbps
BURST=15k
/etc/sysconfig/htb/eth1-2:30.dfl
RATE=768Kbps
CEIL=788Kbps
BURST=15k
LEAF=sfq
I can /etc/init.d/htb start and /etc/init.d/htb stats and see information that /seems/ to suggest it's working...but when I try pulling a large file via the WAN interface the shaping clearly isn't in effect.
Any suggestions? My guess is it has something to do with where the shaping falls in the NAT chain, but I really have no idea where to begin troubleshooting this.
---- Update:
Here's my /etc/init.d/htb list output, it seems to make sense -- the default rate for eth1 is 768Kbps?
### eth0: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth0: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
### eth0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30
match 00000000/00000000 at 12
match 00000000/00000000 at 16
### eth1: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth1: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
bandwidth-control tc htb
I have an Ubuntu 10 box that I'm trying to set up as a bandwidth-shaping router.
The machine has one WAN interface, eth0 and two LAN interfaces, eth1 and eth2. NAT is configured using MASQUERADE as described at InternetConnectionSharing.
I'm mostly concerned with shaping outbound traffic from the LAN interfaces -- in the end, I'd like to end up with a hard 768Kbps limit per-LAN-interface (rather than a limit on eth0 pooled across all interfaces).
I installed HTB.init, and riffing on the examples, tried to set this up on eth1 by putting three files into /etc/sysconfig/htb:
/etc/sysconfig/htb/eth1
DEFAULT=30
R2Q=100
/etc/sysconfig/htb/eth1-2.root
RATE=768Kbps
BURST=15k
/etc/sysconfig/htb/eth1-2:30.dfl
RATE=768Kbps
CEIL=788Kbps
BURST=15k
LEAF=sfq
I can /etc/init.d/htb start and /etc/init.d/htb stats and see information that /seems/ to suggest it's working...but when I try pulling a large file via the WAN interface the shaping clearly isn't in effect.
Any suggestions? My guess is it has something to do with where the shaping falls in the NAT chain, but I really have no idea where to begin troubleshooting this.
---- Update:
Here's my /etc/init.d/htb list output, it seems to make sense -- the default rate for eth1 is 768Kbps?
### eth0: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth0: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
### eth0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30
match 00000000/00000000 at 12
match 00000000/00000000 at 16
### eth1: queueing disciplines
qdisc htb 1: root refcnt 2 r2q 100 default 30 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b perturb 10sec
### eth1: traffic classes
class htb 1:2 root rate 768000bit ceil 768000bit burst 1599b cburst 1599b
class htb 1:30 parent 1:2 leaf 30: prio 0 rate 6144Kbit ceil 6144Kbit burst 15Kb cburst 1598b
bandwidth-control tc htb
bandwidth-control tc htb
edited Jul 21 '11 at 0:41
Denilson Sá Maia
51137
51137
asked Jan 28 '11 at 4:03
Ben K.Ben K.
7863914
7863914
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Try adding this (using your IP) to eth1-2:30.dfl
RULE=192.168.0.0/24
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
add a comment |
I have to say, I found this really difficult to figure out with speeds exceeding 100Mbit. In my case I wanted to shape to 2Gbit/s
In the end I adapted a script I found that work. Here it is, adapt it to your needs. Specifically you'll need to adjust rate to something valid. tc understands mbit. So you'll need to put in something like 768kbit or something it can correctly interpret.
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f227947%2fhtb-init-tc-behind-nat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try adding this (using your IP) to eth1-2:30.dfl
RULE=192.168.0.0/24
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
add a comment |
Try adding this (using your IP) to eth1-2:30.dfl
RULE=192.168.0.0/24
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
add a comment |
Try adding this (using your IP) to eth1-2:30.dfl
RULE=192.168.0.0/24
Try adding this (using your IP) to eth1-2:30.dfl
RULE=192.168.0.0/24
answered Jan 28 '11 at 9:52
w00tw00t
63221433
63221433
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
add a comment |
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
No luck, still the same result. Let me post my htb config, maybe that will give some clues?
– Ben K.
Jan 28 '11 at 17:03
add a comment |
I have to say, I found this really difficult to figure out with speeds exceeding 100Mbit. In my case I wanted to shape to 2Gbit/s
In the end I adapted a script I found that work. Here it is, adapt it to your needs. Specifically you'll need to adjust rate to something valid. tc understands mbit. So you'll need to put in something like 768kbit or something it can correctly interpret.
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
add a comment |
I have to say, I found this really difficult to figure out with speeds exceeding 100Mbit. In my case I wanted to shape to 2Gbit/s
In the end I adapted a script I found that work. Here it is, adapt it to your needs. Specifically you'll need to adjust rate to something valid. tc understands mbit. So you'll need to put in something like 768kbit or something it can correctly interpret.
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
add a comment |
I have to say, I found this really difficult to figure out with speeds exceeding 100Mbit. In my case I wanted to shape to 2Gbit/s
In the end I adapted a script I found that work. Here it is, adapt it to your needs. Specifically you'll need to adjust rate to something valid. tc understands mbit. So you'll need to put in something like 768kbit or something it can correctly interpret.
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
I have to say, I found this really difficult to figure out with speeds exceeding 100Mbit. In my case I wanted to shape to 2Gbit/s
In the end I adapted a script I found that work. Here it is, adapt it to your needs. Specifically you'll need to adjust rate to something valid. tc understands mbit. So you'll need to put in something like 768kbit or something it can correctly interpret.
#!/bin/sh
#
# Incoming traffic control
#
DEV=eth0
RATE="2000mbit"
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
#
# Outgoing traffic control
#
DEV=eth2
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE burst 15k
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE ceil $RATE burst 15k
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
echo;echo "tc configuration for $DEV:"
tc qdisc show dev $DEV
tc class show dev $DEV
answered May 16 '17 at 23:45
MattMatt
9,5941365124
9,5941365124
add a comment |
add a comment |
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f227947%2fhtb-init-tc-behind-nat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown